@instructure/canvas-rce 5.6.3 → 5.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/coverage/canvas-rce-jest.xml +1688 -1620
- package/coverage/canvas-rce-junit.xml +409 -409
- package/es/enhance-user-content/enhance_user_content.js +7 -2
- package/es/enhance-user-content/instructure_helper.js +10 -2
- package/es/rce/RCEWrapper.js +7 -4
- package/es/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/es/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/es/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/es/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/es/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/es/rce/tinyRCE.js +1 -0
- package/lib/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/enhance-user-content/instructure_helper.js +10 -2
- package/lib/rce/RCEWrapper.js +7 -4
- package/lib/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/rce/tinyRCE.js +1 -0
- package/lib/translated/ar/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/ar/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/ar/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/ar/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/ar/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/ar/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/ca/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/ca/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/ca/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/ca/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/ca/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/ca/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/cy/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/cy/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/cy/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/cy/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/cy/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/cy/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/da/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/da/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/da/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/da/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/da/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/da/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/da/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/da/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/da/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/da/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/da/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/da/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/da/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/da-x-k12/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/da-x-k12/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/da-x-k12/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/da-x-k12/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/da-x-k12/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/de/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/de/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/de/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/de/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/de/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/de/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/de/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/de/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/de/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/de/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/de/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/de/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/de/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/el/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/el/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/el/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/el/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/el/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/el/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/el/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/el/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/el/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/el/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/el/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/el/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/el/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/en/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/en/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/en/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/en/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/en/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/en/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/en/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/en/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/en/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/en/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/en/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/en/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/en/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/en-AU-x-unimelb/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/en-AU-x-unimelb/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/en-AU-x-unimelb/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/en-AU-x-unimelb/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/en-GB-x-ukhe/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/en-GB-x-ukhe/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/en-GB-x-ukhe/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/en-GB-x-ukhe/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/en_AU/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/en_AU/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/en_AU/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/en_AU/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/en_AU/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/en_AU/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/en_CA/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/en_CA/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/en_CA/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/en_CA/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/en_CA/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/en_CA/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/en_CY/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/en_CY/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/en_CY/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/en_CY/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/en_CY/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/en_CY/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/en_GB/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/en_GB/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/en_GB/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/en_GB/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/en_GB/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/en_GB/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/es/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/es/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/es/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/es/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/es/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/es/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/es/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/es/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/es/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/es/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/es/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/es/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/es/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/es_ES/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/es_ES/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/es_ES/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/es_ES/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/es_ES/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/es_ES/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/es_GT/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/es_GT/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/es_GT/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/es_GT/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/es_GT/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/es_GT/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/es_GT/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/es_GT/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/es_GT/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/es_GT/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/es_GT/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/es_GT/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/es_GT/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/fa_IR/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/fa_IR/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/fa_IR/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/fa_IR/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/fa_IR/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/fi/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/fi/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/fi/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/fi/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/fi/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/fi/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/fr/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/fr/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/fr/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/fr/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/fr/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/fr/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/fr_CA/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/fr_CA/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/fr_CA/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/fr_CA/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/fr_CA/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/he/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/he/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/he/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/he/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/he/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/he/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/he/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/he/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/he/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/he/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/he/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/he/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/he/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/ht/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/ht/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/ht/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/ht/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/ht/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/ht/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/hu/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/hu/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/hu/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/hu/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/hu/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/hu/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/hy/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/hy/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/hy/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/hy/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/hy/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/hy/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/is/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/is/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/is/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/is/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/is/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/is/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/is/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/is/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/is/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/is/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/is/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/is/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/is/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/it/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/it/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/it/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/it/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/it/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/it/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/it/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/it/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/it/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/it/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/it/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/it/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/it/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/ja/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/ja/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/ja/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/ja/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/ja/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/ja/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/ko/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/ko/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/ko/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/ko/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/ko/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/ko/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/mi/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/mi/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/mi/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/mi/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/mi/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/mi/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/nb/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/nb/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/nb/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/nb/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/nb/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/nb/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/nb-x-k12/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/nb-x-k12/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/nb-x-k12/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/nb-x-k12/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/nb-x-k12/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/nl/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/nl/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/nl/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/nl/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/nl/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/nl/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/nn/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/nn/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/nn/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/nn/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/nn/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/nn/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/pl/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/pl/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/pl/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/pl/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/pl/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/pl/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/pt/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/pt/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/pt/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/pt/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/pt/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/pt/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/pt_BR/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/pt_BR/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/pt_BR/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/pt_BR/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/pt_BR/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/ru/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/ru/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/ru/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/ru/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/ru/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/ru/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/se/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/se/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/se/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/se/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/se/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/se/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/se/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/se/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/se/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/se/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/se/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/se/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/se/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/sl/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/sl/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/sl/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/sl/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/sl/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/sl/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/sv/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/sv/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/sv/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/sv/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/sv/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/sv/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/sv-x-k12/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/sv-x-k12/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/sv-x-k12/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/sv-x-k12/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/sv-x-k12/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/sv_SE/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/sv_SE/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/sv_SE/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/sv_SE/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/sv_SE/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/sv_SE/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/sv_SE/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/sv_SE/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/sv_SE/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/sv_SE/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/sv_SE/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/sv_SE/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/sv_SE/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/tg/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/tg/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/tg/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/tg/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/tg/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/tg/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/tg/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/tg/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/tg/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/tg/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/tg/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/tg/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/tg/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/th/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/th/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/th/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/th/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/th/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/th/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/th/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/th/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/th/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/th/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/th/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/th/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/th/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/th_TH/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/th_TH/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/th_TH/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/th_TH/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/th_TH/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/th_TH/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/th_TH/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/th_TH/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/th_TH/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/th_TH/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/th_TH/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/th_TH/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/th_TH/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/tr/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/tr/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/tr/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/tr/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/tr/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/tr/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/uk_UA/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/uk_UA/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/uk_UA/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/uk_UA/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/uk_UA/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/vi/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/vi/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/vi/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/vi/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/vi/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/vi/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/vi_VN/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/vi_VN/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/vi_VN/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/vi_VN/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/vi_VN/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/vi_VN/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/vi_VN/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/vi_VN/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/vi_VN/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/vi_VN/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/vi_VN/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/vi_VN/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/vi_VN/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/zh/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/zh/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/zh/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/zh/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/zh/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/zh/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/zh-Hans/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/zh-Hans/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/zh-Hans/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/zh-Hans/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/zh-Hans/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/zh-Hant/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/zh-Hant/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/zh-Hant/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/zh-Hant/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/zh-Hant/modules/rce/tinyRCE.js +1 -0
- package/lib/translated/zh_HK/modules/enhance-user-content/__tests__/enhance_user_content.test.js +16 -1
- package/lib/translated/zh_HK/modules/enhance-user-content/enhance_user_content.js +7 -2
- package/lib/translated/zh_HK/modules/enhance-user-content/instructure_helper.js +10 -2
- package/lib/translated/zh_HK/modules/rce/RCEWrapper.js +7 -4
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_wordcount/clickCallback.js +46 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_wordcount/components/WordCountModal.js +92 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_wordcount/components/__tests__/WordCountModal.test.js +91 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_wordcount/plugin.js +32 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_wordcount/utils/__tests__/countContent.test.js +164 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_wordcount/utils/__tests__/tableContent.test.js +41 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_wordcount/utils/countContent.js +78 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_wordcount/utils/tableContent.js +40 -0
- package/lib/translated/zh_HK/modules/rce/tinyRCE.js +1 -0
- package/package.json +3 -2
- package/testcafe/build/100.js +5 -5
- package/testcafe/build/101.js +5 -5
- package/testcafe/build/102.js +1 -1
- package/testcafe/build/103.js +1 -1
- package/testcafe/build/22.js +1 -1
- package/testcafe/build/23.js +39 -3
- package/testcafe/build/27.js +84 -84
- package/testcafe/build/28.js +99 -83
- package/testcafe/build/29.js +107 -51
- package/testcafe/build/30.js +59 -47
- package/testcafe/build/31.js +64 -28
- package/testcafe/build/32.js +28 -16
- package/testcafe/build/33.js +10 -10
- package/testcafe/build/34.js +16 -16
- package/testcafe/build/35.js +27 -15
- package/testcafe/build/36.js +19 -18
- package/testcafe/build/37.js +22 -11
- package/testcafe/build/38.js +14 -13
- package/testcafe/build/39.js +8 -8
- package/testcafe/build/40.js +6 -6
- package/testcafe/build/41.js +6 -6
- package/testcafe/build/42.js +6 -6
- package/testcafe/build/43.js +10 -10
- package/testcafe/build/44.js +5 -5
- package/testcafe/build/45.js +5 -5
- package/testcafe/build/46.js +3 -3
- package/testcafe/build/47.js +6 -6
- package/testcafe/build/48.js +10 -10
- package/testcafe/build/49.js +8 -8
- package/testcafe/build/5.js +1 -1
- package/testcafe/build/50.js +6 -6
- package/testcafe/build/51.js +8 -8
- package/testcafe/build/52.js +6 -6
- package/testcafe/build/53.js +6 -6
- package/testcafe/build/54.js +8 -8
- package/testcafe/build/55.js +8 -8
- package/testcafe/build/56.js +6 -6
- package/testcafe/build/57.js +8 -8
- package/testcafe/build/58.js +8 -8
- package/testcafe/build/59.js +10 -10
- package/testcafe/build/60.js +6 -6
- package/testcafe/build/61.js +6 -6
- package/testcafe/build/62.js +8 -8
- package/testcafe/build/63.js +8 -8
- package/testcafe/build/64.js +8 -8
- package/testcafe/build/65.js +17 -6
- package/testcafe/build/66.js +3 -3
- package/testcafe/build/67.js +5 -5
- package/testcafe/build/68.js +5 -5
- package/testcafe/build/69.js +5 -5
- package/testcafe/build/70.js +5 -5
- package/testcafe/build/71.js +6 -6
- package/testcafe/build/72.js +6 -6
- package/testcafe/build/73.js +6 -6
- package/testcafe/build/74.js +6 -6
- package/testcafe/build/75.js +6 -6
- package/testcafe/build/76.js +6 -6
- package/testcafe/build/77.js +5 -5
- package/testcafe/build/78.js +5 -5
- package/testcafe/build/79.js +5 -5
- package/testcafe/build/80.js +5 -5
- package/testcafe/build/81.js +3 -3
- package/testcafe/build/82.js +5 -5
- package/testcafe/build/83.js +5 -5
- package/testcafe/build/84.js +3 -3
- package/testcafe/build/85.js +3 -3
- package/testcafe/build/86.js +5 -5
- package/testcafe/build/87.js +3 -3
- package/testcafe/build/88.js +5 -5
- package/testcafe/build/89.js +3 -3
- package/testcafe/build/90.js +5 -5
- package/testcafe/build/91.js +3 -3
- package/testcafe/build/92.js +5 -5
- package/testcafe/build/93.js +3 -3
- package/testcafe/build/94.js +5 -5
- package/testcafe/build/95.js +3 -3
- package/testcafe/build/96.js +3 -3
- package/testcafe/build/97.js +5 -5
- package/testcafe/build/98.js +5 -5
- package/testcafe/build/99.js +5 -5
- package/testcafe/build/testcafe.js +18 -6
|
@@ -16912,7 +16912,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac
|
|
|
16912
16912
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
16913
16913
|
|
|
16914
16914
|
"use strict";
|
|
16915
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PANELS\", function() { return PANELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return UploadMedia; });\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ \"../../node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash */ \"../../node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_heading__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-heading */ \"../../node_modules/@instructure/ui-heading/es/index.js\");\n/* harmony import */ var _instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-modal */ \"../../node_modules/@instructure/ui-modal/es/index.js\");\n/* harmony import */ var _instructure_ui_tabs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-tabs */ \"../../node_modules/@instructure/ui-tabs/es/index.js\");\n/* harmony import */ var _instructure_ui_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @instructure/ui-utils */ \"../../node_modules/@instructure/ui-utils/es/index.js\");\n/* harmony import */ var _instructure_ui_progress__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @instructure/ui-progress */ \"../../node_modules/@instructure/ui-progress/es/index.js\");\n/* harmony import */ var _instructure_ui_text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @instructure/ui-text */ \"../../node_modules/@instructure/ui-text/es/index.js\");\n/* harmony import */ var _acceptedMediaFileTypes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./acceptedMediaFileTypes */ \"../canvas-media/es/acceptedMediaFileTypes.js\");\n/* harmony import */ var _shared_LoadingIndicator__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./shared/LoadingIndicator */ \"../canvas-media/es/shared/LoadingIndicator.js\");\n/* harmony import */ var _saveMediaRecording__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./saveMediaRecording */ \"../canvas-media/es/saveMediaRecording.js\");\n/* harmony import */ var _translationShape__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./translationShape */ \"../canvas-media/es/translationShape.js\");\n/* harmony import */ var _shared_constants__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./shared/constants */ \"../canvas-media/es/shared/constants.js\");\n/*\n * Copyright (C) 2019 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst ComputerPanel = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(4), __webpack_require__.e(9), __webpack_require__.e(19), __webpack_require__.e(65)]).then(__webpack_require__.bind(null, /*! ./ComputerPanel */ \"../canvas-media/es/ComputerPanel.js\")));\nconst MediaRecorder = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(21), __webpack_require__.e(66)]).then(__webpack_require__.bind(null, /*! ./MediaRecorder */ \"../canvas-media/es/MediaRecorder.js\")));\nconst PANELS = {\n COMPUTER: 0,\n RECORD: 1\n};\nclass UploadMedia extends react__WEBPACK_IMPORTED_MODULE_1___default.a.Component {\n constructor(props) {\n super(props);\n\n this.inferSelectedPanel = tabs => {\n let selectedPanel = -1;\n\n if (tabs.upload) {\n selectedPanel = 0;\n } else if (tabs.record) {\n selectedPanel = 1;\n }\n\n return selectedPanel;\n };\n\n this.isReady = () => {\n if (this.props.disableSubmitWhileUploading && this.state.uploading) {\n return false;\n }\n\n switch (this.state.selectedPanel) {\n case PANELS.COMPUTER:\n return !!this.state.computerFile;\n\n case PANELS.RECORD:\n return !!this.state.recordedFile;\n\n default:\n return false;\n }\n };\n\n this.handleSubmit = () => {\n switch (this.state.selectedPanel) {\n case PANELS.COMPUTER:\n this.uploadFile(this.state.computerFile);\n break;\n\n case PANELS.RECORD:\n this.uploadFile(this.state.recordedFile);\n break;\n\n default:\n throw new Error('Selected Panel is invalid');\n // Should never get here\n }\n };\n\n this.submitEnabled = () => {\n var _this$state$computerF;\n\n switch (this.state.selectedPanel) {\n case PANELS.COMPUTER:\n return this.isReady() && !!((_this$state$computerF = this.state.computerFile) !== null && _this$state$computerF !== void 0 && _this$state$computerF.title);\n\n default:\n return this.isReady();\n }\n };\n\n this.onSaveMediaProgress = progress => {\n this.setState({\n progress\n });\n };\n\n this.saveMediaCallback = async (err, data) => {\n if (err) {\n this.props.onUploadComplete && this.props.onUploadComplete(err, data);\n } else {\n try {\n var _captions;\n\n let captions;\n\n if (this.state.selectedPanel === PANELS.COMPUTER && this.state.subtitles.length > 0) {\n captions = await Object(_saveMediaRecording__WEBPACK_IMPORTED_MODULE_13__[\"saveClosedCaptions\"])(data.mediaObject.media_object.media_id, this.state.subtitles, this.props.rcsConfig, _shared_constants__WEBPACK_IMPORTED_MODULE_15__[\"CC_FILE_MAX_BYTES\"]);\n }\n\n this.props.onUploadComplete && this.props.onUploadComplete(null, data, (_captions = captions) === null || _captions === void 0 ? void 0 : _captions.data);\n } catch (ex) {\n this.props.onUploadComplete && this.props.onUploadComplete(ex, null);\n }\n }\n\n this.props.onDismiss && this.props.onDismiss();\n };\n\n this.renderModalBody = () => {\n const {\n COMPUTER_PANEL_TITLE,\n DRAG_FILE_TEXT,\n LOADING_MEDIA,\n RECORD_PANEL_TITLE,\n MEDIA_RECORD_NOT_AVAILABLE\n } = this.props.uploadMediaTranslations.UploadMediaStrings;\n\n if (!this.props.open) {\n return null;\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_tabs__WEBPACK_IMPORTED_MODULE_7__[\"Tabs\"], {\n maxWidth: \"large\",\n onRequestTabChange: (_, _ref) => {\n let {\n index\n } = _ref;\n const {\n tabs\n } = this.props; // You can only change tabs if more than one tab is available\n\n if (tabs.upload && tabs.record) {\n this.setState({\n selectedPanel: index\n });\n }\n }\n }, this.props.tabs.upload && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_tabs__WEBPACK_IMPORTED_MODULE_7__[\"Tabs\"].Panel, {\n key: \"computer\",\n isSelected: this.state.selectedPanel === PANELS.COMPUTER,\n renderTitle: () => COMPUTER_PANEL_TITLE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1__[\"Suspense\"], {\n fallback: Object(_shared_LoadingIndicator__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(LOADING_MEDIA)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ComputerPanel, {\n theFile: this.state.computerFile,\n setFile: file => this.setState({\n computerFile: file\n }),\n hasUploadedFile: this.state.hasUploadedFile,\n setHasUploadedFile: uploadFileState => this.setState({\n hasUploadedFile: uploadFileState\n }),\n label: DRAG_FILE_TEXT,\n uploadMediaTranslations: this.props.uploadMediaTranslations,\n accept: _acceptedMediaFileTypes__WEBPACK_IMPORTED_MODULE_11__[\"ACCEPTED_FILE_TYPES\"],\n userLocale: this.props.userLocale,\n liveRegion: this.props.liveRegion,\n updateSubtitles: subtitles => {\n this.setState({\n subtitles\n });\n },\n bounds: this.state.modalBodySize\n }))), this.props.tabs.record && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_tabs__WEBPACK_IMPORTED_MODULE_7__[\"Tabs\"].Panel, {\n key: \"record\",\n isSelected: this.state.selectedPanel === PANELS.RECORD,\n renderTitle: () => RECORD_PANEL_TITLE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1__[\"Suspense\"], {\n fallback: Object(_shared_LoadingIndicator__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(LOADING_MEDIA)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(MediaRecorder, {\n MediaCaptureStrings: this.props.uploadMediaTranslations.MediaCaptureStrings,\n errorMessage: MEDIA_RECORD_NOT_AVAILABLE,\n onSave: file => this.setState({\n recordedFile: file\n }, this.handleSubmit)\n }))));\n };\n\n this.onModalClose = () => {\n this.setState({\n hasUploadedFile: false,\n selectedPanel: this.inferSelectedPanel(this.props.tabs),\n computerFile: null\n });\n this.props.onDismiss();\n };\n\n this.renderModalFooter = () => {\n if (this.state.selectedPanel === PANELS.RECORD) {\n return null;\n }\n\n const {\n CLOSE_TEXT,\n SUBMIT_TEXT,\n PROGRESS_LABEL\n } = this.props.uploadMediaTranslations.UploadMediaStrings;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__[\"Modal\"].Footer, null, this.state.uploading && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_progress__WEBPACK_IMPORTED_MODULE_9__[\"ProgressBar\"], {\n screenReaderLabel: PROGRESS_LABEL,\n valueNow: this.state.progress,\n valueMax: 100,\n renderValue: _ref2 => {\n let {\n valueNow\n } = _ref2;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_10__[\"Text\"], null, valueNow, \"%\");\n }\n }), \"\\xA0\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"Button\"], {\n onClick: this.onModalClose\n }, \" \", CLOSE_TEXT, \" \"), \"\\xA0\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"Button\"], {\n onClick: e => {\n e.preventDefault();\n this.handleSubmit();\n },\n color: \"primary\",\n type: \"submit\",\n interaction: this.submitEnabled() ? 'enabled' : 'disabled'\n }, SUBMIT_TEXT));\n };\n\n const defaultSelectedPanel = this.inferSelectedPanel(props.tabs);\n\n if (props.computerFile) {\n props.computerFile.title = props.computerFile.name;\n }\n\n this.state = {\n hasUploadedFile: !!props.computerFile,\n uploading: false,\n progress: 0,\n selectedPanel: defaultSelectedPanel,\n computerFile: props.computerFile || null,\n subtitles: [],\n recordedFile: null,\n modalBodySize: {\n width: NaN,\n height: NaN\n }\n };\n this.modalBodyRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createRef();\n }\n\n uploadFile(file) {\n this.setState({\n uploading: true\n }, () => {\n this.props.onStartUpload && this.props.onStartUpload(file);\n file.userEnteredTitle = file.title;\n Object(_saveMediaRecording__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(file, this.props.rcsConfig, this.saveMediaCallback, this.onSaveMediaProgress);\n });\n }\n\n componentDidMount() {\n this.setBodySize(this.state);\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.setBodySize(prevState);\n\n const invalidPanelSelected = () => this.state.selectedPanel === PANELS.COMPUTER && !this.props.tabs.upload || this.state.selectedPanel === PANELS.RECORD && !this.props.tabs.record; // If the specified tabs have not changed and the selected panel is valid,\n // don't attempt to set the selected panel state (this would trigger an\n // endless loop).\n\n\n if (Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"isEqual\"])(prevProps.tabs, this.props.tabs) && !invalidPanelSelected()) return;\n\n if (prevState.selectedPanel === -1 || invalidPanelSelected()) {\n // The tabs prop has changed and the selectedPanel was\n // never set in the constructor, or the selectedPanel is invalid\n // given the available tabs. Attempt to infer the selected panel\n // based on the new tabs list\n // ** This is an eslint error which I don't have the context\n // ** to address working my current ticket. Ignore for now\n // ** since it's been working for a while now.\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n selectedPanel: this.inferSelectedPanel(this.props.tabs)\n });\n }\n }\n\n setBodySize(state) {\n if (this.modalBodyRef.current) {\n // eslint-disable-next-line react/no-find-dom-node\n const thebody = react_dom__WEBPACK_IMPORTED_MODULE_2___default.a.findDOMNode(this.modalBodyRef.current);\n const modalBodySize = thebody.getBoundingClientRect();\n modalBodySize.height -= Object(_instructure_ui_utils__WEBPACK_IMPORTED_MODULE_8__[\"px\"])('3rem'); // leave room for the tabs\n\n if (modalBodySize.width !== state.modalBodySize.width || modalBodySize.height !== state.modalBodySize.height) {\n if (modalBodySize.width > 0 && modalBodySize.height > 0) {\n this.setState({\n modalBodySize\n });\n }\n }\n }\n }\n\n render() {\n const {\n CLOSE_TEXT,\n UPLOAD_MEDIA_LABEL\n } = this.props.uploadMediaTranslations.UploadMediaStrings;\n const dataProps = Object.keys(this.props).filter(p => /^data-/.test(p)).reduce((obj, key) => {\n obj[key] = this.props[key];\n return obj;\n }, {});\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__[\"Modal\"], Object.assign({\n label: UPLOAD_MEDIA_LABEL,\n size: \"large\",\n onDismiss: this.onModalClose,\n open: this.props.open,\n shouldCloseOnDocumentClick: false,\n liveRegion: this.props.liveRegion\n }, dataProps), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__[\"Modal\"].Header, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"CloseButton\"], {\n onClick: this.onModalClose,\n offset: \"medium\",\n placement: \"end\",\n screenReaderLabel: CLOSE_TEXT\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_heading__WEBPACK_IMPORTED_MODULE_5__[\"Heading\"], null, UPLOAD_MEDIA_LABEL)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__[\"Modal\"].Body, {\n ref: this.modalBodyRef\n }, this.renderModalBody()), this.renderModalFooter());\n }\n\n}\nUploadMedia.propTypes = {\n disableSubmitWhileUploading: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"bool\"],\n liveRegion: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"func\"],\n rcsConfig: Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"shape\"])({\n contextId: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"],\n contextType: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"],\n origin: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"],\n headers: Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"shape\"])({\n Authorization: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"]\n })\n }),\n onStartUpload: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"func\"],\n onUploadComplete: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"func\"],\n onDismiss: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"func\"],\n open: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"bool\"],\n tabs: Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"shape\"])({\n record: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"bool\"],\n upload: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"bool\"]\n }),\n uploadMediaTranslations: _translationShape__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n // for testing\n computerFile: Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"instanceOf\"])(File),\n userLocale: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"]\n};\nUploadMedia.defaultProps = {\n disableSubmitWhileUploading: false,\n userLocale: 'en'\n};\n\n//# sourceURL=webpack:///../canvas-media/es/UploadMedia.js?");
|
|
16915
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PANELS\", function() { return PANELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return UploadMedia; });\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ \"../../node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash */ \"../../node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_heading__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-heading */ \"../../node_modules/@instructure/ui-heading/es/index.js\");\n/* harmony import */ var _instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-modal */ \"../../node_modules/@instructure/ui-modal/es/index.js\");\n/* harmony import */ var _instructure_ui_tabs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-tabs */ \"../../node_modules/@instructure/ui-tabs/es/index.js\");\n/* harmony import */ var _instructure_ui_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @instructure/ui-utils */ \"../../node_modules/@instructure/ui-utils/es/index.js\");\n/* harmony import */ var _instructure_ui_progress__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @instructure/ui-progress */ \"../../node_modules/@instructure/ui-progress/es/index.js\");\n/* harmony import */ var _instructure_ui_text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @instructure/ui-text */ \"../../node_modules/@instructure/ui-text/es/index.js\");\n/* harmony import */ var _acceptedMediaFileTypes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./acceptedMediaFileTypes */ \"../canvas-media/es/acceptedMediaFileTypes.js\");\n/* harmony import */ var _shared_LoadingIndicator__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./shared/LoadingIndicator */ \"../canvas-media/es/shared/LoadingIndicator.js\");\n/* harmony import */ var _saveMediaRecording__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./saveMediaRecording */ \"../canvas-media/es/saveMediaRecording.js\");\n/* harmony import */ var _translationShape__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./translationShape */ \"../canvas-media/es/translationShape.js\");\n/* harmony import */ var _shared_constants__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./shared/constants */ \"../canvas-media/es/shared/constants.js\");\n/*\n * Copyright (C) 2019 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst ComputerPanel = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(4), __webpack_require__.e(9), __webpack_require__.e(19), __webpack_require__.e(66)]).then(__webpack_require__.bind(null, /*! ./ComputerPanel */ \"../canvas-media/es/ComputerPanel.js\")));\nconst MediaRecorder = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(21), __webpack_require__.e(67)]).then(__webpack_require__.bind(null, /*! ./MediaRecorder */ \"../canvas-media/es/MediaRecorder.js\")));\nconst PANELS = {\n COMPUTER: 0,\n RECORD: 1\n};\nclass UploadMedia extends react__WEBPACK_IMPORTED_MODULE_1___default.a.Component {\n constructor(props) {\n super(props);\n\n this.inferSelectedPanel = tabs => {\n let selectedPanel = -1;\n\n if (tabs.upload) {\n selectedPanel = 0;\n } else if (tabs.record) {\n selectedPanel = 1;\n }\n\n return selectedPanel;\n };\n\n this.isReady = () => {\n if (this.props.disableSubmitWhileUploading && this.state.uploading) {\n return false;\n }\n\n switch (this.state.selectedPanel) {\n case PANELS.COMPUTER:\n return !!this.state.computerFile;\n\n case PANELS.RECORD:\n return !!this.state.recordedFile;\n\n default:\n return false;\n }\n };\n\n this.handleSubmit = () => {\n switch (this.state.selectedPanel) {\n case PANELS.COMPUTER:\n this.uploadFile(this.state.computerFile);\n break;\n\n case PANELS.RECORD:\n this.uploadFile(this.state.recordedFile);\n break;\n\n default:\n throw new Error('Selected Panel is invalid');\n // Should never get here\n }\n };\n\n this.submitEnabled = () => {\n var _this$state$computerF;\n\n switch (this.state.selectedPanel) {\n case PANELS.COMPUTER:\n return this.isReady() && !!((_this$state$computerF = this.state.computerFile) !== null && _this$state$computerF !== void 0 && _this$state$computerF.title);\n\n default:\n return this.isReady();\n }\n };\n\n this.onSaveMediaProgress = progress => {\n this.setState({\n progress\n });\n };\n\n this.saveMediaCallback = async (err, data) => {\n if (err) {\n this.props.onUploadComplete && this.props.onUploadComplete(err, data);\n } else {\n try {\n var _captions;\n\n let captions;\n\n if (this.state.selectedPanel === PANELS.COMPUTER && this.state.subtitles.length > 0) {\n captions = await Object(_saveMediaRecording__WEBPACK_IMPORTED_MODULE_13__[\"saveClosedCaptions\"])(data.mediaObject.media_object.media_id, this.state.subtitles, this.props.rcsConfig, _shared_constants__WEBPACK_IMPORTED_MODULE_15__[\"CC_FILE_MAX_BYTES\"]);\n }\n\n this.props.onUploadComplete && this.props.onUploadComplete(null, data, (_captions = captions) === null || _captions === void 0 ? void 0 : _captions.data);\n } catch (ex) {\n this.props.onUploadComplete && this.props.onUploadComplete(ex, null);\n }\n }\n\n this.props.onDismiss && this.props.onDismiss();\n };\n\n this.renderModalBody = () => {\n const {\n COMPUTER_PANEL_TITLE,\n DRAG_FILE_TEXT,\n LOADING_MEDIA,\n RECORD_PANEL_TITLE,\n MEDIA_RECORD_NOT_AVAILABLE\n } = this.props.uploadMediaTranslations.UploadMediaStrings;\n\n if (!this.props.open) {\n return null;\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_tabs__WEBPACK_IMPORTED_MODULE_7__[\"Tabs\"], {\n maxWidth: \"large\",\n onRequestTabChange: (_, _ref) => {\n let {\n index\n } = _ref;\n const {\n tabs\n } = this.props; // You can only change tabs if more than one tab is available\n\n if (tabs.upload && tabs.record) {\n this.setState({\n selectedPanel: index\n });\n }\n }\n }, this.props.tabs.upload && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_tabs__WEBPACK_IMPORTED_MODULE_7__[\"Tabs\"].Panel, {\n key: \"computer\",\n isSelected: this.state.selectedPanel === PANELS.COMPUTER,\n renderTitle: () => COMPUTER_PANEL_TITLE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1__[\"Suspense\"], {\n fallback: Object(_shared_LoadingIndicator__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(LOADING_MEDIA)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ComputerPanel, {\n theFile: this.state.computerFile,\n setFile: file => this.setState({\n computerFile: file\n }),\n hasUploadedFile: this.state.hasUploadedFile,\n setHasUploadedFile: uploadFileState => this.setState({\n hasUploadedFile: uploadFileState\n }),\n label: DRAG_FILE_TEXT,\n uploadMediaTranslations: this.props.uploadMediaTranslations,\n accept: _acceptedMediaFileTypes__WEBPACK_IMPORTED_MODULE_11__[\"ACCEPTED_FILE_TYPES\"],\n userLocale: this.props.userLocale,\n liveRegion: this.props.liveRegion,\n updateSubtitles: subtitles => {\n this.setState({\n subtitles\n });\n },\n bounds: this.state.modalBodySize\n }))), this.props.tabs.record && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_tabs__WEBPACK_IMPORTED_MODULE_7__[\"Tabs\"].Panel, {\n key: \"record\",\n isSelected: this.state.selectedPanel === PANELS.RECORD,\n renderTitle: () => RECORD_PANEL_TITLE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1__[\"Suspense\"], {\n fallback: Object(_shared_LoadingIndicator__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(LOADING_MEDIA)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(MediaRecorder, {\n MediaCaptureStrings: this.props.uploadMediaTranslations.MediaCaptureStrings,\n errorMessage: MEDIA_RECORD_NOT_AVAILABLE,\n onSave: file => this.setState({\n recordedFile: file\n }, this.handleSubmit)\n }))));\n };\n\n this.onModalClose = () => {\n this.setState({\n hasUploadedFile: false,\n selectedPanel: this.inferSelectedPanel(this.props.tabs),\n computerFile: null\n });\n this.props.onDismiss();\n };\n\n this.renderModalFooter = () => {\n if (this.state.selectedPanel === PANELS.RECORD) {\n return null;\n }\n\n const {\n CLOSE_TEXT,\n SUBMIT_TEXT,\n PROGRESS_LABEL\n } = this.props.uploadMediaTranslations.UploadMediaStrings;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__[\"Modal\"].Footer, null, this.state.uploading && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_progress__WEBPACK_IMPORTED_MODULE_9__[\"ProgressBar\"], {\n screenReaderLabel: PROGRESS_LABEL,\n valueNow: this.state.progress,\n valueMax: 100,\n renderValue: _ref2 => {\n let {\n valueNow\n } = _ref2;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_10__[\"Text\"], null, valueNow, \"%\");\n }\n }), \"\\xA0\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"Button\"], {\n onClick: this.onModalClose\n }, \" \", CLOSE_TEXT, \" \"), \"\\xA0\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"Button\"], {\n onClick: e => {\n e.preventDefault();\n this.handleSubmit();\n },\n color: \"primary\",\n type: \"submit\",\n interaction: this.submitEnabled() ? 'enabled' : 'disabled'\n }, SUBMIT_TEXT));\n };\n\n const defaultSelectedPanel = this.inferSelectedPanel(props.tabs);\n\n if (props.computerFile) {\n props.computerFile.title = props.computerFile.name;\n }\n\n this.state = {\n hasUploadedFile: !!props.computerFile,\n uploading: false,\n progress: 0,\n selectedPanel: defaultSelectedPanel,\n computerFile: props.computerFile || null,\n subtitles: [],\n recordedFile: null,\n modalBodySize: {\n width: NaN,\n height: NaN\n }\n };\n this.modalBodyRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createRef();\n }\n\n uploadFile(file) {\n this.setState({\n uploading: true\n }, () => {\n this.props.onStartUpload && this.props.onStartUpload(file);\n file.userEnteredTitle = file.title;\n Object(_saveMediaRecording__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(file, this.props.rcsConfig, this.saveMediaCallback, this.onSaveMediaProgress);\n });\n }\n\n componentDidMount() {\n this.setBodySize(this.state);\n }\n\n componentDidUpdate(prevProps, prevState) {\n this.setBodySize(prevState);\n\n const invalidPanelSelected = () => this.state.selectedPanel === PANELS.COMPUTER && !this.props.tabs.upload || this.state.selectedPanel === PANELS.RECORD && !this.props.tabs.record; // If the specified tabs have not changed and the selected panel is valid,\n // don't attempt to set the selected panel state (this would trigger an\n // endless loop).\n\n\n if (Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"isEqual\"])(prevProps.tabs, this.props.tabs) && !invalidPanelSelected()) return;\n\n if (prevState.selectedPanel === -1 || invalidPanelSelected()) {\n // The tabs prop has changed and the selectedPanel was\n // never set in the constructor, or the selectedPanel is invalid\n // given the available tabs. Attempt to infer the selected panel\n // based on the new tabs list\n // ** This is an eslint error which I don't have the context\n // ** to address working my current ticket. Ignore for now\n // ** since it's been working for a while now.\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n selectedPanel: this.inferSelectedPanel(this.props.tabs)\n });\n }\n }\n\n setBodySize(state) {\n if (this.modalBodyRef.current) {\n // eslint-disable-next-line react/no-find-dom-node\n const thebody = react_dom__WEBPACK_IMPORTED_MODULE_2___default.a.findDOMNode(this.modalBodyRef.current);\n const modalBodySize = thebody.getBoundingClientRect();\n modalBodySize.height -= Object(_instructure_ui_utils__WEBPACK_IMPORTED_MODULE_8__[\"px\"])('3rem'); // leave room for the tabs\n\n if (modalBodySize.width !== state.modalBodySize.width || modalBodySize.height !== state.modalBodySize.height) {\n if (modalBodySize.width > 0 && modalBodySize.height > 0) {\n this.setState({\n modalBodySize\n });\n }\n }\n }\n }\n\n render() {\n const {\n CLOSE_TEXT,\n UPLOAD_MEDIA_LABEL\n } = this.props.uploadMediaTranslations.UploadMediaStrings;\n const dataProps = Object.keys(this.props).filter(p => /^data-/.test(p)).reduce((obj, key) => {\n obj[key] = this.props[key];\n return obj;\n }, {});\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__[\"Modal\"], Object.assign({\n label: UPLOAD_MEDIA_LABEL,\n size: \"large\",\n onDismiss: this.onModalClose,\n open: this.props.open,\n shouldCloseOnDocumentClick: false,\n liveRegion: this.props.liveRegion\n }, dataProps), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__[\"Modal\"].Header, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"CloseButton\"], {\n onClick: this.onModalClose,\n offset: \"medium\",\n placement: \"end\",\n screenReaderLabel: CLOSE_TEXT\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_heading__WEBPACK_IMPORTED_MODULE_5__[\"Heading\"], null, UPLOAD_MEDIA_LABEL)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__[\"Modal\"].Body, {\n ref: this.modalBodyRef\n }, this.renderModalBody()), this.renderModalFooter());\n }\n\n}\nUploadMedia.propTypes = {\n disableSubmitWhileUploading: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"bool\"],\n liveRegion: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"func\"],\n rcsConfig: Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"shape\"])({\n contextId: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"],\n contextType: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"],\n origin: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"],\n headers: Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"shape\"])({\n Authorization: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"]\n })\n }),\n onStartUpload: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"func\"],\n onUploadComplete: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"func\"],\n onDismiss: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"func\"],\n open: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"bool\"],\n tabs: Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"shape\"])({\n record: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"bool\"],\n upload: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"bool\"]\n }),\n uploadMediaTranslations: _translationShape__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n // for testing\n computerFile: Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"instanceOf\"])(File),\n userLocale: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"]\n};\nUploadMedia.defaultProps = {\n disableSubmitWhileUploading: false,\n userLocale: 'en'\n};\n\n//# sourceURL=webpack:///../canvas-media/es/UploadMedia.js?");
|
|
16916
16916
|
|
|
16917
16917
|
/***/ }),
|
|
16918
16918
|
|
|
@@ -17483,7 +17483,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17483
17483
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17484
17484
|
|
|
17485
17485
|
"use strict";
|
|
17486
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enhanceUserContent\", function() { return enhanceUserContent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeAllExternalLinksExternalLinks\", function() { return makeAllExternalLinksExternalLinks; });\n/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! escape-html */ \"../../node_modules/escape-html/index.js\");\n/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(escape_html__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @instructure/ui-icons/es/svg */ \"../../node_modules/@instructure/ui-icons/es/svg/index.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./jqueryish_funcs */ \"./src/enhance-user-content/jqueryish_funcs.js\");\n/* harmony import */ var _instructure_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instructure_helper */ \"./src/enhance-user-content/instructure_helper.js\");\n/* harmony import */ var _media_comment_thumbnail__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./media_comment_thumbnail */ \"./src/enhance-user-content/media_comment_thumbnail.js\");\n/*\n * Copyright (C) 2011 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n\n\n\n // in jest the es directory doesn't exist so stub the undefined svg\n\nconst IconDownloadSVG = (_instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconDownloadLine\"] === null || _instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconDownloadLine\"] === void 0 ? void 0 : _instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconDownloadLine\"].src) || '<svg></svg>';\nconst IconExternalLinkSVG = (_instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconExternalLinkLine\"] === null || _instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconExternalLinkLine\"] === void 0 ? void 0 : _instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconExternalLinkLine\"].src) || '<svg></svg>';\n\nfunction makeDownloadButton(download_url, filename) {\n const a = document.createElement('a');\n a.setAttribute('class', 'file_download_btn');\n a.setAttribute('role', 'button');\n a.setAttribute('download', '');\n a.setAttribute('style', 'margin-inline-start: 5px; text-decoration: none;');\n a.setAttribute('href', download_url);\n const $icon = document.createElement('span');\n $icon.setAttribute('role', 'presentation');\n $icon.innerHTML = IconDownloadSVG;\n $icon.firstChild.setAttribute('style', 'width:1em; height:1em; vertical-align:middle; fill:currentColor');\n a.appendChild($icon);\n const srspan = document.createElement('span');\n srspan.setAttribute('class', 'screenreader-only');\n srspan.innerHTML = escape_html__WEBPACK_IMPORTED_MODULE_0___default()(Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Download {filename}', {\n filename\n }));\n a.appendChild(srspan);\n return a;\n}\n\nfunction makeExternalLinkIcon(forLink) {\n const dir = forLink && window.getComputedStyle(forLink).direction || 'ltr';\n const $icon = document.createElement('span');\n $icon.setAttribute('class', 'external_link_icon');\n const style = `margin-inline-start: 5px; ${dir === 'rtl' ? 'transform:scale(-1, 1)' : ''}`;\n $icon.setAttribute('style', style);\n $icon.setAttribute('role', 'presentation');\n $icon.innerHTML = IconExternalLinkSVG;\n $icon.firstChild.setAttribute('style', 'width:1em; height:1em; vertical-align:middle; fill:currentColor');\n const srspan = document.createElement('span');\n srspan.setAttribute('class', 'screenreader-only');\n srspan.innerHTML = escape_html__WEBPACK_IMPORTED_MODULE_0___default()(Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Links to an external site.'));\n $icon.appendChild(srspan);\n return $icon;\n}\n\nfunction handleYoutubeLink($link) {\n const href = $link.getAttribute('href');\n const id = Object(_instructure_helper__WEBPACK_IMPORTED_MODULE_4__[\"youTubeID\"])(href || '');\n\n if (id && !$link.classList.contains('inline_disabled')) {\n const $after = document.createElement('a');\n $after.setAttribute('href', href);\n $after.setAttribute('class', 'youtubed');\n $after.innerHTML = `\n <img src=\"/images/play_overlay.png\"\n class=\"media_comment_thumbnail\"\n style=\"background-image: url(//img.youtube.com/vi/${escape_html__WEBPACK_IMPORTED_MODULE_0___default()(id)}/2.jpg)\"\n alt=\"${escape_html__WEBPACK_IMPORTED_MODULE_0___default()(Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"getData\"])($link, 'preview-alt') || '')}\"\n />\n `;\n $after.addEventListener('click', function (event) {\n event.preventDefault();\n const $this = event.currentTarget;\n const $video = document.createElement('span');\n $video.setAttribute('class', 'youtube_holder');\n $video.style.display = 'block';\n $video.innerHTML = `\n <iframe\n src='//www.youtube.com/embed/${escape_html__WEBPACK_IMPORTED_MODULE_0___default()(id)}?autoplay=1&rel=0&hl=en_US&fs=1'\n frameborder='0'\n width='425'\n height='344'\n allowfullscreen\n ></iframe>\n <br/>\n <a\n href='#'\n style='font-size: 0.8em;'\n class='hide_youtube_embed_link'\n >\n ${escape_html__WEBPACK_IMPORTED_MODULE_0___default()(Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Minimize Video'))}\n </a>\n `;\n $video.querySelectorAll('.hide_youtube_embed_link').forEach($elem => {\n $elem.addEventListener('click', function (event2) {\n event2.preventDefault();\n $video.parentElement.removeChild($video);\n Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"show\"])($after);\n });\n });\n Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"insertAfter\"])($video, $this);\n Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"hide\"])($this);\n });\n $link.classList.add('youtubed');\n Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"insertAfter\"])($after, $link);\n }\n}\n\nlet preview_counter = 0;\n\nfunction previewId() {\n return `preview_${++preview_counter}`;\n}\n\nfunction buildUrl(url) {\n try {\n return new URL(url);\n } catch (e) {// Don't raise an error\n }\n}\n\nfunction enhanceUserContent() {\n let container = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n customEnhanceFunc,\n canvasOrigin,\n kalturaSettings,\n disableGooglePreviews\n } = opts;\n const content = container instanceof HTMLElement && container || document.getElementById('content') || document;\n\n const showFilePreviewEx = event => Object(_instructure_helper__WEBPACK_IMPORTED_MODULE_4__[\"showFilePreview\"])(event, {\n canvasOrigin,\n disableGooglePreviews\n });\n\n content.querySelectorAll('.user_content:not(.enhanced)').forEach(elem => elem.classList.add('unenhanced'));\n content.querySelectorAll('.unenhanced').forEach(unenhanced_elem => {\n unenhanced_elem.querySelectorAll('img').forEach(img => {\n const src = img.getAttribute('src');\n\n if (!/^\\/[^/]/.test(src)) {\n return;\n } // if the image file is unpublished it's replaced with the lock image\n // and canvas adds hidden=1 to the URL.\n // we also need to strip the alt text\n\n\n if (/hidden=1$/.test(src)) {\n img.setAttribute('alt', Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('This image is currently unavailable'));\n }\n });\n Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"setData\"])(unenhanced_elem, 'unenhanced_content_html', unenhanced_elem.innerHTML); // guarantee relative links point to canvas\n\n if (canvasOrigin) {\n const attributes = ['href', 'src'];\n const selector = '[href], [src]';\n unenhanced_elem.querySelectorAll(selector).forEach(element => {\n try {\n for (const a of attributes) {\n const potentialUrl = element.getAttribute(a);\n\n if (!/^\\/[^/]/.test(potentialUrl)) {\n continue;\n }\n\n const absoluteUrl = new URL(potentialUrl, canvasOrigin);\n element.setAttribute(a, absoluteUrl.href);\n }\n } catch (_ignore) {// canvasOrigin probably isn't a valid base url\n }\n });\n }\n\n unenhanced_elem.querySelectorAll('a:not(.not_external, .external)').forEach(childLink => {\n if (!Object(_instructure_helper__WEBPACK_IMPORTED_MODULE_4__[\"isExternalLink\"])(childLink)) return;\n if (childLink.tagName === 'IMG' || childLink.querySelectorAll('img').length > 0) return;\n childLink.classList.add('external');\n childLink.setAttribute('target', '_blank');\n childLink.setAttribute('rel', 'noreferrer noopener');\n const $linkSpan = document.createElement('span');\n const $linkText = childLink.innerHTML;\n $linkSpan.innerHTML = $linkText;\n\n while (childLink.firstChild) childLink.removeChild(childLink.firstChild);\n\n childLink.appendChild($linkSpan);\n const externalLinkIcon = makeExternalLinkIcon(childLink);\n childLink.appendChild(externalLinkIcon);\n });\n });\n content.querySelectorAll('a.instructure_file_link, a.instructure_scribd_file').forEach(file_link => {\n const href = buildUrl(file_link.href); // Don't attempt to enhance links with no href\n\n if (!href) return;\n const matchesCanvasFile = href.pathname.match(/(?:\\/(courses|groups|users)\\/(\\d+))?\\/files\\/(\\d+)/);\n\n if (!matchesCanvasFile) {\n // a bug in the new RCE added instructure_file_link class name to all links\n // only proceed if this is a canvas file link\n return;\n }\n\n if (file_link.textContent.trim()) {\n file_link.addEventListener('click', showFilePreviewEx);\n const filename = file_link.textContent; // instructure_file_link_holder is used to find file_preview_link\n\n const $span = document.createElement('span');\n $span.setAttribute('class', 'instructure_file_holder link_holder instructure_file_link_holder');\n const qs = href.searchParams;\n qs.delete('wrap');\n qs.append('download_frd', '1');\n const download_url = `${href.origin}${href.pathname.replace(/(?:\\/(download|preview))?$/, '/download')}?${qs}`;\n const $download_btn = makeDownloadButton(download_url, filename);\n\n if (file_link.classList.contains('instructure_scribd_file')) {\n if (file_link.classList.contains('no_preview')) {\n // link downloads\n file_link.setAttribute('href', download_url);\n file_link.removeAttribute('target');\n } else if (file_link.classList.contains('inline_disabled')) {\n // link opens in overlay\n file_link.classList.add('preview_in_overlay');\n } else {\n // link previews\n file_link.classList.add('file_preview_link');\n }\n }\n\n file_link.classList.remove('instructure_file_link');\n file_link.classList.remove('instructure_scribd_file');\n file_link.parentElement.replaceChild($span, file_link);\n $span.appendChild(file_link);\n if ($download_btn) $span.appendChild($download_btn);\n }\n }); // Some schools have been using 'file_preview_link' for inline previews\n // outside of the RCE so find them all after we've gone through and\n // added our own (above)\n\n content.querySelectorAll('.instructure_file_link_holder a.file_preview_link, .instructure_file_link_holder a.scribd_file_preview_link').forEach($link => {\n if ($link.classList.contains('previewable')) {\n return;\n }\n\n const preview_id = previewId();\n $link.setAttribute('aria-expanded', 'false');\n $link.setAttribute('aria-controls', preview_id);\n $link.classList.add('previewable');\n $link.addEventListener('click', showFilePreviewEx);\n const $preview_container = document.createElement('div');\n $preview_container.setAttribute('role', 'region');\n $preview_container.setAttribute('class', 'preview_container');\n $preview_container.id = preview_id;\n $preview_container.setAttribute('style', 'display: none;');\n $link.parentElement.appendChild($preview_container);\n\n if ($link.classList.contains('auto_open')) {\n $link.click();\n }\n });\n const unenhanced_anchors = content.querySelectorAll('.user_content.unenhanced a, .user_content.unenhanced+div.answers a');\n unenhanced_anchors.forEach($anchor => {\n $anchor.querySelectorAll('img.media_comment_thumbnail').forEach($thumbnail => {\n const a = Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"closest\"])($thumbnail, 'a', content);\n a === null || a === void 0 ? void 0 : a.classList.add('instructure_inline_media_comment');\n });\n\n if ($anchor.matches('.instructure_inline_media_comment')) {\n $anchor.classList.remove('no-underline');\n Object(_media_comment_thumbnail__WEBPACK_IMPORTED_MODULE_5__[\"default\"])($anchor, 'normal', false, kalturaSettings);\n }\n\n if ($anchor.matches('.instructure_video_link, .instructure_audio_link')) {\n Object(_media_comment_thumbnail__WEBPACK_IMPORTED_MODULE_5__[\"default\"])($anchor, 'normal', true, kalturaSettings);\n }\n\n if (!$anchor.matches('.youtubed')) {\n handleYoutubeLink($anchor);\n }\n });\n\n if (customEnhanceFunc) {\n customEnhanceFunc();\n }\n\n content.querySelectorAll('.user_content.unenhanced').forEach($elem => {\n $elem.classList.remove('unenhanced');\n $elem.classList.add('enhanced');\n });\n setTimeout(() => {\n content.querySelectorAll('.user_content form.user_content_post_form:not(.submitted)').forEach($elem => {\n $elem.submit();\n $elem.classList.add('submitted');\n });\n }, 10); // Remove sandbox attribute from user content iframes to fix busted\n // third-party content, like Google Drive documents.\n\n document.querySelectorAll('.user_content iframe[sandbox=\"allow-scripts allow-forms allow-same-origin\"]').forEach(frame => {\n frame.removeAttribute('sandbox');\n const src = frame.src;\n frame.src = src;\n });\n}\nfunction makeAllExternalLinksExternalLinks() {\n // in 100ms (to give time for everything else to load), find all the external links and add give them\n // the external link look and behavior (force them to open in a new tab)\n setTimeout(function () {\n const content = document.getElementById('content');\n if (!content) return;\n const tld = Object(_instructure_helper__WEBPACK_IMPORTED_MODULE_4__[\"getTld\"])(window.location.hostname);\n const links = content.querySelectorAll(`a[href*=\"//\"]:not([href*=\"${tld}\"])`); // technique for finding \"external\" links copied from https://davidwalsh.name/external-links-css\n\n for (let i = 0; i < links.length; i++) {\n const $link = links[i]; // don't mess with the ones that were already processed in enhanceUserContent\n\n if ($link.classList.contains('external')) continue;\n if ($link.matches('.open_in_a_new_tab')) continue;\n if ($link.querySelectorAll('img').length > 0) continue;\n if ($link.matches('.not_external')) continue;\n if ($link.matches('.exclude_external_icon')) continue; // we have some pre-instui buttons that are styled links\n\n if ($link.classList.contains('btn')) continue;\n const $linkToReplace = $link;\n\n if ($linkToReplace) {\n const $linkIndicator = makeExternalLinkIcon();\n $linkToReplace.classList.add('external');\n $linkToReplace.querySelectorAll('span.ui-icon-extlink').forEach(c => c.remove);\n $linkToReplace.setAttribute('target', '_blank');\n $linkToReplace.setAttribute('rel', 'noreferrer noopener');\n const $linkSpan = document.createElement('span');\n const $linkText = $linkToReplace.innerHTML;\n $linkSpan.innerHTML = $linkText;\n\n while ($linkToReplace.firstChild) $linkToReplace.removeChild($linkToReplace.firstChild);\n\n $linkToReplace.appendChild($linkSpan);\n $linkToReplace.appendChild($linkIndicator);\n }\n }\n }, 100);\n}\n\n//# sourceURL=webpack:///./src/enhance-user-content/enhance_user_content.js?");
|
|
17486
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enhanceUserContent\", function() { return enhanceUserContent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makeAllExternalLinksExternalLinks\", function() { return makeAllExternalLinksExternalLinks; });\n/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! escape-html */ \"../../node_modules/escape-html/index.js\");\n/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(escape_html__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @instructure/ui-icons/es/svg */ \"../../node_modules/@instructure/ui-icons/es/svg/index.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./jqueryish_funcs */ \"./src/enhance-user-content/jqueryish_funcs.js\");\n/* harmony import */ var _instructure_helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instructure_helper */ \"./src/enhance-user-content/instructure_helper.js\");\n/* harmony import */ var _media_comment_thumbnail__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./media_comment_thumbnail */ \"./src/enhance-user-content/media_comment_thumbnail.js\");\n/*\n * Copyright (C) 2011 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n\n\n\n // in jest the es directory doesn't exist so stub the undefined svg\n\nconst IconDownloadSVG = (_instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconDownloadLine\"] === null || _instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconDownloadLine\"] === void 0 ? void 0 : _instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconDownloadLine\"].src) || '<svg></svg>';\nconst IconExternalLinkSVG = (_instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconExternalLinkLine\"] === null || _instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconExternalLinkLine\"] === void 0 ? void 0 : _instructure_ui_icons_es_svg__WEBPACK_IMPORTED_MODULE_1__[\"IconExternalLinkLine\"].src) || '<svg></svg>';\n\nfunction makeDownloadButton(download_url, filename) {\n const a = document.createElement('a');\n a.setAttribute('class', 'file_download_btn');\n a.setAttribute('role', 'button');\n a.setAttribute('download', '');\n a.setAttribute('style', 'margin-inline-start: 5px; text-decoration: none;');\n a.setAttribute('href', download_url);\n const $icon = document.createElement('span');\n $icon.setAttribute('role', 'presentation');\n $icon.innerHTML = IconDownloadSVG;\n $icon.firstChild.setAttribute('style', 'width:1em; height:1em; vertical-align:middle; fill:currentColor');\n a.appendChild($icon);\n const srspan = document.createElement('span');\n srspan.setAttribute('class', 'screenreader-only');\n srspan.innerHTML = escape_html__WEBPACK_IMPORTED_MODULE_0___default()(Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Download {filename}', {\n filename\n }));\n a.appendChild(srspan);\n return a;\n}\n\nfunction makeExternalLinkIcon(forLink) {\n const dir = forLink && window.getComputedStyle(forLink).direction || 'ltr';\n const $icon = document.createElement('span');\n $icon.setAttribute('class', 'external_link_icon');\n const style = `margin-inline-start: 5px; ${dir === 'rtl' ? 'transform:scale(-1, 1)' : ''}`;\n $icon.setAttribute('style', style);\n $icon.setAttribute('role', 'presentation');\n $icon.innerHTML = IconExternalLinkSVG;\n $icon.firstChild.setAttribute('style', 'width:1em; height:1em; vertical-align:middle; fill:currentColor');\n const srspan = document.createElement('span');\n srspan.setAttribute('class', 'screenreader-only');\n srspan.innerHTML = escape_html__WEBPACK_IMPORTED_MODULE_0___default()(Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Links to an external site.'));\n $icon.appendChild(srspan);\n return $icon;\n}\n\nfunction handleYoutubeLink($link) {\n const href = $link.getAttribute('href');\n const id = Object(_instructure_helper__WEBPACK_IMPORTED_MODULE_4__[\"youTubeID\"])(href || '');\n\n if (id && !$link.classList.contains('inline_disabled')) {\n const $after = document.createElement('a');\n $after.setAttribute('href', href);\n $after.setAttribute('class', 'youtubed');\n $after.innerHTML = `\n <img src=\"/images/play_overlay.png\"\n class=\"media_comment_thumbnail\"\n style=\"background-image: url(//img.youtube.com/vi/${escape_html__WEBPACK_IMPORTED_MODULE_0___default()(id)}/2.jpg)\"\n alt=\"${escape_html__WEBPACK_IMPORTED_MODULE_0___default()(Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"getData\"])($link, 'preview-alt') || '')}\"\n />\n `;\n $after.addEventListener('click', function (event) {\n event.preventDefault();\n const $this = event.currentTarget;\n const $video = document.createElement('span');\n $video.setAttribute('class', 'youtube_holder');\n $video.style.display = 'block';\n $video.innerHTML = `\n <iframe\n src='//www.youtube.com/embed/${escape_html__WEBPACK_IMPORTED_MODULE_0___default()(id)}?autoplay=1&rel=0&hl=en_US&fs=1'\n frameborder='0'\n width='425'\n height='344'\n allowfullscreen\n ></iframe>\n <br/>\n <a\n href='#'\n style='font-size: 0.8em;'\n class='hide_youtube_embed_link'\n >\n ${escape_html__WEBPACK_IMPORTED_MODULE_0___default()(Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Minimize Video'))}\n </a>\n `;\n $video.querySelectorAll('.hide_youtube_embed_link').forEach($elem => {\n $elem.addEventListener('click', function (event2) {\n event2.preventDefault();\n $video.parentElement.removeChild($video);\n Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"show\"])($after);\n });\n });\n Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"insertAfter\"])($video, $this);\n Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"hide\"])($this);\n });\n $link.classList.add('youtubed');\n Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"insertAfter\"])($after, $link);\n }\n}\n\nlet preview_counter = 0;\n\nfunction previewId() {\n return `preview_${++preview_counter}`;\n}\n\nfunction buildUrl(url) {\n try {\n return new URL(url);\n } catch (e) {// Don't raise an error\n }\n}\n\nfunction enhanceUserContent() {\n let container = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n customEnhanceFunc,\n canvasOrigin,\n kalturaSettings,\n disableGooglePreviews,\n canvasLinksTarget\n } = opts;\n const content = container instanceof HTMLElement && container || document.getElementById('content') || document;\n\n const showFilePreviewEx = event => Object(_instructure_helper__WEBPACK_IMPORTED_MODULE_4__[\"showFilePreview\"])(event, {\n canvasOrigin,\n disableGooglePreviews\n });\n\n content.querySelectorAll('.user_content:not(.enhanced)').forEach(elem => elem.classList.add('unenhanced'));\n content.querySelectorAll('.unenhanced').forEach(unenhanced_elem => {\n unenhanced_elem.querySelectorAll('img').forEach(img => {\n const src = img.getAttribute('src');\n\n if (!/^\\/[^/]/.test(src)) {\n return;\n } // if the image file is unpublished it's replaced with the lock image\n // and canvas adds hidden=1 to the URL.\n // we also need to strip the alt text\n\n\n if (/hidden=1$/.test(src)) {\n img.setAttribute('alt', Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('This image is currently unavailable'));\n }\n });\n Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"setData\"])(unenhanced_elem, 'unenhanced_content_html', unenhanced_elem.innerHTML); // guarantee relative links point to canvas\n\n if (canvasOrigin) {\n const attributes = ['href', 'src'];\n const selector = '[href], [src]';\n unenhanced_elem.querySelectorAll(selector).forEach(element => {\n try {\n for (const a of attributes) {\n const potentialUrl = element.getAttribute(a);\n\n if (!/^\\/[^/]/.test(potentialUrl)) {\n continue;\n }\n\n const absoluteUrl = new URL(potentialUrl, canvasOrigin);\n element.setAttribute(a, absoluteUrl.href);\n\n if (canvasLinksTarget && element.tagName === 'A' && (!element.getAttribute('target') || element.getAttribute('target') === '_blank')) {\n element.setAttribute('target', canvasLinksTarget);\n }\n }\n } catch (_ignore) {// canvasOrigin probably isn't a valid base url\n }\n });\n }\n\n unenhanced_elem.querySelectorAll('a:not(.not_external, .external)').forEach(childLink => {\n if (!Object(_instructure_helper__WEBPACK_IMPORTED_MODULE_4__[\"isExternalLink\"])(childLink, canvasOrigin)) return;\n if (childLink.tagName === 'IMG' || childLink.querySelectorAll('img').length > 0) return;\n childLink.classList.add('external');\n childLink.setAttribute('target', '_blank');\n childLink.setAttribute('rel', 'noreferrer noopener');\n const $linkSpan = document.createElement('span');\n const $linkText = childLink.innerHTML;\n $linkSpan.innerHTML = $linkText;\n\n while (childLink.firstChild) childLink.removeChild(childLink.firstChild);\n\n childLink.appendChild($linkSpan);\n const externalLinkIcon = makeExternalLinkIcon(childLink);\n childLink.appendChild(externalLinkIcon);\n });\n });\n content.querySelectorAll('a.instructure_file_link, a.instructure_scribd_file').forEach(file_link => {\n const href = buildUrl(file_link.href); // Don't attempt to enhance links with no href\n\n if (!href) return;\n const matchesCanvasFile = href.pathname.match(/(?:\\/(courses|groups|users)\\/(\\d+))?\\/files\\/(\\d+)/);\n\n if (!matchesCanvasFile) {\n // a bug in the new RCE added instructure_file_link class name to all links\n // only proceed if this is a canvas file link\n return;\n }\n\n if (file_link.textContent.trim()) {\n file_link.addEventListener('click', showFilePreviewEx);\n const filename = file_link.textContent; // instructure_file_link_holder is used to find file_preview_link\n\n const $span = document.createElement('span');\n $span.setAttribute('class', 'instructure_file_holder link_holder instructure_file_link_holder');\n const qs = href.searchParams;\n qs.delete('wrap');\n qs.append('download_frd', '1');\n const download_url = `${href.origin}${href.pathname.replace(/(?:\\/(download|preview))?$/, '/download')}?${qs}`;\n const $download_btn = makeDownloadButton(download_url, filename);\n\n if (file_link.classList.contains('instructure_scribd_file')) {\n if (file_link.classList.contains('no_preview')) {\n // link downloads\n file_link.setAttribute('href', download_url);\n file_link.removeAttribute('target');\n } else if (file_link.classList.contains('inline_disabled')) {\n // link opens in overlay\n file_link.classList.add('preview_in_overlay');\n } else {\n // link previews\n file_link.classList.add('file_preview_link');\n }\n }\n\n file_link.classList.remove('instructure_file_link');\n file_link.classList.remove('instructure_scribd_file');\n file_link.parentElement.replaceChild($span, file_link);\n $span.appendChild(file_link);\n if ($download_btn) $span.appendChild($download_btn);\n }\n }); // Some schools have been using 'file_preview_link' for inline previews\n // outside of the RCE so find them all after we've gone through and\n // added our own (above)\n\n content.querySelectorAll('.instructure_file_link_holder a.file_preview_link, .instructure_file_link_holder a.scribd_file_preview_link').forEach($link => {\n if ($link.classList.contains('previewable')) {\n return;\n }\n\n const preview_id = previewId();\n $link.setAttribute('aria-expanded', 'false');\n $link.setAttribute('aria-controls', preview_id);\n $link.classList.add('previewable');\n $link.addEventListener('click', showFilePreviewEx);\n const $preview_container = document.createElement('div');\n $preview_container.setAttribute('role', 'region');\n $preview_container.setAttribute('class', 'preview_container');\n $preview_container.id = preview_id;\n $preview_container.setAttribute('style', 'display: none;');\n $link.parentElement.appendChild($preview_container);\n\n if ($link.classList.contains('auto_open')) {\n $link.click();\n }\n });\n const unenhanced_anchors = content.querySelectorAll('.user_content.unenhanced a, .user_content.unenhanced+div.answers a');\n unenhanced_anchors.forEach($anchor => {\n $anchor.querySelectorAll('img.media_comment_thumbnail').forEach($thumbnail => {\n const a = Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_3__[\"closest\"])($thumbnail, 'a', content);\n a === null || a === void 0 ? void 0 : a.classList.add('instructure_inline_media_comment');\n });\n\n if ($anchor.matches('.instructure_inline_media_comment')) {\n $anchor.classList.remove('no-underline');\n Object(_media_comment_thumbnail__WEBPACK_IMPORTED_MODULE_5__[\"default\"])($anchor, 'normal', false, kalturaSettings);\n }\n\n if ($anchor.matches('.instructure_video_link, .instructure_audio_link')) {\n Object(_media_comment_thumbnail__WEBPACK_IMPORTED_MODULE_5__[\"default\"])($anchor, 'normal', true, kalturaSettings);\n }\n\n if (!$anchor.matches('.youtubed')) {\n handleYoutubeLink($anchor);\n }\n });\n\n if (customEnhanceFunc) {\n customEnhanceFunc();\n }\n\n content.querySelectorAll('.user_content.unenhanced').forEach($elem => {\n $elem.classList.remove('unenhanced');\n $elem.classList.add('enhanced');\n });\n setTimeout(() => {\n content.querySelectorAll('.user_content form.user_content_post_form:not(.submitted)').forEach($elem => {\n $elem.submit();\n $elem.classList.add('submitted');\n });\n }, 10); // Remove sandbox attribute from user content iframes to fix busted\n // third-party content, like Google Drive documents.\n\n document.querySelectorAll('.user_content iframe[sandbox=\"allow-scripts allow-forms allow-same-origin\"]').forEach(frame => {\n frame.removeAttribute('sandbox');\n const src = frame.src;\n frame.src = src;\n });\n}\nfunction makeAllExternalLinksExternalLinks() {\n // in 100ms (to give time for everything else to load), find all the external links and add give them\n // the external link look and behavior (force them to open in a new tab)\n setTimeout(function () {\n const content = document.getElementById('content');\n if (!content) return;\n const tld = Object(_instructure_helper__WEBPACK_IMPORTED_MODULE_4__[\"getTld\"])(window.location.hostname);\n const links = content.querySelectorAll(`a[href*=\"//\"]:not([href*=\"${tld}\"])`); // technique for finding \"external\" links copied from https://davidwalsh.name/external-links-css\n\n for (let i = 0; i < links.length; i++) {\n const $link = links[i]; // don't mess with the ones that were already processed in enhanceUserContent\n\n if ($link.classList.contains('external')) continue;\n if ($link.matches('.open_in_a_new_tab')) continue;\n if ($link.querySelectorAll('img').length > 0) continue;\n if ($link.matches('.not_external')) continue;\n if ($link.matches('.exclude_external_icon')) continue; // we have some pre-instui buttons that are styled links\n\n if ($link.classList.contains('btn')) continue;\n const $linkToReplace = $link;\n\n if ($linkToReplace) {\n const $linkIndicator = makeExternalLinkIcon();\n $linkToReplace.classList.add('external');\n $linkToReplace.querySelectorAll('span.ui-icon-extlink').forEach(c => c.remove);\n $linkToReplace.setAttribute('target', '_blank');\n $linkToReplace.setAttribute('rel', 'noreferrer noopener');\n const $linkSpan = document.createElement('span');\n const $linkText = $linkToReplace.innerHTML;\n $linkSpan.innerHTML = $linkText;\n\n while ($linkToReplace.firstChild) $linkToReplace.removeChild($linkToReplace.firstChild);\n\n $linkToReplace.appendChild($linkSpan);\n $linkToReplace.appendChild($linkIndicator);\n }\n }\n }, 100);\n}\n\n//# sourceURL=webpack:///./src/enhance-user-content/enhance_user_content.js?");
|
|
17487
17487
|
|
|
17488
17488
|
/***/ }),
|
|
17489
17489
|
|
|
@@ -17507,7 +17507,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _med
|
|
|
17507
17507
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17508
17508
|
|
|
17509
17509
|
"use strict";
|
|
17510
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"youTubeID\", function() { return youTubeID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTld\", function() { return getTld; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isExternalLink\", function() { return isExternalLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showFilePreview\", function() { return showFilePreview; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showFilePreviewInOverlay\", function() { return showFilePreviewInOverlay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showFilePreviewInline\", function() { return showFilePreviewInline; });\n/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! escape-html */ \"../../node_modules/escape-html/index.js\");\n/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(escape_html__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _common_FlashAlert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/FlashAlert */ \"./src/common/FlashAlert.js\");\n/* harmony import */ var _doc_previews__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./doc_previews */ \"./src/enhance-user-content/doc_previews.js\");\n/* harmony import */ var _jqueryish_funcs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./jqueryish_funcs */ \"./src/enhance-user-content/jqueryish_funcs.js\");\n/*\n * Copyright (C) 2022 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n\n\n\nconst youTubeRegEx = /^https?:\\/\\/(www\\.youtube\\.com\\/watch.*v(=|\\/)|youtu\\.be\\/)([^&#]*)/;\nfunction youTubeID(path) {\n const match = path.match(youTubeRegEx);\n\n if (match && match[match.length - 1]) {\n return match[match.length - 1];\n }\n\n return null;\n}\nfunction getTld(hostname) {\n hostname = (hostname || '').split(':')[0];\n const parts = hostname.split('.'),\n length = parts.length;\n return (length > 1 ? [parts[length - 2], parts[length - 1]] : parts).join('.');\n}\
|
|
17510
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"youTubeID\", function() { return youTubeID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTld\", function() { return getTld; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isExternalLink\", function() { return isExternalLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showFilePreview\", function() { return showFilePreview; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showFilePreviewInOverlay\", function() { return showFilePreviewInOverlay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showFilePreviewInline\", function() { return showFilePreviewInline; });\n/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! escape-html */ \"../../node_modules/escape-html/index.js\");\n/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(escape_html__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _common_FlashAlert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/FlashAlert */ \"./src/common/FlashAlert.js\");\n/* harmony import */ var _doc_previews__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./doc_previews */ \"./src/enhance-user-content/doc_previews.js\");\n/* harmony import */ var _jqueryish_funcs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./jqueryish_funcs */ \"./src/enhance-user-content/jqueryish_funcs.js\");\n/*\n * Copyright (C) 2022 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n\n\n\nconst youTubeRegEx = /^https?:\\/\\/(www\\.youtube\\.com\\/watch.*v(=|\\/)|youtu\\.be\\/)([^&#]*)/;\nfunction youTubeID(path) {\n const match = path.match(youTubeRegEx);\n\n if (match && match[match.length - 1]) {\n return match[match.length - 1];\n }\n\n return null;\n}\nfunction getTld(hostname) {\n hostname = (hostname || '').split(':')[0];\n const parts = hostname.split('.'),\n length = parts.length;\n return (length > 1 ? [parts[length - 2], parts[length - 1]] : parts).join('.');\n}\nfunction isExternalLink(element) {\n let canvasOrigin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window.location.origin;\n let canvasHost;\n\n try {\n canvasHost = new URL(canvasOrigin).hostname;\n } catch (_ex) {\n canvasHost = window.location.hostname;\n }\n\n const href = element.getAttribute('href'); // if a browser doesnt support <a>.hostname then just dont mark anything as external, better to not get false positives.\n\n return !!(href && href.length && !href.match(/^(mailto\\:|javascript\\:)/) && element.hostname && getTld(element.hostname) !== getTld(canvasHost));\n}\nfunction showFilePreview(event) {\n var _event$target, _event$currentTarget;\n\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n canvasOrigin,\n disableGooglePreviews\n } = { ...opts\n };\n let target = null;\n\n if ((_event$target = event.target) !== null && _event$target !== void 0 && _event$target.href) {\n target = event.target;\n } else if ((_event$currentTarget = event.currentTarget) !== null && _event$currentTarget !== void 0 && _event$currentTarget.href) {\n target = event.currentTarget;\n } else {\n return;\n }\n\n if (target.classList.contains('no_preview')) {\n return;\n }\n\n if (target.classList.contains('inline_disabled') || target.classList.contains('preview_in_overlay')) {\n showFilePreviewInOverlay(event, canvasOrigin);\n } else {\n showFilePreviewInline(event, disableGooglePreviews);\n }\n}\nfunction showFilePreviewInOverlay(event, canvasOrigin) {\n var _event$target2, _event$currentTarget2, _target;\n\n let target = null;\n\n if ((_event$target2 = event.target) !== null && _event$target2 !== void 0 && _event$target2.href) {\n target = event.target;\n } else if ((_event$currentTarget2 = event.currentTarget) !== null && _event$currentTarget2 !== void 0 && _event$currentTarget2.href) {\n target = event.currentTarget;\n }\n\n const matches = (_target = target) === null || _target === void 0 ? void 0 : _target.href.match(/\\/files\\/(\\d+)/);\n\n if (matches) {\n if (event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) {\n // if any modifier keys are pressed, do the browser default thing\n return;\n }\n\n event.preventDefault();\n const url = new URL(target.href);\n const verifier = url === null || url === void 0 ? void 0 : url.searchParams.get('verifier');\n const file_id = matches[1]; // TODO:\n // 1. what window should be be using\n // 2. is that the right origin?\n // 3. this is temporary until we can decouple the file previewer from canvas\n\n window.top.postMessage({\n subject: 'preview_file',\n file_id,\n verifier\n }, canvasOrigin);\n }\n}\nfunction showFilePreviewInline(event, disableGooglePreviews) {\n if (event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) {\n // if any modifier keys are pressed, do the browser default thing\n return;\n }\n\n event.preventDefault();\n const $link = event.currentTarget || event.target;\n\n if ($link.getAttribute('aria-expanded') === 'true') {\n // close the preview by clicking the \"Minimize File Preview\" link\n const $preview = document.getElementById($link.getAttribute('aria-controls'));\n $preview.querySelector('.hide_file_preview_link').click();\n return;\n }\n\n Object(_doc_previews__WEBPACK_IMPORTED_MODULE_3__[\"showLoadingImage\"])($link);\n fetch($link.getAttribute('href').replace(/\\/(download|preview)/, '') // download as part of the path\n .replace(/wrap=1&?/, '') // wrap=1 as part of the query_string\n .replace(/[?&]$/, ''), // any trailing chars if wrap=1 was at the end\n {\n method: 'GET',\n headers: {\n Accept: 'application/json'\n },\n credentials: 'include'\n }).then(response => {\n if (!response.ok) throw new Error(`${response.status}: ${response.statusText}`);\n return response;\n }).then(response => response.json()).then(data => {\n const attachment = data && data.attachment;\n Object(_doc_previews__WEBPACK_IMPORTED_MODULE_3__[\"removeLoadingImage\"])($link);\n\n if (attachment && (!disableGooglePreviews && Object(_doc_previews__WEBPACK_IMPORTED_MODULE_3__[\"isPreviewable\"])(attachment.content_type) || attachment.canvadoc_session_url)) {\n $link.setAttribute('aria-expanded', 'true');\n const $div = document.querySelector(`[id=\"${$link.getAttribute('aria-controls')}\"]`);\n $div.style.display = 'block';\n Object(_doc_previews__WEBPACK_IMPORTED_MODULE_3__[\"loadDocPreview\"])($div, {\n canvadoc_session_url: attachment.canvadoc_session_url,\n mimeType: attachment.content_type,\n public_url: attachment.public_url,\n attachment_preview_processing: attachment.workflow_state === 'pending_upload' || attachment.workflow_state === 'processing',\n disableGooglePreviews\n });\n const $minimizeLink = document.createElement('a');\n $minimizeLink.setAttribute('href', '#');\n $minimizeLink.setAttribute('style', 'font-size: 0.8em;');\n $minimizeLink.setAttribute('class', 'hide_file_preview_link');\n $minimizeLink.innerHTML = escape_html__WEBPACK_IMPORTED_MODULE_0___default()(Object(_format_message__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('Minimize File Preview'));\n $minimizeLink.addEventListener('click', event2 => {\n event2.preventDefault();\n resetInlinePreview($link, $div);\n });\n $div.prepend($minimizeLink);\n\n if (Object.prototype.hasOwnProperty.call(event, 'originalEvent')) {\n // Only focus this link if the open preview link was initiated by a real browser event\n // If it was triggered by our auto_open stuff it shouldn't focus here.\n $minimizeLink.focus();\n }\n }\n }).catch(ex => {\n Object(_common_FlashAlert__WEBPACK_IMPORTED_MODULE_2__[\"showFlashAlert\"])({\n message: Object(_format_message__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('Failed getting file contents'),\n type: 'error'\n }); // eslint-disable-next-line no-console\n\n console.error(ex);\n resetInlinePreview($link);\n Object(_doc_previews__WEBPACK_IMPORTED_MODULE_3__[\"removeLoadingImage\"])($link);\n });\n}\n\nfunction resetInlinePreview($link, $previewContainer) {\n $link.setAttribute('aria-expanded', 'false');\n Object(_jqueryish_funcs__WEBPACK_IMPORTED_MODULE_4__[\"show\"])($link);\n $link.focus();\n\n if ($previewContainer) {\n $previewContainer.innerHTML = '';\n $previewContainer.style.display = 'none';\n }\n}\n\n//# sourceURL=webpack:///./src/enhance-user-content/instructure_helper.js?");
|
|
17511
17511
|
|
|
17512
17512
|
/***/ }),
|
|
17513
17513
|
|
|
@@ -17555,7 +17555,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var form
|
|
|
17555
17555
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17556
17556
|
|
|
17557
17557
|
"use strict";
|
|
17558
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getTranslations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLocaleList\", function() { return getLocaleList; });\n/*\n * Copyright (C) 2021 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/*\n * ********************************************************\n * This file is generated by scripts/installTranslations.js\n * as part of the build. DO NOT EDIT\n * ********************************************************\n */\nfunction getTranslations(locale) {\n const transReadyPromise = new Promise((resolve, reject) => {\n __webpack_require__.e(/*! import() */ 12).then(__webpack_require__.t.bind(null, /*! tinymce */ \"../../node_modules/tinymce/tinymce.js\", 7)).then(() => {\n let p;\n\n switch (locale) {\n case 'ar':\n p = __webpack_require__.e(/*! import() */ 38).then(__webpack_require__.bind(null, /*! ./translations/locales/ar */ \"./src/translations/locales/ar.js\"));\n break;\n\n case 'ca':\n p = __webpack_require__.e(/*! import() */ 39).then(__webpack_require__.bind(null, /*! ./translations/locales/ca */ \"./src/translations/locales/ca.js\"));\n break;\n\n case 'cy':\n p = __webpack_require__.e(/*! import() */ 40).then(__webpack_require__.bind(null, /*! ./translations/locales/cy */ \"./src/translations/locales/cy.js\"));\n break;\n\n case 'da':\n p = Promise.all(/*! import() */[__webpack_require__.e(13), __webpack_require__.e(76)]).then(__webpack_require__.bind(null, /*! ./translations/locales/da */ \"./src/translations/locales/da.js\"));\n break;\n\n case 'da-x-k12':\n p = Promise.all(/*! import() */[__webpack_require__.e(13), __webpack_require__.e(75)]).then(__webpack_require__.bind(null, /*! ./translations/locales/da-x-k12 */ \"./src/translations/locales/da-x-k12.js\"));\n break;\n\n case 'de':\n p = __webpack_require__.e(/*! import() */ 41).then(__webpack_require__.bind(null, /*! ./translations/locales/de */ \"./src/translations/locales/de.js\"));\n break;\n\n case 'el':\n p = __webpack_require__.e(/*! import() */ 42).then(__webpack_require__.bind(null, /*! ./translations/locales/el */ \"./src/translations/locales/el.js\"));\n break;\n\n case 'en':\n p = __webpack_require__.e(/*! import() */ 77).then(__webpack_require__.bind(null, /*! ./translations/locales/en */ \"./src/translations/locales/en.js\"));\n break;\n\n case 'en-AU-x-unimelb':\n p = __webpack_require__.e(/*! import() */ 43).then(__webpack_require__.bind(null, /*! ./translations/locales/en-AU-x-unimelb */ \"./src/translations/locales/en-AU-x-unimelb.js\"));\n break;\n\n case 'en-GB-x-ukhe':\n p = __webpack_require__.e(/*! import() */ 44).then(__webpack_require__.bind(null, /*! ./translations/locales/en-GB-x-ukhe */ \"./src/translations/locales/en-GB-x-ukhe.js\"));\n break;\n\n case 'en-AU':\n p = __webpack_require__.e(/*! import() */ 45).then(__webpack_require__.bind(null, /*! ./translations/locales/en_AU */ \"./src/translations/locales/en_AU.js\"));\n break;\n\n case 'en-CA':\n p = __webpack_require__.e(/*! import() */ 78).then(__webpack_require__.bind(null, /*! ./translations/locales/en_CA */ \"./src/translations/locales/en_CA.js\"));\n break;\n\n case 'en-CY':\n p = __webpack_require__.e(/*! import() */ 79).then(__webpack_require__.bind(null, /*! ./translations/locales/en_CY */ \"./src/translations/locales/en_CY.js\"));\n break;\n\n case 'en-GB':\n p = __webpack_require__.e(/*! import() */ 46).then(__webpack_require__.bind(null, /*! ./translations/locales/en_GB */ \"./src/translations/locales/en_GB.js\"));\n break;\n\n case 'es':\n p = Promise.all(/*! import() */[__webpack_require__.e(14), __webpack_require__.e(80)]).then(__webpack_require__.bind(null, /*! ./translations/locales/es */ \"./src/translations/locales/es.js\"));\n break;\n\n case 'es-ES':\n p = Promise.all(/*! import() */[__webpack_require__.e(14), __webpack_require__.e(81)]).then(__webpack_require__.bind(null, /*! ./translations/locales/es_ES */ \"./src/translations/locales/es_ES.js\"));\n break;\n\n case 'es-GT':\n p = __webpack_require__.e(/*! import() */ 82).then(__webpack_require__.bind(null, /*! ./translations/locales/es_GT */ \"./src/translations/locales/es_GT.js\"));\n break;\n\n case 'fa-IR':\n p = __webpack_require__.e(/*! import() */ 47).then(__webpack_require__.bind(null, /*! ./translations/locales/fa_IR */ \"./src/translations/locales/fa_IR.js\"));\n break;\n\n case 'fi':\n p = __webpack_require__.e(/*! import() */ 48).then(__webpack_require__.bind(null, /*! ./translations/locales/fi */ \"./src/translations/locales/fi.js\"));\n break;\n\n case 'fr':\n p = Promise.all(/*! import() */[__webpack_require__.e(15), __webpack_require__.e(83)]).then(__webpack_require__.bind(null, /*! ./translations/locales/fr */ \"./src/translations/locales/fr.js\"));\n break;\n\n case 'fr-CA':\n p = Promise.all(/*! import() */[__webpack_require__.e(15), __webpack_require__.e(84)]).then(__webpack_require__.bind(null, /*! ./translations/locales/fr_CA */ \"./src/translations/locales/fr_CA.js\"));\n break;\n\n case 'he':\n p = __webpack_require__.e(/*! import() */ 49).then(__webpack_require__.bind(null, /*! ./translations/locales/he */ \"./src/translations/locales/he.js\"));\n break;\n\n case 'ht':\n p = __webpack_require__.e(/*! import() */ 85).then(__webpack_require__.bind(null, /*! ./translations/locales/ht */ \"./src/translations/locales/ht.js\"));\n break;\n\n case 'hu':\n p = __webpack_require__.e(/*! import() */ 50).then(__webpack_require__.bind(null, /*! ./translations/locales/hu */ \"./src/translations/locales/hu.js\"));\n break;\n\n case 'hy':\n p = __webpack_require__.e(/*! import() */ 51).then(__webpack_require__.bind(null, /*! ./translations/locales/hy */ \"./src/translations/locales/hy.js\"));\n break;\n\n case 'is':\n p = __webpack_require__.e(/*! import() */ 86).then(__webpack_require__.bind(null, /*! ./translations/locales/is */ \"./src/translations/locales/is.js\"));\n break;\n\n case 'it':\n p = __webpack_require__.e(/*! import() */ 52).then(__webpack_require__.bind(null, /*! ./translations/locales/it */ \"./src/translations/locales/it.js\"));\n break;\n\n case 'ja':\n p = __webpack_require__.e(/*! import() */ 53).then(__webpack_require__.bind(null, /*! ./translations/locales/ja */ \"./src/translations/locales/ja.js\"));\n break;\n\n case 'ko':\n p = __webpack_require__.e(/*! import() */ 54).then(__webpack_require__.bind(null, /*! ./translations/locales/ko */ \"./src/translations/locales/ko.js\"));\n break;\n\n case 'mi':\n p = __webpack_require__.e(/*! import() */ 87).then(__webpack_require__.bind(null, /*! ./translations/locales/mi */ \"./src/translations/locales/mi.js\"));\n break;\n\n case 'nb':\n p = Promise.all(/*! import() */[__webpack_require__.e(6), __webpack_require__.e(89)]).then(__webpack_require__.bind(null, /*! ./translations/locales/nb */ \"./src/translations/locales/nb.js\"));\n break;\n\n case 'nb-x-k12':\n p = Promise.all(/*! import() */[__webpack_require__.e(6), __webpack_require__.e(88)]).then(__webpack_require__.bind(null, /*! ./translations/locales/nb-x-k12 */ \"./src/translations/locales/nb-x-k12.js\"));\n break;\n\n case 'nl':\n p = __webpack_require__.e(/*! import() */ 55).then(__webpack_require__.bind(null, /*! ./translations/locales/nl */ \"./src/translations/locales/nl.js\"));\n break;\n\n case 'nn':\n p = Promise.all(/*! import() */[__webpack_require__.e(6), __webpack_require__.e(90)]).then(__webpack_require__.bind(null, /*! ./translations/locales/nn */ \"./src/translations/locales/nn.js\"));\n break;\n\n case 'pl':\n p = __webpack_require__.e(/*! import() */ 56).then(__webpack_require__.bind(null, /*! ./translations/locales/pl */ \"./src/translations/locales/pl.js\"));\n break;\n\n case 'pt':\n p = __webpack_require__.e(/*! import() */ 57).then(__webpack_require__.bind(null, /*! ./translations/locales/pt */ \"./src/translations/locales/pt.js\"));\n break;\n\n case 'pt-BR':\n p = __webpack_require__.e(/*! import() */ 58).then(__webpack_require__.bind(null, /*! ./translations/locales/pt_BR */ \"./src/translations/locales/pt_BR.js\"));\n break;\n\n case 'ru':\n p = __webpack_require__.e(/*! import() */ 59).then(__webpack_require__.bind(null, /*! ./translations/locales/ru */ \"./src/translations/locales/ru.js\"));\n break;\n\n case 'se':\n p = __webpack_require__.e(/*! import() */ 91).then(__webpack_require__.bind(null, /*! ./translations/locales/se */ \"./src/translations/locales/se.js\"));\n break;\n\n case 'sl':\n p = __webpack_require__.e(/*! import() */ 60).then(__webpack_require__.bind(null, /*! ./translations/locales/sl */ \"./src/translations/locales/sl.js\"));\n break;\n\n case 'sv':\n p = Promise.all(/*! import() */[__webpack_require__.e(16), __webpack_require__.e(93)]).then(__webpack_require__.bind(null, /*! ./translations/locales/sv */ \"./src/translations/locales/sv.js\"));\n break;\n\n case 'sv-x-k12':\n p = Promise.all(/*! import() */[__webpack_require__.e(16), __webpack_require__.e(92)]).then(__webpack_require__.bind(null, /*! ./translations/locales/sv-x-k12 */ \"./src/translations/locales/sv-x-k12.js\"));\n break;\n\n case 'sv-SE':\n p = __webpack_require__.e(/*! import() */ 94).then(__webpack_require__.bind(null, /*! ./translations/locales/sv_SE */ \"./src/translations/locales/sv_SE.js\"));\n break;\n\n case 'tg':\n p = __webpack_require__.e(/*! import() */ 95).then(__webpack_require__.bind(null, /*! ./translations/locales/tg */ \"./src/translations/locales/tg.js\"));\n break;\n\n case 'th':\n p = __webpack_require__.e(/*! import() */ 61).then(__webpack_require__.bind(null, /*! ./translations/locales/th */ \"./src/translations/locales/th.js\"));\n break;\n\n case 'th-TH':\n p = __webpack_require__.e(/*! import() */ 96).then(__webpack_require__.bind(null, /*! ./translations/locales/th_TH */ \"./src/translations/locales/th_TH.js\"));\n break;\n\n case 'tr':\n p = __webpack_require__.e(/*! import() */ 62).then(__webpack_require__.bind(null, /*! ./translations/locales/tr */ \"./src/translations/locales/tr.js\"));\n break;\n\n case 'uk-UA':\n p = __webpack_require__.e(/*! import() */ 63).then(__webpack_require__.bind(null, /*! ./translations/locales/uk_UA */ \"./src/translations/locales/uk_UA.js\"));\n break;\n\n case 'vi':\n p = __webpack_require__.e(/*! import() */ 64).then(__webpack_require__.bind(null, /*! ./translations/locales/vi */ \"./src/translations/locales/vi.js\"));\n break;\n\n case 'vi-VN':\n p = __webpack_require__.e(/*! import() */ 97).then(__webpack_require__.bind(null, /*! ./translations/locales/vi_VN */ \"./src/translations/locales/vi_VN.js\"));\n break;\n\n case 'zh':\n p = Promise.all(/*! import() */[__webpack_require__.e(17), __webpack_require__.e(100)]).then(__webpack_require__.bind(null, /*! ./translations/locales/zh */ \"./src/translations/locales/zh.js\"));\n break;\n\n case 'zh-Hans':\n p = Promise.all(/*! import() */[__webpack_require__.e(17), __webpack_require__.e(98)]).then(__webpack_require__.bind(null, /*! ./translations/locales/zh-Hans */ \"./src/translations/locales/zh-Hans.js\"));\n break;\n\n case 'zh-Hant':\n p = Promise.all(/*! import() */[__webpack_require__.e(18), __webpack_require__.e(99)]).then(__webpack_require__.bind(null, /*! ./translations/locales/zh-Hant */ \"./src/translations/locales/zh-Hant.js\"));\n break;\n\n case 'zh-HK':\n p = Promise.all(/*! import() */[__webpack_require__.e(18), __webpack_require__.e(101)]).then(__webpack_require__.bind(null, /*! ./translations/locales/zh_HK */ \"./src/translations/locales/zh_HK.js\"));\n break;\n\n default:\n p = Promise.resolve(null);\n }\n\n p.then(resolve).catch(reject);\n }).catch(() => {\n throw new Error('Failed loading tinymce.');\n });\n });\n return transReadyPromise;\n}\nfunction getLocaleList() {\n return ['ar', 'ca', 'cy', 'da', 'da-x-k12', 'de', 'el', 'en', 'en-AU-x-unimelb', 'en-GB-x-ukhe', 'en-AU', 'en-CA', 'en-CY', 'en-GB', 'es', 'es-ES', 'es-GT', 'fa-IR', 'fi', 'fr', 'fr-CA', 'he', 'ht', 'hu', 'hy', 'is', 'it', 'ja', 'ko', 'mi', 'nb', 'nb-x-k12', 'nl', 'nn', 'pl', 'pt', 'pt-BR', 'ru', 'se', 'sl', 'sv', 'sv-x-k12', 'sv-SE', 'tg', 'th', 'th-TH', 'tr', 'uk-UA', 'vi', 'vi-VN', 'zh', 'zh-Hans', 'zh-Hant', 'zh-HK'];\n}\n\n//# sourceURL=webpack:///./src/getTranslations.js?");
|
|
17558
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getTranslations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLocaleList\", function() { return getLocaleList; });\n/*\n * Copyright (C) 2021 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/*\n * ********************************************************\n * This file is generated by scripts/installTranslations.js\n * as part of the build. DO NOT EDIT\n * ********************************************************\n */\nfunction getTranslations(locale) {\n const transReadyPromise = new Promise((resolve, reject) => {\n __webpack_require__.e(/*! import() */ 12).then(__webpack_require__.t.bind(null, /*! tinymce */ \"../../node_modules/tinymce/tinymce.js\", 7)).then(() => {\n let p;\n\n switch (locale) {\n case 'ar':\n p = __webpack_require__.e(/*! import() */ 39).then(__webpack_require__.bind(null, /*! ./translations/locales/ar */ \"./src/translations/locales/ar.js\"));\n break;\n\n case 'ca':\n p = __webpack_require__.e(/*! import() */ 40).then(__webpack_require__.bind(null, /*! ./translations/locales/ca */ \"./src/translations/locales/ca.js\"));\n break;\n\n case 'cy':\n p = __webpack_require__.e(/*! import() */ 41).then(__webpack_require__.bind(null, /*! ./translations/locales/cy */ \"./src/translations/locales/cy.js\"));\n break;\n\n case 'da':\n p = Promise.all(/*! import() */[__webpack_require__.e(13), __webpack_require__.e(78)]).then(__webpack_require__.bind(null, /*! ./translations/locales/da */ \"./src/translations/locales/da.js\"));\n break;\n\n case 'da-x-k12':\n p = Promise.all(/*! import() */[__webpack_require__.e(13), __webpack_require__.e(77)]).then(__webpack_require__.bind(null, /*! ./translations/locales/da-x-k12 */ \"./src/translations/locales/da-x-k12.js\"));\n break;\n\n case 'de':\n p = __webpack_require__.e(/*! import() */ 42).then(__webpack_require__.bind(null, /*! ./translations/locales/de */ \"./src/translations/locales/de.js\"));\n break;\n\n case 'el':\n p = __webpack_require__.e(/*! import() */ 43).then(__webpack_require__.bind(null, /*! ./translations/locales/el */ \"./src/translations/locales/el.js\"));\n break;\n\n case 'en':\n p = __webpack_require__.e(/*! import() */ 79).then(__webpack_require__.bind(null, /*! ./translations/locales/en */ \"./src/translations/locales/en.js\"));\n break;\n\n case 'en-AU-x-unimelb':\n p = __webpack_require__.e(/*! import() */ 44).then(__webpack_require__.bind(null, /*! ./translations/locales/en-AU-x-unimelb */ \"./src/translations/locales/en-AU-x-unimelb.js\"));\n break;\n\n case 'en-GB-x-ukhe':\n p = __webpack_require__.e(/*! import() */ 45).then(__webpack_require__.bind(null, /*! ./translations/locales/en-GB-x-ukhe */ \"./src/translations/locales/en-GB-x-ukhe.js\"));\n break;\n\n case 'en-AU':\n p = __webpack_require__.e(/*! import() */ 46).then(__webpack_require__.bind(null, /*! ./translations/locales/en_AU */ \"./src/translations/locales/en_AU.js\"));\n break;\n\n case 'en-CA':\n p = __webpack_require__.e(/*! import() */ 80).then(__webpack_require__.bind(null, /*! ./translations/locales/en_CA */ \"./src/translations/locales/en_CA.js\"));\n break;\n\n case 'en-CY':\n p = __webpack_require__.e(/*! import() */ 81).then(__webpack_require__.bind(null, /*! ./translations/locales/en_CY */ \"./src/translations/locales/en_CY.js\"));\n break;\n\n case 'en-GB':\n p = __webpack_require__.e(/*! import() */ 47).then(__webpack_require__.bind(null, /*! ./translations/locales/en_GB */ \"./src/translations/locales/en_GB.js\"));\n break;\n\n case 'es':\n p = Promise.all(/*! import() */[__webpack_require__.e(14), __webpack_require__.e(82)]).then(__webpack_require__.bind(null, /*! ./translations/locales/es */ \"./src/translations/locales/es.js\"));\n break;\n\n case 'es-ES':\n p = Promise.all(/*! import() */[__webpack_require__.e(14), __webpack_require__.e(83)]).then(__webpack_require__.bind(null, /*! ./translations/locales/es_ES */ \"./src/translations/locales/es_ES.js\"));\n break;\n\n case 'es-GT':\n p = __webpack_require__.e(/*! import() */ 84).then(__webpack_require__.bind(null, /*! ./translations/locales/es_GT */ \"./src/translations/locales/es_GT.js\"));\n break;\n\n case 'fa-IR':\n p = __webpack_require__.e(/*! import() */ 48).then(__webpack_require__.bind(null, /*! ./translations/locales/fa_IR */ \"./src/translations/locales/fa_IR.js\"));\n break;\n\n case 'fi':\n p = __webpack_require__.e(/*! import() */ 49).then(__webpack_require__.bind(null, /*! ./translations/locales/fi */ \"./src/translations/locales/fi.js\"));\n break;\n\n case 'fr':\n p = Promise.all(/*! import() */[__webpack_require__.e(15), __webpack_require__.e(85)]).then(__webpack_require__.bind(null, /*! ./translations/locales/fr */ \"./src/translations/locales/fr.js\"));\n break;\n\n case 'fr-CA':\n p = Promise.all(/*! import() */[__webpack_require__.e(15), __webpack_require__.e(86)]).then(__webpack_require__.bind(null, /*! ./translations/locales/fr_CA */ \"./src/translations/locales/fr_CA.js\"));\n break;\n\n case 'he':\n p = __webpack_require__.e(/*! import() */ 50).then(__webpack_require__.bind(null, /*! ./translations/locales/he */ \"./src/translations/locales/he.js\"));\n break;\n\n case 'ht':\n p = __webpack_require__.e(/*! import() */ 87).then(__webpack_require__.bind(null, /*! ./translations/locales/ht */ \"./src/translations/locales/ht.js\"));\n break;\n\n case 'hu':\n p = __webpack_require__.e(/*! import() */ 51).then(__webpack_require__.bind(null, /*! ./translations/locales/hu */ \"./src/translations/locales/hu.js\"));\n break;\n\n case 'hy':\n p = __webpack_require__.e(/*! import() */ 52).then(__webpack_require__.bind(null, /*! ./translations/locales/hy */ \"./src/translations/locales/hy.js\"));\n break;\n\n case 'is':\n p = __webpack_require__.e(/*! import() */ 88).then(__webpack_require__.bind(null, /*! ./translations/locales/is */ \"./src/translations/locales/is.js\"));\n break;\n\n case 'it':\n p = __webpack_require__.e(/*! import() */ 53).then(__webpack_require__.bind(null, /*! ./translations/locales/it */ \"./src/translations/locales/it.js\"));\n break;\n\n case 'ja':\n p = __webpack_require__.e(/*! import() */ 54).then(__webpack_require__.bind(null, /*! ./translations/locales/ja */ \"./src/translations/locales/ja.js\"));\n break;\n\n case 'ko':\n p = __webpack_require__.e(/*! import() */ 55).then(__webpack_require__.bind(null, /*! ./translations/locales/ko */ \"./src/translations/locales/ko.js\"));\n break;\n\n case 'mi':\n p = __webpack_require__.e(/*! import() */ 89).then(__webpack_require__.bind(null, /*! ./translations/locales/mi */ \"./src/translations/locales/mi.js\"));\n break;\n\n case 'nb':\n p = Promise.all(/*! import() */[__webpack_require__.e(6), __webpack_require__.e(91)]).then(__webpack_require__.bind(null, /*! ./translations/locales/nb */ \"./src/translations/locales/nb.js\"));\n break;\n\n case 'nb-x-k12':\n p = Promise.all(/*! import() */[__webpack_require__.e(6), __webpack_require__.e(90)]).then(__webpack_require__.bind(null, /*! ./translations/locales/nb-x-k12 */ \"./src/translations/locales/nb-x-k12.js\"));\n break;\n\n case 'nl':\n p = __webpack_require__.e(/*! import() */ 56).then(__webpack_require__.bind(null, /*! ./translations/locales/nl */ \"./src/translations/locales/nl.js\"));\n break;\n\n case 'nn':\n p = Promise.all(/*! import() */[__webpack_require__.e(6), __webpack_require__.e(92)]).then(__webpack_require__.bind(null, /*! ./translations/locales/nn */ \"./src/translations/locales/nn.js\"));\n break;\n\n case 'pl':\n p = __webpack_require__.e(/*! import() */ 57).then(__webpack_require__.bind(null, /*! ./translations/locales/pl */ \"./src/translations/locales/pl.js\"));\n break;\n\n case 'pt':\n p = __webpack_require__.e(/*! import() */ 58).then(__webpack_require__.bind(null, /*! ./translations/locales/pt */ \"./src/translations/locales/pt.js\"));\n break;\n\n case 'pt-BR':\n p = __webpack_require__.e(/*! import() */ 59).then(__webpack_require__.bind(null, /*! ./translations/locales/pt_BR */ \"./src/translations/locales/pt_BR.js\"));\n break;\n\n case 'ru':\n p = __webpack_require__.e(/*! import() */ 60).then(__webpack_require__.bind(null, /*! ./translations/locales/ru */ \"./src/translations/locales/ru.js\"));\n break;\n\n case 'se':\n p = __webpack_require__.e(/*! import() */ 93).then(__webpack_require__.bind(null, /*! ./translations/locales/se */ \"./src/translations/locales/se.js\"));\n break;\n\n case 'sl':\n p = __webpack_require__.e(/*! import() */ 61).then(__webpack_require__.bind(null, /*! ./translations/locales/sl */ \"./src/translations/locales/sl.js\"));\n break;\n\n case 'sv':\n p = Promise.all(/*! import() */[__webpack_require__.e(16), __webpack_require__.e(95)]).then(__webpack_require__.bind(null, /*! ./translations/locales/sv */ \"./src/translations/locales/sv.js\"));\n break;\n\n case 'sv-x-k12':\n p = Promise.all(/*! import() */[__webpack_require__.e(16), __webpack_require__.e(94)]).then(__webpack_require__.bind(null, /*! ./translations/locales/sv-x-k12 */ \"./src/translations/locales/sv-x-k12.js\"));\n break;\n\n case 'sv-SE':\n p = __webpack_require__.e(/*! import() */ 96).then(__webpack_require__.bind(null, /*! ./translations/locales/sv_SE */ \"./src/translations/locales/sv_SE.js\"));\n break;\n\n case 'tg':\n p = __webpack_require__.e(/*! import() */ 97).then(__webpack_require__.bind(null, /*! ./translations/locales/tg */ \"./src/translations/locales/tg.js\"));\n break;\n\n case 'th':\n p = __webpack_require__.e(/*! import() */ 62).then(__webpack_require__.bind(null, /*! ./translations/locales/th */ \"./src/translations/locales/th.js\"));\n break;\n\n case 'th-TH':\n p = __webpack_require__.e(/*! import() */ 98).then(__webpack_require__.bind(null, /*! ./translations/locales/th_TH */ \"./src/translations/locales/th_TH.js\"));\n break;\n\n case 'tr':\n p = __webpack_require__.e(/*! import() */ 63).then(__webpack_require__.bind(null, /*! ./translations/locales/tr */ \"./src/translations/locales/tr.js\"));\n break;\n\n case 'uk-UA':\n p = __webpack_require__.e(/*! import() */ 64).then(__webpack_require__.bind(null, /*! ./translations/locales/uk_UA */ \"./src/translations/locales/uk_UA.js\"));\n break;\n\n case 'vi':\n p = __webpack_require__.e(/*! import() */ 65).then(__webpack_require__.bind(null, /*! ./translations/locales/vi */ \"./src/translations/locales/vi.js\"));\n break;\n\n case 'vi-VN':\n p = __webpack_require__.e(/*! import() */ 99).then(__webpack_require__.bind(null, /*! ./translations/locales/vi_VN */ \"./src/translations/locales/vi_VN.js\"));\n break;\n\n case 'zh':\n p = Promise.all(/*! import() */[__webpack_require__.e(17), __webpack_require__.e(102)]).then(__webpack_require__.bind(null, /*! ./translations/locales/zh */ \"./src/translations/locales/zh.js\"));\n break;\n\n case 'zh-Hans':\n p = Promise.all(/*! import() */[__webpack_require__.e(17), __webpack_require__.e(100)]).then(__webpack_require__.bind(null, /*! ./translations/locales/zh-Hans */ \"./src/translations/locales/zh-Hans.js\"));\n break;\n\n case 'zh-Hant':\n p = Promise.all(/*! import() */[__webpack_require__.e(18), __webpack_require__.e(101)]).then(__webpack_require__.bind(null, /*! ./translations/locales/zh-Hant */ \"./src/translations/locales/zh-Hant.js\"));\n break;\n\n case 'zh-HK':\n p = Promise.all(/*! import() */[__webpack_require__.e(18), __webpack_require__.e(103)]).then(__webpack_require__.bind(null, /*! ./translations/locales/zh_HK */ \"./src/translations/locales/zh_HK.js\"));\n break;\n\n default:\n p = Promise.resolve(null);\n }\n\n p.then(resolve).catch(reject);\n }).catch(() => {\n throw new Error('Failed loading tinymce.');\n });\n });\n return transReadyPromise;\n}\nfunction getLocaleList() {\n return ['ar', 'ca', 'cy', 'da', 'da-x-k12', 'de', 'el', 'en', 'en-AU-x-unimelb', 'en-GB-x-ukhe', 'en-AU', 'en-CA', 'en-CY', 'en-GB', 'es', 'es-ES', 'es-GT', 'fa-IR', 'fi', 'fr', 'fr-CA', 'he', 'ht', 'hu', 'hy', 'is', 'it', 'ja', 'ko', 'mi', 'nb', 'nb-x-k12', 'nl', 'nn', 'pl', 'pt', 'pt-BR', 'ru', 'se', 'sl', 'sv', 'sv-x-k12', 'sv-SE', 'tg', 'th', 'th-TH', 'tr', 'uk-UA', 'vi', 'vi-VN', 'zh', 'zh-Hans', 'zh-Hant', 'zh-HK'];\n}\n\n//# sourceURL=webpack:///./src/getTranslations.js?");
|
|
17559
17559
|
|
|
17560
17560
|
/***/ }),
|
|
17561
17561
|
|
|
@@ -17627,7 +17627,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2022 - p
|
|
|
17627
17627
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17628
17628
|
|
|
17629
17629
|
"use strict";
|
|
17630
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"editorOptionsPropType\", function() { return editorOptionsPropType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"storageAvailable\", function() { return storageAvailable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toolbarPropType\", function() { return toolbarPropType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"menuPropType\", function() { return menuPropType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ltiToolsPropType\", function() { return ltiToolsPropType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeMenuItems\", function() { return mergeMenuItems; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeMenu\", function() { return mergeMenu; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeToolbar\", function() { return mergeToolbar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergePlugins\", function() { return mergePlugins; });\n/* harmony import */ var _babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/extends */ \"../../node_modules/@babel/runtime-corejs3/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/includes */ \"../../node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js\");\n/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _tinymce_tinymce_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tinymce/tinymce-react */ \"../../node_modules/@tinymce/tinymce-react/lib/es2015/main/ts/index.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash */ \"../../node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _instructure_ui_themeable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-themeable */ \"../../node_modules/@instructure/ui-themeable/es/index.js\");\n/* harmony import */ var _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-icons */ \"../../node_modules/@instructure/ui-icons/es/index.js\");\n/* harmony import */ var _instructure_ui_alerts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @instructure/ui-alerts */ \"../../node_modules/@instructure/ui-alerts/es/index.js\");\n/* harmony import */ var _instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @instructure/ui-spinner */ \"../../node_modules/@instructure/ui-spinner/es/index.js\");\n/* harmony import */ var _instructure_ui_view__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @instructure/ui-view */ \"../../node_modules/@instructure/ui-view/es/index.js\");\n/* harmony import */ var _instructure_debounce__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @instructure/debounce */ \"../../node_modules/@instructure/debounce/es/index.js\");\n/* harmony import */ var _common_getCookie__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../common/getCookie */ \"./src/common/getCookie.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _contentInsertion__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./contentInsertion */ \"./src/rce/contentInsertion.js\");\n/* harmony import */ var _indicatorRegion__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./indicatorRegion */ \"./src/rce/indicatorRegion.js\");\n/* harmony import */ var _editorLanguage__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./editorLanguage */ \"./src/rce/editorLanguage.js\");\n/* harmony import */ var _editorLanguage__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_editorLanguage__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _normalizeLocale__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./normalizeLocale */ \"./src/rce/normalizeLocale.js\");\n/* harmony import */ var _sanitizePlugins__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./sanitizePlugins */ \"./src/rce/sanitizePlugins.js\");\n/* harmony import */ var _RCEGlobals__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./RCEGlobals */ \"./src/rce/RCEGlobals.js\");\n/* harmony import */ var _defaultTinymceConfig__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../defaultTinymceConfig */ \"./src/defaultTinymceConfig.js\");\n/* harmony import */ var _common_indicate__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../common/indicate */ \"./src/common/indicate.js\");\n/* harmony import */ var _bridge__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../bridge */ \"./src/bridge/index.js\");\n/* harmony import */ var _plugins_shared_CanvasContentTray__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./plugins/shared/CanvasContentTray */ \"./src/rce/plugins/shared/CanvasContentTray.js\");\n/* harmony import */ var _StatusBar__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./StatusBar */ \"./src/rce/StatusBar.js\");\n/* harmony import */ var _customEvents__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./customEvents */ \"./src/rce/customEvents.js\");\n/* harmony import */ var _ShowOnFocusButton__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./ShowOnFocusButton */ \"./src/rce/ShowOnFocusButton/index.js\");\n/* harmony import */ var _skins_theme__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../skins/theme */ \"./src/skins/theme.js\");\n/* harmony import */ var _plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./plugins/shared/fileTypeUtils */ \"./src/rce/plugins/shared/fileTypeUtils.js\");\n/* harmony import */ var _KeyboardShortcutModal__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./KeyboardShortcutModal */ \"./src/rce/KeyboardShortcutModal.js\");\n/* harmony import */ var _AlertMessageArea__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./AlertMessageArea */ \"./src/rce/AlertMessageArea.js\");\n/* harmony import */ var _alertHandler__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./alertHandler */ \"./src/rce/alertHandler.js\");\n/* harmony import */ var _plugins_shared_ContentSelection__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./plugins/shared/ContentSelection */ \"./src/rce/plugins/shared/ContentSelection.js\");\n/* harmony import */ var _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./plugins/instructure_record/VideoOptionsTray/TrayController */ \"./src/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js\");\n\n\nvar _dec, _class, _class2, _Intl, _Intl$DateTimeFormat, _Intl$DateTimeFormat$;\n\n\n\n/*\n * Copyright (C) 2018 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst styles = {\n componentId: 'dyzZI',\n template: function (theme) {\n return `\n\n\n\n\n.canvas-rce__skins--root {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n}\n\n\n\n.rce-wrapper textarea {\n width: 100%;\n box-sizing: border-box;\n min-height: auto;\n }\n\n.tox,\n .tox *:not(svg) {\n color: inherit;\n font-family: inherit;\n }\n\n\n\n[dir='rtl'] .tox :not(svg) {\n direction: rtl;\n }\n\n.tox:not(.tox-tinymce-inline) .tox-editor-header {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox.tox-tinymce .screenreader-only {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n transform: translatez(0);\n }\n\n.tox-tinymce-aux {\n font-family: ${theme.canvasFontFamily || 'inherit'};\n }\n\n\n\n.tox.tox-tinymce-aux {\n z-index: 10000;\n }\n\n.tox .tox-button {\n background-color: ${theme.canvasPrimaryButtonHoverBackground || 'inherit'};\n font-family: ${theme.canvasFontFamily || 'inherit'};\n font-weight: ${theme.canvasButtonFontWeight || 'inherit'};\n font-size: ${theme.canvasButtonFontSize || 'inherit'};\n color: ${theme.canvasPrimaryButtonColor || 'inherit'};\n border-color: ${theme.canvasPrimaryButtonBorderColor || 'inherit'};\n line-height: calc(${theme.canvasButtonLineHeight || 'inherit'} - 2px);\n padding: ${theme.canvasButtonPadding || 'inherit'};\n }\n\n.tox .tox-button[disabled] {\n opacity: 0.5;\n border-color: inherit;\n color: inherit;\n }\n\n.tox .tox-button:focus:not(:disabled) {\n background-color: ${theme.canvasPrimaryButtonBackground || 'inherit'};\n color: ${theme.canvasPrimaryButtonColor || 'inherit'};\n border-color: ${theme.canvasBackgroundColor || 'inherit'};\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-button:hover:not(:disabled) {\n background-color: ${theme.canvasPrimaryButtonHoverBackground || 'inherit'};\n color: ${theme.canvasPrimaryButtonHoverColor || 'inherit'};\n }\n\n.tox .tox-button:active:not(:disabled) {\n background-color: ${theme.canvasPrimaryButtonBackground || 'inherit'};\n border-color: ${theme.canvasPrimaryButtonBorderColor || 'inherit'};\n color: ${theme.canvasPrimaryButtonColor || 'inherit'};\n }\n\n.tox .tox-button--secondary {\n background-color: ${theme.canvasSecondaryButtonBackground || 'inherit'};\n border-color: ${theme.canvasSecondaryButtonBorderColor || 'inherit'};\n color: ${theme.canvasSecondaryButtonColor || 'inherit'};\n }\n\n.tox .tox-button--secondary[disabled] {\n background-color: inherit;\n border-color: ${theme.canvasSecondaryButtonBorderColor || 'inherit'};\n color: inherit;\n opacity: 0.5;\n }\n\n.tox .tox-button--secondary:focus:not(:disabled) {\n background-color: inherit;\n border-color: ${theme.canvasFocusBorderColor || 'inherit'};\n color: inherit;\n }\n\n.tox .tox-button--secondary:hover:not(:disabled) {\n background-color: ${theme.canvasSecondaryButtonHoverBackground || 'inherit'};\n border-color: ${theme.canvasSecondaryButtonBorderColor || 'inherit'};\n color: ${theme.canvasSecondaryButtonHoverColor || 'inherit'};\n }\n\n.tox .tox-button--secondary:active:not(:disabled) {\n background-color: inherit;\n border-color: ${theme.canvasSecondaryButtonBorderColor || 'inherit'};\n color: inherit;\n }\n\n.tox .tox-button-link {\n font-family: ${theme.canvasFontFamily || 'inherit'};\n }\n\n.tox .tox-button--naked {\n background: ${theme.canvasButtonBackground || 'inherit'};\n border-color: ${theme.canvasButtonBorderColor || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-button--naked:hover:not(:disabled) {\n background-color: ${theme.canvasButtonHoverBackground || 'inherit'};\n border-color: ${theme.canvasButtonBorderColor || 'inherit'};\n color: ${theme.canvasButtonHoverColor || 'inherit'};\n }\n\n.tox .tox-button--naked:focus:not(:disabled) {\n background-color: ${theme.canvasButtonBackground || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n border-color: ${theme.canvasBackgroundColor || 'inherit'};\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-button--naked:active:not(:disabled) {\n background-color: inherit;\n color: inherit;\n }\n\n.tox .tox-button--naked.tox-button--icon {\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {\n background: ${theme.canvasButtonHoverBackground || 'inherit'};\n color: ${theme.canvasButtonHoverColor || 'inherit'};\n }\n\n.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n fill: rgba(45, 59, 69, 0.3);\n }\n\n.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n fill: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n fill: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-collection--list .tox-collection__group {\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-collection__group-heading {\n background-color: #e3e6e8;\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-collection__item {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-collection__item--state-disabled {\n background-color: unset;\n opacity: 0.5;\n cursor: default;\n }\n\n.tox .tox-collection--list .tox-collection__item--enabled {\n color: contrast(inherit, ${theme.canvasTextColor || 'inherit'}, #fff);\n }\n\n.tox .tox-collection--list .tox-collection__item--active {\n background-color: ${theme.activeMenuItemBackground || 'inherit'};\n color: ${theme.activeMenuItemLabelColor || 'inherit'};\n }\n\n.tox\n .tox-collection--list\n .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n background-color: ${theme.activeMenuItemBackground || 'inherit'};\n color: ${theme.activeMenuItemLabelColor || 'inherit'};\n }\n\n.tox .tox-collection--toolbar .tox-collection__item--enabled {\n background-color: #cbced1;\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-collection--toolbar .tox-collection__item--active {\n background-color: #e0e2e3;\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-collection--grid .tox-collection__item--enabled {\n background-color: #cbced1;\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-collection--grid .tox-collection__item--active {\n background-color: #e0e2e3;\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-collection--list .tox-collection__item-icon:first-child {\n margin-right: 8px;\n }\n\n.tox .tox-collection__item-accessory {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-sv-palette {\n border: 1px solid black;\n box-sizing: border-box;\n }\n\n.tox .tox-hue-slider {\n border: 1px solid black;\n }\n\n.tox .tox-rgb-form input.tox-invalid {\n \n border-color: ${theme.canvasErrorColor || 'inherit'} !important;\n }\n\n.tox .tox-rgb-form {\n padding: 2px; \n }\n\n.tox .tox-swatches__picker-btn:hover {\n background: #e0e2e3;\n }\n\n.tox .tox-comment-thread {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-comment {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: ${theme.canvasBorderColor || 'inherit'};\n box-shadow: 0 4px 8px 0 rgba(45, 59, 69, 0.1);\n }\n\n.tox .tox-comment__header {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-comment__date {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-comment__body {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-comment__expander p {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-comment-thread__overlay::after {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-comment__overlay {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-comment__loading-text {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-comment__overlaytext p {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-comment__busy-spinner {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-user__avatar svg {\n fill: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-user__name {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-dialog-wrap__backdrop {\n background-color: rgba(255, 255, 255, 0.75);\n }\n\n.tox .tox-dialog {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: ${theme.canvasBorderColor || 'inherit'};\n box-shadow: ${theme.canvasModalShadow || 'inherit'};\n }\n\n.tox .tox-dialog__header {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n color: ${theme.canvasTextColor || 'inherit'};\n border-bottom: 1px solid ${theme.canvasBorderColor || 'inherit'};\n padding: ${theme.canvasModalHeadingPadding || 'inherit'};\n margin: 0;\n }\n\n.tox .tox-dialog__title {\n font-family: ${theme.canvasFontFamily || 'inherit'};\n font-size: ${theme.canvasModalHeadingFontSize || 'inherit'};\n font-weight: ${theme.canvasModalHeadingFontWeight || 'inherit'};\n }\n\n.tox .tox-dialog__body {\n color: ${theme.canvasTextColor || 'inherit'};\n padding: ${theme.canvasModalBodyPadding || 'inherit'};\n }\n\n.tox .tox-dialog__body-nav-item {\n color: rgba(45, 59, 69, 0.75);\n }\n\n.tox .tox-dialog__body-nav-item:focus {\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-dialog__body-nav-item--active {\n border-bottom-color: ${theme.canvasBrandColor || 'inherit'};\n color: ${theme.canvasBrandColor || 'inherit'};\n }\n\n.tox .tox-dialog__footer {\n background-color: ${theme.canvasModalFooterBackground || 'inherit'};\n border-top: 1px solid ${theme.canvasBorderColor || 'inherit'};\n padding: ${theme.canvasModalFooterPadding || 'inherit'};\n margin: 0;\n }\n\n.tox .tox-dialog__table tbody tr {\n border-bottom-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-dropzone {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n border: 2px dashed ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-dropzone p {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-edit-area {\n border: 1px solid ${theme.canvasBorderColor || 'inherit'};\n border-radius: 3px;\n }\n\n.tox .tox-edit-area__iframe {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border: ${theme.canvasFocusBorderWidth || 'inherit'} solid transparent;\n }\n\n.tox.tox-inline-edit-area {\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-form__group {\n padding: 2px;\n }\n\n.tox .tox-control-wrap .tox-textfield {\n padding-right: 32px;\n }\n\n.tox .tox-control-wrap__status-icon-invalid svg {\n fill: ${theme.canvasErrorColor || 'inherit'};\n }\n\n.tox .tox-control-wrap__status-icon-unknown svg {\n fill: ${theme.canvasWarningColor || 'inherit'};\n }\n\n.tox .tox-control-wrap__status-icon-valid svg {\n fill: ${theme.canvasSuccessColor || 'inherit'};\n }\n\n.tox .tox-color-input span {\n border-color: rgba(45, 59, 69, 0.2);\n }\n\n.tox .tox-color-input span:focus {\n border-color: ${theme.canvasBrandColor || 'inherit'};\n }\n\n.tox .tox-label,\n .tox .tox-toolbar-label {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-form__group {\n margin: ${theme.canvasFormElementMargin || 'inherit'};\n }\n\n.tox .tox-form__group:last-child {\n margin: 0;\n }\n\n.tox .tox-form__group .tox-label {\n color: ${theme.canvasFormElementLabelColor || 'inherit'};\n margin: ${theme.canvasFormElementLabelMargin || 'inherit'};\n font-size: ${theme.canvasFormElementLabelFontSize || 'inherit'};\n font-weight: ${theme.canvasFormElementLabelFontWeight || 'inherit'};\n }\n\n.tox .tox-form__group--error {\n color: ${theme.canvasErrorColor || 'inherit'};\n }\n\n.tox .tox-textfield,\n .tox .tox-selectfield select,\n .tox .tox-textarea,\n .tox .tox-toolbar-textfield {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: ${theme.canvasBorderColor || 'inherit'};\n color: ${theme.canvasTextColor || 'inherit'};\n font-family: ${theme.canvasFontFamily || 'inherit'};\n }\n\n.tox .tox-textfield:focus,\n .tox .tox-selectfield select:focus,\n .tox .tox-textarea:focus {\n \n border-color: ${theme.canvasBorderColor || 'inherit'};\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-naked-btn {\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-naked-btn svg {\n fill: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-insert-table-picker > div {\n border-color: #cccccc;\n }\n\n.tox .tox-insert-table-picker .tox-insert-table-picker__selected {\n background-color: ${theme.tableSelectorHighlightColor || 'inherit'};\n border-color: ${theme.tableSelectorHighlightColor || 'inherit'};\n }\n\n.tox-selected-menu .tox-insert-table-picker {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-insert-table-picker__label {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-menu {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-menubar {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-mbtn {\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-mbtn[disabled] {\n opacity: 0.5;\n }\n\n.tox .tox-mbtn:hover:not(:disabled) {\n background: ${theme.toolbarButtonHoverBackground || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-mbtn:focus:not(:disabled) {\n background-color: transparent;\n color: ${theme.canvasButtonColor || 'inherit'};\n border-color: ${theme.canvasBackgroundColor || 'inherit'};\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-mbtn--active {\n background: ${theme.toolbarButtonHoverBackground || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-notification {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: #c5c5c5;\n }\n\n.tox .tox-notification--success {\n background-color: #dff0d8;\n border-color: ${theme.canvasSuccessColor || 'inherit'};\n }\n\n.tox .tox-notification--error {\n background-color: #f2dede;\n border-color: ${theme.canvasErrorColor || 'inherit'};\n }\n\n.tox .tox-notification--warn {\n background-color: #fcf8e3;\n border-color: ${theme.canvasWarningColor || 'inherit'};\n }\n\n.tox .tox-notification--info {\n background-color: #d9edf7;\n border-color: ${theme.canvasInfoColor || 'inherit'};\n }\n\n.tox .tox-notification__body {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-pop__dialog {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-pop.tox-pop--bottom::before {\n border-color: ${theme.canvasBorderColor || 'inherit'} transparent transparent transparent;\n }\n\n.tox .tox-pop.tox-pop--top::before {\n border-color: transparent transparent ${theme.canvasBorderColor || 'inherit'} transparent;\n }\n\n.tox .tox-pop.tox-pop--left::before {\n border-color: transparent ${theme.canvasBorderColor || 'inherit'} transparent transparent;\n }\n\n.tox .tox-pop.tox-pop--right::before {\n border-color: transparent transparent transparent ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-slider {\n width: 100%;\n }\n\n.tox .tox-slider__rail {\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-slider__handle {\n background-color: ${theme.canvasBrandColor || 'inherit'};\n }\n\n.tox .tox-spinner > div {\n background-color: rgba(45, 59, 69, 0.6);\n }\n\n\n\n.tox .tox-tbtn {\n border-style: none;\n color: ${theme.canvasButtonColor || 'inherit'};\n position: relative;\n }\n\n.tox .tox-tbtn svg {\n fill: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-tbtn.tox-tbtn--enabled {\n background: inherit;\n }\n\n.tox .tox-tbtn:focus,\n .tox .tox-split-button:focus {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-tbtn:hover,\n .tox .tox-split-button:hover,\n .tox .tox-tbtn.tox-tbtn--enabled:hover,\n .tox .tox-split-button .tox-tbtn.tox-split-button__chevron:hover {\n background: ${theme.toolbarButtonHoverBackground || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox-tbtn.tox-split-button__chevron {\n position: relative;\n }\n\n\n\n.tox .tox-tbtn.tox-tbtn--enabled::after {\n position: absolute;\n top: -3px;\n content: '\\\\25BC';\n text-align: center;\n height: 8px;\n font-size: 8px;\n width: 100%;\n color: ${theme.canvasEnabledColor || 'inherit'};\n }\n\n[dir=\"ltr\"] .tox .tox-tbtn.tox-tbtn--enabled::after {\n text-align: center;\n }\n\n[dir=\"rtl\"] .tox .tox-tbtn.tox-tbtn--enabled::after {\n text-align: center;\n }\n\n\n\n.tox-tbtn.tox-split-button__chevron.tox-tbtn--enabled::after {\n display: none;\n }\n\n.tox .tox-tbtn--disabled,\n .tox .tox-tbtn--disabled:hover,\n .tox .tox-tbtn:disabled,\n .tox .tox-tbtn:disabled:hover {\n opacity: 0.5;\n }\n\n.tox .tox-tbtn--disabled svg,\n .tox .tox-tbtn--disabled:hover svg,\n .tox .tox-tbtn:disabled svg,\n .tox .tox-tbtn:disabled:hover svg {\n \n opacity: 0.5;\n }\n\n.tox .tox-tbtn__select-chevron svg {\n fill: ${theme.canvasButtonColor || 'inherit'};\n width: 10px;\n height: 10px;\n }\n\n.tox .tox-split-button__chevron svg {\n fill: ${theme.canvasButtonColor || 'inherit'};\n width: 10px;\n height: 10px;\n }\n\n.tox .tox-split-button.tox-tbtn--disabled:hover,\n .tox .tox-split-button.tox-tbtn--disabled:focus,\n .tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,\n .tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {\n opacity: 0.5;\n }\n\n.tox .tox-toolbar {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-top: 1px solid ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-toolbar__group:not(:last-of-type) {\n border-right: 1px solid ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-tooltip__body {\n background-color: ${theme.canvasTextColor || 'inherit'};\n box-shadow: 0 2px 4px rgba(45, 59, 69, 0.3);\n color: rgba(255, 255, 255, 0.75);\n }\n\n.tox .tox-tooltip--down .tox-tooltip__arrow {\n border-top-color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-tooltip--up .tox-tooltip__arrow {\n border-bottom-color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-tooltip--right .tox-tooltip__arrow {\n border-left-color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-tooltip--left .tox-tooltip__arrow {\n border-right-color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-well {\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-custom-editor {\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox a {\n color: ${theme.canvasLinkColor || 'inherit'};\n }\n\n.tox.tox-tinymce {\n border-style: none;\n }\n\n\n\n.tox-editor-container .tox-toolbar,\n .tox-editor-container .tox-toolbar-overlord {\n background-image: none;\n margin-bottom: 5px;\n }\n\n.tox-editor-container .tox-toolbar__primary {\n background-image: none;\n }\n\n\n\n.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {\n border-style: none;\n }\n\n.tox .tox-toolbar .tox-toolbar__group,\n .tox .tox-toolbar-overlord .tox-toolbar__group,\n .tox-toolbar__overflow .tox-toolbar__group,\n .tox:not([dir='rtl']) .tox-toolbar__group:not(:last-of-type),\n .tox[dir='rtl'] .tox-toolbar__group:not(:last-of-type) {\n border-style: none;\n }\n\n.tox-toolbar .tox-toolbar__group::after, \n .tox-toolbar-overlord .tox-toolbar__group::after, \n .tox-toolbar__overflow .tox-toolbar__group::after, \n .tox-tinymce-aux .tox-toolbar .tox-toolbar__group::after {\n \n content: '';\n display: inline-block;\n box-sizing: border-box;\n border-inline-end: 1px solid ${theme.canvasBorderColor || 'inherit'};\n width: 8px;\n height: 24px;\n }\n\n[dir=\"ltr\"] .tox-toolbar .tox-toolbar__group::after,\n[dir=\"ltr\"] .tox-toolbar-overlord .tox-toolbar__group::after,\n[dir=\"ltr\"] .tox-toolbar__overflow .tox-toolbar__group::after,\n[dir=\"ltr\"] .tox-tinymce-aux .tox-toolbar .tox-toolbar__group::after {\n border-right: 1px solid ${theme.canvasBorderColor || 'inherit'};\n }\n\n[dir=\"rtl\"] .tox-toolbar .tox-toolbar__group::after,\n[dir=\"rtl\"] .tox-toolbar-overlord .tox-toolbar__group::after,\n[dir=\"rtl\"] .tox-toolbar__overflow .tox-toolbar__group::after,\n[dir=\"rtl\"] .tox-tinymce-aux .tox-toolbar .tox-toolbar__group::after {\n border-left: 1px solid ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox-toolbar .tox-toolbar__group:last-child::after,\n .tox-toolbar-overlord .tox-toolbar__group:last-child::after,\n .tox-toolbar__overflow .tox-toolbar__group:last-child::after,\n .tox-tinymce-aux .tox-toolbar .tox-toolbar__group:last-child::after {\n border-inline-end-width: 0;\n padding-inline-start: 0;\n width: 0;\n }\n\n[dir=\"ltr\"] .tox-toolbar .tox-toolbar__group:last-child::after,\n[dir=\"ltr\"] .tox-toolbar-overlord .tox-toolbar__group:last-child::after,\n[dir=\"ltr\"] .tox-toolbar__overflow .tox-toolbar__group:last-child::after,\n[dir=\"ltr\"] .tox-tinymce-aux .tox-toolbar .tox-toolbar__group:last-child::after {\n border-right-width: 0;\n padding-left: 0;\n }\n\n[dir=\"rtl\"] .tox-toolbar .tox-toolbar__group:last-child::after,\n[dir=\"rtl\"] .tox-toolbar-overlord .tox-toolbar__group:last-child::after,\n[dir=\"rtl\"] .tox-toolbar__overflow .tox-toolbar__group:last-child::after,\n[dir=\"rtl\"] .tox-tinymce-aux .tox-toolbar .tox-toolbar__group:last-child::after {\n border-left-width: 0;\n padding-right: 0;\n }\n\n.tox .tox-tbtn--bespoke .tox-tbtn__select-label {\n width: auto;\n padding-inline-end: 0;\n }\n\n[dir=\"ltr\"] .tox .tox-tbtn--bespoke .tox-tbtn__select-label {\n padding-right: 0;\n }\n\n[dir=\"rtl\"] .tox .tox-tbtn--bespoke .tox-tbtn__select-label {\n padding-left: 0;\n }\n\n.tox .tox-tbtn {\n box-sizing: border-box;\n }\n\n.tox .tox-tbtn,\n .tox .tox-split-button,\n .tox .tox-tbtn--select {\n border-style: none;\n margin: 2px 2px 3px;\n }\n\n.tox .tox-split-button .tox-tbtn {\n margin-inline-end: 0;\n }\n\n[dir=\"ltr\"] .tox .tox-split-button .tox-tbtn {\n margin-right: 0;\n }\n\n[dir=\"rtl\"] .tox .tox-split-button .tox-tbtn {\n margin-left: 0;\n }\n\n.tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-inline-start: 0;\n }\n\n[dir=\"ltr\"] .tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-left: 0;\n }\n\n[dir=\"rtl\"] .tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-right: 0;\n }\n\n.tox .tox-edit-area.active,\n .tox .tox-edit-area.active iframe {\n border-color: ${theme.canvasFocusBorderColor || 'inherit'};\n }\n\n.tox .tox-split-button .tox-tbtn {\n margin-inline-end: 0;\n }\n\n[dir=\"ltr\"] .tox .tox-split-button .tox-tbtn {\n margin-right: 0;\n }\n\n[dir=\"rtl\"] .tox .tox-split-button .tox-tbtn {\n margin-left: 0;\n }\n\n.tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-inline-start: -6px;\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n[dir=\"ltr\"] .tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-left: -6px;\n }\n\n[dir=\"rtl\"] .tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-right: -6px;\n }\n\n.tox .tox-split-button:hover .tox-split-button__chevron {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n box-shadow: none;\n }\n\n.tox .tox-tbtn:hover.tox-split-button__chevron,\n .tox .tox-tbtn:focus.tox-split-button__chevron {\n box-shadow: none;\n }\n\n.tox .tox-toolbar__primary {\n border-width: 0;\n }\n\n.tox-tbtn.tox-tbtn--select .tox-icon.tox-tbtn__icon-wrap {\n margin-inline-end: 4px;\n }\n\n[dir=\"ltr\"] .tox-tbtn.tox-tbtn--select .tox-icon.tox-tbtn__icon-wrap {\n margin-right: 4px;\n }\n\n[dir=\"rtl\"] .tox-tbtn.tox-tbtn--select .tox-icon.tox-tbtn__icon-wrap {\n margin-left: 4px;\n }\n\n\n\n.tox .tox-icon svg:not([height]),\n .tox .tox-collection__item-icon svg:not([height]) {\n height: 16px;\n }\n\n\n\n.tox .tox-collection--toolbar-lg .tox-collection__item-icon {\n height: 30px;\n width: 30px;\n }\n\n\n\n.tox-selectfield__icon-js svg {\n width: 10px;\n height: 10px;\n }\n\n\n\n[data-canvascontenttray-content]:focus {\n outline-color: ${theme.canvasFocusBorderColor || 'inherit'};\n }\n`;\n },\n 'root': 'canvas-rce__skins--root'\n};\nconst skinCSSBinding = {\n componentId: 'djgIv',\n template: function (theme) {\n return `\n\n\n.tinymce__oxide--tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:baseline;vertical-align:initial;white-space:normal}\n\n.tinymce__oxide--tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}\n\n[dir=\"ltr\"] .tinymce__oxide--tox :not(svg):not(rect){text-align:inherit}\n\n[dir=\"rtl\"] .tinymce__oxide--tox :not(svg):not(rect){text-align:inherit}\n\n.tinymce__oxide--tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}\n\n[dir=\"ltr\"] .tinymce__oxide--tox :not(svg):not(rect){float:none}\n\n[dir=\"rtl\"] .tinymce__oxide--tox :not(svg):not(rect){float:none}\n\n.tinymce__oxide--tox:not([dir=rtl]){direction:ltr;text-align:left}\n\n[dir=\"ltr\"] .tinymce__oxide--tox:not([dir=rtl]){text-align:left}\n\n[dir=\"rtl\"] .tinymce__oxide--tox:not([dir=rtl]){text-align:left}\n\n.tinymce__oxide--tox[dir=rtl]{direction:rtl;text-align:right}\n\n[dir=\"ltr\"] .tinymce__oxide--tox[dir=rtl]{text-align:right}\n\n[dir=\"rtl\"] .tinymce__oxide--tox[dir=rtl]{text-align:right}\n\n.tinymce__oxide--tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}\n\n.tinymce__oxide--tox-tinymce-inline{border:none;box-shadow:none}\n\n.tinymce__oxide--tox-tinymce-inline .tinymce__oxide--tox-editor-header{background-color:transparent;border:1px solid #ccc;border-radius:0;box-shadow:none}\n\n.tinymce__oxide--tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;z-index:1300}\n\n.tinymce__oxide--tox-tinymce :focus,.tinymce__oxide--tox-tinymce-aux :focus{outline:0}\n\nbutton::-moz-focus-inner{border:0}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__description>div{padding-bottom:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__repair{margin-top:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--info .tinymce__oxide--accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--info .tinymce__oxide--accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--info .tinymce__oxide--tox-form__group h2{color:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--info .tinymce__oxide--tox-icon svg{fill:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--info a .tinymce__oxide--tox-icon{color:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--warn .tinymce__oxide--accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--warn .tinymce__oxide--accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--warn .tinymce__oxide--tox-form__group h2{color:#cc8500}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--warn .tinymce__oxide--tox-icon svg{fill:#cc8500}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--warn a .tinymce__oxide--tox-icon{color:#cc8500}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--error .tinymce__oxide--accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--error .tinymce__oxide--accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--error .tinymce__oxide--tox-form__group h2{color:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--error .tinymce__oxide--tox-icon svg{fill:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--error a .tinymce__oxide--tox-icon{color:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--success .tinymce__oxide--accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--success .tinymce__oxide--accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--success .tinymce__oxide--tox-form__group h2{color:#78ab46}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--success .tinymce__oxide--tox-icon svg{fill:#78ab46}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--success a .tinymce__oxide--tox-icon{color:#78ab46}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__header h1,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group .tinymce__oxide--accessibility-issue__description h2{margin-top:0}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__header .tinymce__oxide--tox-button{margin-left:4px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__header>:nth-last-child(2){margin-left:auto}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__description{padding:4px 4px 4px 8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__header .tinymce__oxide--tox-button{margin-right:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__header>:nth-last-child(2){margin-right:auto}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__description{padding:4px 8px 4px 4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-anchorbar{display:flex;flex:0 0 auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-bar{display:flex;flex:0 0 auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-button{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-button{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--icon,.tinymce__oxide--tox .tinymce__oxide--tox-button.tinymce__oxide--tox-button--icon,.tinymce__oxide--tox .tinymce__oxide--tox-button.tinymce__oxide--tox-button--secondary.tinymce__oxide--tox-button--icon{padding:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--icon .tinymce__oxide--tox-icon svg,.tinymce__oxide--tox .tinymce__oxide--tox-button.tinymce__oxide--tox-button--icon .tinymce__oxide--tox-icon svg,.tinymce__oxide--tox .tinymce__oxide--tox-button.tinymce__oxide--tox-button--secondary.tinymce__oxide--tox-button--icon .tinymce__oxide--tox-icon svg{display:block;fill:currentColor}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button-link--sm{font-size:14px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked .tinymce__oxide--tox-icon svg{fill:currentColor}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked.tinymce__oxide--tox-button--icon:hover:not(:disabled){color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__checked svg{display:none;fill:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox--disabled .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox--disabled .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox--disabled .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox input.tinymce__oxide--tox-checkbox__input:checked+.tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__unchecked svg{display:none}\n\n.tinymce__oxide--tox input.tinymce__oxide--tox-checkbox__input:checked+.tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__checked svg{display:block}\n\n.tinymce__oxide--tox input.tinymce__oxide--tox-checkbox__input:indeterminate+.tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__unchecked svg{display:none}\n\n.tinymce__oxide--tox input.tinymce__oxide--tox-checkbox__input:indeterminate+.tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__indeterminate svg{display:block}\n\n.tinymce__oxide--tox input.tinymce__oxide--tox-checkbox__input:focus+.tinymce__oxide--tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-checkbox__label{margin-left:4px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-checkbox__input{left:-10000px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-bar .tinymce__oxide--tox-checkbox{margin-left:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-checkbox__label{margin-right:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-checkbox__input{right:-10000px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-bar .tinymce__oxide--tox-checkbox{margin-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar .tinymce__oxide--tox-collection__group{display:flex;padding:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--grid .tinymce__oxide--tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__group:first-child{border-top-width:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item{padding:4px 8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar .tinymce__oxide--tox-collection__item{border-radius:3px;padding:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--grid .tinymce__oxide--tox-collection__item{border-radius:3px;padding:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item--enabled{background-color:#fff;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item--active{background-color:#dee0e2}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar .tinymce__oxide--tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar .tinymce__oxide--tox-collection__item--active{background-color:#dee0e2}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--grid .tinymce__oxide--tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--grid .tinymce__oxide--tox-collection__item--active:not(.tinymce__oxide--tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item--active:not(.tinymce__oxide--tox-collection__item--state-disabled){color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar .tinymce__oxide--tox-collection__item--active:not(.tinymce__oxide--tox-collection__item--state-disabled){color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-checkmark,.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-checkmark svg,.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-icon svg{fill:currentColor}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar-lg .tinymce__oxide--tox-collection__item-icon{height:48px;width:48px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-caret{align-items:center;display:flex;min-height:24px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-caret svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item:not(.tinymce__oxide--tox-collection__item--enabled) .tinymce__oxide--tox-collection__item-checkmark svg{display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item:not(.tinymce__oxide--tox-collection__item--enabled) .tinymce__oxide--tox-collection__item-accessory+.tinymce__oxide--tox-collection__item-checkmark{display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__item-label{white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__item-caret{margin-left:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row.tinymce__oxide--tox-collection__item-container--align-left{margin-right:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row.tinymce__oxide--tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row.tinymce__oxide--tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row.tinymce__oxide--tox-collection__item-container--valign-middle{align-items:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row.tinymce__oxide--tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column{align-self:center;flex:1 1 auto;flex-direction:column}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column.tinymce__oxide--tox-collection__item-container--align-left{align-items:flex-start}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column.tinymce__oxide--tox-collection__item-container--align-right{align-items:flex-end}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column.tinymce__oxide--tox-collection__item-container--valign-top{align-self:flex-start}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column.tinymce__oxide--tox-collection__item-container--valign-middle{align-self:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column.tinymce__oxide--tox-collection__item-container--valign-bottom{align-self:flex-end}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item>:not(:first-child){margin-left:8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item>.tinymce__oxide--tox-collection__item-label:first-child{margin-left:4px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection__item-accessory{margin-left:16px;text-align:right}\n\n[dir=\"ltr\"] .tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection__item-accessory{text-align:right}\n\n[dir=\"rtl\"] .tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection__item-accessory{text-align:right}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection .tinymce__oxide--tox-collection__item-caret{margin-left:16px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item>:not(:first-child){margin-right:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item>.tinymce__oxide--tox-collection__item-label:first-child{margin-right:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection__item-icon-rtl .tinymce__oxide--tox-collection__item-icon svg{transform:rotateY(180deg)}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection__item-accessory{margin-right:16px;text-align:left}\n\n[dir=\"ltr\"] .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection__item-accessory{text-align:left}\n\n[dir=\"rtl\"] .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection__item-accessory{text-align:left}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection .tinymce__oxide--tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__item-caret{margin-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette{box-sizing:border-box;display:flex;height:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette-spectrum{height:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette,.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette-spectrum{width:225px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-hue-slider{box-sizing:border-box;height:100%;width:25px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-hue-slider,.tinymce__oxide--tox .tinymce__oxide--tox-hue-slider-spectrum{width:20px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-rgb-form input{width:6em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-rgb-form input.tinymce__oxide--tox-invalid{border:1px solid red!important}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-rgb-form .tinymce__oxide--tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-sv-palette{margin-right:15px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-hue-slider{margin-right:15px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-hue-slider-thumb{margin-left:-1px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-rgb-form label{margin-right:.5em}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-sv-palette{margin-left:15px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-hue-slider{margin-left:15px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-hue-slider-thumb{margin-right:-1px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-rgb-form label{margin-left:.5em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar .tinymce__oxide--tox-swatches,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__overflow .tinymce__oxide--tox-swatches,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__primary .tinymce__oxide--tox-swatches{margin:2px 0 3px 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__group .tinymce__oxide--tox-swatches-menu{border:0;margin:-4px 0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatches__row{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatch:focus,.tinymce__oxide--tox .tinymce__oxide--tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatch--remove{align-items:center;display:flex;justify-content:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatch--remove svg path{stroke:#e74c3c}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatches__picker-btn svg{height:24px;width:24px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatches__picker-btn:hover{background:#dee0e2}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-swatches__picker-btn{margin-left:auto}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-swatches__picker-btn{margin-right:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment-thread{background:#fff;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment-thread>:not(:first-child){margin-top:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:none;text-transform:initial}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__body textarea{resize:none;white-space:normal;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__expander{padding-top:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__body p{margin:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__buttonspacing{padding-top:16px;text-align:center}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__buttonspacing{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__buttonspacing{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment-thread__overlay::after{background:#fff;bottom:0;content:\"\";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__reply>:first-child{margin-bottom:8px;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:\"\";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__overlay{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__overlay{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__loading-text>div{padding-bottom:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__overlaytext p{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__overlaytext p{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-conversations{margin:8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-comment__edit{margin-left:8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-comment__buttonspacing>:last-child,.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-comment__edit>:last-child,.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-comment__reply>:last-child{margin-left:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-comment__edit{margin-right:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-comment__buttonspacing>:last-child,.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-comment__edit>:last-child,.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-comment__reply>:last-child{margin-right:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-user{align-items:center;display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-user__avatar svg{fill:rgba(34,47,62,.7)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-user__avatar svg{margin-right:8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-user__avatar+.tinymce__oxide--tox-user__name{margin-left:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-user__avatar svg{margin-left:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-user__avatar+.tinymce__oxide--tox-user__name{margin-right:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-wrap__backdrop--opaque{background-color:#fff}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox .tinymce__oxide--tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-inline{z-index:1100}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__header .tinymce__oxide--tox-button{z-index:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__draghandle:active{cursor:grabbing}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__dismiss{margin-left:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body{text-align:left}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body{text-align:left}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body{flex-direction:column}}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content>:first-child{margin-top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content>:last-child{margin-bottom:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content a:focus,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;margin-inline-end:0;margin-inline-start:0;padding-inline-start:2.5rem}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content ul{margin-right:0;margin-left:0;padding-left:2.5rem}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content ul{margin-left:0;margin-right:0;padding-right:2.5rem}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group p{margin-bottom:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h1:first-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h2:first-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group p:first-child{margin-top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h1:last-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h2:last-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group p:last-child{margin-bottom:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h1:only-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h2:only-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group p:only-child{margin-bottom:0;margin-top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog--width-lg{height:650px;max-width:1200px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog--width-md{max-width:800px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog--width-md .tinymce__oxide--tox-dialog__body-content{overflow:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content--centered{text-align:center}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content--centered{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content--centered{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__footer-end,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__footer-start{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__table{border-collapse:collapse;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__table thead th{font-weight:700;padding-bottom:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__table tbody tr{border-bottom:1px solid #ccc}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__table tbody tr:last-child{border-bottom:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__table td{padding-bottom:8px;padding-top:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__popups{position:absolute;width:100%;z-index:1100}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-iframe .tinymce__oxide--tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-iframe .tinymce__oxide--tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-dock-fadeout{opacity:0;visibility:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-dock-fadein{opacity:1;visibility:visible}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-dock-transition.tinymce__oxide--tox-dialog-dock-fadein{transition-delay:0s}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-platform-ie .tinymce__oxide--tox-dialog-wrap{position:-ms-device-fixed}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-nav{margin-right:0}}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__footer .tinymce__oxide--tox-dialog__footer-end>*,.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__footer .tinymce__oxide--tox-dialog__footer-start>*{margin-left:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body{text-align:right}\n\n[dir=\"ltr\"] .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body{text-align:right}\n\n[dir=\"rtl\"] .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body{text-align:right}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-nav{margin-left:0}}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__footer .tinymce__oxide--tox-dialog__footer-end>*,.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__footer .tinymce__oxide--tox-dialog__footer-start>*{margin-right:8px}\n\nbody.tinymce__oxide--tox-dialog__disable-scroll{overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-inline-edit-area{border:1px dotted #ccc}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-editor-header{z-index:1}\n\n.tinymce__oxide--tox:not(.tinymce__oxide--tox-tinymce-inline) .tinymce__oxide--tox-editor-header{box-shadow:none;transition:box-shadow .5s}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce--toolbar-bottom .tinymce__oxide--tox-editor-header,.tinymce__oxide--tox.tinymce__oxide--tox-tinymce-inline .tinymce__oxide--tox-editor-header{margin-bottom:-1px}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce--toolbar-sticky-on .tinymce__oxide--tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}\n\n.tinymce__oxide--tox-editor-dock-fadeout{opacity:0;visibility:hidden}\n\n.tinymce__oxide--tox-editor-dock-fadein{opacity:1;visibility:visible}\n\n.tinymce__oxide--tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}\n\n.tinymce__oxide--tox-editor-dock-transition.tinymce__oxide--tox-editor-dock-fadein{transition-delay:0s}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap{flex:1;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap:not(.tinymce__oxide--tox-control-wrap--status-invalid) .tinymce__oxide--tox-control-wrap__status-icon-invalid,.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap:not(.tinymce__oxide--tox-control-wrap--status-unknown) .tinymce__oxide--tox-control-wrap__status-icon-unknown,.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap:not(.tinymce__oxide--tox-control-wrap--status-valid) .tinymce__oxide--tox-control-wrap__status-icon-valid{display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap svg{display:block}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap__status-icon-invalid svg{fill:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap__status-icon-unknown svg{fill:orange}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap__status-icon-valid svg{fill:green}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-control-wrap--status-invalid .tinymce__oxide--tox-textfield,.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-control-wrap--status-unknown .tinymce__oxide--tox-textfield,.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-control-wrap--status-valid .tinymce__oxide--tox-textfield{padding-right:32px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-control-wrap__status-icon-wrap{right:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-control-wrap--status-invalid .tinymce__oxide--tox-textfield,.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-control-wrap--status-unknown .tinymce__oxide--tox-textfield,.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-control-wrap--status-valid .tinymce__oxide--tox-textfield{padding-left:32px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-control-wrap__status-icon-wrap{left:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-autocompleter{max-width:25em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-autocompleter .tinymce__oxide--tox-menu{max-width:25em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-autocompleter .tinymce__oxide--tox-autocompleter-highlight{font-weight:700}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input{display:flex;position:relative;z-index:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input .tinymce__oxide--tox-textfield{z-index:-1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input span:focus:not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input span[aria-disabled=true]{cursor:not-allowed}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-color-input .tinymce__oxide--tox-textfield{padding-left:36px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-color-input span{left:6px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-color-input .tinymce__oxide--tox-textfield{padding-right:36px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-color-input span{right:6px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-label,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar-label{padding:0 8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-label{padding:0 0 0 8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group{box-sizing:border-box;margin-bottom:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form-group--maximize{flex:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--error{color:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--collection{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__grid--2col>.tinymce__oxide--tox-form__group{width:calc(50% - (8px / 2))}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__grid--3col>.tinymce__oxide--tox-form__group{width:calc(100% / 3 - (8px / 2))}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__grid--4col>.tinymce__oxide--tox-form__group{width:calc(25% - (8px / 2))}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__controls-h-stack{align-items:center;display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--inline{align-items:center;display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--stretched .tinymce__oxide--tox-textarea{flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--stretched .tinymce__oxide--tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--stretched .tinymce__oxide--tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-form__controls-h-stack>:not(:first-child){margin-left:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-form__controls-h-stack>:not(:first-child){margin-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-lock.tinymce__oxide--tox-locked .tinymce__oxide--tox-lock-icon__unlock,.tinymce__oxide--tox .tinymce__oxide--tox-lock:not(.tinymce__oxide--tox-locked) .tinymce__oxide--tox-lock-icon__lock{display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listboxfield .tinymce__oxide--tox-listbox--select,.tinymce__oxide--tox .tinymce__oxide--tox-textarea,.tinymce__oxide--tox .tinymce__oxide--tox-textfield,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar-textfield{appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-textarea[disabled],.tinymce__oxide--tox .tinymce__oxide--tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listboxfield .tinymce__oxide--tox-listbox--select:focus,.tinymce__oxide--tox .tinymce__oxide--tox-textarea:focus,.tinymce__oxide--tox .tinymce__oxide--tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-naked-btn svg{display:block;fill:#222f3e}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-toolbar-textfield+*{margin-left:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-toolbar-textfield+*{margin-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listboxfield{cursor:pointer;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listboxfield .tinymce__oxide--tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listbox__select-chevron svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listboxfield .tinymce__oxide--tox-listbox--select{align-items:center;display:flex}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-listboxfield svg{right:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-listboxfield svg{left:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield{cursor:pointer;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield select{appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield select::-ms-expand{display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-selectfield select[size=\"0\"],.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-selectfield select[size=\"1\"]{padding-right:24px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-selectfield svg{right:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-selectfield select[size=\"0\"],.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-selectfield select[size=\"1\"]{padding-left:24px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-selectfield svg{left:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-textarea{appearance:textarea;white-space:pre-wrap}\n\n.tinymce__oxide--tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce.tinymce__oxide--tox-fullscreen .tinymce__oxide--tox-statusbar__resize-handle{display:none}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce.tinymce__oxide--tox-fullscreen{background-color:transparent;z-index:1200}\n\n.tinymce__oxide--tox-shadowhost.tinymce__oxide--tox-fullscreen{z-index:1200}\n\n.tinymce__oxide--tox-fullscreen .tinymce__oxide--tox.tinymce__oxide--tox-tinymce-aux,.tinymce__oxide--tox-fullscreen~.tinymce__oxide--tox.tinymce__oxide--tox-tinymce-aux{z-index:1201}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-help__more-link{list-style:none;margin-top:1em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools{width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__image,.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__image+.tinymce__oxide--tox-image-tools__toolbar{margin-top:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-spacer{flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle-move{border:0;cursor:move;position:absolute}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-slider:not(:first-of-type){margin-left:8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-button+.tinymce__oxide--tox-slider{margin-left:32px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-slider+.tinymce__oxide--tox-button{margin-left:32px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-slider:not(:first-of-type){margin-right:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-button+.tinymce__oxide--tox-slider{margin-right:32px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-slider+.tinymce__oxide--tox-button{margin-right:32px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__group .tinymce__oxide--tox-insert-table-picker{margin:-4px 0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker .tinymce__oxide--tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker__label{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker__label{text-align:center}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-insert-table-picker>div:nth-child(10n){border-right:0}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-insert-table-picker>div:nth-child(10n+1){border-right:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menu.tinymce__oxide--tox-collection.tinymce__oxide--tox-collection--list{padding:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menu.tinymce__oxide--tox-collection.tinymce__oxide--tox-collection--toolbar{padding:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menu.tinymce__oxide--tox-collection.tinymce__oxide--tox-collection--grid{padding:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menu__label blockquote,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label code,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h1,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h2,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h3,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h4,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h5,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h6,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label p{margin:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menubar{background:url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E\") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce:not(.tinymce__oxide--tox-tinymce-inline) .tinymce__oxide--tox-editor-header:not(:first-child) .tinymce__oxide--tox-menubar{border-top:1px solid #ccc}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn:hover:not(:disabled):not(.tinymce__oxide--tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn[disabled] .tinymce__oxide--tox-mbtn__select-label{cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:grid;font-size:14px;font-weight:400;grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification p{font-size:14px;font-weight:400}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification a{text-decoration:underline}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--in{opacity:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--success p{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--success a{color:#547831}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--success svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--error p{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--error a{color:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--error svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--warn,.tinymce__oxide--tox .tinymce__oxide--tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--warn p,.tinymce__oxide--tox .tinymce__oxide--tox-notification--warning p{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--warn a,.tinymce__oxide--tox .tinymce__oxide--tox-notification--warning a{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--warn svg,.tinymce__oxide--tox .tinymce__oxide--tox-notification--warning svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--info p{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--info a{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--info svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__body{align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-notification__body{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-notification__body{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__body>*{margin:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__body>*+*{margin-top:1rem}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__icon{align-self:center;-ms-grid-column-span:1;grid-column-end:2;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;grid-row-start:1;justify-self:end}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__icon svg{display:block}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__dismiss{align-self:start;-ms-grid-column-span:1;grid-column-end:4;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;grid-row-start:1;justify-self:end}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification .tinymce__oxide--tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;grid-row-start:2;justify-self:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop{display:inline-block;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop--resizing{transition:width .1s ease}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop--resizing .tinymce__oxide--tox-toolbar{flex-wrap:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop__dialog>:not(.tinymce__oxide--tox-toolbar){margin:4px 4px 4px 8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop__dialog .tinymce__oxide--tox-toolbar{background-color:transparent;margin-bottom:-1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--bottom::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--bottom::before{left:50%;top:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--top::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--left::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--right::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--align-left::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--align-left::before{left:20px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--align-right::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--align-right::before{left:calc(100% - 20px)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar__slider{display:flex;overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar__pane-container{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar__pane{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar--sliding-closed{opacity:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar--sliding-open{opacity:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar--sliding-growing,.tinymce__oxide--tox .tinymce__oxide--tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-platform-touch .tinymce__oxide--tox-selector{height:12px;width:12px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-source-code{overflow:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-spinner{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-spinner>div{animation:tinymce__oxide--tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-spinner>div:nth-child(1){animation-delay:-.32s}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-spinner>div:nth-child(2){animation-delay:-.16s}\n\n@keyframes tinymce__oxide--tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-spinner>div:not(:first-child){margin-left:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-spinner>div:not(:first-child){margin-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__path>*{display:inline;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar a,.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__path-item,.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px;box-shadow:0 0 0 2px #dee0e2}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-statusbar__path>*{margin-right:4px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-statusbar__branding{margin-left:1ch}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-statusbar{flex-direction:row-reverse}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-statusbar__path>*{margin-left:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-throbber{z-index:1299}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn svg{display:block;fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn.tinymce__oxide--tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:hover svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:active svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--disabled,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--disabled:hover,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:disabled,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--disabled svg,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--disabled:hover svg,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:disabled svg,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled:hover>*,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled>*{transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled svg,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled:hover svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:focus:not(.tinymce__oxide--tox-tbtn--disabled){color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:focus:not(.tinymce__oxide--tox-tbtn--disabled) svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:active>*{transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--md{height:51px;width:51px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--lg{flex-direction:column;height:68px;width:68px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--return{align-self:stretch;height:unset;width:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--labeled{padding:0 4px;width:unset}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--bespoke .tinymce__oxide--tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button>*{border-radius:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button__chevron{width:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button .tinymce__oxide--tox-tbtn{margin:0}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-platform-touch .tinymce__oxide--tox-split-button .tinymce__oxide--tox-tbtn:first-child{width:30px}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-platform-touch .tinymce__oxide--tox-split-button__chevron{width:20px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button.tinymce__oxide--tox-tbtn--disabled .tinymce__oxide--tox-tbtn:focus,.tinymce__oxide--tox .tinymce__oxide--tox-split-button.tinymce__oxide--tox-tbtn--disabled .tinymce__oxide--tox-tbtn:hover,.tinymce__oxide--tox .tinymce__oxide--tox-split-button.tinymce__oxide--tox-tbtn--disabled:focus,.tinymce__oxide--tox .tinymce__oxide--tox-split-button.tinymce__oxide--tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar-overlord{background-color:#fff}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__overflow,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__primary{background:url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E\") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__overflow.tinymce__oxide--tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menubar+.tinymce__oxide--tox-toolbar,.tinymce__oxide--tox .tinymce__oxide--tox-menubar+.tinymce__oxide--tox-toolbar-overlord .tinymce__oxide--tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop .tinymce__oxide--tox-toolbar{border-width:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar--no-divider{background-image:none}\n\n.tinymce__oxide--tox-tinymce:not(.tinymce__oxide--tox-tinymce-inline) .tinymce__oxide--tox-editor-header:not(:first-child) .tinymce__oxide--tox-toolbar-overlord:first-child .tinymce__oxide--tox-toolbar__primary,.tinymce__oxide--tox-tinymce:not(.tinymce__oxide--tox-tinymce-inline) .tinymce__oxide--tox-editor-header:not(:first-child) .tinymce__oxide--tox-toolbar:first-child{border-top:1px solid #ccc}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce-aux .tinymce__oxide--tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__group--pull-right{margin-left:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar--scrolling .tinymce__oxide--tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip{display:inline-block;padding:8px;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip__arrow{position:absolute}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip--down .tinymce__oxide--tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip--up .tinymce__oxide--tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip--right .tinymce__oxide--tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip--left .tinymce__oxide--tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-well>:first-child{margin-top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-well>:last-child{margin-bottom:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-well>:only-child{margin:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:\"\";height:100%;position:absolute;width:100%;z-index:1000}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tab{cursor:pointer}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools-edit-panel{height:60px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__sidebar{height:60px}\n`;\n },\n 'tox': 'tinymce__oxide--tox',\n 'tox-tinymce': 'tinymce__oxide--tox-tinymce',\n 'tox-tinymce-inline': 'tinymce__oxide--tox-tinymce-inline',\n 'tox-editor-header': 'tinymce__oxide--tox-editor-header',\n 'tox-tinymce-aux': 'tinymce__oxide--tox-tinymce-aux',\n 'accessibility-issue__header': 'tinymce__oxide--accessibility-issue__header',\n 'accessibility-issue__description': 'tinymce__oxide--accessibility-issue__description',\n 'accessibility-issue__repair': 'tinymce__oxide--accessibility-issue__repair',\n 'tox-dialog__body-content': 'tinymce__oxide--tox-dialog__body-content',\n 'accessibility-issue--info': 'tinymce__oxide--accessibility-issue--info',\n 'tox-form__group': 'tinymce__oxide--tox-form__group',\n 'tox-icon': 'tinymce__oxide--tox-icon',\n 'accessibility-issue--warn': 'tinymce__oxide--accessibility-issue--warn',\n 'accessibility-issue--error': 'tinymce__oxide--accessibility-issue--error',\n 'accessibility-issue--success': 'tinymce__oxide--accessibility-issue--success',\n 'tox-button': 'tinymce__oxide--tox-button',\n 'tox-anchorbar': 'tinymce__oxide--tox-anchorbar',\n 'tox-bar': 'tinymce__oxide--tox-bar',\n 'tox-button--secondary': 'tinymce__oxide--tox-button--secondary',\n 'tox-button--icon': 'tinymce__oxide--tox-button--icon',\n 'tox-button-link': 'tinymce__oxide--tox-button-link',\n 'tox-button-link--sm': 'tinymce__oxide--tox-button-link--sm',\n 'tox-button--naked': 'tinymce__oxide--tox-button--naked',\n 'tox-checkbox': 'tinymce__oxide--tox-checkbox',\n 'tox-checkbox__input': 'tinymce__oxide--tox-checkbox__input',\n 'tox-checkbox__icons': 'tinymce__oxide--tox-checkbox__icons',\n 'tox-checkbox-icon__unchecked': 'tinymce__oxide--tox-checkbox-icon__unchecked',\n 'tox-checkbox-icon__indeterminate': 'tinymce__oxide--tox-checkbox-icon__indeterminate',\n 'tox-checkbox-icon__checked': 'tinymce__oxide--tox-checkbox-icon__checked',\n 'tox-checkbox--disabled': 'tinymce__oxide--tox-checkbox--disabled',\n 'tox-checkbox__label': 'tinymce__oxide--tox-checkbox__label',\n 'tox-collection--toolbar': 'tinymce__oxide--tox-collection--toolbar',\n 'tox-collection__group': 'tinymce__oxide--tox-collection__group',\n 'tox-collection--grid': 'tinymce__oxide--tox-collection--grid',\n 'tox-collection--list': 'tinymce__oxide--tox-collection--list',\n 'tox-collection__group-heading': 'tinymce__oxide--tox-collection__group-heading',\n 'tox-collection__item': 'tinymce__oxide--tox-collection__item',\n 'tox-collection__item--enabled': 'tinymce__oxide--tox-collection__item--enabled',\n 'tox-collection__item--active': 'tinymce__oxide--tox-collection__item--active',\n 'tox-collection__item--state-disabled': 'tinymce__oxide--tox-collection__item--state-disabled',\n 'tox-collection__item-checkmark': 'tinymce__oxide--tox-collection__item-checkmark',\n 'tox-collection__item-icon': 'tinymce__oxide--tox-collection__item-icon',\n 'tox-collection--toolbar-lg': 'tinymce__oxide--tox-collection--toolbar-lg',\n 'tox-collection__item-label': 'tinymce__oxide--tox-collection__item-label',\n 'tox-collection__item-accessory': 'tinymce__oxide--tox-collection__item-accessory',\n 'tox-collection__item-caret': 'tinymce__oxide--tox-collection__item-caret',\n 'tox-collection--horizontal': 'tinymce__oxide--tox-collection--horizontal',\n 'tox-collection__item-container': 'tinymce__oxide--tox-collection__item-container',\n 'tox-collection__item-container--row': 'tinymce__oxide--tox-collection__item-container--row',\n 'tox-collection__item-container--align-left': 'tinymce__oxide--tox-collection__item-container--align-left',\n 'tox-collection__item-container--align-right': 'tinymce__oxide--tox-collection__item-container--align-right',\n 'tox-collection__item-container--valign-top': 'tinymce__oxide--tox-collection__item-container--valign-top',\n 'tox-collection__item-container--valign-middle': 'tinymce__oxide--tox-collection__item-container--valign-middle',\n 'tox-collection__item-container--valign-bottom': 'tinymce__oxide--tox-collection__item-container--valign-bottom',\n 'tox-collection__item-container--column': 'tinymce__oxide--tox-collection__item-container--column',\n 'tox-collection': 'tinymce__oxide--tox-collection',\n 'tox-collection__item-icon-rtl': 'tinymce__oxide--tox-collection__item-icon-rtl',\n 'tox-color-picker-container': 'tinymce__oxide--tox-color-picker-container',\n 'tox-sv-palette': 'tinymce__oxide--tox-sv-palette',\n 'tox-sv-palette-spectrum': 'tinymce__oxide--tox-sv-palette-spectrum',\n 'tox-sv-palette-thumb': 'tinymce__oxide--tox-sv-palette-thumb',\n 'tox-sv-palette-inner-thumb': 'tinymce__oxide--tox-sv-palette-inner-thumb',\n 'tox-hue-slider': 'tinymce__oxide--tox-hue-slider',\n 'tox-hue-slider-spectrum': 'tinymce__oxide--tox-hue-slider-spectrum',\n 'tox-hue-slider-thumb': 'tinymce__oxide--tox-hue-slider-thumb',\n 'tox-rgb-form': 'tinymce__oxide--tox-rgb-form',\n 'tox-invalid': 'tinymce__oxide--tox-invalid',\n 'tox-rgba-preview': 'tinymce__oxide--tox-rgba-preview',\n 'tox-toolbar': 'tinymce__oxide--tox-toolbar',\n 'tox-swatches': 'tinymce__oxide--tox-swatches',\n 'tox-toolbar__overflow': 'tinymce__oxide--tox-toolbar__overflow',\n 'tox-toolbar__primary': 'tinymce__oxide--tox-toolbar__primary',\n 'tox-swatches-menu': 'tinymce__oxide--tox-swatches-menu',\n 'tox-swatches__row': 'tinymce__oxide--tox-swatches__row',\n 'tox-swatch': 'tinymce__oxide--tox-swatch',\n 'tox-swatch--remove': 'tinymce__oxide--tox-swatch--remove',\n 'tox-swatches__picker-btn': 'tinymce__oxide--tox-swatches__picker-btn',\n 'tox-comment-thread': 'tinymce__oxide--tox-comment-thread',\n 'tox-comment': 'tinymce__oxide--tox-comment',\n 'tox-comment__header': 'tinymce__oxide--tox-comment__header',\n 'tox-comment__date': 'tinymce__oxide--tox-comment__date',\n 'tox-comment__body': 'tinymce__oxide--tox-comment__body',\n 'tox-comment__expander': 'tinymce__oxide--tox-comment__expander',\n 'tox-comment__buttonspacing': 'tinymce__oxide--tox-comment__buttonspacing',\n 'tox-comment-thread__overlay': 'tinymce__oxide--tox-comment-thread__overlay',\n 'tox-comment__reply': 'tinymce__oxide--tox-comment__reply',\n 'tox-comment__edit': 'tinymce__oxide--tox-comment__edit',\n 'tox-comment__gradient': 'tinymce__oxide--tox-comment__gradient',\n 'tox-comment__overlay': 'tinymce__oxide--tox-comment__overlay',\n 'tox-comment__loading-text': 'tinymce__oxide--tox-comment__loading-text',\n 'tox-comment__overlaytext': 'tinymce__oxide--tox-comment__overlaytext',\n 'tox-comment__busy-spinner': 'tinymce__oxide--tox-comment__busy-spinner',\n 'tox-comment__scroll': 'tinymce__oxide--tox-comment__scroll',\n 'tox-conversations': 'tinymce__oxide--tox-conversations',\n 'tox-user': 'tinymce__oxide--tox-user',\n 'tox-user__avatar': 'tinymce__oxide--tox-user__avatar',\n 'tox-user__name': 'tinymce__oxide--tox-user__name',\n 'tox-dialog-wrap': 'tinymce__oxide--tox-dialog-wrap',\n 'tox-dialog-wrap__backdrop': 'tinymce__oxide--tox-dialog-wrap__backdrop',\n 'tox-dialog-wrap__backdrop--opaque': 'tinymce__oxide--tox-dialog-wrap__backdrop--opaque',\n 'tox-dialog': 'tinymce__oxide--tox-dialog',\n 'tox-force-desktop': 'tinymce__oxide--tox-force-desktop',\n 'tox-dialog-inline': 'tinymce__oxide--tox-dialog-inline',\n 'tox-dialog__header': 'tinymce__oxide--tox-dialog__header',\n 'tox-dialog__draghandle': 'tinymce__oxide--tox-dialog__draghandle',\n 'tox-dialog__dismiss': 'tinymce__oxide--tox-dialog__dismiss',\n 'tox-dialog__title': 'tinymce__oxide--tox-dialog__title',\n 'tox-dialog__body': 'tinymce__oxide--tox-dialog__body',\n 'tox-dialog__body-nav': 'tinymce__oxide--tox-dialog__body-nav',\n 'tox-dialog__body-nav-item': 'tinymce__oxide--tox-dialog__body-nav-item',\n 'tox-dialog__body-nav-item--active': 'tinymce__oxide--tox-dialog__body-nav-item--active',\n 'tox-dialog--width-lg': 'tinymce__oxide--tox-dialog--width-lg',\n 'tox-dialog--width-md': 'tinymce__oxide--tox-dialog--width-md',\n 'tox-dialog__body-content--centered': 'tinymce__oxide--tox-dialog__body-content--centered',\n 'tox-dialog__footer': 'tinymce__oxide--tox-dialog__footer',\n 'tox-dialog__footer-end': 'tinymce__oxide--tox-dialog__footer-end',\n 'tox-dialog__footer-start': 'tinymce__oxide--tox-dialog__footer-start',\n 'tox-dialog__busy-spinner': 'tinymce__oxide--tox-dialog__busy-spinner',\n 'tox-dialog__table': 'tinymce__oxide--tox-dialog__table',\n 'tox-dialog__popups': 'tinymce__oxide--tox-dialog__popups',\n 'tox-dialog__body-iframe': 'tinymce__oxide--tox-dialog__body-iframe',\n 'tox-navobj': 'tinymce__oxide--tox-navobj',\n 'tox-dialog-dock-fadeout': 'tinymce__oxide--tox-dialog-dock-fadeout',\n 'tox-dialog-dock-fadein': 'tinymce__oxide--tox-dialog-dock-fadein',\n 'tox-dialog-dock-transition': 'tinymce__oxide--tox-dialog-dock-transition',\n 'tox-platform-ie': 'tinymce__oxide--tox-platform-ie',\n 'tox-dialog__disable-scroll': 'tinymce__oxide--tox-dialog__disable-scroll',\n 'tox-dropzone-container': 'tinymce__oxide--tox-dropzone-container',\n 'tox-dropzone': 'tinymce__oxide--tox-dropzone',\n 'tox-edit-area': 'tinymce__oxide--tox-edit-area',\n 'tox-edit-area__iframe': 'tinymce__oxide--tox-edit-area__iframe',\n 'tox-inline-edit-area': 'tinymce__oxide--tox-inline-edit-area',\n 'tox-editor-container': 'tinymce__oxide--tox-editor-container',\n 'tox-tinymce--toolbar-bottom': 'tinymce__oxide--tox-tinymce--toolbar-bottom',\n 'tox-tinymce--toolbar-sticky-on': 'tinymce__oxide--tox-tinymce--toolbar-sticky-on',\n 'tox-editor-dock-fadeout': 'tinymce__oxide--tox-editor-dock-fadeout',\n 'tox-editor-dock-fadein': 'tinymce__oxide--tox-editor-dock-fadein',\n 'tox-editor-dock-transition': 'tinymce__oxide--tox-editor-dock-transition',\n 'tox-control-wrap': 'tinymce__oxide--tox-control-wrap',\n 'tox-control-wrap--status-invalid': 'tinymce__oxide--tox-control-wrap--status-invalid',\n 'tox-control-wrap__status-icon-invalid': 'tinymce__oxide--tox-control-wrap__status-icon-invalid',\n 'tox-control-wrap--status-unknown': 'tinymce__oxide--tox-control-wrap--status-unknown',\n 'tox-control-wrap__status-icon-unknown': 'tinymce__oxide--tox-control-wrap__status-icon-unknown',\n 'tox-control-wrap--status-valid': 'tinymce__oxide--tox-control-wrap--status-valid',\n 'tox-control-wrap__status-icon-valid': 'tinymce__oxide--tox-control-wrap__status-icon-valid',\n 'tox-control-wrap__status-icon-wrap': 'tinymce__oxide--tox-control-wrap__status-icon-wrap',\n 'tox-textfield': 'tinymce__oxide--tox-textfield',\n 'tox-autocompleter': 'tinymce__oxide--tox-autocompleter',\n 'tox-menu': 'tinymce__oxide--tox-menu',\n 'tox-autocompleter-highlight': 'tinymce__oxide--tox-autocompleter-highlight',\n 'tox-color-input': 'tinymce__oxide--tox-color-input',\n 'tox-label': 'tinymce__oxide--tox-label',\n 'tox-toolbar-label': 'tinymce__oxide--tox-toolbar-label',\n 'tox-form': 'tinymce__oxide--tox-form',\n 'tox-form-group--maximize': 'tinymce__oxide--tox-form-group--maximize',\n 'tox-form__group--error': 'tinymce__oxide--tox-form__group--error',\n 'tox-form__group--collection': 'tinymce__oxide--tox-form__group--collection',\n 'tox-form__grid': 'tinymce__oxide--tox-form__grid',\n 'tox-form__grid--2col': 'tinymce__oxide--tox-form__grid--2col',\n 'tox-form__grid--3col': 'tinymce__oxide--tox-form__grid--3col',\n 'tox-form__grid--4col': 'tinymce__oxide--tox-form__grid--4col',\n 'tox-form__controls-h-stack': 'tinymce__oxide--tox-form__controls-h-stack',\n 'tox-form__group--inline': 'tinymce__oxide--tox-form__group--inline',\n 'tox-form__group--stretched': 'tinymce__oxide--tox-form__group--stretched',\n 'tox-textarea': 'tinymce__oxide--tox-textarea',\n 'tox-lock': 'tinymce__oxide--tox-lock',\n 'tox-locked': 'tinymce__oxide--tox-locked',\n 'tox-lock-icon__unlock': 'tinymce__oxide--tox-lock-icon__unlock',\n 'tox-lock-icon__lock': 'tinymce__oxide--tox-lock-icon__lock',\n 'tox-listboxfield': 'tinymce__oxide--tox-listboxfield',\n 'tox-listbox--select': 'tinymce__oxide--tox-listbox--select',\n 'tox-toolbar-textfield': 'tinymce__oxide--tox-toolbar-textfield',\n 'tox-naked-btn': 'tinymce__oxide--tox-naked-btn',\n 'tox-listbox__select-label': 'tinymce__oxide--tox-listbox__select-label',\n 'tox-listbox__select-chevron': 'tinymce__oxide--tox-listbox__select-chevron',\n 'tox-selectfield': 'tinymce__oxide--tox-selectfield',\n 'tox-fullscreen': 'tinymce__oxide--tox-fullscreen',\n 'tox-statusbar__resize-handle': 'tinymce__oxide--tox-statusbar__resize-handle',\n 'tox-shadowhost': 'tinymce__oxide--tox-shadowhost',\n 'tox-help__more-link': 'tinymce__oxide--tox-help__more-link',\n 'tox-image-tools': 'tinymce__oxide--tox-image-tools',\n 'tox-image-tools__toolbar': 'tinymce__oxide--tox-image-tools__toolbar',\n 'tox-image-tools__image': 'tinymce__oxide--tox-image-tools__image',\n 'tox-image-tools__image-bg': 'tinymce__oxide--tox-image-tools__image-bg',\n 'tox-spacer': 'tinymce__oxide--tox-spacer',\n 'tox-croprect-block': 'tinymce__oxide--tox-croprect-block',\n 'tox-croprect-handle': 'tinymce__oxide--tox-croprect-handle',\n 'tox-croprect-handle-move': 'tinymce__oxide--tox-croprect-handle-move',\n 'tox-croprect-handle-nw': 'tinymce__oxide--tox-croprect-handle-nw',\n 'tox-croprect-handle-ne': 'tinymce__oxide--tox-croprect-handle-ne',\n 'tox-croprect-handle-sw': 'tinymce__oxide--tox-croprect-handle-sw',\n 'tox-croprect-handle-se': 'tinymce__oxide--tox-croprect-handle-se',\n 'tox-slider': 'tinymce__oxide--tox-slider',\n 'tox-insert-table-picker': 'tinymce__oxide--tox-insert-table-picker',\n 'tox-insert-table-picker__selected': 'tinymce__oxide--tox-insert-table-picker__selected',\n 'tox-insert-table-picker__label': 'tinymce__oxide--tox-insert-table-picker__label',\n 'tox-menu__label': 'tinymce__oxide--tox-menu__label',\n 'tox-menubar': 'tinymce__oxide--tox-menubar',\n 'tox-mbtn': 'tinymce__oxide--tox-mbtn',\n 'tox-mbtn--active': 'tinymce__oxide--tox-mbtn--active',\n 'tox-mbtn__select-label': 'tinymce__oxide--tox-mbtn__select-label',\n 'tox-mbtn__select-chevron': 'tinymce__oxide--tox-mbtn__select-chevron',\n 'tox-notification': 'tinymce__oxide--tox-notification',\n 'tox-notification--in': 'tinymce__oxide--tox-notification--in',\n 'tox-notification--success': 'tinymce__oxide--tox-notification--success',\n 'tox-notification--error': 'tinymce__oxide--tox-notification--error',\n 'tox-notification--warn': 'tinymce__oxide--tox-notification--warn',\n 'tox-notification--warning': 'tinymce__oxide--tox-notification--warning',\n 'tox-notification--info': 'tinymce__oxide--tox-notification--info',\n 'tox-notification__body': 'tinymce__oxide--tox-notification__body',\n 'tox-notification__icon': 'tinymce__oxide--tox-notification__icon',\n 'tox-notification__dismiss': 'tinymce__oxide--tox-notification__dismiss',\n 'tox-progress-bar': 'tinymce__oxide--tox-progress-bar',\n 'tox-pop': 'tinymce__oxide--tox-pop',\n 'tox-pop--resizing': 'tinymce__oxide--tox-pop--resizing',\n 'tox-pop__dialog': 'tinymce__oxide--tox-pop__dialog',\n 'tox-pop--bottom': 'tinymce__oxide--tox-pop--bottom',\n 'tox-pop--top': 'tinymce__oxide--tox-pop--top',\n 'tox-pop--left': 'tinymce__oxide--tox-pop--left',\n 'tox-pop--right': 'tinymce__oxide--tox-pop--right',\n 'tox-pop--align-left': 'tinymce__oxide--tox-pop--align-left',\n 'tox-pop--align-right': 'tinymce__oxide--tox-pop--align-right',\n 'tox-sidebar-wrap': 'tinymce__oxide--tox-sidebar-wrap',\n 'tox-sidebar': 'tinymce__oxide--tox-sidebar',\n 'tox-sidebar__slider': 'tinymce__oxide--tox-sidebar__slider',\n 'tox-sidebar__pane-container': 'tinymce__oxide--tox-sidebar__pane-container',\n 'tox-sidebar__pane': 'tinymce__oxide--tox-sidebar__pane',\n 'tox-sidebar--sliding-closed': 'tinymce__oxide--tox-sidebar--sliding-closed',\n 'tox-sidebar--sliding-open': 'tinymce__oxide--tox-sidebar--sliding-open',\n 'tox-sidebar--sliding-growing': 'tinymce__oxide--tox-sidebar--sliding-growing',\n 'tox-sidebar--sliding-shrinking': 'tinymce__oxide--tox-sidebar--sliding-shrinking',\n 'tox-selector': 'tinymce__oxide--tox-selector',\n 'tox-platform-touch': 'tinymce__oxide--tox-platform-touch',\n 'tox-slider__rail': 'tinymce__oxide--tox-slider__rail',\n 'tox-slider__handle': 'tinymce__oxide--tox-slider__handle',\n 'tox-source-code': 'tinymce__oxide--tox-source-code',\n 'tox-spinner': 'tinymce__oxide--tox-spinner',\n 'tam-bouncing-dots': 'tinymce__oxide--tam-bouncing-dots',\n 'tox-statusbar': 'tinymce__oxide--tox-statusbar',\n 'tox-statusbar__text-container': 'tinymce__oxide--tox-statusbar__text-container',\n 'tox-statusbar__path': 'tinymce__oxide--tox-statusbar__path',\n 'tox-statusbar__wordcount': 'tinymce__oxide--tox-statusbar__wordcount',\n 'tox-statusbar__path-item': 'tinymce__oxide--tox-statusbar__path-item',\n 'tox-statusbar__branding': 'tinymce__oxide--tox-statusbar__branding',\n 'tox-throbber': 'tinymce__oxide--tox-throbber',\n 'tox-throbber__busy-spinner': 'tinymce__oxide--tox-throbber__busy-spinner',\n 'tox-tbtn': 'tinymce__oxide--tox-tbtn',\n 'tox-tbtn-more': 'tinymce__oxide--tox-tbtn-more',\n 'tox-tbtn--disabled': 'tinymce__oxide--tox-tbtn--disabled',\n 'tox-tbtn--enabled': 'tinymce__oxide--tox-tbtn--enabled',\n 'tox-tbtn--md': 'tinymce__oxide--tox-tbtn--md',\n 'tox-tbtn--lg': 'tinymce__oxide--tox-tbtn--lg',\n 'tox-tbtn--return': 'tinymce__oxide--tox-tbtn--return',\n 'tox-tbtn--labeled': 'tinymce__oxide--tox-tbtn--labeled',\n 'tox-tbtn__vlabel': 'tinymce__oxide--tox-tbtn__vlabel',\n 'tox-tbtn--select': 'tinymce__oxide--tox-tbtn--select',\n 'tox-tbtn__select-label': 'tinymce__oxide--tox-tbtn__select-label',\n 'tox-tbtn__select-chevron': 'tinymce__oxide--tox-tbtn__select-chevron',\n 'tox-tbtn--bespoke': 'tinymce__oxide--tox-tbtn--bespoke',\n 'tox-split-button': 'tinymce__oxide--tox-split-button',\n 'tox-split-button__chevron': 'tinymce__oxide--tox-split-button__chevron',\n 'tox-toolbar-overlord': 'tinymce__oxide--tox-toolbar-overlord',\n 'tox-toolbar__overflow--closed': 'tinymce__oxide--tox-toolbar__overflow--closed',\n 'tox-toolbar__overflow--growing': 'tinymce__oxide--tox-toolbar__overflow--growing',\n 'tox-toolbar__overflow--shrinking': 'tinymce__oxide--tox-toolbar__overflow--shrinking',\n 'tox-toolbar--scrolling': 'tinymce__oxide--tox-toolbar--scrolling',\n 'tox-toolbar--no-divider': 'tinymce__oxide--tox-toolbar--no-divider',\n 'tox-tbtn__icon-rtl': 'tinymce__oxide--tox-tbtn__icon-rtl',\n 'tox-toolbar__group': 'tinymce__oxide--tox-toolbar__group',\n 'tox-toolbar__group--pull-right': 'tinymce__oxide--tox-toolbar__group--pull-right',\n 'tox-tooltip': 'tinymce__oxide--tox-tooltip',\n 'tox-tooltip__body': 'tinymce__oxide--tox-tooltip__body',\n 'tox-tooltip__arrow': 'tinymce__oxide--tox-tooltip__arrow',\n 'tox-tooltip--down': 'tinymce__oxide--tox-tooltip--down',\n 'tox-tooltip--up': 'tinymce__oxide--tox-tooltip--up',\n 'tox-tooltip--right': 'tinymce__oxide--tox-tooltip--right',\n 'tox-tooltip--left': 'tinymce__oxide--tox-tooltip--left',\n 'tox-well': 'tinymce__oxide--tox-well',\n 'tox-custom-editor': 'tinymce__oxide--tox-custom-editor',\n 'tox-dialog-loading': 'tinymce__oxide--tox-dialog-loading',\n 'tox-tab': 'tinymce__oxide--tox-tab',\n 'tox-dialog__content-js': 'tinymce__oxide--tox-dialog__content-js',\n 'tox-image-tools-edit-panel': 'tinymce__oxide--tox-image-tools-edit-panel',\n 'tox-image-tools__sidebar': 'tinymce__oxide--tox-image-tools__sidebar'\n};\nconst contentCSSBinding = {\n componentId: 'bKkob',\n template: function (theme) {\n return `\n\n\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-item-anchor {\n background: transparent url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A\") no-repeat center;\n cursor: default;\n display: inline-block;\n height: 12px !important;\n padding: 0 2px;\n -webkit-user-modify: read-only;\n -moz-user-modify: read-only;\n -webkit-user-select: all;\n user-select: all;\n width: 8px !important;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-item-anchor[data-mce-selected] {\n outline-offset: 1px;\n}\n.tinymce__oxide--tox-comments-visible .tinymce__oxide--tox-comment {\n background-color: #fff0b7;\n}\n.tinymce__oxide--tox-comments-visible .tinymce__oxide--tox-comment--active {\n background-color: #ffe168;\n}\n.tinymce__oxide--tox-checklist > li:not(.tinymce__oxide--tox-checklist--hidden) {\n list-style: none;\n margin: 0.25em 0;\n}\n.tinymce__oxide--tox-checklist > li:not(.tinymce__oxide--tox-checklist--hidden)::before {\n content: url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A\");\n cursor: pointer;\n height: 1em;\n margin-left: -1.5em;\n margin-top: 0.125em;\n position: absolute;\n width: 1em;\n}\n.tinymce__oxide--tox-checklist li:not(.tinymce__oxide--tox-checklist--hidden).tinymce__oxide--tox-checklist--checked::before {\n content: url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A\");\n}\n[dir=rtl] .tinymce__oxide--tox-checklist > li:not(.tinymce__oxide--tox-checklist--hidden)::before {\n margin-left: 0;\n margin-right: -1.5em;\n}\n\n\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n color: black;\n background: none;\n text-shadow: 0 1px white;\n font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n font-size: 1em;\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n line-height: 1.5;\n tab-size: 4;\n -webkit-hyphens: none;\n hyphens: none;\n}\n[dir=\"ltr\"] code[class*=\"language-\"],\n[dir=\"ltr\"] pre[class*=\"language-\"] {\n text-align: left;\n}\n[dir=\"rtl\"] code[class*=\"language-\"],\n[dir=\"rtl\"] pre[class*=\"language-\"] {\n text-align: left;\n}\npre[class*=\"language-\"]::selection,\npre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection,\ncode[class*=\"language-\"] ::selection {\n text-shadow: none;\n background: #b3d4fc;\n}\n@media print {\n code[class*=\"language-\"],\n pre[class*=\"language-\"] {\n text-shadow: none;\n }\n}\n\npre[class*=\"language-\"] {\n padding: 1em;\n margin: 0.5em 0;\n overflow: auto;\n}\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n background: #f5f2f0;\n}\n\n:not(pre) > code[class*=\"language-\"] {\n padding: 0.1em;\n border-radius: 0.3em;\n white-space: normal;\n}\n.tinymce__oxide--token.tinymce__oxide--comment,\n.tinymce__oxide--token.tinymce__oxide--prolog,\n.tinymce__oxide--token.tinymce__oxide--doctype,\n.tinymce__oxide--token.tinymce__oxide--cdata {\n color: slategray;\n}\n.tinymce__oxide--token.tinymce__oxide--punctuation {\n color: #999;\n}\n.tinymce__oxide--namespace {\n opacity: 0.7;\n}\n.tinymce__oxide--token.tinymce__oxide--property,\n.tinymce__oxide--token.tinymce__oxide--tag,\n.tinymce__oxide--token.tinymce__oxide--boolean,\n.tinymce__oxide--token.tinymce__oxide--number,\n.tinymce__oxide--token.tinymce__oxide--constant,\n.tinymce__oxide--token.tinymce__oxide--symbol,\n.tinymce__oxide--token.tinymce__oxide--deleted {\n color: #905;\n}\n.tinymce__oxide--token.tinymce__oxide--selector,\n.tinymce__oxide--token.tinymce__oxide--attr-name,\n.tinymce__oxide--token.tinymce__oxide--string,\n.tinymce__oxide--token.tinymce__oxide--char,\n.tinymce__oxide--token.tinymce__oxide--builtin,\n.tinymce__oxide--token.tinymce__oxide--inserted {\n color: #690;\n}\n.tinymce__oxide--token.tinymce__oxide--operator,\n.tinymce__oxide--token.tinymce__oxide--entity,\n.tinymce__oxide--token.tinymce__oxide--url,\n.tinymce__oxide--language-css .tinymce__oxide--token.tinymce__oxide--string,\n.tinymce__oxide--style .tinymce__oxide--token.tinymce__oxide--string {\n color: #9a6e3a;\n background: hsla(0, 0%, 100%, 0.5);\n}\n.tinymce__oxide--token.tinymce__oxide--atrule,\n.tinymce__oxide--token.tinymce__oxide--attr-value,\n.tinymce__oxide--token.tinymce__oxide--keyword {\n color: #07a;\n}\n.tinymce__oxide--token.tinymce__oxide--function,\n.tinymce__oxide--token.tinymce__oxide--class-name {\n color: #DD4A68;\n}\n.tinymce__oxide--token.tinymce__oxide--regex,\n.tinymce__oxide--token.tinymce__oxide--important,\n.tinymce__oxide--token.tinymce__oxide--variable {\n color: #e90;\n}\n.tinymce__oxide--token.tinymce__oxide--important,\n.tinymce__oxide--token.tinymce__oxide--bold {\n font-weight: bold;\n}\n.tinymce__oxide--token.tinymce__oxide--italic {\n font-style: italic;\n}\n.tinymce__oxide--token.tinymce__oxide--entity {\n cursor: help;\n}\n\n.tinymce__oxide--mce-content-body {\n overflow-wrap: break-word;\n word-wrap: break-word;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-visual-caret {\n background-color: black;\n background-color: currentColor;\n position: absolute;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-visual-caret-hidden {\n display: none;\n}\n.tinymce__oxide--mce-content-body *[data-mce-caret] {\n left: -1000px;\n margin: 0;\n padding: 0;\n position: absolute;\n right: auto;\n top: 0;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-offscreen-selection {\n left: -2000000px;\n max-width: 1000000px;\n position: absolute;\n}\n.tinymce__oxide--mce-content-body *[contentEditable=false] {\n cursor: default;\n}\n.tinymce__oxide--mce-content-body *[contentEditable=true] {\n cursor: text;\n}\n.tinymce__oxide--tox-cursor-format-painter {\n cursor: url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A\"), default;\n}\n.tinymce__oxide--mce-content-body figure.tinymce__oxide--align-left {\n float: left;\n}\n[dir=\"ltr\"] .tinymce__oxide--mce-content-body figure.tinymce__oxide--align-left {\n float: left;\n}\n[dir=\"rtl\"] .tinymce__oxide--mce-content-body figure.tinymce__oxide--align-left {\n float: left;\n}\n.tinymce__oxide--mce-content-body figure.tinymce__oxide--align-right {\n float: right;\n}\n[dir=\"ltr\"] .tinymce__oxide--mce-content-body figure.tinymce__oxide--align-right {\n float: right;\n}\n[dir=\"rtl\"] .tinymce__oxide--mce-content-body figure.tinymce__oxide--align-right {\n float: right;\n}\n.tinymce__oxide--mce-content-body figure.tinymce__oxide--image.tinymce__oxide--align-center {\n display: table;\n margin-left: auto;\n margin-right: auto;\n}\n.tinymce__oxide--mce-preview-object {\n border: 1px solid gray;\n display: inline-block;\n line-height: 0;\n margin: 0 2px 0 2px;\n position: relative;\n}\n.tinymce__oxide--mce-preview-object .tinymce__oxide--mce-shim {\n background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tinymce__oxide--mce-preview-object[data-mce-selected=\"2\"] .tinymce__oxide--mce-shim {\n display: none;\n}\n.tinymce__oxide--mce-object {\n background: transparent url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A\") no-repeat center;\n border: 1px dashed #aaa;\n}\n.tinymce__oxide--mce-pagebreak {\n border: 1px dashed #aaa;\n cursor: default;\n display: block;\n height: 5px;\n margin-top: 15px;\n page-break-before: always;\n width: 100%;\n}\n@media print {\n .tinymce__oxide--mce-pagebreak {\n border: 0;\n }\n}\n.tinymce__oxide--tiny-pageembed .tinymce__oxide--mce-shim {\n background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tinymce__oxide--tiny-pageembed[data-mce-selected=\"2\"] .tinymce__oxide--mce-shim {\n display: none;\n}\n.tinymce__oxide--tiny-pageembed {\n display: inline-block;\n position: relative;\n}\n.tinymce__oxide--tiny-pageembed--21by9,\n.tinymce__oxide--tiny-pageembed--16by9,\n.tinymce__oxide--tiny-pageembed--4by3,\n.tinymce__oxide--tiny-pageembed--1by1 {\n display: block;\n overflow: hidden;\n padding: 0;\n position: relative;\n width: 100%;\n}\n.tinymce__oxide--tiny-pageembed--21by9 {\n padding-top: 42.857143%;\n}\n.tinymce__oxide--tiny-pageembed--16by9 {\n padding-top: 56.25%;\n}\n.tinymce__oxide--tiny-pageembed--4by3 {\n padding-top: 75%;\n}\n.tinymce__oxide--tiny-pageembed--1by1 {\n padding-top: 100%;\n}\n.tinymce__oxide--tiny-pageembed--21by9 iframe,\n.tinymce__oxide--tiny-pageembed--16by9 iframe,\n.tinymce__oxide--tiny-pageembed--4by3 iframe,\n.tinymce__oxide--tiny-pageembed--1by1 iframe {\n border: 0;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tinymce__oxide--mce-content-body[data-mce-placeholder] {\n position: relative;\n}\n.tinymce__oxide--mce-content-body[data-mce-placeholder]:not(.tinymce__oxide--mce-visualblocks)::before {\n color: rgba(34, 47, 62, 0.7);\n content: attr(data-mce-placeholder);\n position: absolute;\n}\n.tinymce__oxide--mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.tinymce__oxide--mce-visualblocks)::before {\n left: 1px;\n}\n.tinymce__oxide--mce-content-body[dir=rtl][data-mce-placeholder]:not(.tinymce__oxide--mce-visualblocks)::before {\n right: 1px;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle {\n background-color: #4099ff;\n border-color: #4099ff;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n height: 10px;\n position: absolute;\n width: 10px;\n z-index: 10000;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle:hover {\n background-color: #4099ff;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle:nth-of-type(1) {\n cursor: nwse-resize;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle:nth-of-type(2) {\n cursor: nesw-resize;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle:nth-of-type(3) {\n cursor: nwse-resize;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle:nth-of-type(4) {\n cursor: nesw-resize;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-resize-backdrop {\n z-index: 10000;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-clonedresizable {\n cursor: default;\n opacity: 0.5;\n outline: 1px dashed black;\n position: absolute;\n z-index: 10001;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-clonedresizable.tinymce__oxide--mce-resizetable-columns th,\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-clonedresizable.tinymce__oxide--mce-resizetable-columns td {\n border: 0;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-resize-helper {\n background: #555;\n background: rgba(0, 0, 0, 0.75);\n border: 1px;\n border-radius: 3px;\n color: white;\n display: none;\n font-family: sans-serif;\n font-size: 12px;\n line-height: 14px;\n margin: 5px 10px;\n padding: 5px;\n position: absolute;\n white-space: nowrap;\n z-index: 10002;\n}\n.tinymce__oxide--tox-rtc-user-selection {\n position: relative;\n}\n.tinymce__oxide--tox-rtc-user-cursor {\n bottom: 0;\n cursor: default;\n position: absolute;\n top: 0;\n width: 2px;\n}\n.tinymce__oxide--tox-rtc-user-cursor::before {\n background-color: inherit;\n border-radius: 50%;\n content: '';\n display: block;\n height: 8px;\n position: absolute;\n right: -3px;\n top: -3px;\n width: 8px;\n}\n.tinymce__oxide--tox-rtc-user-cursor:hover::after {\n background-color: inherit;\n border-radius: 100px;\n box-sizing: border-box;\n color: #fff;\n content: attr(data-user);\n display: block;\n font-size: 12px;\n font-weight: bold;\n left: -5px;\n min-height: 8px;\n min-width: 8px;\n padding: 0 12px;\n position: absolute;\n top: -11px;\n white-space: nowrap;\n z-index: 1000;\n}\n.tinymce__oxide--tox-rtc-user-selection--1 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #2dc26b;\n}\n.tinymce__oxide--tox-rtc-user-selection--2 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #e03e2d;\n}\n.tinymce__oxide--tox-rtc-user-selection--3 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #f1c40f;\n}\n.tinymce__oxide--tox-rtc-user-selection--4 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #3598db;\n}\n.tinymce__oxide--tox-rtc-user-selection--5 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #b96ad9;\n}\n.tinymce__oxide--tox-rtc-user-selection--6 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #e67e23;\n}\n.tinymce__oxide--tox-rtc-user-selection--7 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #aaa69d;\n}\n.tinymce__oxide--tox-rtc-user-selection--8 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #f368e0;\n}\n.tinymce__oxide--tox-rtc-remote-image {\n background: #eaeaea url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A\") no-repeat center center;\n border: 1px solid #ccc;\n min-height: 240px;\n min-width: 320px;\n}\n.tinymce__oxide--mce-match-marker {\n background: #aaa;\n color: #fff;\n}\n.tinymce__oxide--mce-match-marker-selected {\n background: #39f;\n color: #fff;\n}\n.tinymce__oxide--mce-match-marker-selected::selection {\n background: #39f;\n color: #fff;\n}\n.tinymce__oxide--mce-content-body img[data-mce-selected],\n.tinymce__oxide--mce-content-body video[data-mce-selected],\n.tinymce__oxide--mce-content-body audio[data-mce-selected],\n.tinymce__oxide--mce-content-body object[data-mce-selected],\n.tinymce__oxide--mce-content-body embed[data-mce-selected],\n.tinymce__oxide--mce-content-body table[data-mce-selected] {\n outline: 3px solid #b4d7ff;\n}\n.tinymce__oxide--mce-content-body hr[data-mce-selected] {\n outline: 3px solid #b4d7ff;\n outline-offset: 1px;\n}\n.tinymce__oxide--mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {\n outline: 3px solid #b4d7ff;\n}\n.tinymce__oxide--mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {\n outline: 3px solid #b4d7ff;\n}\n.tinymce__oxide--mce-content-body *[contentEditable=false][data-mce-selected] {\n cursor: not-allowed;\n outline: 3px solid #b4d7ff;\n}\n.tinymce__oxide--mce-content-body.tinymce__oxide--mce-content-readonly *[contentEditable=true]:focus,\n.tinymce__oxide--mce-content-body.tinymce__oxide--mce-content-readonly *[contentEditable=true]:hover {\n outline: none;\n}\n.tinymce__oxide--mce-content-body *[data-mce-selected=\"inline-boundary\"] {\n background-color: #b4d7ff;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-edit-focus {\n outline: 3px solid #b4d7ff;\n}\n.tinymce__oxide--mce-content-body td[data-mce-selected],\n.tinymce__oxide--mce-content-body th[data-mce-selected] {\n position: relative;\n}\n.tinymce__oxide--mce-content-body td[data-mce-selected]::selection,\n.tinymce__oxide--mce-content-body th[data-mce-selected]::selection {\n background: none;\n}\n.tinymce__oxide--mce-content-body td[data-mce-selected] *,\n.tinymce__oxide--mce-content-body th[data-mce-selected] * {\n outline: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n user-select: none;\n}\n.tinymce__oxide--mce-content-body td[data-mce-selected]::after,\n.tinymce__oxide--mce-content-body th[data-mce-selected]::after {\n background-color: rgba(180, 215, 255, 0.7);\n border: 1px solid rgba(180, 215, 255, 0.7);\n bottom: -1px;\n content: '';\n left: -1px;\n mix-blend-mode: multiply;\n position: absolute;\n right: -1px;\n top: -1px;\n}\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\n .tinymce__oxide--mce-content-body td[data-mce-selected]::after,\n .tinymce__oxide--mce-content-body th[data-mce-selected]::after {\n border-color: rgba(0, 84, 180, 0.7);\n }\n}\n.tinymce__oxide--mce-content-body img::selection {\n background: none;\n}\n.tinymce__oxide--ephox-snooker-resizer-bar {\n background-color: #b4d7ff;\n opacity: 0;\n -webkit-user-select: none;\n user-select: none;\n}\n.tinymce__oxide--ephox-snooker-resizer-cols {\n cursor: col-resize;\n}\n.tinymce__oxide--ephox-snooker-resizer-rows {\n cursor: row-resize;\n}\n.tinymce__oxide--ephox-snooker-resizer-bar.tinymce__oxide--ephox-snooker-resizer-bar-dragging {\n opacity: 1;\n}\n.tinymce__oxide--mce-spellchecker-word {\n background-image: url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A\");\n background-position: 0 calc(100% + 1px);\n background-repeat: repeat-x;\n background-size: auto 6px;\n cursor: default;\n height: 2rem;\n}\n.tinymce__oxide--mce-spellchecker-grammar {\n background-image: url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A\");\n background-position: 0 calc(100% + 1px);\n background-repeat: repeat-x;\n background-size: auto 6px;\n cursor: default;\n}\n.tinymce__oxide--mce-toc {\n border: 1px solid gray;\n}\n.tinymce__oxide--mce-toc h2 {\n margin: 4px;\n}\n.tinymce__oxide--mce-toc li {\n list-style-type: none;\n}\ntable[style*=\"border-width: 0px\"],\n.tinymce__oxide--mce-item-table:not([border]),\n.tinymce__oxide--mce-item-table[border=\"0\"],\ntable[style*=\"border-width: 0px\"] td,\n.tinymce__oxide--mce-item-table:not([border]) td,\n.tinymce__oxide--mce-item-table[border=\"0\"] td,\ntable[style*=\"border-width: 0px\"] th,\n.tinymce__oxide--mce-item-table:not([border]) th,\n.tinymce__oxide--mce-item-table[border=\"0\"] th,\ntable[style*=\"border-width: 0px\"] caption,\n.tinymce__oxide--mce-item-table:not([border]) caption,\n.tinymce__oxide--mce-item-table[border=\"0\"] caption {\n border: 1px dashed #bbb;\n}\n.tinymce__oxide--mce-visualblocks p,\n.tinymce__oxide--mce-visualblocks h1,\n.tinymce__oxide--mce-visualblocks h2,\n.tinymce__oxide--mce-visualblocks h3,\n.tinymce__oxide--mce-visualblocks h4,\n.tinymce__oxide--mce-visualblocks h5,\n.tinymce__oxide--mce-visualblocks h6,\n.tinymce__oxide--mce-visualblocks div:not([data-mce-bogus]),\n.tinymce__oxide--mce-visualblocks section,\n.tinymce__oxide--mce-visualblocks article,\n.tinymce__oxide--mce-visualblocks blockquote,\n.tinymce__oxide--mce-visualblocks address,\n.tinymce__oxide--mce-visualblocks pre,\n.tinymce__oxide--mce-visualblocks figure,\n.tinymce__oxide--mce-visualblocks figcaption,\n.tinymce__oxide--mce-visualblocks hgroup,\n.tinymce__oxide--mce-visualblocks aside,\n.tinymce__oxide--mce-visualblocks ul,\n.tinymce__oxide--mce-visualblocks ol,\n.tinymce__oxide--mce-visualblocks dl {\n background-repeat: no-repeat;\n border: 1px dashed #bbb;\n margin-left: 3px;\n padding-top: 10px;\n}\n.tinymce__oxide--mce-visualblocks p {\n background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);\n}\n.tinymce__oxide--mce-visualblocks h1 {\n background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);\n}\n.tinymce__oxide--mce-visualblocks h2 {\n background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);\n}\n.tinymce__oxide--mce-visualblocks h3 {\n background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);\n}\n.tinymce__oxide--mce-visualblocks h4 {\n background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);\n}\n.tinymce__oxide--mce-visualblocks h5 {\n background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);\n}\n.tinymce__oxide--mce-visualblocks h6 {\n background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);\n}\n.tinymce__oxide--mce-visualblocks div:not([data-mce-bogus]) {\n background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);\n}\n.tinymce__oxide--mce-visualblocks section {\n background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);\n}\n.tinymce__oxide--mce-visualblocks article {\n background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);\n}\n.tinymce__oxide--mce-visualblocks blockquote {\n background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);\n}\n.tinymce__oxide--mce-visualblocks address {\n background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);\n}\n.tinymce__oxide--mce-visualblocks pre {\n background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);\n}\n.tinymce__oxide--mce-visualblocks figure {\n background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);\n}\n.tinymce__oxide--mce-visualblocks figcaption {\n border: 1px dashed #bbb;\n}\n.tinymce__oxide--mce-visualblocks hgroup {\n background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);\n}\n.tinymce__oxide--mce-visualblocks aside {\n background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);\n}\n.tinymce__oxide--mce-visualblocks ul {\n background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);\n}\n.tinymce__oxide--mce-visualblocks ol {\n background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);\n}\n.tinymce__oxide--mce-visualblocks dl {\n background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);\n}\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) p,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h1,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h2,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h3,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h4,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h5,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h6,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) section,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) article,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) blockquote,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) address,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) pre,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) figure,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) figcaption,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) hgroup,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) aside,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) ul,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) ol,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) dl {\n margin-left: 3px;\n}\n.tinymce__oxide--mce-visualblocks[dir=rtl] p,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h1,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h2,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h3,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h4,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h5,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h6,\n.tinymce__oxide--mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),\n.tinymce__oxide--mce-visualblocks[dir=rtl] section,\n.tinymce__oxide--mce-visualblocks[dir=rtl] article,\n.tinymce__oxide--mce-visualblocks[dir=rtl] blockquote,\n.tinymce__oxide--mce-visualblocks[dir=rtl] address,\n.tinymce__oxide--mce-visualblocks[dir=rtl] pre,\n.tinymce__oxide--mce-visualblocks[dir=rtl] figure,\n.tinymce__oxide--mce-visualblocks[dir=rtl] figcaption,\n.tinymce__oxide--mce-visualblocks[dir=rtl] hgroup,\n.tinymce__oxide--mce-visualblocks[dir=rtl] aside,\n.tinymce__oxide--mce-visualblocks[dir=rtl] ul,\n.tinymce__oxide--mce-visualblocks[dir=rtl] ol,\n.tinymce__oxide--mce-visualblocks[dir=rtl] dl {\n background-position-x: right;\n margin-right: 3px;\n}\n.tinymce__oxide--mce-nbsp,\n.tinymce__oxide--mce-shy {\n background: #aaa;\n}\n.tinymce__oxide--mce-shy::after {\n content: '-';\n}\nbody {\n font-family: sans-serif;\n}\ntable {\n border-collapse: collapse;\n}\n`;\n },\n 'mce-content-body': 'tinymce__oxide--mce-content-body',\n 'mce-item-anchor': 'tinymce__oxide--mce-item-anchor',\n 'tox-comments-visible': 'tinymce__oxide--tox-comments-visible',\n 'tox-comment': 'tinymce__oxide--tox-comment',\n 'tox-comment--active': 'tinymce__oxide--tox-comment--active',\n 'tox-checklist': 'tinymce__oxide--tox-checklist',\n 'tox-checklist--hidden': 'tinymce__oxide--tox-checklist--hidden',\n 'tox-checklist--checked': 'tinymce__oxide--tox-checklist--checked',\n 'token': 'tinymce__oxide--token',\n 'comment': 'tinymce__oxide--comment',\n 'prolog': 'tinymce__oxide--prolog',\n 'doctype': 'tinymce__oxide--doctype',\n 'cdata': 'tinymce__oxide--cdata',\n 'punctuation': 'tinymce__oxide--punctuation',\n 'namespace': 'tinymce__oxide--namespace',\n 'property': 'tinymce__oxide--property',\n 'tag': 'tinymce__oxide--tag',\n 'boolean': 'tinymce__oxide--boolean',\n 'number': 'tinymce__oxide--number',\n 'constant': 'tinymce__oxide--constant',\n 'symbol': 'tinymce__oxide--symbol',\n 'deleted': 'tinymce__oxide--deleted',\n 'selector': 'tinymce__oxide--selector',\n 'attr-name': 'tinymce__oxide--attr-name',\n 'string': 'tinymce__oxide--string',\n 'char': 'tinymce__oxide--char',\n 'builtin': 'tinymce__oxide--builtin',\n 'inserted': 'tinymce__oxide--inserted',\n 'operator': 'tinymce__oxide--operator',\n 'entity': 'tinymce__oxide--entity',\n 'url': 'tinymce__oxide--url',\n 'language-css': 'tinymce__oxide--language-css',\n 'style': 'tinymce__oxide--style',\n 'atrule': 'tinymce__oxide--atrule',\n 'attr-value': 'tinymce__oxide--attr-value',\n 'keyword': 'tinymce__oxide--keyword',\n 'function': 'tinymce__oxide--function',\n 'class-name': 'tinymce__oxide--class-name',\n 'regex': 'tinymce__oxide--regex',\n 'important': 'tinymce__oxide--important',\n 'variable': 'tinymce__oxide--variable',\n 'bold': 'tinymce__oxide--bold',\n 'italic': 'tinymce__oxide--italic',\n 'mce-visual-caret': 'tinymce__oxide--mce-visual-caret',\n 'mce-visual-caret-hidden': 'tinymce__oxide--mce-visual-caret-hidden',\n 'mce-offscreen-selection': 'tinymce__oxide--mce-offscreen-selection',\n 'tox-cursor-format-painter': 'tinymce__oxide--tox-cursor-format-painter',\n 'align-left': 'tinymce__oxide--align-left',\n 'align-right': 'tinymce__oxide--align-right',\n 'image': 'tinymce__oxide--image',\n 'align-center': 'tinymce__oxide--align-center',\n 'mce-preview-object': 'tinymce__oxide--mce-preview-object',\n 'mce-shim': 'tinymce__oxide--mce-shim',\n 'mce-object': 'tinymce__oxide--mce-object',\n 'mce-pagebreak': 'tinymce__oxide--mce-pagebreak',\n 'tiny-pageembed': 'tinymce__oxide--tiny-pageembed',\n 'tiny-pageembed--21by9': 'tinymce__oxide--tiny-pageembed--21by9',\n 'tiny-pageembed--16by9': 'tinymce__oxide--tiny-pageembed--16by9',\n 'tiny-pageembed--4by3': 'tinymce__oxide--tiny-pageembed--4by3',\n 'tiny-pageembed--1by1': 'tinymce__oxide--tiny-pageembed--1by1',\n 'mce-visualblocks': 'tinymce__oxide--mce-visualblocks',\n 'mce-resizehandle': 'tinymce__oxide--mce-resizehandle',\n 'mce-resize-backdrop': 'tinymce__oxide--mce-resize-backdrop',\n 'mce-clonedresizable': 'tinymce__oxide--mce-clonedresizable',\n 'mce-resizetable-columns': 'tinymce__oxide--mce-resizetable-columns',\n 'mce-resize-helper': 'tinymce__oxide--mce-resize-helper',\n 'tox-rtc-user-selection': 'tinymce__oxide--tox-rtc-user-selection',\n 'tox-rtc-user-cursor': 'tinymce__oxide--tox-rtc-user-cursor',\n 'tox-rtc-user-selection--1': 'tinymce__oxide--tox-rtc-user-selection--1',\n 'tox-rtc-user-selection--2': 'tinymce__oxide--tox-rtc-user-selection--2',\n 'tox-rtc-user-selection--3': 'tinymce__oxide--tox-rtc-user-selection--3',\n 'tox-rtc-user-selection--4': 'tinymce__oxide--tox-rtc-user-selection--4',\n 'tox-rtc-user-selection--5': 'tinymce__oxide--tox-rtc-user-selection--5',\n 'tox-rtc-user-selection--6': 'tinymce__oxide--tox-rtc-user-selection--6',\n 'tox-rtc-user-selection--7': 'tinymce__oxide--tox-rtc-user-selection--7',\n 'tox-rtc-user-selection--8': 'tinymce__oxide--tox-rtc-user-selection--8',\n 'tox-rtc-remote-image': 'tinymce__oxide--tox-rtc-remote-image',\n 'mce-match-marker': 'tinymce__oxide--mce-match-marker',\n 'mce-match-marker-selected': 'tinymce__oxide--mce-match-marker-selected',\n 'mce-content-readonly': 'tinymce__oxide--mce-content-readonly',\n 'mce-edit-focus': 'tinymce__oxide--mce-edit-focus',\n 'ephox-snooker-resizer-bar': 'tinymce__oxide--ephox-snooker-resizer-bar',\n 'ephox-snooker-resizer-cols': 'tinymce__oxide--ephox-snooker-resizer-cols',\n 'ephox-snooker-resizer-rows': 'tinymce__oxide--ephox-snooker-resizer-rows',\n 'ephox-snooker-resizer-bar-dragging': 'tinymce__oxide--ephox-snooker-resizer-bar-dragging',\n 'mce-spellchecker-word': 'tinymce__oxide--mce-spellchecker-word',\n 'mce-spellchecker-grammar': 'tinymce__oxide--mce-spellchecker-grammar',\n 'mce-toc': 'tinymce__oxide--mce-toc',\n 'mce-item-table': 'tinymce__oxide--mce-item-table',\n 'mce-nbsp': 'tinymce__oxide--mce-nbsp',\n 'mce-shy': 'tinymce__oxide--mce-shy'\n};\nconst RestoreAutoSaveModal = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(2), __webpack_require__.e(68)]).then(__webpack_require__.bind(null, /*! ./RestoreAutoSaveModal */ \"./src/rce/RestoreAutoSaveModal.js\")));\nconst RceHtmlEditor = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(25), __webpack_require__.e(67)]).then(__webpack_require__.bind(null, /*! ./RceHtmlEditor */ \"./src/rce/RceHtmlEditor.js\")));\nconst ASYNC_FOCUS_TIMEOUT = 250;\nconst DEFAULT_RCE_HEIGHT = '400px';\nconst toolbarPropType = prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n // name of the toolbar the items are added to\n // if this toolbar doesn't exist, it is created\n // tinymce toolbar config does not\n // include a key to identify the individual toolbars, just a name\n // which is translated. This toolbar's name must be translated\n // in order to be merged correctly.\n name: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n // items added to the toolbar\n // each is the name of the button some plugin has\n // registered with tinymce\n items: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string).isRequired\n}));\nconst menuPropType = prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.objectOf( // the key is the name of the menu item a plugin has\n// registered with tinymce. If it does not exist in the\n// default menubar, it will be added.\nprop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n // if this is a new menu in the menubar, title is it's label.\n // if these are items being merged into an existing menu, title is ignored\n title: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n // items is a space separated list it menu_items\n // some plugin has registered with tinymce\n items: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired\n}));\nconst ltiToolsPropType = prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n // id of the tool\n id: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number]),\n // is this a favorite tool?\n favorite: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool\n}));\nconst editorOptionsPropType = prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n // height of the RCE.\n // if a number interpreted as pixels.\n // if a string as a CSS value.\n height: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string]),\n // entries you want merged into the toolbar. See toolBarPropType above.\n toolbar: toolbarPropType,\n // entries you want merged into to the menus. See menuPropType above.\n // If an entry defines a new menu, tinymce's menubar config option will\n // be updated for you. In fact, if you provide an editorOptions.menubar value\n // it will be overwritten.\n menu: menuPropType,\n // additional plugins that get merged into the default list of plugins\n // it is up to you to import the plugin's definition which will\n // register it and any related toolbar or menu entries with tinymce.\n plugins: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string),\n // is this RCE readonly?\n readonly: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool\n});\nconst skinCSS = skinCSSBinding.template().replace(/tinymce__oxide--/g, '');\nconst contentCSS = contentCSSBinding.template().replace(/tinymce__oxide--/g, ''); // If we ever get our jest tests configured so they can handle importing real esModules,\n// we can move this to plugins/instructure-ui-icons/plugin.js like the rest.\n\nfunction addKebabIcon(editor) {\n editor.ui.registry.addIcon('more-drawer', `\n <svg viewBox=\"0 0 1920 1920\">\n <path d=\"M1129.412 1637.647c0 93.448-75.964 169.412-169.412 169.412-93.448 0-169.412-75.964-169.412-169.412 0-93.447 75.964-169.412 169.412-169.412 93.448 0 169.412 75.965 169.412 169.412zm0-677.647c0 93.448-75.964 169.412-169.412 169.412-93.448 0-169.412-75.964-169.412-169.412 0-93.448 75.964-169.412 169.412-169.412 93.448 0 169.412 75.964 169.412 169.412zm0-677.647c0 93.447-75.964 169.412-169.412 169.412-93.448 0-169.412-75.965-169.412-169.412 0-93.448 75.964-169.412 169.412-169.412 93.448 0 169.412 75.964 169.412 169.412z\" stroke=\"none\" stroke-width=\"1\" fill-rule=\"evenodd\"/>\n </svg>\n `);\n} // Get oxide the default skin injected into the DOM before the overrides loaded by themeable\n\n\nlet inserted = false;\n\nfunction injectTinySkin() {\n if (inserted) return;\n inserted = true;\n const style = document.createElement('style');\n style.setAttribute('data-skin', 'tiny oxide skin');\n style.appendChild( // the .replace here is because the ui-themeable babel hook adds that prefix to all the class names\n document.createTextNode(skinCSS));\n const beforeMe = document.head.querySelector('style[data-glamor]') || // find instui's themeable stylesheet\n document.head.querySelector('style') || // find any stylesheet\n document.head.firstElementChild;\n document.head.insertBefore(style, beforeMe);\n}\n\nconst editorWrappers = new WeakMap();\n\nfunction focusToolbar(el) {\n const $firstToolbarButton = el.querySelector('.tox-tbtn');\n $firstToolbarButton && $firstToolbarButton.focus();\n}\n\nfunction focusFirstMenuButton(el) {\n const $firstMenu = el.querySelector('.tox-mbtn');\n $firstMenu && $firstMenu.focus();\n}\n\nfunction isElementWithinTable(node) {\n let elem = node;\n\n while (elem) {\n if (elem.tagName === 'TABLE' || elem.tagName === 'TD' || elem.tagName === 'TH') {\n return true;\n }\n\n elem = elem.parentElement;\n }\n\n return false;\n} // determines if localStorage is available for our use.\n// see https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\n\n\nfunction storageAvailable() {\n let storage;\n\n try {\n storage = window.localStorage;\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n } catch (e) {\n return e instanceof DOMException && ( // everything except Firefox\n e.code === 22 || // Firefox\n e.code === 1014 || // test name field too, because code might not be present\n // everything except Firefox\n e.name === 'QuotaExceededError' || // Firefox\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') && // acknowledge QuotaExceededError only if there's something already stored\n storage && storage.length !== 0;\n }\n}\n\nfunction getHtmlEditorCookie() {\n const value = Object(_common_getCookie__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('rce.htmleditor');\n return value === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"] || value === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"] ? value : _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"];\n}\n\nfunction renderLoading() {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Loading');\n} // safari implements only the webkit prefixed version of the fullscreen api\n\n\nconst FS_ELEMENT = document.fullscreenElement === undefined ? 'webkitFullscreenElement' : 'fullscreenElement';\nconst FS_REQUEST = document.body.requestFullscreen ? 'requestFullscreen' : 'webkitRequestFullscreen';\nconst FS_EXIT = document.exitFullscreen ? 'exitFullscreen' : 'webkitExitFullscreen';\nlet alertIdValue = 0;\nlet RCEWrapper = (_dec = Object(_instructure_ui_themeable__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_skins_theme__WEBPACK_IMPORTED_MODULE_27__[\"default\"], styles), _dec(_class = (_class2 = class RCEWrapper extends react__WEBPACK_IMPORTED_MODULE_3___default.a.Component {\n static getByEditor(editor) {\n return editorWrappers.get(editor);\n }\n\n constructor(props) {\n var _this, _props$editorOptions;\n\n super(props);\n _this = this;\n\n this.onRemove = () => {\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].detachEditor(this);\n this.props.onRemove && this.props.onRemove(this);\n };\n\n this.toggleView = newView => {\n // coming from the menubar, we don't have a newView,\n const wasFullscreen = this._isFullscreen();\n\n if (wasFullscreen) this._exitFullscreen();\n let newState;\n\n switch (this.state.editorView) {\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]:\n newState = {\n editorView: newView || _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"]\n };\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"]:\n newState = {\n editorView: newView || _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]\n };\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]:\n newState = {\n editorView: newView || _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]\n };\n }\n\n this.setState(newState, () => {\n if (wasFullscreen) {\n window.setTimeout(() => {\n this._enterFullscreen();\n }, 200); // due to the animation it takes some time for fullscreen to complete\n }\n });\n this.checkAccessibility();\n\n if (newView === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"] || newView === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]) {\n document.cookie = `rce.htmleditor=${newView};path=/;max-age=31536000`;\n } // Emit view change event\n\n\n this.mceInstance().fire(_customEvents__WEBPACK_IMPORTED_MODULE_25__[\"VIEW_CHANGE\"], {\n target: this.editor,\n newView: newState.editorView\n });\n };\n\n this.contentTrayClosing = false;\n this.blurTimer = 0;\n\n this.handleFocusRCE = event => {\n this.handleFocus(event);\n };\n\n this.handleBlurRCE = event => {\n var _this$_elementRef$cur;\n\n if (event.relatedTarget === null) {\n // focus might be moving to tinymce\n this.handleBlur(event);\n }\n\n if (!((_this$_elementRef$cur = this._elementRef.current) !== null && _this$_elementRef$cur !== void 0 && _this$_elementRef$cur.contains(event.relatedTarget))) {\n this.handleBlur(event);\n }\n };\n\n this.handleFocusEditor = (event, _editor) => {\n // use .active to put a focus ring around the content area\n // when the editor has focus. This isn't perfect, but it's\n // what we've got for now.\n const ifr = this.iframe;\n ifr && ifr.parentElement.classList.add('active');\n\n this._forceCloseFloatingToolbar();\n\n this.handleFocus(event);\n };\n\n this.handleFocusHtmlEditor = event => {\n this.handleFocus(event);\n };\n\n this.handleBlurEditor = (event, _editor) => {\n const ifr = this.iframe;\n ifr && ifr.parentElement.classList.remove('active');\n this.handleBlur(event);\n };\n\n this.handleKey = event => {\n if (event.code === 'F9' && event.altKey) {\n event.preventDefault();\n event.stopPropagation();\n this.setFocusAbilityForHeader(true);\n focusFirstMenuButton(this._elementRef.current);\n } else if (event.code === 'F10' && event.altKey) {\n event.preventDefault();\n event.stopPropagation();\n this.setFocusAbilityForHeader(true);\n focusToolbar(this._elementRef.current);\n } else if ((event.code === 'F8' || event.code === 'Digit0') && event.altKey) {\n event.preventDefault();\n event.stopPropagation();\n this.openKBShortcutModal();\n } else if (event.code === 'Escape') {\n this._forceCloseFloatingToolbar();\n\n if (this.state.fullscreenState.isTinyFullscreen) {\n this.mceInstance().execCommand('mceFullScreen'); // turn it off\n } else {\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].hideTrays();\n }\n } else if (['n', 'N', 'd', 'D'].indexOf(event.key) !== -1) {\n // Prevent key events from bubbling up on touch screen device\n event.stopPropagation();\n }\n };\n\n this.handleClickFullscreen = () => {\n if (this._isFullscreen()) {\n this._exitFullscreen();\n } else {\n this._enterFullscreen();\n }\n };\n\n this.handleExternalClick = () => {\n this._forceCloseFloatingToolbar();\n\n Object(_instructure_debounce__WEBPACK_IMPORTED_MODULE_11__[\"debounce\"])(this.checkAccessibility, 1000)();\n };\n\n this.handleInputChange = () => {\n this.checkAccessibility();\n };\n\n this.onInit = (_event, editor) => {\n var _this$props$onInitted, _this$props;\n\n editor.rceWrapper = this;\n this.editor = editor;\n const textarea = this.editor.getElement(); // expected by canvas\n\n textarea.dataset.rich_text = true; // start with the textarea and tinymce in sync\n\n textarea.value = this.getCode();\n textarea.style.height = this.state.height; // Capture click events outside the iframe\n\n document.addEventListener('click', this.handleExternalClick);\n\n if (document.body.classList.contains('Underline-All-Links__enabled')) {\n this.iframe.contentDocument.body.classList.add('Underline-All-Links__enabled');\n }\n\n editor.on('wordCountUpdate', this.onWordCountUpdate); // add an aria-label to the application div that wraps RCE\n // and change role from \"application\" to \"document\" to ensure\n // the editor gets properly picked up by screen readers\n\n const tinyapp = document.querySelector('.tox-tinymce[role=\"application\"]');\n\n if (tinyapp) {\n tinyapp.setAttribute('aria-label', Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Rich Content Editor'));\n tinyapp.setAttribute('role', 'document');\n tinyapp.setAttribute('tabIndex', '-1');\n } // Adds a focusout event listener for handling screen reader navigation focus\n\n\n const header = this._elementRef.current.querySelector('.tox-editor-header');\n\n if (header) {\n header.addEventListener('focusout', e => {\n const leavingHeader = !header.contains(e.relatedTarget);\n\n if (leavingHeader) {\n this.setFocusAbilityForHeader(false);\n }\n });\n }\n\n this.setFocusAbilityForHeader(false); // Probably should do this in tinymce.scss, but we only want it in new rce\n\n textarea.style.resize = 'none';\n editor.on('ExecCommand', this._forceCloseFloatingToolbar);\n editor.on('keydown', this.handleKey);\n editor.on('FullscreenStateChanged', this._toggleFullscreen); // This propagates click events on the editor out of the iframe to the parent\n // document. We need this so that click events get captured properly by instui\n // focus-trapping components, so they properly ignore trapping focus on click.\n\n editor.on('click', () => window.document.body.click(), true);\n editor.on('Cut Paste Change input Undo Redo', Object(_instructure_debounce__WEBPACK_IMPORTED_MODULE_11__[\"debounce\"])(this.handleInputChange, 1000));\n this.announceContextToolbars(editor);\n\n if (this.isAutoSaving) {\n this.initAutoSave(editor);\n } // first view\n\n\n this.setEditorView(this.state.editorView); // readonly should have been handled via the init property passed\n // to <Editor>, but it's not.\n\n editor.mode.set(this.props.readOnly ? 'readonly' : 'design'); // Not using iframe_aria_text because compatibility issues.\n // Not using iframe_attrs because library overwriting.\n\n if (this.iframe) {\n this.iframe.setAttribute('title', Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Rich Text Area. Press ALT+0 for Rich Content Editor shortcuts.'));\n }\n\n (_this$props$onInitted = (_this$props = this.props).onInitted) === null || _this$props$onInitted === void 0 ? void 0 : _this$props$onInitted.call(_this$props, editor);\n };\n\n this._toggleFullscreen = event => {\n const isTinyFullscreen = event.state;\n const fullscreenState = {\n isTinyFullscreen\n };\n const header = document.getElementById('header');\n\n if (header) {\n if (isTinyFullscreen) {\n fullscreenState.headerDisp = header.style.display;\n header.style.display = 'none';\n } else {\n header.style.display = this.state.fullscreenState.headerDisp;\n }\n }\n\n this.setState({\n fullscreenState\n }); // if we're leaving fullscreen, remove event listeners on the fullscreen element\n\n if (!document[FS_ELEMENT] && this.state.fullscreenElem) {\n this.state.fullscreenElem.removeEventListener('fullscreenchange', this._toggleFullscreen);\n this.state.fullscreenElem.removeEventListener('webkitfullscreenchange', this._toggleFullscreen);\n this.setState({\n fullscreenState: {\n fullscreenElem: null\n }\n });\n } // if we don't defer setState, the pretty editor's height isn't correct\n // when entering fullscreen\n\n\n window.setTimeout(() => {\n if (document[FS_ELEMENT]) {\n this.setState(state => {\n return {\n fullscreenState: { ...state.fullscreenState,\n fullscreenElem: document[FS_ELEMENT]\n }\n };\n });\n } else {\n this.forceUpdate();\n }\n\n this.focusCurrentView();\n }, 0);\n };\n\n this._forceCloseFloatingToolbar = () => {\n if (this._elementRef.current) {\n const moreButton = this._elementRef.current.querySelector('.tox-toolbar-overlord .tox-toolbar__group:last-child button:last-child');\n\n if (moreButton !== null && moreButton !== void 0 && moreButton.getAttribute('aria-owns')) {\n // the floating toolbar is open\n moreButton.click(); // close the floating toolbar\n\n const editor = this.mceInstance(); // return focus to the editor\n\n editor === null || editor === void 0 ? void 0 : editor.focus();\n }\n }\n };\n\n this.announcing = 0;\n\n this.initAutoSave = editor => {\n this.storage = window.localStorage;\n\n if (this.storage) {\n editor.on('change Undo Redo', this.doAutoSave);\n editor.on('blur', this.doAutoSave);\n this.cleanupAutoSave();\n\n try {\n const autosaved = this.getAutoSaved(this.autoSaveKey);\n\n if (autosaved && autosaved.content) {\n // We'll compare just the text of the autosave content, since\n // Canvas is prone to swizzling images and iframes which will\n // make the editor content and autosave content never match up\n const editorContent = this.patchAutosavedContent(editor.getContent({\n no_events: true\n }), true);\n const autosavedContent = this.patchAutosavedContent(autosaved.content, true);\n\n if (autosavedContent !== editorContent) {\n this.setState({\n confirmAutoSave: true,\n autoSavedContent: this.patchAutosavedContent(autosaved.content)\n });\n } else {\n this.storage.removeItem(this.autoSaveKey);\n }\n }\n } catch (ex) {\n // log and ignore\n // eslint-disable-next-line no-console\n console.error('Failed initializing rce autosave', ex);\n }\n }\n };\n\n this.cleanupAutoSave = function () {\n let deleteAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (_this.storage) {\n const expiry = deleteAll ? Date.now() : Date.now() - _this.props.autosave.maxAge;\n let i = 0;\n let key;\n\n while (key = _this.storage.key(i++)) {\n if (/^rceautosave:/.test(key)) {\n const autosaved = _this.getAutoSaved(key);\n\n if (autosaved && autosaved.autosaveTimestamp < expiry) {\n _this.storage.removeItem(key);\n }\n }\n }\n }\n };\n\n this.restoreAutoSave = ans => {\n this.setState({\n confirmAutoSave: false\n }, () => {\n const editor = this.mceInstance();\n\n if (ans) {\n editor.setContent(this.state.autoSavedContent, {});\n }\n\n this.storage.removeItem(this.autoSaveKey);\n });\n this.checkAccessibility();\n };\n\n this.doAutoSave = function (e) {\n let retry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (_this.storage) {\n const editor = _this.mceInstance(); // if the editor is empty don't save\n\n\n if (editor.dom.isEmpty(editor.getBody())) {\n return;\n }\n\n const content = editor.getContent({\n no_events: true\n });\n\n try {\n _this.storage.setItem(_this.autoSaveKey, JSON.stringify({\n autosaveTimestamp: Date.now(),\n content\n }));\n } catch (ex) {\n if (!retry) {\n // probably failed because there's not enough space\n // delete up all the other entries and try again\n _this.cleanupAutoSave(true);\n\n _this.doAutoSave(e, true);\n } else {\n console.error('Autosave failed:', ex); // eslint-disable-line no-console\n }\n }\n }\n };\n\n this.onWordCountUpdate = e => {\n this.setState(state => {\n if (e.wordCount.words !== state.wordCount) {\n return {\n wordCount: e.wordCount.words\n };\n } else return null;\n });\n };\n\n this.onNodeChange = e => {\n // This is basically copied out of the tinymce silver theme code for the status bar\n const path = e.parents.filter(p => p.nodeName !== 'BR' && !p.getAttribute('data-mce-bogus') && p.getAttribute('data-mce-type') !== 'bookmark').map(p => p.nodeName.toLowerCase()).reverse();\n this.setState({\n path\n });\n };\n\n this.onEditorChange = (content, _editor) => {\n var _this$props$onContent, _this$props2;\n\n (_this$props$onContent = (_this$props2 = this.props).onContentChange) === null || _this$props$onContent === void 0 ? void 0 : _this$props$onContent.call(_this$props2, content);\n };\n\n this.onResize = (_e, coordinates) => {\n const editor = this.mceInstance();\n\n if (editor) {\n const container = editor.getContainer();\n if (!container) return;\n const currentContainerHeight = Number.parseInt(container.style.height, 10);\n if (isNaN(currentContainerHeight)) return; // eslint-disable-line no-restricted-globals\n\n const modifiedHeight = currentContainerHeight + coordinates.deltaY;\n const newHeight = `${modifiedHeight}px`;\n container.style.height = newHeight;\n this.getTextarea().style.height = newHeight;\n this.setState({\n height: newHeight\n }); // play nice and send the same event that the silver theme would send\n\n editor.fire('ResizeEditor');\n }\n };\n\n this.onA11yChecker = () => {\n // eslint-disable-next-line promise/catch-or-return\n this.a11yCheckerReady.then(() => {\n this.onTinyMCEInstance('openAccessibilityChecker', {\n skip_focus: true\n });\n });\n };\n\n this.checkAccessibility = () => {\n const editor = this.mceInstance();\n editor.execCommand('checkAccessibility', false, {\n done: errors => {\n this.setState({\n a11yErrorsCount: errors.length\n });\n }\n }, {\n skip_focus: true\n });\n };\n\n this.openKBShortcutModal = () => {\n this.setState({\n KBShortcutModalOpen: true,\n KBShortcutFocusReturn: document.activeElement\n });\n };\n\n this.closeKBShortcutModal = () => {\n this.setState({\n KBShortcutModalOpen: false\n });\n };\n\n this.KBShortcutModalExited = () => {\n if (this.state.KBShortcutFocusReturn === this.iframe) {\n // if the iframe has focus, we need to forward it on to tinymce\n this.editor.focus(false);\n } else if (this._showOnFocusButton && document.activeElement === document.body) {\n // when the modal is opened from the showOnFocus button, focus doesn't\n // get automatically returned to the button like it should.\n this._showOnFocusButton.focus();\n } else {\n var _this$_showOnFocusBut;\n\n (_this$_showOnFocusBut = this._showOnFocusButton) === null || _this$_showOnFocusBut === void 0 ? void 0 : _this$_showOnFocusBut.focus();\n }\n };\n\n this.setFocusAbilityForHeader = focusable => {\n // Sets aria-hidden to prevent screen readers focus in RCE menus and toolbar\n const header = this._elementRef.current.querySelector('.tox-editor-header');\n\n if (header) {\n header.setAttribute('aria-hidden', focusable ? 'false' : 'true');\n }\n };\n\n this.handleTextareaChange = () => {\n if (this.isHidden()) {\n this.setCode(this.textareaValue());\n this.doAutoSave();\n }\n };\n\n this.addAlert = alert => {\n alert.id = alertIdValue++;\n this.setState(state => {\n let messages = state.messages.concat(alert);\n messages = lodash__WEBPACK_IMPORTED_MODULE_5___default.a.uniqBy(messages, 'text'); // Don't show the same message twice\n\n return {\n messages\n };\n });\n };\n\n this.removeAlert = messageId => {\n this.setState(state => {\n const messages = state.messages.filter(message => message.id !== messageId);\n return {\n messages\n };\n });\n };\n\n this.resetAlertId = () => {\n if (this.state.messages.length > 0) {\n throw new Error('There are messages currently, you cannot reset when they are non-zero');\n }\n\n alertIdValue = 0;\n };\n\n // Set up some limited global state that can be referenced\n // as needed in RCE's components and function / plugin definitions\n // Not intended to be dynamically changed!\n _RCEGlobals__WEBPACK_IMPORTED_MODULE_19__[\"default\"].setFeatures(this.getRequiredFeatureStatuses());\n _RCEGlobals__WEBPACK_IMPORTED_MODULE_19__[\"default\"].setConfig(this.getRequiredConfigValues());\n this.editor = null; // my tinymce editor instance\n\n this.language = Object(_normalizeLocale__WEBPACK_IMPORTED_MODULE_17__[\"default\"])(this.props.language); // interface consistent with editorBox\n\n this.get_code = this.getCode;\n this.set_code = this.setCode;\n this.insert_code = this.insertCode; // test override points\n\n this.indicator = false;\n this._elementRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createRef();\n this._editorPlaceholderRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createRef();\n this._prettyHtmlEditorRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createRef();\n this._showOnFocusButton = null;\n injectTinySkin();\n let ht = ((_props$editorOptions = props.editorOptions) === null || _props$editorOptions === void 0 ? void 0 : _props$editorOptions.height) || DEFAULT_RCE_HEIGHT;\n\n if (!Number.isNaN(ht)) {\n ht = `${ht}px`;\n }\n\n const currentRCECount = document.querySelectorAll('.rce-wrapper').length;\n const maxInitRenderedRCEs = Number.isNaN(props.maxInitRenderedRCEs) ? RCEWrapper.defaultProps.maxInitRenderedRCEs : props.maxInitRenderedRCEs;\n this.state = {\n path: [],\n wordCount: 0,\n editorView: props.editorView || _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"],\n shouldShowOnFocusButton: props.renderKBShortcutModal === undefined ? true : props.renderKBShortcutModal,\n KBShortcutModalOpen: false,\n messages: [],\n announcement: null,\n confirmAutoSave: false,\n autoSavedContent: '',\n id: this.props.id || this.props.textareaId || `${Date.now()}`,\n height: ht,\n fullscreenState: {\n headerDisp: 'static',\n isTinyFullscreen: false\n },\n a11yErrorsCount: 0,\n shouldShowEditor: typeof IntersectionObserver === 'undefined' || maxInitRenderedRCEs <= 0 || currentRCECount < maxInitRenderedRCEs\n };\n this.pendingEventHandlers = []; // Get top 2 favorited LTI Tools\n\n this.ltiToolFavorites = this.props.ltiTools.filter(e => e.favorite).map(e => `instructure_external_button_${e.id}`).slice(0, 2) || [];\n this.tinymceInitOptions = this.wrapOptions(props.editorOptions);\n _alertHandler__WEBPACK_IMPORTED_MODULE_31__[\"default\"].alertFunc = this.addAlert;\n this.handleContentTrayClosing = this.handleContentTrayClosing.bind(this);\n this.a11yCheckerReady = Promise.all(/*! import() */[__webpack_require__.e(4), __webpack_require__.e(7), __webpack_require__.e(37)]).then(__webpack_require__.bind(null, /*! ./initA11yChecker */ \"./src/rce/initA11yChecker.js\")).then(initA11yChecker => {\n initA11yChecker.default(this.language);\n this.checkAccessibility();\n }).catch(err => {\n // eslint-disable-next-line no-console\n console.error('Failed initializing a11y checker', err);\n });\n }\n\n getRequiredFeatureStatuses() {\n const {\n new_equation_editor = false,\n new_math_equation_handling = false,\n rce_ux_improvements = false\n } = this.props.features;\n return {\n new_equation_editor,\n new_math_equation_handling,\n rce_ux_improvements\n };\n }\n\n getRequiredConfigValues() {\n return {\n locale: Object(_normalizeLocale__WEBPACK_IMPORTED_MODULE_17__[\"default\"])(this.props.language),\n flashAlertTimeout: this.props.flashAlertTimeout,\n timezone: this.props.timezone\n };\n }\n\n getCanvasUrl() {\n return this.props.canvasOrigin;\n } // getCode and setCode naming comes from tinyMCE\n // kind of strange but want to be consistent\n\n\n getCode() {\n return this.isHidden() ? this.textareaValue() : this.mceInstance().getContent();\n }\n\n checkReadyToGetCode(promptFunc) {\n let status = true; // Check for remaining placeholders\n\n if (this.mceInstance().dom.doc.querySelector(`[data-placeholder-for]`)) {\n status = promptFunc(Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Content is still being uploaded, if you continue it will not be embedded properly.'));\n }\n\n return status;\n }\n\n setCode(newContent) {\n var _this$mceInstance;\n\n (_this$mceInstance = this.mceInstance()) === null || _this$mceInstance === void 0 ? void 0 : _this$mceInstance.setContent(newContent);\n } // This function is called imperatively by the page that renders the RCE.\n // It should be called when the RCE content is done being edited.\n\n\n RCEClosed() {\n // We want to clear the autosaved content, since the page was legitimately closed.\n if (this.storage) {\n this.storage.removeItem(this.autoSaveKey);\n }\n }\n\n indicateEditor(element) {\n if (document.querySelector('[role=\"dialog\"][data-mce-component]')) {\n // there is a modal open, which zeros out the vertical scroll\n // so the indicator is in the wrong place. Give it a chance to close\n window.setTimeout(() => {\n this.indicateEditor(element);\n }, 100);\n return;\n }\n\n const editor = this.mceInstance();\n\n if (this.indicator) {\n this.indicator(editor, element);\n } else if (!this.isHidden()) {\n Object(_common_indicate__WEBPACK_IMPORTED_MODULE_21__[\"default\"])(Object(_indicatorRegion__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(editor, element));\n }\n }\n\n contentInserted(element) {\n this.indicateEditor(element);\n this.checkImageLoadError(element);\n this.sizeEditorForContent(element);\n } // make a attempt at sizing the editor so that the new content fits.\n // works under the assumptions the body's box-sizing is not content-box\n // and that the content is w/in a <p> whose margin is 12px top and bottom\n // (which, in canvas, is set in app/stylesheets/components/_ic-typography.scss)\n\n\n sizeEditorForContent(elem) {\n let height;\n\n if (elem && elem.nodeType === 1) {\n height = elem.clientHeight;\n }\n\n if (height) {\n const ifr = this.iframe;\n\n if (ifr) {\n const editor_body_style = ifr.contentWindow.getComputedStyle(this.iframe.contentDocument.body);\n const editor_ht = ifr.contentDocument.body.clientHeight - parseInt(editor_body_style['padding-top'], 10) - parseInt(editor_body_style['padding-bottom'], 10);\n const para_margin_ht = 24;\n const reserve_ht = Math.ceil(height + para_margin_ht);\n\n if (reserve_ht > editor_ht) {\n this.onResize(null, {\n deltaY: reserve_ht - editor_ht\n });\n }\n }\n }\n }\n\n checkImageLoadError(element) {\n if (!element || element.tagName !== 'IMG') {\n return;\n }\n\n if (!element.complete) {\n element.onload = () => this.checkImageLoadError(element);\n\n return;\n } // checking naturalWidth in a future event loop run prevents a race\n // condition between the onload callback and naturalWidth being set.\n\n\n setTimeout(() => {\n if (element.naturalWidth === 0) {\n element.style.border = '1px solid #000';\n element.style.padding = '2px';\n }\n }, 0);\n }\n\n insertCode(code) {\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertContent\"](editor, code);\n this.contentInserted(element);\n }\n\n insertEmbedCode(code) {\n const editor = this.mceInstance(); // don't replace selected text, but embed after\n\n editor.selection.collapse(); // tinymce treats iframes uniquely, and doesn't like adding attributes\n // once it's in the editor, and I'd rather not parse the incomming html\n // string with a regex, so let's create a temp copy, then add a title\n // attribute if one doesn't exist. This will let screenreaders announce\n // that there's some embedded content helper\n // From what I've read, \"title\" is more reliable than \"aria-label\" for\n // elements like iframes and embeds.\n\n const temp = document.createElement('div');\n temp.innerHTML = code;\n const code_elem = temp.firstElementChild;\n\n if (code_elem) {\n if (!code_elem.hasAttribute('title') && !code_elem.hasAttribute('aria-label')) {\n code_elem.setAttribute('title', Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('embedded content'));\n }\n\n code = code_elem.outerHTML;\n } // inserting an iframe in tinymce (as is often the case with\n // embedded content) causes it to wrap it in a span\n // and it's often inserted into a <p> on top of that. Find the\n // iframe and use it to flash the indicator.\n\n\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertContent\"](editor, code);\n const ifr = element && element.querySelector && element.querySelector('iframe');\n\n if (ifr) {\n this.contentInserted(ifr);\n } else {\n this.contentInserted(element);\n }\n }\n\n insertImage(image) {\n var _element$nextSibling, _element$nextSibling$;\n\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertImage\"](editor, image, this.getCanvasUrl()); // Removes TinyMCE's caret text if exists.\n\n if ((element === null || element === void 0 ? void 0 : (_element$nextSibling = element.nextSibling) === null || _element$nextSibling === void 0 ? void 0 : (_element$nextSibling$ = _element$nextSibling.data) === null || _element$nextSibling$ === void 0 ? void 0 : _element$nextSibling$.trim()) === '') {\n element.nextSibling.remove();\n }\n\n if (element && element.complete) {\n this.contentInserted(element);\n } else if (element) {\n element.onload = () => this.contentInserted(element);\n\n element.onerror = () => this.checkImageLoadError(element);\n }\n }\n\n insertImagePlaceholder(fileMetaProps) {\n let width, height;\n let align = 'middle';\n\n if (Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_28__[\"isImage\"])(fileMetaProps.contentType) && fileMetaProps.displayAs !== 'link') {\n const image = new Image();\n image.src = fileMetaProps.domObject.preview;\n width = image.width;\n height = image.height; // we constrain the <img> to max-width: 100%, so scale the size down if necessary\n\n const maxWidth = this.iframe.contentDocument.body.clientWidth;\n\n if (width > maxWidth) {\n height = Math.round(maxWidth / width * height);\n width = maxWidth;\n }\n\n width = `${width}px`;\n height = `${height}px`;\n } else if (Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_28__[\"isVideo\"])(fileMetaProps.contentType || fileMetaProps.type)) {\n width = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_33__[\"VIDEO_SIZE_DEFAULT\"].width;\n height = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_33__[\"VIDEO_SIZE_DEFAULT\"].height;\n align = 'bottom';\n } else if (Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_28__[\"isAudio\"])(fileMetaProps.contentType || fileMetaProps.type)) {\n width = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_33__[\"AUDIO_PLAYER_SIZE\"].width;\n height = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_33__[\"AUDIO_PLAYER_SIZE\"].height;\n align = 'bottom';\n } else {\n width = `${fileMetaProps.name.length}rem`;\n height = '1rem';\n } // if you're wondering, the scatter about in the svg\n // is because tinymce will strip empty elements\n\n\n const markup = `\n <span\n aria-label=\"${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Loading')}\"\n data-placeholder-for=\"${encodeURIComponent(fileMetaProps.name)}\"\n style=\"width: ${width}; height: ${height}; vertical-align: ${align};\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" height=\"100px\" width=\"100px\">\n <g style=\"stroke-width:.5rem;fill:none;stroke-linecap:round;\"> \n <circle class=\"c1\" cx=\"50%\" cy=\"50%\" r=\"28px\"> </circle>\n <circle class=\"c2\" cx=\"50%\" cy=\"50%\" r=\"28px\"> </circle>\n \n </g>\n \n </svg>\n </span>`;\n const editor = this.mceInstance();\n editor.undoManager.ignore(() => {\n editor.execCommand('mceInsertContent', false, markup);\n });\n }\n\n insertVideo(video) {\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertVideo\"](editor, video, this.getCanvasUrl());\n this.contentInserted(element);\n }\n\n insertAudio(audio) {\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertAudio\"](editor, audio, this.getCanvasUrl());\n this.contentInserted(element);\n }\n\n insertMathEquation(tex) {\n const editor = this.mceInstance();\n _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertEquation\"](editor, tex);\n }\n\n removePlaceholders(name) {\n const placeholder = this.mceInstance().dom.doc.querySelector(`[data-placeholder-for=\"${encodeURIComponent(name)}\"]`);\n\n if (placeholder) {\n const editor = this.mceInstance();\n editor.undoManager.ignore(() => {\n editor.dom.remove(placeholder);\n });\n }\n }\n\n insertLink(link) {\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertLink\"](editor, link, this.getCanvasUrl());\n this.contentInserted(element);\n }\n\n existingContentToLink() {\n const editor = this.mceInstance();\n return _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"existingContentToLink\"](editor);\n }\n\n existingContentToLinkIsImg() {\n const editor = this.mceInstance();\n return _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"existingContentToLinkIsImg\"](editor);\n } // since we may defer rendering tinymce, queue up any tinymce event handlers\n\n\n tinymceOn(tinymceEventName, handler) {\n if (this.state.shouldShowEditor) {\n this.mceInstance().on(tinymceEventName, handler);\n } else {\n this.pendingEventHandlers.push({\n name: tinymceEventName,\n handler\n });\n }\n }\n\n mceInstance() {\n if (this.editor) {\n return this.editor;\n }\n\n const editors = this.props.tinymce.editors || [];\n return editors.filter(ed => ed.id === this.props.textareaId)[0];\n }\n\n onTinyMCEInstance(command) {\n const editor = this.mceInstance();\n\n if (editor) {\n if (command === 'mceRemoveEditor') {\n editor.execCommand('mceNewDocument');\n } // makes sure content can't persist past removal\n\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n editor.execCommand(command, false, ...args);\n }\n }\n\n destroy() {\n this._destroyCalled = true;\n this.unhandleTextareaChange();\n this.props.handleUnmount && this.props.handleUnmount();\n }\n\n getTextarea() {\n return document.getElementById(this.props.textareaId);\n }\n\n textareaValue() {\n return this.getTextarea().value;\n }\n\n get id() {\n return this.state.id;\n }\n\n _isFullscreen() {\n return this.state.fullscreenState.isTinyFullscreen || document[FS_ELEMENT];\n }\n\n _enterFullscreen() {\n switch (this.state.editorView) {\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"]:\n this._prettyHtmlEditorRef.current.addEventListener('fullscreenchange', this._toggleFullscreen);\n\n this._prettyHtmlEditorRef.current.addEventListener('webkitfullscreenchange', this._toggleFullscreen); // if I don't focus first, FF complains that the element\n // is not in the active browser tab and requestFullscreen fails\n\n\n this._prettyHtmlEditorRef.current.focus();\n\n this._prettyHtmlEditorRef.current[FS_REQUEST]();\n\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]:\n this.getTextarea().addEventListener('fullscreenchange', this._toggleFullscreen);\n this.getTextarea().addEventListener('webkitfullscreenchange', this._toggleFullscreen);\n this.getTextarea()[FS_REQUEST]();\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]:\n this.mceInstance().execCommand('mceFullScreen');\n break;\n }\n }\n\n _exitFullscreen() {\n if (this.state.fullscreenState.isTinyFullscreen) {\n this.mceInstance().execCommand('mceFullScreen');\n } else if (document[FS_ELEMENT]) {\n document[FS_ELEMENT][FS_EXIT]();\n }\n }\n\n focus() {\n this.onTinyMCEInstance('mceFocus'); // tinymce doesn't always call the focus handler.\n\n this.handleFocusEditor(new Event('focus', {\n target: this.mceInstance()\n }));\n }\n\n focusCurrentView() {\n switch (this.state.editorView) {\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]:\n this.mceInstance().focus();\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"]:\n {\n const cmta = this._elementRef.current.querySelector('.CodeMirror textarea');\n\n if (cmta) {\n cmta.focus();\n } else {\n window.setTimeout(() => {\n var _this$_elementRef$cur2;\n\n (_this$_elementRef$cur2 = this._elementRef.current.querySelector('.CodeMirror textarea')) === null || _this$_elementRef$cur2 === void 0 ? void 0 : _this$_elementRef$cur2.focus();\n }, 200);\n }\n }\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]:\n this.getTextarea().focus();\n break;\n }\n }\n\n is_dirty() {\n var _this$mceInstance2;\n\n if (this.mceInstance().isDirty()) {\n return true;\n }\n\n const content = this.isHidden() ? this.textareaValue() : (_this$mceInstance2 = this.mceInstance()) === null || _this$mceInstance2 === void 0 ? void 0 : _this$mceInstance2.getContent();\n return content !== this.cleanInitialContent();\n }\n\n cleanInitialContent() {\n if (!this._cleanInitialContent) {\n const el = window.document.createElement('div');\n el.innerHTML = this.props.defaultContent;\n const serializer = this.mceInstance().serializer;\n this._cleanInitialContent = serializer.serialize(el, {\n getInner: true\n });\n }\n\n return this._cleanInitialContent;\n }\n\n isHtmlView() {\n return this.state.editorView !== _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"];\n }\n\n isHidden() {\n return this.mceInstance().isHidden();\n }\n\n get iframe() {\n return document.getElementById(`${this.props.textareaId}_ifr`);\n } // these focus and blur event handlers work together so that RCEWrapper\n // can report focus and blur events from the RCE at-large\n\n\n get focused() {\n return this === _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].getEditor();\n }\n\n handleFocus(_event) {\n if (!this.focused) {\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].focusEditor(this);\n this.props.onFocus && this.props.onFocus(this);\n }\n }\n\n handleContentTrayClosing(isClosing) {\n this.contentTrayClosing = isClosing;\n }\n\n handleBlur(event) {\n if (this.blurTimer) return;\n\n if (this.focused) {\n // because the old active element fires blur before the next element gets focus\n // we often need a moment to see if focus comes back\n event && event.persist && event.persist();\n this.blurTimer = window.setTimeout(() => {\n var _this$_elementRef$cur3, _event$focusedEditor, _event$relatedTarget, _event$relatedTarget$;\n\n this.blurTimer = 0;\n\n if (this.contentTrayClosing) {\n // the CanvasContentTray is in the process of closing\n // wait until it finishes\n return;\n }\n\n if ((_this$_elementRef$cur3 = this._elementRef.current) !== null && _this$_elementRef$cur3 !== void 0 && _this$_elementRef$cur3.contains(document.activeElement)) {\n // focus is still somewhere w/in me\n return;\n }\n\n const activeClass = document.activeElement && document.activeElement.getAttribute('class');\n\n if ((event.focusedEditor === undefined || event.target.id === ((_event$focusedEditor = event.focusedEditor) === null || _event$focusedEditor === void 0 ? void 0 : _event$focusedEditor.id)) && activeClass !== null && activeClass !== void 0 && _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_1___default()(activeClass).call(activeClass, 'tox-')) {\n // if a toolbar button has focus, then the user clicks on the \"more\" button\n // focus jumps to the body, then eventually to the popped up toolbar. This\n // catches that case.\n return;\n }\n\n if (event !== null && event !== void 0 && (_event$relatedTarget = event.relatedTarget) !== null && _event$relatedTarget !== void 0 && (_event$relatedTarget$ = _event$relatedTarget.getAttribute('class')) !== null && _event$relatedTarget$ !== void 0 && _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_1___default()(_event$relatedTarget$).call(_event$relatedTarget$, 'tox-')) {\n // a tinymce popup has focus\n return;\n }\n\n const popups = document.querySelectorAll('[data-mce-component]');\n\n for (const popup of popups) {\n if (popup.contains(document.activeElement)) {\n // one of our popups has focus\n return;\n }\n }\n\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].blurEditor(this);\n this.props.onBlur && this.props.onBlur(event);\n }, ASYNC_FOCUS_TIMEOUT);\n }\n }\n\n call(methodName) {\n // since exists? has a ? and cant be a regular function just return true\n // rather than calling as a fn on the editor\n if (methodName === 'exists?') {\n return true;\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return this[methodName](...args);\n }\n\n announceContextToolbars(editor) {\n editor.on('NodeChange', () => {\n const node = editor.selection.getNode();\n\n if (Object(_plugins_shared_ContentSelection__WEBPACK_IMPORTED_MODULE_32__[\"isImageEmbed\"])(node, editor)) {\n if (this.announcing !== 1) {\n this.setState({\n announcement: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('type Control F9 to access image options. {text}', {\n text: node.getAttribute('alt')\n })\n });\n this.announcing = 1;\n }\n } else if (Object(_plugins_shared_ContentSelection__WEBPACK_IMPORTED_MODULE_32__[\"isFileLink\"])(node, editor)) {\n if (this.announcing !== 2) {\n this.setState({\n announcement: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('type Control F9 to access link options. {text}', {\n text: node.textContent\n })\n });\n this.announcing = 2;\n }\n } else if (isElementWithinTable(node, editor)) {\n if (this.announcing !== 3) {\n this.setState({\n announcement: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('type Control F9 to access table options. {text}', {\n text: node.textContent\n })\n });\n this.announcing = 3;\n }\n } else {\n this.setState({\n announcement: null\n });\n this.announcing = 0;\n }\n });\n }\n /* ********** autosave support *************** */\n\n\n // if a placeholder image shows up in autosaved content, we have to remove it\n // because the data url gets converted to a blob, which is not valid when restored.\n // besides, the placeholder is intended to be temporary while the file\n // is being uploaded\n patchAutosavedContent(content, asText) {\n const temp = document.createElement('div');\n temp.innerHTML = content;\n temp.querySelectorAll('[data-placeholder-for]').forEach(placeholder => {\n placeholder.parentElement.removeChild(placeholder);\n });\n if (asText) return temp.textContent;\n return temp.innerHTML;\n }\n\n getAutoSaved(key) {\n let autosaved = null;\n\n try {\n autosaved = this.storage && JSON.parse(this.storage.getItem(key));\n } catch (_ex) {\n this.storage.removeItem(this.autoSaveKey);\n }\n\n return autosaved;\n } // only autosave if the feature flag is set, and there is only 1 RCE on the page\n // the latter condition is necessary because the popup RestoreAutoSaveModal\n // is lousey UX when there are >1\n\n\n get isAutoSaving() {\n // If the editor is invisible for some reason, don't show the autosave modal\n // This doesn't apply if the editor is off-screen or has visibility:hidden;\n // only if it isn't rendered or has display:none;\n const editorVisible = this.editor.getContainer().offsetParent;\n return this.props.autosave.enabled && editorVisible && document.querySelectorAll('.rce-wrapper').length === 1 && storageAvailable();\n }\n\n get autoSaveKey() {\n var _this$props$trayProps;\n\n const userId = (_this$props$trayProps = this.props.trayProps) === null || _this$props$trayProps === void 0 ? void 0 : _this$props$trayProps.containingContext.userId;\n return `rceautosave:${userId}${window.location.href}:${this.props.textareaId}`;\n }\n\n componentWillUnmount() {\n if (this.state.shouldShowEditor) {\n var _this$mutationObserve, _this$intersectionObs;\n\n window.clearTimeout(this.blurTimer);\n\n if (!this._destroyCalled) {\n this.destroy();\n }\n\n this._elementRef.current.removeEventListener('keydown', this.handleKey, true);\n\n (_this$mutationObserve = this.mutationObserver) === null || _this$mutationObserve === void 0 ? void 0 : _this$mutationObserve.disconnect();\n (_this$intersectionObs = this.intersectionObserver) === null || _this$intersectionObs === void 0 ? void 0 : _this$intersectionObs.disconnect();\n }\n }\n\n wrapOptions() {\n var _this$props$trayProps2, _this$props$trayProps3, _this$props$trayProps4;\n\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const rcsExists = !!((_this$props$trayProps2 = this.props.trayProps) !== null && _this$props$trayProps2 !== void 0 && _this$props$trayProps2.host && (_this$props$trayProps3 = this.props.trayProps) !== null && _this$props$trayProps3 !== void 0 && _this$props$trayProps3.jwt);\n const userLocale = _editorLanguage__WEBPACK_IMPORTED_MODULE_16___default()(this.language);\n const setupCallback = options.setup;\n const canvasPlugins = rcsExists ? ['instructure_links', 'instructure_image', 'instructure_documents', 'instructure_equation', 'instructure_external_tools'] : ['instructure_links'];\n\n if (rcsExists && !this.props.instRecordDisabled) {\n canvasPlugins.splice(2, 0, 'instructure_record');\n }\n\n if (rcsExists && this.props.use_rce_icon_maker && ((_this$props$trayProps4 = this.props.trayProps) === null || _this$props$trayProps4 === void 0 ? void 0 : _this$props$trayProps4.contextType) === 'course') {\n canvasPlugins.push('instructure_icon_maker');\n }\n\n const possibleNewMenubarItems = this.props.editorOptions.menu ? Object.keys(this.props.editorOptions.menu).join(' ') : undefined;\n const wrappedOpts = { ..._defaultTinymceConfig__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n ...options,\n readonly: this.props.readOnly,\n theme: 'silver',\n // some older code specified 'modern', which doesn't exist any more\n height: options.height || DEFAULT_RCE_HEIGHT,\n language: userLocale,\n document_base_url: this.props.canvasOrigin,\n block_formats: options.block_formats || [`${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Heading 2')}=h2`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Heading 3')}=h3`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Heading 4')}=h4`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Preformatted')}=pre`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Paragraph')}=p`].join('; '),\n setup: editor => {\n var _bridge$trayProps;\n\n addKebabIcon(editor);\n editorWrappers.set(editor, this);\n const trayPropsWithColor = {\n brandColor: this.theme.canvasBrandColor,\n ...this.props.trayProps\n };\n (_bridge$trayProps = _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].trayProps) === null || _bridge$trayProps === void 0 ? void 0 : _bridge$trayProps.set(editor, trayPropsWithColor);\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].userLocale = userLocale;\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].canvasOrigin = this.props.canvasOrigin;\n\n if (typeof setupCallback === 'function') {\n setupCallback(editor);\n }\n },\n // Consumers can, and should!, still pass a content_css prop so that the content\n // in the editor matches the styles of the app it will be displayed in when saved.\n // This is just so we inject the helper class names that tinyMCE uses for\n // things like table resizing and stuff.\n content_css: options.content_css || [],\n content_style: contentCSS,\n menubar: mergeMenuItems('edit view insert format tools table', possibleNewMenubarItems),\n // default menu options listed at https://www.tiny.cloud/docs/configure/editor-appearance/#menu\n // tinymce's default edit and table menus are fine\n // we include all the canvas specific items in the menu and toolbar\n // and rely on tinymce only showing them if the plugin is provided.\n menu: mergeMenu({\n format: {\n title: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Format'),\n items: 'bold italic underline strikethrough superscript subscript codeformat | formats blockformats fontformats fontsizes align directionality | forecolor backcolor | removeformat'\n },\n insert: {\n title: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Insert'),\n items: 'instructure_links instructure_image instructure_media instructure_document instructure_icon_maker | instructure_equation inserttable instructure_media_embed | hr'\n },\n tools: {\n title: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Tools'),\n items: 'wordcount lti_tools_menuitem'\n },\n view: {\n title: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('View'),\n items: 'fullscreen instructure_html_view'\n }\n }, options.menu),\n toolbar: mergeToolbar([{\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Styles'),\n items: ['fontsizeselect', 'formatselect']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Formatting'),\n items: ['bold', 'italic', 'underline', 'forecolor', 'backcolor', 'inst_subscript', 'inst_superscript']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Content'),\n items: ['instructure_links', 'instructure_image', 'instructure_record', 'instructure_documents', 'instructure_icon_maker']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('External Tools'),\n items: [...this.ltiToolFavorites, 'lti_tool_dropdown', 'lti_mru_button']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Alignment and Lists'),\n items: ['align', 'bullist', 'inst_indent', 'inst_outdent']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Miscellaneous'),\n items: ['removeformat', 'table', 'instructure_equation', 'instructure_media_embed']\n }], options.toolbar),\n contextmenu: '',\n // show the browser's native context menu\n toolbar_mode: 'floating',\n toolbar_sticky: true,\n plugins: mergePlugins(['autolink', 'media', 'paste', 'table', 'link', 'directionality', 'lists', 'textpattern', 'hr', 'fullscreen', 'instructure-ui-icons', 'instructure_condensed_buttons', 'instructure_links', 'instructure_html_view', 'instructure_media_embed', 'instructure_external_tools', 'a11y_checker', 'wordcount', ...canvasPlugins], Object(_sanitizePlugins__WEBPACK_IMPORTED_MODULE_18__[\"sanitizePlugins\"])(options.plugins)),\n textpattern_patterns: [{\n start: '* ',\n cmd: 'InsertUnorderedList'\n }, {\n start: '- ',\n cmd: 'InsertUnorderedList'\n }]\n };\n\n if (this.props.trayProps) {\n wrappedOpts.canvas_rce_user_context = {\n type: this.props.trayProps.contextType,\n id: this.props.trayProps.contextId\n };\n wrappedOpts.canvas_rce_containing_context = {\n type: this.props.trayProps.containingContext.contextType,\n id: this.props.trayProps.containingContext.contextId\n };\n }\n\n return wrappedOpts;\n }\n\n unhandleTextareaChange() {\n if (this._textareaEl) {\n this._textareaEl.removeEventListener('input', this.handleTextareaChange);\n }\n }\n\n registerTextareaChange() {\n const el = this.getTextarea();\n\n if (this._textareaEl !== el) {\n this.unhandleTextareaChange();\n\n if (el) {\n el.addEventListener('input', this.handleTextareaChange);\n\n if (this.props.textareaClassName) {\n // split the string on whitespace because classList doesn't let you add multiple\n // space seperated classes at a time but does let you add an array of them\n el.classList.add(...this.props.textareaClassName.split(/\\s+/));\n }\n\n this._textareaEl = el;\n }\n }\n }\n\n componentDidMount() {\n if (this.state.shouldShowEditor) {\n this.editorReallyDidMount();\n } else {\n this.intersectionObserver = new IntersectionObserver(entries => {\n const entry = entries[0];\n\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n this.setState({\n shouldShowEditor: true\n });\n }\n }, // initialize the RCE when it gets close to entering the viewport\n {\n root: null,\n rootMargin: '200px 0px',\n threshold: 0.0\n });\n this.intersectionObserver.observe(this._editorPlaceholderRef.current);\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.state.shouldShowEditor) {\n if (!prevState.shouldShowEditor) {\n var _this$intersectionObs2;\n\n this.editorReallyDidMount();\n (_this$intersectionObs2 = this.intersectionObserver) === null || _this$intersectionObs2 === void 0 ? void 0 : _this$intersectionObs2.disconnect();\n } else {\n this.registerTextareaChange();\n\n if (prevState.editorView !== this.state.editorView) {\n this.setEditorView(this.state.editorView);\n this.focusCurrentView();\n }\n\n if (prevProps.readOnly !== this.props.readOnly) {\n this.mceInstance().mode.set(this.props.readOnly ? 'readonly' : 'design');\n }\n }\n }\n }\n\n editorReallyDidMount() {\n const myTiny = this.mceInstance();\n this.pendingEventHandlers.forEach(e => {\n myTiny.on(e.name, e.handler);\n });\n this.registerTextareaChange();\n\n this._elementRef.current.addEventListener('keydown', this.handleKey, true); // give the textarea its initial size\n\n\n this.onResize(null, {\n deltaY: 0\n }); // Preload the LTI Tools modal\n // This helps with loading the favorited external tools\n\n if (this.ltiToolFavorites.length > 0) {\n __webpack_require__.e(/*! import() */ 10).then(__webpack_require__.bind(null, /*! ./plugins/instructure_external_tools/components/LtiToolsModal */ \"./src/rce/plugins/instructure_external_tools/components/LtiToolsModal/index.js\"));\n } // .tox-tinymce-aux is where tinymce puts the floating toolbar when\n // the user clicks the More... button\n // Tinymce doesn't fire onFocus when the user clicks More... from somewhere\n // outside, so we'll handle that here by watching for the floating toolbar\n // to come and go.\n\n\n const portals = document.querySelectorAll('.tox-tinymce-aux'); // my portal will be the last one in the doc because tinyumce appends them\n\n const tinymce_floating_toolbar_portal = portals[portals.length - 1];\n\n if (tinymce_floating_toolbar_portal) {\n this.mutationObserver = new MutationObserver((mutationList, _observer) => {\n mutationList.forEach(mutation => {\n if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {\n this.handleFocusEditor(new Event('focus', {\n target: mutation.target\n }));\n }\n });\n });\n this.mutationObserver.observe(tinymce_floating_toolbar_portal, {\n childList: true\n });\n }\n\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].renderEditor(this);\n }\n\n setEditorView(view) {\n var _this$getTextarea$lab, _this$getTextarea$lab2, _this$getTextarea$lab3, _this$getTextarea$lab4, _this$_elementRef$cur4, _this$getTextarea$lab5, _this$getTextarea$lab6;\n\n switch (view) {\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]:\n this.getTextarea().removeAttribute('aria-hidden');\n (_this$getTextarea$lab = this.getTextarea().labels) === null || _this$getTextarea$lab === void 0 ? void 0 : (_this$getTextarea$lab2 = _this$getTextarea$lab[0]) === null || _this$getTextarea$lab2 === void 0 ? void 0 : _this$getTextarea$lab2.removeAttribute('aria-hidden');\n this.mceInstance().hide();\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"]:\n this.getTextarea().setAttribute('aria-hidden', true);\n (_this$getTextarea$lab3 = this.getTextarea().labels) === null || _this$getTextarea$lab3 === void 0 ? void 0 : (_this$getTextarea$lab4 = _this$getTextarea$lab3[0]) === null || _this$getTextarea$lab4 === void 0 ? void 0 : _this$getTextarea$lab4.setAttribute('aria-hidden', true);\n this.mceInstance().hide();\n (_this$_elementRef$cur4 = this._elementRef.current.querySelector('.CodeMirror')) === null || _this$_elementRef$cur4 === void 0 ? void 0 : _this$_elementRef$cur4.CodeMirror.setCursor(0, 0);\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]:\n this.setCode(this.textareaValue());\n this.getTextarea().setAttribute('aria-hidden', true);\n (_this$getTextarea$lab5 = this.getTextarea().labels) === null || _this$getTextarea$lab5 === void 0 ? void 0 : (_this$getTextarea$lab6 = _this$getTextarea$lab5[0]) === null || _this$getTextarea$lab6 === void 0 ? void 0 : _this$getTextarea$lab6.setAttribute('aria-hidden', true);\n this.mceInstance().show();\n }\n }\n\n renderHtmlEditor() {\n // the div keeps the editor from collapsing while the code editor is downloaded\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_3__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"div\", {\n style: {\n height: this.state.height,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_9__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"medium\"\n }))\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_10__[\"View\"], {\n as: \"div\",\n borderRadius: \"medium\",\n borderWidth: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(RceHtmlEditor, {\n ref: this._prettyHtmlEditorRef,\n height: document[FS_ELEMENT] ? `${window.screen.height}px` : this.state.height,\n code: this.getCode(),\n onChange: value => {\n this.getTextarea().value = value;\n this.handleTextareaChange();\n },\n onFocus: this.handleFocusHtmlEditor\n })));\n }\n\n render() {\n const {\n trayProps,\n ...mceProps\n } = this.props;\n\n if (!this.state.shouldShowEditor) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"div\", {\n ref: this._editorPlaceholderRef,\n style: {\n height: `${this.props.editorOptions.height}px`,\n border: '1px solid grey'\n }\n });\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"div\", {\n key: this.id,\n className: `${styles.root} rce-wrapper`,\n ref: this._elementRef,\n onFocus: this.handleFocusRCE,\n onBlur: this.handleBlurRCE\n }, this.state.shouldShowOnFocusButton && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_ShowOnFocusButton__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n onClick: this.openKBShortcutModal,\n margin: \"xx-small\",\n screenReaderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('View keyboard shortcuts'),\n ref: el => this._showOnFocusButton = el\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_instructure_ui_icons__WEBPACK_IMPORTED_MODULE_7__[\"IconKeyboardShortcutsLine\"], null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_AlertMessageArea__WEBPACK_IMPORTED_MODULE_30__[\"default\"], {\n messages: this.state.messages,\n liveRegion: this.props.liveRegion,\n afterDismiss: this.removeAlert\n }), this.state.editorView === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"] && this.renderHtmlEditor(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"div\", {\n style: {\n display: this.state.editorView === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"] ? 'none' : 'block'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_tinymce_tinymce_react__WEBPACK_IMPORTED_MODULE_4__[\"Editor\"], {\n id: mceProps.textareaId,\n textareaName: mceProps.name,\n init: this.tinymceInitOptions,\n initialValue: mceProps.defaultContent,\n onInit: this.onInit,\n onClick: this.handleFocusEditor,\n onKeypress: this.handleFocusEditor,\n onActivate: this.handleFocusEditor,\n onRemove: this.onRemove,\n onFocus: this.handleFocusEditor,\n onBlur: this.handleBlurEditor,\n onNodeChange: this.onNodeChange,\n onEditorChange: this.onEditorChange\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n readOnly: this.props.readOnly,\n onChangeView: newView => this.toggleView(newView),\n path: this.state.path,\n wordCount: this.state.wordCount,\n editorView: this.state.editorView,\n preferredHtmlEditor: getHtmlEditorCookie(),\n onResize: this.onResize,\n onKBShortcutModalOpen: this.openKBShortcutModal,\n onA11yChecker: this.onA11yChecker,\n onFullscreen: this.handleClickFullscreen,\n a11yBadgeColor: this.theme.canvasBadgeBackgroundColor,\n a11yErrorsCount: this.state.a11yErrorsCount\n }), this.props.trayProps && this.props.trayProps.containingContext && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_plugins_shared_CanvasContentTray__WEBPACK_IMPORTED_MODULE_23__[\"default\"], Object(_babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n key: this.id,\n canvasOrigin: this.getCanvasUrl(),\n bridge: _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n editor: this,\n onTrayClosing: this.handleContentTrayClosing,\n use_rce_icon_maker: this.props.use_rce_icon_maker\n }, trayProps)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_KeyboardShortcutModal__WEBPACK_IMPORTED_MODULE_29__[\"default\"], {\n onExited: this.KBShortcutModalExited,\n onDismiss: this.closeKBShortcutModal,\n open: this.state.KBShortcutModalOpen\n }), this.state.confirmAutoSave ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_3__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_9__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"small\"\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(RestoreAutoSaveModal, {\n savedContent: this.state.autoSavedContent,\n open: this.state.confirmAutoSave,\n onNo: () => this.restoreAutoSave(false),\n onYes: () => this.restoreAutoSave(true)\n })) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_instructure_ui_alerts__WEBPACK_IMPORTED_MODULE_8__[\"Alert\"], {\n screenReaderOnly: true,\n liveRegion: this.props.liveRegion\n }, this.state.announcement));\n }\n\n}, _class2.propTypes = {\n autosave: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n enabled: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n maxAge: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number\n }),\n canvasOrigin: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n defaultContent: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n editorOptions: editorOptionsPropType,\n handleUnmount: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n editorView: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOf([_StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"], _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"], _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]]),\n renderKBShortcutModal: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n id: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n language: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n liveRegion: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired,\n ltiTools: ltiToolsPropType,\n onContentChange: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onFocus: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onBlur: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onInitted: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onRemove: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n textareaClassName: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n textareaId: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n readOnly: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n tinymce: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object,\n trayProps: _plugins_shared_CanvasContentTray__WEBPACK_IMPORTED_MODULE_23__[\"trayPropTypes\"],\n toolbar: toolbarPropType,\n menu: menuPropType,\n plugins: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string),\n instRecordDisabled: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n highContrastCSS: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string),\n maxInitRenderedRCEs: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n use_rce_icon_maker: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n features: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.objectOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool),\n flashAlertTimeout: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n timezone: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string\n}, _class2.defaultProps = {\n trayProps: null,\n autosave: {\n enabled: false\n },\n highContrastCSS: [],\n ltiTools: [],\n maxInitRenderedRCEs: -1,\n features: {},\n timezone: (_Intl = Intl) === null || _Intl === void 0 ? void 0 : (_Intl$DateTimeFormat = _Intl.DateTimeFormat()) === null || _Intl$DateTimeFormat === void 0 ? void 0 : (_Intl$DateTimeFormat$ = _Intl$DateTimeFormat.resolvedOptions()) === null || _Intl$DateTimeFormat$ === void 0 ? void 0 : _Intl$DateTimeFormat$.timeZone,\n canvasOrigin: ''\n}, _class2.skinCssInjected = false, _class2)) || _class); // standard: string of tinymce menu commands\n// e.g. 'instructure_links | inserttable instructure_media_embed | hr'\n// custom: a string of tinymce menu commands\n// returns: standard + custom with any duplicate commands removed from custom\n\nfunction mergeMenuItems(standard, custom) {\n var _custom$trim;\n\n let c = custom === null || custom === void 0 ? void 0 : (_custom$trim = custom.trim) === null || _custom$trim === void 0 ? void 0 : _custom$trim.call(custom);\n if (!c) return standard;\n const s = new Set(standard.split(/[\\s|]+/)); // remove any duplicates\n\n c = c.split(/\\s+/).filter(m => !s.has(m));\n c = c.join(' ').replace(/^\\s*\\|\\s*/, '').replace(/\\s*\\|\\s*$/, '');\n return `${standard} | ${c}`;\n} // standard: the incoming tinymce menu object\n// custom: tinymce menu object to merge into standard\n// returns: the merged result by mutating incoming standard arg.\n// It will add commands to existing menus, or add a new menu\n// if the custom one does not exist\n\n\nfunction mergeMenu(standard, custom) {\n if (!custom) return standard;\n Object.keys(custom).forEach(k => {\n const curr_m = standard[k];\n\n if (curr_m) {\n curr_m.items = mergeMenuItems(curr_m.items, custom[k].items);\n } else {\n standard[k] = { ...custom[k]\n };\n }\n });\n return standard;\n} // standard: incoming tinymce toolbar array\n// custom: tinymce toolbar array to merge into standard\n// returns: the merged result by mutating the incoming standard arg.\n// It will add commands to existing toolbars, or add a new toolbar\n// if the custom one does not exist\n\n\nfunction mergeToolbar(standard, custom) {\n if (!custom) return standard; // merge given toolbar data into the default toolbar\n\n custom.forEach(tb => {\n const curr_tb = standard.find(t => tb.name && Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(tb.name) === t.name);\n\n if (curr_tb) {\n curr_tb.items.splice(curr_tb.items.length, 0, ...tb.items);\n } else {\n standard.push(tb);\n }\n });\n return standard;\n} // standard: incoming array of plugin names\n// custom: array of plugin names to merge\n// returns: the merged result, duplicates removed\n\n\nfunction mergePlugins(standard, custom) {\n if (!custom) return standard;\n const union = new Set(standard);\n\n for (const p of custom) {\n union.add(p);\n }\n\n return [...union];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (RCEWrapper);\n\n\n//# sourceURL=webpack:///./src/rce/RCEWrapper.js?");
|
|
17630
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"editorOptionsPropType\", function() { return editorOptionsPropType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"storageAvailable\", function() { return storageAvailable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toolbarPropType\", function() { return toolbarPropType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"menuPropType\", function() { return menuPropType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ltiToolsPropType\", function() { return ltiToolsPropType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeMenuItems\", function() { return mergeMenuItems; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeMenu\", function() { return mergeMenu; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergeToolbar\", function() { return mergeToolbar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mergePlugins\", function() { return mergePlugins; });\n/* harmony import */ var _babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/extends */ \"../../node_modules/@babel/runtime-corejs3/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/includes */ \"../../node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js\");\n/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _tinymce_tinymce_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tinymce/tinymce-react */ \"../../node_modules/@tinymce/tinymce-react/lib/es2015/main/ts/index.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash */ \"../../node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _instructure_ui_themeable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-themeable */ \"../../node_modules/@instructure/ui-themeable/es/index.js\");\n/* harmony import */ var _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-icons */ \"../../node_modules/@instructure/ui-icons/es/index.js\");\n/* harmony import */ var _instructure_ui_alerts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @instructure/ui-alerts */ \"../../node_modules/@instructure/ui-alerts/es/index.js\");\n/* harmony import */ var _instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @instructure/ui-spinner */ \"../../node_modules/@instructure/ui-spinner/es/index.js\");\n/* harmony import */ var _instructure_ui_view__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @instructure/ui-view */ \"../../node_modules/@instructure/ui-view/es/index.js\");\n/* harmony import */ var _instructure_debounce__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @instructure/debounce */ \"../../node_modules/@instructure/debounce/es/index.js\");\n/* harmony import */ var _common_getCookie__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../common/getCookie */ \"./src/common/getCookie.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _contentInsertion__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./contentInsertion */ \"./src/rce/contentInsertion.js\");\n/* harmony import */ var _indicatorRegion__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./indicatorRegion */ \"./src/rce/indicatorRegion.js\");\n/* harmony import */ var _editorLanguage__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./editorLanguage */ \"./src/rce/editorLanguage.js\");\n/* harmony import */ var _editorLanguage__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_editorLanguage__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _normalizeLocale__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./normalizeLocale */ \"./src/rce/normalizeLocale.js\");\n/* harmony import */ var _sanitizePlugins__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./sanitizePlugins */ \"./src/rce/sanitizePlugins.js\");\n/* harmony import */ var _RCEGlobals__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./RCEGlobals */ \"./src/rce/RCEGlobals.js\");\n/* harmony import */ var _defaultTinymceConfig__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../defaultTinymceConfig */ \"./src/defaultTinymceConfig.js\");\n/* harmony import */ var _common_indicate__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../common/indicate */ \"./src/common/indicate.js\");\n/* harmony import */ var _bridge__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../bridge */ \"./src/bridge/index.js\");\n/* harmony import */ var _plugins_shared_CanvasContentTray__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./plugins/shared/CanvasContentTray */ \"./src/rce/plugins/shared/CanvasContentTray.js\");\n/* harmony import */ var _StatusBar__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./StatusBar */ \"./src/rce/StatusBar.js\");\n/* harmony import */ var _customEvents__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./customEvents */ \"./src/rce/customEvents.js\");\n/* harmony import */ var _ShowOnFocusButton__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./ShowOnFocusButton */ \"./src/rce/ShowOnFocusButton/index.js\");\n/* harmony import */ var _skins_theme__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../skins/theme */ \"./src/skins/theme.js\");\n/* harmony import */ var _plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./plugins/shared/fileTypeUtils */ \"./src/rce/plugins/shared/fileTypeUtils.js\");\n/* harmony import */ var _KeyboardShortcutModal__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./KeyboardShortcutModal */ \"./src/rce/KeyboardShortcutModal.js\");\n/* harmony import */ var _AlertMessageArea__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./AlertMessageArea */ \"./src/rce/AlertMessageArea.js\");\n/* harmony import */ var _alertHandler__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./alertHandler */ \"./src/rce/alertHandler.js\");\n/* harmony import */ var _plugins_shared_ContentSelection__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./plugins/shared/ContentSelection */ \"./src/rce/plugins/shared/ContentSelection.js\");\n/* harmony import */ var _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./plugins/instructure_record/VideoOptionsTray/TrayController */ \"./src/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js\");\n/* harmony import */ var _plugins_instructure_wordcount_utils_countContent__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./plugins/instructure_wordcount/utils/countContent */ \"./src/rce/plugins/instructure_wordcount/utils/countContent.ts\");\n\n\nvar _dec, _class, _class2, _Intl, _Intl$DateTimeFormat, _Intl$DateTimeFormat$;\n\n\n\n/*\n * Copyright (C) 2018 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst styles = {\n componentId: 'dyzZI',\n template: function (theme) {\n return `\n\n\n\n\n.canvas-rce__skins--root {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n}\n\n\n\n.rce-wrapper textarea {\n width: 100%;\n box-sizing: border-box;\n min-height: auto;\n }\n\n.tox,\n .tox *:not(svg) {\n color: inherit;\n font-family: inherit;\n }\n\n\n\n[dir='rtl'] .tox :not(svg) {\n direction: rtl;\n }\n\n.tox:not(.tox-tinymce-inline) .tox-editor-header {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox.tox-tinymce .screenreader-only {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n transform: translatez(0);\n }\n\n.tox-tinymce-aux {\n font-family: ${theme.canvasFontFamily || 'inherit'};\n }\n\n\n\n.tox.tox-tinymce-aux {\n z-index: 10000;\n }\n\n.tox .tox-button {\n background-color: ${theme.canvasPrimaryButtonHoverBackground || 'inherit'};\n font-family: ${theme.canvasFontFamily || 'inherit'};\n font-weight: ${theme.canvasButtonFontWeight || 'inherit'};\n font-size: ${theme.canvasButtonFontSize || 'inherit'};\n color: ${theme.canvasPrimaryButtonColor || 'inherit'};\n border-color: ${theme.canvasPrimaryButtonBorderColor || 'inherit'};\n line-height: calc(${theme.canvasButtonLineHeight || 'inherit'} - 2px);\n padding: ${theme.canvasButtonPadding || 'inherit'};\n }\n\n.tox .tox-button[disabled] {\n opacity: 0.5;\n border-color: inherit;\n color: inherit;\n }\n\n.tox .tox-button:focus:not(:disabled) {\n background-color: ${theme.canvasPrimaryButtonBackground || 'inherit'};\n color: ${theme.canvasPrimaryButtonColor || 'inherit'};\n border-color: ${theme.canvasBackgroundColor || 'inherit'};\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-button:hover:not(:disabled) {\n background-color: ${theme.canvasPrimaryButtonHoverBackground || 'inherit'};\n color: ${theme.canvasPrimaryButtonHoverColor || 'inherit'};\n }\n\n.tox .tox-button:active:not(:disabled) {\n background-color: ${theme.canvasPrimaryButtonBackground || 'inherit'};\n border-color: ${theme.canvasPrimaryButtonBorderColor || 'inherit'};\n color: ${theme.canvasPrimaryButtonColor || 'inherit'};\n }\n\n.tox .tox-button--secondary {\n background-color: ${theme.canvasSecondaryButtonBackground || 'inherit'};\n border-color: ${theme.canvasSecondaryButtonBorderColor || 'inherit'};\n color: ${theme.canvasSecondaryButtonColor || 'inherit'};\n }\n\n.tox .tox-button--secondary[disabled] {\n background-color: inherit;\n border-color: ${theme.canvasSecondaryButtonBorderColor || 'inherit'};\n color: inherit;\n opacity: 0.5;\n }\n\n.tox .tox-button--secondary:focus:not(:disabled) {\n background-color: inherit;\n border-color: ${theme.canvasFocusBorderColor || 'inherit'};\n color: inherit;\n }\n\n.tox .tox-button--secondary:hover:not(:disabled) {\n background-color: ${theme.canvasSecondaryButtonHoverBackground || 'inherit'};\n border-color: ${theme.canvasSecondaryButtonBorderColor || 'inherit'};\n color: ${theme.canvasSecondaryButtonHoverColor || 'inherit'};\n }\n\n.tox .tox-button--secondary:active:not(:disabled) {\n background-color: inherit;\n border-color: ${theme.canvasSecondaryButtonBorderColor || 'inherit'};\n color: inherit;\n }\n\n.tox .tox-button-link {\n font-family: ${theme.canvasFontFamily || 'inherit'};\n }\n\n.tox .tox-button--naked {\n background: ${theme.canvasButtonBackground || 'inherit'};\n border-color: ${theme.canvasButtonBorderColor || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-button--naked:hover:not(:disabled) {\n background-color: ${theme.canvasButtonHoverBackground || 'inherit'};\n border-color: ${theme.canvasButtonBorderColor || 'inherit'};\n color: ${theme.canvasButtonHoverColor || 'inherit'};\n }\n\n.tox .tox-button--naked:focus:not(:disabled) {\n background-color: ${theme.canvasButtonBackground || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n border-color: ${theme.canvasBackgroundColor || 'inherit'};\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-button--naked:active:not(:disabled) {\n background-color: inherit;\n color: inherit;\n }\n\n.tox .tox-button--naked.tox-button--icon {\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {\n background: ${theme.canvasButtonHoverBackground || 'inherit'};\n color: ${theme.canvasButtonHoverColor || 'inherit'};\n }\n\n.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n fill: rgba(45, 59, 69, 0.3);\n }\n\n.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n fill: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n fill: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-collection--list .tox-collection__group {\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-collection__group-heading {\n background-color: #e3e6e8;\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-collection__item {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-collection__item--state-disabled {\n background-color: unset;\n opacity: 0.5;\n cursor: default;\n }\n\n.tox .tox-collection--list .tox-collection__item--enabled {\n color: contrast(inherit, ${theme.canvasTextColor || 'inherit'}, #fff);\n }\n\n.tox .tox-collection--list .tox-collection__item--active {\n background-color: ${theme.activeMenuItemBackground || 'inherit'};\n color: ${theme.activeMenuItemLabelColor || 'inherit'};\n }\n\n.tox\n .tox-collection--list\n .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n background-color: ${theme.activeMenuItemBackground || 'inherit'};\n color: ${theme.activeMenuItemLabelColor || 'inherit'};\n }\n\n.tox .tox-collection--toolbar .tox-collection__item--enabled {\n background-color: #cbced1;\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-collection--toolbar .tox-collection__item--active {\n background-color: #e0e2e3;\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-collection--grid .tox-collection__item--enabled {\n background-color: #cbced1;\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-collection--grid .tox-collection__item--active {\n background-color: #e0e2e3;\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-collection--list .tox-collection__item-icon:first-child {\n margin-right: 8px;\n }\n\n.tox .tox-collection__item-accessory {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-sv-palette {\n border: 1px solid black;\n box-sizing: border-box;\n }\n\n.tox .tox-hue-slider {\n border: 1px solid black;\n }\n\n.tox .tox-rgb-form input.tox-invalid {\n \n border-color: ${theme.canvasErrorColor || 'inherit'} !important;\n }\n\n.tox .tox-rgb-form {\n padding: 2px; \n }\n\n.tox .tox-swatches__picker-btn:hover {\n background: #e0e2e3;\n }\n\n.tox .tox-comment-thread {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-comment {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: ${theme.canvasBorderColor || 'inherit'};\n box-shadow: 0 4px 8px 0 rgba(45, 59, 69, 0.1);\n }\n\n.tox .tox-comment__header {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-comment__date {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-comment__body {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-comment__expander p {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-comment-thread__overlay::after {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-comment__overlay {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-comment__loading-text {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-comment__overlaytext p {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-comment__busy-spinner {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-user__avatar svg {\n fill: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-user__name {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-dialog-wrap__backdrop {\n background-color: rgba(255, 255, 255, 0.75);\n }\n\n.tox .tox-dialog {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: ${theme.canvasBorderColor || 'inherit'};\n box-shadow: ${theme.canvasModalShadow || 'inherit'};\n }\n\n.tox .tox-dialog__header {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n color: ${theme.canvasTextColor || 'inherit'};\n border-bottom: 1px solid ${theme.canvasBorderColor || 'inherit'};\n padding: ${theme.canvasModalHeadingPadding || 'inherit'};\n margin: 0;\n }\n\n.tox .tox-dialog__title {\n font-family: ${theme.canvasFontFamily || 'inherit'};\n font-size: ${theme.canvasModalHeadingFontSize || 'inherit'};\n font-weight: ${theme.canvasModalHeadingFontWeight || 'inherit'};\n }\n\n.tox .tox-dialog__body {\n color: ${theme.canvasTextColor || 'inherit'};\n padding: ${theme.canvasModalBodyPadding || 'inherit'};\n }\n\n.tox .tox-dialog__body-nav-item {\n color: rgba(45, 59, 69, 0.75);\n }\n\n.tox .tox-dialog__body-nav-item:focus {\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-dialog__body-nav-item--active {\n border-bottom-color: ${theme.canvasBrandColor || 'inherit'};\n color: ${theme.canvasBrandColor || 'inherit'};\n }\n\n.tox .tox-dialog__footer {\n background-color: ${theme.canvasModalFooterBackground || 'inherit'};\n border-top: 1px solid ${theme.canvasBorderColor || 'inherit'};\n padding: ${theme.canvasModalFooterPadding || 'inherit'};\n margin: 0;\n }\n\n.tox .tox-dialog__table tbody tr {\n border-bottom-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-dropzone {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n border: 2px dashed ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-dropzone p {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-edit-area {\n border: 1px solid ${theme.canvasBorderColor || 'inherit'};\n border-radius: 3px;\n }\n\n.tox .tox-edit-area__iframe {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border: ${theme.canvasFocusBorderWidth || 'inherit'} solid transparent;\n }\n\n.tox.tox-inline-edit-area {\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-form__group {\n padding: 2px;\n }\n\n.tox .tox-control-wrap .tox-textfield {\n padding-right: 32px;\n }\n\n.tox .tox-control-wrap__status-icon-invalid svg {\n fill: ${theme.canvasErrorColor || 'inherit'};\n }\n\n.tox .tox-control-wrap__status-icon-unknown svg {\n fill: ${theme.canvasWarningColor || 'inherit'};\n }\n\n.tox .tox-control-wrap__status-icon-valid svg {\n fill: ${theme.canvasSuccessColor || 'inherit'};\n }\n\n.tox .tox-color-input span {\n border-color: rgba(45, 59, 69, 0.2);\n }\n\n.tox .tox-color-input span:focus {\n border-color: ${theme.canvasBrandColor || 'inherit'};\n }\n\n.tox .tox-label,\n .tox .tox-toolbar-label {\n color: rgba(45, 59, 69, 0.6);\n }\n\n.tox .tox-form__group {\n margin: ${theme.canvasFormElementMargin || 'inherit'};\n }\n\n.tox .tox-form__group:last-child {\n margin: 0;\n }\n\n.tox .tox-form__group .tox-label {\n color: ${theme.canvasFormElementLabelColor || 'inherit'};\n margin: ${theme.canvasFormElementLabelMargin || 'inherit'};\n font-size: ${theme.canvasFormElementLabelFontSize || 'inherit'};\n font-weight: ${theme.canvasFormElementLabelFontWeight || 'inherit'};\n }\n\n.tox .tox-form__group--error {\n color: ${theme.canvasErrorColor || 'inherit'};\n }\n\n.tox .tox-textfield,\n .tox .tox-selectfield select,\n .tox .tox-textarea,\n .tox .tox-toolbar-textfield {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: ${theme.canvasBorderColor || 'inherit'};\n color: ${theme.canvasTextColor || 'inherit'};\n font-family: ${theme.canvasFontFamily || 'inherit'};\n }\n\n.tox .tox-textfield:focus,\n .tox .tox-selectfield select:focus,\n .tox .tox-textarea:focus {\n \n border-color: ${theme.canvasBorderColor || 'inherit'};\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-naked-btn {\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-naked-btn svg {\n fill: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-insert-table-picker > div {\n border-color: #cccccc;\n }\n\n.tox .tox-insert-table-picker .tox-insert-table-picker__selected {\n background-color: ${theme.tableSelectorHighlightColor || 'inherit'};\n border-color: ${theme.tableSelectorHighlightColor || 'inherit'};\n }\n\n.tox-selected-menu .tox-insert-table-picker {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-insert-table-picker__label {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-menu {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-menubar {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n.tox .tox-mbtn {\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-mbtn[disabled] {\n opacity: 0.5;\n }\n\n.tox .tox-mbtn:hover:not(:disabled) {\n background: ${theme.toolbarButtonHoverBackground || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-mbtn:focus:not(:disabled) {\n background-color: transparent;\n color: ${theme.canvasButtonColor || 'inherit'};\n border-color: ${theme.canvasBackgroundColor || 'inherit'};\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-mbtn--active {\n background: ${theme.toolbarButtonHoverBackground || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-notification {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: #c5c5c5;\n }\n\n.tox .tox-notification--success {\n background-color: #dff0d8;\n border-color: ${theme.canvasSuccessColor || 'inherit'};\n }\n\n.tox .tox-notification--error {\n background-color: #f2dede;\n border-color: ${theme.canvasErrorColor || 'inherit'};\n }\n\n.tox .tox-notification--warn {\n background-color: #fcf8e3;\n border-color: ${theme.canvasWarningColor || 'inherit'};\n }\n\n.tox .tox-notification--info {\n background-color: #d9edf7;\n border-color: ${theme.canvasInfoColor || 'inherit'};\n }\n\n.tox .tox-notification__body {\n color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-pop__dialog {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-pop.tox-pop--bottom::before {\n border-color: ${theme.canvasBorderColor || 'inherit'} transparent transparent transparent;\n }\n\n.tox .tox-pop.tox-pop--top::before {\n border-color: transparent transparent ${theme.canvasBorderColor || 'inherit'} transparent;\n }\n\n.tox .tox-pop.tox-pop--left::before {\n border-color: transparent ${theme.canvasBorderColor || 'inherit'} transparent transparent;\n }\n\n.tox .tox-pop.tox-pop--right::before {\n border-color: transparent transparent transparent ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-slider {\n width: 100%;\n }\n\n.tox .tox-slider__rail {\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-slider__handle {\n background-color: ${theme.canvasBrandColor || 'inherit'};\n }\n\n.tox .tox-spinner > div {\n background-color: rgba(45, 59, 69, 0.6);\n }\n\n\n\n.tox .tox-tbtn {\n border-style: none;\n color: ${theme.canvasButtonColor || 'inherit'};\n position: relative;\n }\n\n.tox .tox-tbtn svg {\n fill: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox .tox-tbtn.tox-tbtn--enabled {\n background: inherit;\n }\n\n.tox .tox-tbtn:focus,\n .tox .tox-split-button:focus {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n box-shadow: ${theme.canvasFocusBoxShadow || 'inherit'};\n }\n\n.tox .tox-tbtn:hover,\n .tox .tox-split-button:hover,\n .tox .tox-tbtn.tox-tbtn--enabled:hover,\n .tox .tox-split-button .tox-tbtn.tox-split-button__chevron:hover {\n background: ${theme.toolbarButtonHoverBackground || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n }\n\n.tox-tbtn.tox-split-button__chevron {\n position: relative;\n }\n\n\n\n.tox .tox-tbtn.tox-tbtn--enabled::after {\n position: absolute;\n top: -3px;\n content: '\\\\25BC';\n text-align: center;\n height: 8px;\n font-size: 8px;\n width: 100%;\n color: ${theme.canvasEnabledColor || 'inherit'};\n }\n\n[dir=\"ltr\"] .tox .tox-tbtn.tox-tbtn--enabled::after {\n text-align: center;\n }\n\n[dir=\"rtl\"] .tox .tox-tbtn.tox-tbtn--enabled::after {\n text-align: center;\n }\n\n\n\n.tox-tbtn.tox-split-button__chevron.tox-tbtn--enabled::after {\n display: none;\n }\n\n.tox .tox-tbtn--disabled,\n .tox .tox-tbtn--disabled:hover,\n .tox .tox-tbtn:disabled,\n .tox .tox-tbtn:disabled:hover {\n opacity: 0.5;\n }\n\n.tox .tox-tbtn--disabled svg,\n .tox .tox-tbtn--disabled:hover svg,\n .tox .tox-tbtn:disabled svg,\n .tox .tox-tbtn:disabled:hover svg {\n \n opacity: 0.5;\n }\n\n.tox .tox-tbtn__select-chevron svg {\n fill: ${theme.canvasButtonColor || 'inherit'};\n width: 10px;\n height: 10px;\n }\n\n.tox .tox-split-button__chevron svg {\n fill: ${theme.canvasButtonColor || 'inherit'};\n width: 10px;\n height: 10px;\n }\n\n.tox .tox-split-button.tox-tbtn--disabled:hover,\n .tox .tox-split-button.tox-tbtn--disabled:focus,\n .tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,\n .tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {\n opacity: 0.5;\n }\n\n.tox .tox-toolbar {\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n border-top: 1px solid ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-toolbar__group:not(:last-of-type) {\n border-right: 1px solid ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-tooltip__body {\n background-color: ${theme.canvasTextColor || 'inherit'};\n box-shadow: 0 2px 4px rgba(45, 59, 69, 0.3);\n color: rgba(255, 255, 255, 0.75);\n }\n\n.tox .tox-tooltip--down .tox-tooltip__arrow {\n border-top-color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-tooltip--up .tox-tooltip__arrow {\n border-bottom-color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-tooltip--right .tox-tooltip__arrow {\n border-left-color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-tooltip--left .tox-tooltip__arrow {\n border-right-color: ${theme.canvasTextColor || 'inherit'};\n }\n\n.tox .tox-well {\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox .tox-custom-editor {\n border-color: ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox a {\n color: ${theme.canvasLinkColor || 'inherit'};\n }\n\n.tox.tox-tinymce {\n border-style: none;\n }\n\n\n\n.tox-editor-container .tox-toolbar,\n .tox-editor-container .tox-toolbar-overlord {\n background-image: none;\n margin-bottom: 5px;\n }\n\n.tox-editor-container .tox-toolbar__primary {\n background-image: none;\n }\n\n\n\n.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {\n border-style: none;\n }\n\n.tox .tox-toolbar .tox-toolbar__group,\n .tox .tox-toolbar-overlord .tox-toolbar__group,\n .tox-toolbar__overflow .tox-toolbar__group,\n .tox:not([dir='rtl']) .tox-toolbar__group:not(:last-of-type),\n .tox[dir='rtl'] .tox-toolbar__group:not(:last-of-type) {\n border-style: none;\n }\n\n.tox-toolbar .tox-toolbar__group::after, \n .tox-toolbar-overlord .tox-toolbar__group::after, \n .tox-toolbar__overflow .tox-toolbar__group::after, \n .tox-tinymce-aux .tox-toolbar .tox-toolbar__group::after {\n \n content: '';\n display: inline-block;\n box-sizing: border-box;\n border-inline-end: 1px solid ${theme.canvasBorderColor || 'inherit'};\n width: 8px;\n height: 24px;\n }\n\n[dir=\"ltr\"] .tox-toolbar .tox-toolbar__group::after,\n[dir=\"ltr\"] .tox-toolbar-overlord .tox-toolbar__group::after,\n[dir=\"ltr\"] .tox-toolbar__overflow .tox-toolbar__group::after,\n[dir=\"ltr\"] .tox-tinymce-aux .tox-toolbar .tox-toolbar__group::after {\n border-right: 1px solid ${theme.canvasBorderColor || 'inherit'};\n }\n\n[dir=\"rtl\"] .tox-toolbar .tox-toolbar__group::after,\n[dir=\"rtl\"] .tox-toolbar-overlord .tox-toolbar__group::after,\n[dir=\"rtl\"] .tox-toolbar__overflow .tox-toolbar__group::after,\n[dir=\"rtl\"] .tox-tinymce-aux .tox-toolbar .tox-toolbar__group::after {\n border-left: 1px solid ${theme.canvasBorderColor || 'inherit'};\n }\n\n.tox-toolbar .tox-toolbar__group:last-child::after,\n .tox-toolbar-overlord .tox-toolbar__group:last-child::after,\n .tox-toolbar__overflow .tox-toolbar__group:last-child::after,\n .tox-tinymce-aux .tox-toolbar .tox-toolbar__group:last-child::after {\n border-inline-end-width: 0;\n padding-inline-start: 0;\n width: 0;\n }\n\n[dir=\"ltr\"] .tox-toolbar .tox-toolbar__group:last-child::after,\n[dir=\"ltr\"] .tox-toolbar-overlord .tox-toolbar__group:last-child::after,\n[dir=\"ltr\"] .tox-toolbar__overflow .tox-toolbar__group:last-child::after,\n[dir=\"ltr\"] .tox-tinymce-aux .tox-toolbar .tox-toolbar__group:last-child::after {\n border-right-width: 0;\n padding-left: 0;\n }\n\n[dir=\"rtl\"] .tox-toolbar .tox-toolbar__group:last-child::after,\n[dir=\"rtl\"] .tox-toolbar-overlord .tox-toolbar__group:last-child::after,\n[dir=\"rtl\"] .tox-toolbar__overflow .tox-toolbar__group:last-child::after,\n[dir=\"rtl\"] .tox-tinymce-aux .tox-toolbar .tox-toolbar__group:last-child::after {\n border-left-width: 0;\n padding-right: 0;\n }\n\n.tox .tox-tbtn--bespoke .tox-tbtn__select-label {\n width: auto;\n padding-inline-end: 0;\n }\n\n[dir=\"ltr\"] .tox .tox-tbtn--bespoke .tox-tbtn__select-label {\n padding-right: 0;\n }\n\n[dir=\"rtl\"] .tox .tox-tbtn--bespoke .tox-tbtn__select-label {\n padding-left: 0;\n }\n\n.tox .tox-tbtn {\n box-sizing: border-box;\n }\n\n.tox .tox-tbtn,\n .tox .tox-split-button,\n .tox .tox-tbtn--select {\n border-style: none;\n margin: 2px 2px 3px;\n }\n\n.tox .tox-split-button .tox-tbtn {\n margin-inline-end: 0;\n }\n\n[dir=\"ltr\"] .tox .tox-split-button .tox-tbtn {\n margin-right: 0;\n }\n\n[dir=\"rtl\"] .tox .tox-split-button .tox-tbtn {\n margin-left: 0;\n }\n\n.tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-inline-start: 0;\n }\n\n[dir=\"ltr\"] .tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-left: 0;\n }\n\n[dir=\"rtl\"] .tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-right: 0;\n }\n\n.tox .tox-edit-area.active,\n .tox .tox-edit-area.active iframe {\n border-color: ${theme.canvasFocusBorderColor || 'inherit'};\n }\n\n.tox .tox-split-button .tox-tbtn {\n margin-inline-end: 0;\n }\n\n[dir=\"ltr\"] .tox .tox-split-button .tox-tbtn {\n margin-right: 0;\n }\n\n[dir=\"rtl\"] .tox .tox-split-button .tox-tbtn {\n margin-left: 0;\n }\n\n.tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-inline-start: -6px;\n background-color: ${theme.canvasBackgroundColor || 'inherit'};\n }\n\n[dir=\"ltr\"] .tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-left: -6px;\n }\n\n[dir=\"rtl\"] .tox .tox-split-button .tox-tbtn.tox-split-button__chevron {\n margin-right: -6px;\n }\n\n.tox .tox-split-button:hover .tox-split-button__chevron {\n background: ${theme.canvasBackgroundColor || 'inherit'};\n color: ${theme.canvasButtonColor || 'inherit'};\n box-shadow: none;\n }\n\n.tox .tox-tbtn:hover.tox-split-button__chevron,\n .tox .tox-tbtn:focus.tox-split-button__chevron {\n box-shadow: none;\n }\n\n.tox .tox-toolbar__primary {\n border-width: 0;\n }\n\n.tox-tbtn.tox-tbtn--select .tox-icon.tox-tbtn__icon-wrap {\n margin-inline-end: 4px;\n }\n\n[dir=\"ltr\"] .tox-tbtn.tox-tbtn--select .tox-icon.tox-tbtn__icon-wrap {\n margin-right: 4px;\n }\n\n[dir=\"rtl\"] .tox-tbtn.tox-tbtn--select .tox-icon.tox-tbtn__icon-wrap {\n margin-left: 4px;\n }\n\n\n\n.tox .tox-icon svg:not([height]),\n .tox .tox-collection__item-icon svg:not([height]) {\n height: 16px;\n }\n\n\n\n.tox .tox-collection--toolbar-lg .tox-collection__item-icon {\n height: 30px;\n width: 30px;\n }\n\n\n\n.tox-selectfield__icon-js svg {\n width: 10px;\n height: 10px;\n }\n\n\n\n[data-canvascontenttray-content]:focus {\n outline-color: ${theme.canvasFocusBorderColor || 'inherit'};\n }\n`;\n },\n 'root': 'canvas-rce__skins--root'\n};\nconst skinCSSBinding = {\n componentId: 'djgIv',\n template: function (theme) {\n return `\n\n\n.tinymce__oxide--tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:baseline;vertical-align:initial;white-space:normal}\n\n.tinymce__oxide--tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}\n\n[dir=\"ltr\"] .tinymce__oxide--tox :not(svg):not(rect){text-align:inherit}\n\n[dir=\"rtl\"] .tinymce__oxide--tox :not(svg):not(rect){text-align:inherit}\n\n.tinymce__oxide--tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}\n\n[dir=\"ltr\"] .tinymce__oxide--tox :not(svg):not(rect){float:none}\n\n[dir=\"rtl\"] .tinymce__oxide--tox :not(svg):not(rect){float:none}\n\n.tinymce__oxide--tox:not([dir=rtl]){direction:ltr;text-align:left}\n\n[dir=\"ltr\"] .tinymce__oxide--tox:not([dir=rtl]){text-align:left}\n\n[dir=\"rtl\"] .tinymce__oxide--tox:not([dir=rtl]){text-align:left}\n\n.tinymce__oxide--tox[dir=rtl]{direction:rtl;text-align:right}\n\n[dir=\"ltr\"] .tinymce__oxide--tox[dir=rtl]{text-align:right}\n\n[dir=\"rtl\"] .tinymce__oxide--tox[dir=rtl]{text-align:right}\n\n.tinymce__oxide--tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}\n\n.tinymce__oxide--tox-tinymce-inline{border:none;box-shadow:none}\n\n.tinymce__oxide--tox-tinymce-inline .tinymce__oxide--tox-editor-header{background-color:transparent;border:1px solid #ccc;border-radius:0;box-shadow:none}\n\n.tinymce__oxide--tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;z-index:1300}\n\n.tinymce__oxide--tox-tinymce :focus,.tinymce__oxide--tox-tinymce-aux :focus{outline:0}\n\nbutton::-moz-focus-inner{border:0}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__description>div{padding-bottom:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}\n\n.tinymce__oxide--tox .tinymce__oxide--accessibility-issue__repair{margin-top:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--info .tinymce__oxide--accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--info .tinymce__oxide--accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--info .tinymce__oxide--tox-form__group h2{color:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--info .tinymce__oxide--tox-icon svg{fill:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--info a .tinymce__oxide--tox-icon{color:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--warn .tinymce__oxide--accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--warn .tinymce__oxide--accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--warn .tinymce__oxide--tox-form__group h2{color:#cc8500}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--warn .tinymce__oxide--tox-icon svg{fill:#cc8500}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--warn a .tinymce__oxide--tox-icon{color:#cc8500}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--error .tinymce__oxide--accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--error .tinymce__oxide--accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--error .tinymce__oxide--tox-form__group h2{color:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--error .tinymce__oxide--tox-icon svg{fill:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--error a .tinymce__oxide--tox-icon{color:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--success .tinymce__oxide--accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--success .tinymce__oxide--accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--success .tinymce__oxide--tox-form__group h2{color:#78ab46}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--success .tinymce__oxide--tox-icon svg{fill:#78ab46}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue--success a .tinymce__oxide--tox-icon{color:#78ab46}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__header h1,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group .tinymce__oxide--accessibility-issue__description h2{margin-top:0}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__header .tinymce__oxide--tox-button{margin-left:4px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__header>:nth-last-child(2){margin-left:auto}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__description{padding:4px 4px 4px 8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__header .tinymce__oxide--tox-button{margin-right:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__header>:nth-last-child(2){margin-right:auto}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__description{padding:4px 8px 4px 4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-anchorbar{display:flex;flex:0 0 auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-bar{display:flex;flex:0 0 auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-button{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-button{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--icon,.tinymce__oxide--tox .tinymce__oxide--tox-button.tinymce__oxide--tox-button--icon,.tinymce__oxide--tox .tinymce__oxide--tox-button.tinymce__oxide--tox-button--secondary.tinymce__oxide--tox-button--icon{padding:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--icon .tinymce__oxide--tox-icon svg,.tinymce__oxide--tox .tinymce__oxide--tox-button.tinymce__oxide--tox-button--icon .tinymce__oxide--tox-icon svg,.tinymce__oxide--tox .tinymce__oxide--tox-button.tinymce__oxide--tox-button--secondary.tinymce__oxide--tox-button--icon .tinymce__oxide--tox-icon svg{display:block;fill:currentColor}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button-link--sm{font-size:14px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked .tinymce__oxide--tox-icon svg{fill:currentColor}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-button--naked.tinymce__oxide--tox-button--icon:hover:not(:disabled){color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__checked svg{display:none;fill:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox--disabled .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox--disabled .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-checkbox--disabled .tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox input.tinymce__oxide--tox-checkbox__input:checked+.tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__unchecked svg{display:none}\n\n.tinymce__oxide--tox input.tinymce__oxide--tox-checkbox__input:checked+.tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__checked svg{display:block}\n\n.tinymce__oxide--tox input.tinymce__oxide--tox-checkbox__input:indeterminate+.tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__unchecked svg{display:none}\n\n.tinymce__oxide--tox input.tinymce__oxide--tox-checkbox__input:indeterminate+.tinymce__oxide--tox-checkbox__icons .tinymce__oxide--tox-checkbox-icon__indeterminate svg{display:block}\n\n.tinymce__oxide--tox input.tinymce__oxide--tox-checkbox__input:focus+.tinymce__oxide--tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-checkbox__label{margin-left:4px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-checkbox__input{left:-10000px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-bar .tinymce__oxide--tox-checkbox{margin-left:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-checkbox__label{margin-right:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-checkbox__input{right:-10000px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-bar .tinymce__oxide--tox-checkbox{margin-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar .tinymce__oxide--tox-collection__group{display:flex;padding:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--grid .tinymce__oxide--tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__group:first-child{border-top-width:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item{padding:4px 8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar .tinymce__oxide--tox-collection__item{border-radius:3px;padding:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--grid .tinymce__oxide--tox-collection__item{border-radius:3px;padding:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item--enabled{background-color:#fff;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item--active{background-color:#dee0e2}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar .tinymce__oxide--tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar .tinymce__oxide--tox-collection__item--active{background-color:#dee0e2}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--grid .tinymce__oxide--tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--grid .tinymce__oxide--tox-collection__item--active:not(.tinymce__oxide--tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item--active:not(.tinymce__oxide--tox-collection__item--state-disabled){color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar .tinymce__oxide--tox-collection__item--active:not(.tinymce__oxide--tox-collection__item--state-disabled){color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-checkmark,.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-checkmark svg,.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-icon svg{fill:currentColor}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--toolbar-lg .tinymce__oxide--tox-collection__item-icon{height:48px;width:48px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-caret{align-items:center;display:flex;min-height:24px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-caret svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item:not(.tinymce__oxide--tox-collection__item--enabled) .tinymce__oxide--tox-collection__item-checkmark svg{display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item:not(.tinymce__oxide--tox-collection__item--enabled) .tinymce__oxide--tox-collection__item-accessory+.tinymce__oxide--tox-collection__item-checkmark{display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__item-label{white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__item-caret{margin-left:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row.tinymce__oxide--tox-collection__item-container--align-left{margin-right:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row.tinymce__oxide--tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row.tinymce__oxide--tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row.tinymce__oxide--tox-collection__item-container--valign-middle{align-items:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--row.tinymce__oxide--tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column{align-self:center;flex:1 1 auto;flex-direction:column}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column.tinymce__oxide--tox-collection__item-container--align-left{align-items:flex-start}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column.tinymce__oxide--tox-collection__item-container--align-right{align-items:flex-end}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column.tinymce__oxide--tox-collection__item-container--valign-top{align-self:flex-start}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column.tinymce__oxide--tox-collection__item-container--valign-middle{align-self:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection__item-container--column.tinymce__oxide--tox-collection__item-container--valign-bottom{align-self:flex-end}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item>:not(:first-child){margin-left:8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item>.tinymce__oxide--tox-collection__item-label:first-child{margin-left:4px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection__item-accessory{margin-left:16px;text-align:right}\n\n[dir=\"ltr\"] .tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection__item-accessory{text-align:right}\n\n[dir=\"rtl\"] .tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection__item-accessory{text-align:right}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-collection .tinymce__oxide--tox-collection__item-caret{margin-left:16px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item>:not(:first-child){margin-right:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__item>.tinymce__oxide--tox-collection__item-label:first-child{margin-right:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection__item-icon-rtl .tinymce__oxide--tox-collection__item-icon svg{transform:rotateY(180deg)}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection__item-accessory{margin-right:16px;text-align:left}\n\n[dir=\"ltr\"] .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection__item-accessory{text-align:left}\n\n[dir=\"rtl\"] .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection__item-accessory{text-align:left}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection .tinymce__oxide--tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-collection--horizontal .tinymce__oxide--tox-collection__item-caret{margin-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette{box-sizing:border-box;display:flex;height:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette-spectrum{height:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette,.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette-spectrum{width:225px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-hue-slider{box-sizing:border-box;height:100%;width:25px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-hue-slider,.tinymce__oxide--tox .tinymce__oxide--tox-hue-slider-spectrum{width:20px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-rgb-form input{width:6em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-rgb-form input.tinymce__oxide--tox-invalid{border:1px solid red!important}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-rgb-form .tinymce__oxide--tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-sv-palette{margin-right:15px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-hue-slider{margin-right:15px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-hue-slider-thumb{margin-left:-1px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-rgb-form label{margin-right:.5em}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-sv-palette{margin-left:15px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-hue-slider{margin-left:15px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-hue-slider-thumb{margin-right:-1px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-rgb-form label{margin-left:.5em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar .tinymce__oxide--tox-swatches,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__overflow .tinymce__oxide--tox-swatches,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__primary .tinymce__oxide--tox-swatches{margin:2px 0 3px 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__group .tinymce__oxide--tox-swatches-menu{border:0;margin:-4px 0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatches__row{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatch:focus,.tinymce__oxide--tox .tinymce__oxide--tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatch--remove{align-items:center;display:flex;justify-content:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatch--remove svg path{stroke:#e74c3c}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatches__picker-btn svg{height:24px;width:24px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-swatches__picker-btn:hover{background:#dee0e2}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-swatches__picker-btn{margin-left:auto}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-swatches__picker-btn{margin-right:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment-thread{background:#fff;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment-thread>:not(:first-child){margin-top:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:none;text-transform:initial}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__body textarea{resize:none;white-space:normal;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__expander{padding-top:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__body p{margin:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__buttonspacing{padding-top:16px;text-align:center}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__buttonspacing{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__buttonspacing{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment-thread__overlay::after{background:#fff;bottom:0;content:\"\";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__reply>:first-child{margin-bottom:8px;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:\"\";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__overlay{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__overlay{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__loading-text>div{padding-bottom:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__overlaytext p{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-comment__overlaytext p{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-conversations{margin:8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-comment__edit{margin-left:8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-comment__buttonspacing>:last-child,.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-comment__edit>:last-child,.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-comment__reply>:last-child{margin-left:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-comment__edit{margin-right:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-comment__buttonspacing>:last-child,.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-comment__edit>:last-child,.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-comment__reply>:last-child{margin-right:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-user{align-items:center;display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-user__avatar svg{fill:rgba(34,47,62,.7)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-user__avatar svg{margin-right:8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-user__avatar+.tinymce__oxide--tox-user__name{margin-left:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-user__avatar svg{margin-left:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-user__avatar+.tinymce__oxide--tox-user__name{margin-right:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-wrap__backdrop--opaque{background-color:#fff}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox .tinymce__oxide--tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-inline{z-index:1100}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__header .tinymce__oxide--tox-button{z-index:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__draghandle:active{cursor:grabbing}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__dismiss{margin-left:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body{text-align:left}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body{text-align:left}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body{flex-direction:column}}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content>:first-child{margin-top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content>:last-child{margin-bottom:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content a:focus,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;margin-inline-end:0;margin-inline-start:0;padding-inline-start:2.5rem}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content ul{margin-right:0;margin-left:0;padding-left:2.5rem}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content ul{margin-left:0;margin-right:0;padding-right:2.5rem}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group p{margin-bottom:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h1:first-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h2:first-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group p:first-child{margin-top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h1:last-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h2:last-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group p:last-child{margin-bottom:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h1:only-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group h2:only-child,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-form__group p:only-child{margin-bottom:0;margin-top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog--width-lg{height:650px;max-width:1200px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog--width-md{max-width:800px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog--width-md .tinymce__oxide--tox-dialog__body-content{overflow:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content--centered{text-align:center}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content--centered{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content--centered{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__footer-end,.tinymce__oxide--tox .tinymce__oxide--tox-dialog__footer-start{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__table{border-collapse:collapse;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__table thead th{font-weight:700;padding-bottom:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__table tbody tr{border-bottom:1px solid #ccc}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__table tbody tr:last-child{border-bottom:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__table td{padding-bottom:8px;padding-top:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__popups{position:absolute;width:100%;z-index:1100}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-iframe .tinymce__oxide--tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-iframe .tinymce__oxide--tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-dock-fadeout{opacity:0;visibility:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-dock-fadein{opacity:1;visibility:visible}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-dock-transition.tinymce__oxide--tox-dialog-dock-fadein{transition-delay:0s}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-platform-ie .tinymce__oxide--tox-dialog-wrap{position:-ms-device-fixed}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-nav{margin-right:0}}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__footer .tinymce__oxide--tox-dialog__footer-end>*,.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-dialog__footer .tinymce__oxide--tox-dialog__footer-start>*{margin-left:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body{text-align:right}\n\n[dir=\"ltr\"] .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body{text-align:right}\n\n[dir=\"rtl\"] .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body{text-align:right}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-nav{margin-left:0}}\n\n@media only screen and (max-width:767px){body:not(.tinymce__oxide--tox-force-desktop) .tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__footer .tinymce__oxide--tox-dialog__footer-end>*,.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-dialog__footer .tinymce__oxide--tox-dialog__footer-start>*{margin-right:8px}\n\nbody.tinymce__oxide--tox-dialog__disable-scroll{overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-inline-edit-area{border:1px dotted #ccc}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-editor-header{z-index:1}\n\n.tinymce__oxide--tox:not(.tinymce__oxide--tox-tinymce-inline) .tinymce__oxide--tox-editor-header{box-shadow:none;transition:box-shadow .5s}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce--toolbar-bottom .tinymce__oxide--tox-editor-header,.tinymce__oxide--tox.tinymce__oxide--tox-tinymce-inline .tinymce__oxide--tox-editor-header{margin-bottom:-1px}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce--toolbar-sticky-on .tinymce__oxide--tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}\n\n.tinymce__oxide--tox-editor-dock-fadeout{opacity:0;visibility:hidden}\n\n.tinymce__oxide--tox-editor-dock-fadein{opacity:1;visibility:visible}\n\n.tinymce__oxide--tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}\n\n.tinymce__oxide--tox-editor-dock-transition.tinymce__oxide--tox-editor-dock-fadein{transition-delay:0s}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap{flex:1;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap:not(.tinymce__oxide--tox-control-wrap--status-invalid) .tinymce__oxide--tox-control-wrap__status-icon-invalid,.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap:not(.tinymce__oxide--tox-control-wrap--status-unknown) .tinymce__oxide--tox-control-wrap__status-icon-unknown,.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap:not(.tinymce__oxide--tox-control-wrap--status-valid) .tinymce__oxide--tox-control-wrap__status-icon-valid{display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap svg{display:block}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap__status-icon-invalid svg{fill:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap__status-icon-unknown svg{fill:orange}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-control-wrap__status-icon-valid svg{fill:green}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-control-wrap--status-invalid .tinymce__oxide--tox-textfield,.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-control-wrap--status-unknown .tinymce__oxide--tox-textfield,.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-control-wrap--status-valid .tinymce__oxide--tox-textfield{padding-right:32px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-control-wrap__status-icon-wrap{right:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-control-wrap--status-invalid .tinymce__oxide--tox-textfield,.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-control-wrap--status-unknown .tinymce__oxide--tox-textfield,.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-control-wrap--status-valid .tinymce__oxide--tox-textfield{padding-left:32px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-control-wrap__status-icon-wrap{left:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-autocompleter{max-width:25em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-autocompleter .tinymce__oxide--tox-menu{max-width:25em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-autocompleter .tinymce__oxide--tox-autocompleter-highlight{font-weight:700}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input{display:flex;position:relative;z-index:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input .tinymce__oxide--tox-textfield{z-index:-1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input span:focus:not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-color-input span[aria-disabled=true]{cursor:not-allowed}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-color-input .tinymce__oxide--tox-textfield{padding-left:36px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-color-input span{left:6px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-color-input .tinymce__oxide--tox-textfield{padding-right:36px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-color-input span{right:6px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-label,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar-label{padding:0 8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-label{padding:0 0 0 8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group{box-sizing:border-box;margin-bottom:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form-group--maximize{flex:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--error{color:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--collection{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__grid--2col>.tinymce__oxide--tox-form__group{width:calc(50% - (8px / 2))}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__grid--3col>.tinymce__oxide--tox-form__group{width:calc(100% / 3 - (8px / 2))}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__grid--4col>.tinymce__oxide--tox-form__group{width:calc(25% - (8px / 2))}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__controls-h-stack{align-items:center;display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--inline{align-items:center;display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--stretched .tinymce__oxide--tox-textarea{flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--stretched .tinymce__oxide--tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-form__group--stretched .tinymce__oxide--tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-form__controls-h-stack>:not(:first-child){margin-left:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-form__controls-h-stack>:not(:first-child){margin-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-lock.tinymce__oxide--tox-locked .tinymce__oxide--tox-lock-icon__unlock,.tinymce__oxide--tox .tinymce__oxide--tox-lock:not(.tinymce__oxide--tox-locked) .tinymce__oxide--tox-lock-icon__lock{display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listboxfield .tinymce__oxide--tox-listbox--select,.tinymce__oxide--tox .tinymce__oxide--tox-textarea,.tinymce__oxide--tox .tinymce__oxide--tox-textfield,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar-textfield{appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-textarea[disabled],.tinymce__oxide--tox .tinymce__oxide--tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listboxfield .tinymce__oxide--tox-listbox--select:focus,.tinymce__oxide--tox .tinymce__oxide--tox-textarea:focus,.tinymce__oxide--tox .tinymce__oxide--tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-naked-btn svg{display:block;fill:#222f3e}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-toolbar-textfield+*{margin-left:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-toolbar-textfield+*{margin-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listboxfield{cursor:pointer;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listboxfield .tinymce__oxide--tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listbox__select-chevron svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-listboxfield .tinymce__oxide--tox-listbox--select{align-items:center;display:flex}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-listboxfield svg{right:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-listboxfield svg{left:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield{cursor:pointer;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield select{appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield select::-ms-expand{display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-selectfield select[size=\"0\"],.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-selectfield select[size=\"1\"]{padding-right:24px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-selectfield svg{right:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-selectfield select[size=\"0\"],.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-selectfield select[size=\"1\"]{padding-left:24px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-selectfield svg{left:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-textarea{appearance:textarea;white-space:pre-wrap}\n\n.tinymce__oxide--tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce.tinymce__oxide--tox-fullscreen .tinymce__oxide--tox-statusbar__resize-handle{display:none}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce.tinymce__oxide--tox-fullscreen{background-color:transparent;z-index:1200}\n\n.tinymce__oxide--tox-shadowhost.tinymce__oxide--tox-fullscreen{z-index:1200}\n\n.tinymce__oxide--tox-fullscreen .tinymce__oxide--tox.tinymce__oxide--tox-tinymce-aux,.tinymce__oxide--tox-fullscreen~.tinymce__oxide--tox.tinymce__oxide--tox-tinymce-aux{z-index:1201}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-help__more-link{list-style:none;margin-top:1em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools{width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__image,.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__image+.tinymce__oxide--tox-image-tools__toolbar{margin-top:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-spacer{flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle-move{border:0;cursor:move;position:absolute}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-slider:not(:first-of-type){margin-left:8px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-button+.tinymce__oxide--tox-slider{margin-left:32px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-slider+.tinymce__oxide--tox-button{margin-left:32px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-slider:not(:first-of-type){margin-right:8px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-button+.tinymce__oxide--tox-slider{margin-right:32px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-image-tools__toolbar>.tinymce__oxide--tox-slider+.tinymce__oxide--tox-button{margin-right:32px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-collection--list .tinymce__oxide--tox-collection__group .tinymce__oxide--tox-insert-table-picker{margin:-4px 0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker .tinymce__oxide--tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker__label{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-insert-table-picker__label{text-align:center}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-insert-table-picker>div:nth-child(10n){border-right:0}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-insert-table-picker>div:nth-child(10n+1){border-right:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menu.tinymce__oxide--tox-collection.tinymce__oxide--tox-collection--list{padding:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menu.tinymce__oxide--tox-collection.tinymce__oxide--tox-collection--toolbar{padding:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menu.tinymce__oxide--tox-collection.tinymce__oxide--tox-collection--grid{padding:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menu__label blockquote,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label code,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h1,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h2,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h3,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h4,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h5,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label h6,.tinymce__oxide--tox .tinymce__oxide--tox-menu__label p{margin:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menubar{background:url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E\") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce:not(.tinymce__oxide--tox-tinymce-inline) .tinymce__oxide--tox-editor-header:not(:first-child) .tinymce__oxide--tox-menubar{border-top:1px solid #ccc}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn:hover:not(:disabled):not(.tinymce__oxide--tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn[disabled] .tinymce__oxide--tox-mbtn__select-label{cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:grid;font-size:14px;font-weight:400;grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification p{font-size:14px;font-weight:400}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification a{text-decoration:underline}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--in{opacity:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--success p{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--success a{color:#547831}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--success svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--error p{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--error a{color:#c00}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--error svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--warn,.tinymce__oxide--tox .tinymce__oxide--tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--warn p,.tinymce__oxide--tox .tinymce__oxide--tox-notification--warning p{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--warn a,.tinymce__oxide--tox .tinymce__oxide--tox-notification--warning a{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--warn svg,.tinymce__oxide--tox .tinymce__oxide--tox-notification--warning svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--info p{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--info a{color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification--info svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__body{align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}\n\n[dir=\"ltr\"] .tinymce__oxide--tox .tinymce__oxide--tox-notification__body{text-align:center}\n\n[dir=\"rtl\"] .tinymce__oxide--tox .tinymce__oxide--tox-notification__body{text-align:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__body>*{margin:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__body>*+*{margin-top:1rem}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__icon{align-self:center;-ms-grid-column-span:1;grid-column-end:2;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;grid-row-start:1;justify-self:end}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__icon svg{display:block}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification__dismiss{align-self:start;-ms-grid-column-span:1;grid-column-end:4;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;grid-row-start:1;justify-self:end}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-notification .tinymce__oxide--tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;grid-row-start:2;justify-self:center}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop{display:inline-block;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop--resizing{transition:width .1s ease}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop--resizing .tinymce__oxide--tox-toolbar{flex-wrap:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop__dialog>:not(.tinymce__oxide--tox-toolbar){margin:4px 4px 4px 8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop__dialog .tinymce__oxide--tox-toolbar{background-color:transparent;margin-bottom:-1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--bottom::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--bottom::before{left:50%;top:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--top::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--left::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--right::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--align-left::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--align-left::before{left:20px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--align-right::after,.tinymce__oxide--tox .tinymce__oxide--tox-pop.tinymce__oxide--tox-pop--align-right::before{left:calc(100% - 20px)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar__slider{display:flex;overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar__pane-container{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar__pane{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar--sliding-closed{opacity:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar--sliding-open{opacity:1}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-sidebar--sliding-growing,.tinymce__oxide--tox .tinymce__oxide--tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-platform-touch .tinymce__oxide--tox-selector{height:12px;width:12px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-source-code{overflow:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-spinner{display:flex}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-spinner>div{animation:tinymce__oxide--tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-spinner>div:nth-child(1){animation-delay:-.32s}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-spinner>div:nth-child(2){animation-delay:-.16s}\n\n@keyframes tinymce__oxide--tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-spinner>div:not(:first-child){margin-left:4px}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-spinner>div:not(:first-child){margin-right:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__path>*{display:inline;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar a,.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__path-item,.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px;box-shadow:0 0 0 2px #dee0e2}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-statusbar__path>*{margin-right:4px}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-statusbar__branding{margin-left:1ch}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-statusbar{flex-direction:row-reverse}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-statusbar__path>*{margin-left:4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-throbber{z-index:1299}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn svg{display:block;fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn.tinymce__oxide--tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:hover svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:active svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--disabled,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--disabled:hover,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:disabled,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--disabled svg,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--disabled:hover svg,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:disabled svg,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled:hover>*,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled>*{transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled svg,.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--enabled:hover svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:focus:not(.tinymce__oxide--tox-tbtn--disabled){color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:focus:not(.tinymce__oxide--tox-tbtn--disabled) svg{fill:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn:active>*{transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--md{height:51px;width:51px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--lg{flex-direction:column;height:68px;width:68px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--return{align-self:stretch;height:unset;width:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--labeled{padding:0 4px;width:unset}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tbtn--bespoke .tinymce__oxide--tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button>*{border-radius:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button__chevron{width:16px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button .tinymce__oxide--tox-tbtn{margin:0}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-platform-touch .tinymce__oxide--tox-split-button .tinymce__oxide--tox-tbtn:first-child{width:30px}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-platform-touch .tinymce__oxide--tox-split-button__chevron{width:20px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-split-button.tinymce__oxide--tox-tbtn--disabled .tinymce__oxide--tox-tbtn:focus,.tinymce__oxide--tox .tinymce__oxide--tox-split-button.tinymce__oxide--tox-tbtn--disabled .tinymce__oxide--tox-tbtn:hover,.tinymce__oxide--tox .tinymce__oxide--tox-split-button.tinymce__oxide--tox-tbtn--disabled:focus,.tinymce__oxide--tox .tinymce__oxide--tox-split-button.tinymce__oxide--tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar-overlord{background-color:#fff}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__overflow,.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__primary{background:url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E\") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__overflow.tinymce__oxide--tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-menubar+.tinymce__oxide--tox-toolbar,.tinymce__oxide--tox .tinymce__oxide--tox-menubar+.tinymce__oxide--tox-toolbar-overlord .tinymce__oxide--tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-pop .tinymce__oxide--tox-toolbar{border-width:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar--no-divider{background-image:none}\n\n.tinymce__oxide--tox-tinymce:not(.tinymce__oxide--tox-tinymce-inline) .tinymce__oxide--tox-editor-header:not(:first-child) .tinymce__oxide--tox-toolbar-overlord:first-child .tinymce__oxide--tox-toolbar__primary,.tinymce__oxide--tox-tinymce:not(.tinymce__oxide--tox-tinymce-inline) .tinymce__oxide--tox-editor-header:not(:first-child) .tinymce__oxide--tox-toolbar:first-child{border-top:1px solid #ccc}\n\n.tinymce__oxide--tox.tinymce__oxide--tox-tinymce-aux .tinymce__oxide--tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar__group--pull-right{margin-left:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-toolbar--scrolling .tinymce__oxide--tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}\n\n.tinymce__oxide--tox:not([dir=rtl]) .tinymce__oxide--tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}\n\n.tinymce__oxide--tox[dir=rtl] .tinymce__oxide--tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip{display:inline-block;padding:8px;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip__arrow{position:absolute}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip--down .tinymce__oxide--tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip--up .tinymce__oxide--tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip--right .tinymce__oxide--tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tooltip--left .tinymce__oxide--tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-well>:first-child{margin-top:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-well>:last-child{margin-bottom:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-well>:only-child{margin:0}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:\"\";height:100%;position:absolute;width:100%;z-index:1000}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-tab{cursor:pointer}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-dialog__body-content .tinymce__oxide--tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools-edit-panel{height:60px}\n\n.tinymce__oxide--tox .tinymce__oxide--tox-image-tools__sidebar{height:60px}\n`;\n },\n 'tox': 'tinymce__oxide--tox',\n 'tox-tinymce': 'tinymce__oxide--tox-tinymce',\n 'tox-tinymce-inline': 'tinymce__oxide--tox-tinymce-inline',\n 'tox-editor-header': 'tinymce__oxide--tox-editor-header',\n 'tox-tinymce-aux': 'tinymce__oxide--tox-tinymce-aux',\n 'accessibility-issue__header': 'tinymce__oxide--accessibility-issue__header',\n 'accessibility-issue__description': 'tinymce__oxide--accessibility-issue__description',\n 'accessibility-issue__repair': 'tinymce__oxide--accessibility-issue__repair',\n 'tox-dialog__body-content': 'tinymce__oxide--tox-dialog__body-content',\n 'accessibility-issue--info': 'tinymce__oxide--accessibility-issue--info',\n 'tox-form__group': 'tinymce__oxide--tox-form__group',\n 'tox-icon': 'tinymce__oxide--tox-icon',\n 'accessibility-issue--warn': 'tinymce__oxide--accessibility-issue--warn',\n 'accessibility-issue--error': 'tinymce__oxide--accessibility-issue--error',\n 'accessibility-issue--success': 'tinymce__oxide--accessibility-issue--success',\n 'tox-button': 'tinymce__oxide--tox-button',\n 'tox-anchorbar': 'tinymce__oxide--tox-anchorbar',\n 'tox-bar': 'tinymce__oxide--tox-bar',\n 'tox-button--secondary': 'tinymce__oxide--tox-button--secondary',\n 'tox-button--icon': 'tinymce__oxide--tox-button--icon',\n 'tox-button-link': 'tinymce__oxide--tox-button-link',\n 'tox-button-link--sm': 'tinymce__oxide--tox-button-link--sm',\n 'tox-button--naked': 'tinymce__oxide--tox-button--naked',\n 'tox-checkbox': 'tinymce__oxide--tox-checkbox',\n 'tox-checkbox__input': 'tinymce__oxide--tox-checkbox__input',\n 'tox-checkbox__icons': 'tinymce__oxide--tox-checkbox__icons',\n 'tox-checkbox-icon__unchecked': 'tinymce__oxide--tox-checkbox-icon__unchecked',\n 'tox-checkbox-icon__indeterminate': 'tinymce__oxide--tox-checkbox-icon__indeterminate',\n 'tox-checkbox-icon__checked': 'tinymce__oxide--tox-checkbox-icon__checked',\n 'tox-checkbox--disabled': 'tinymce__oxide--tox-checkbox--disabled',\n 'tox-checkbox__label': 'tinymce__oxide--tox-checkbox__label',\n 'tox-collection--toolbar': 'tinymce__oxide--tox-collection--toolbar',\n 'tox-collection__group': 'tinymce__oxide--tox-collection__group',\n 'tox-collection--grid': 'tinymce__oxide--tox-collection--grid',\n 'tox-collection--list': 'tinymce__oxide--tox-collection--list',\n 'tox-collection__group-heading': 'tinymce__oxide--tox-collection__group-heading',\n 'tox-collection__item': 'tinymce__oxide--tox-collection__item',\n 'tox-collection__item--enabled': 'tinymce__oxide--tox-collection__item--enabled',\n 'tox-collection__item--active': 'tinymce__oxide--tox-collection__item--active',\n 'tox-collection__item--state-disabled': 'tinymce__oxide--tox-collection__item--state-disabled',\n 'tox-collection__item-checkmark': 'tinymce__oxide--tox-collection__item-checkmark',\n 'tox-collection__item-icon': 'tinymce__oxide--tox-collection__item-icon',\n 'tox-collection--toolbar-lg': 'tinymce__oxide--tox-collection--toolbar-lg',\n 'tox-collection__item-label': 'tinymce__oxide--tox-collection__item-label',\n 'tox-collection__item-accessory': 'tinymce__oxide--tox-collection__item-accessory',\n 'tox-collection__item-caret': 'tinymce__oxide--tox-collection__item-caret',\n 'tox-collection--horizontal': 'tinymce__oxide--tox-collection--horizontal',\n 'tox-collection__item-container': 'tinymce__oxide--tox-collection__item-container',\n 'tox-collection__item-container--row': 'tinymce__oxide--tox-collection__item-container--row',\n 'tox-collection__item-container--align-left': 'tinymce__oxide--tox-collection__item-container--align-left',\n 'tox-collection__item-container--align-right': 'tinymce__oxide--tox-collection__item-container--align-right',\n 'tox-collection__item-container--valign-top': 'tinymce__oxide--tox-collection__item-container--valign-top',\n 'tox-collection__item-container--valign-middle': 'tinymce__oxide--tox-collection__item-container--valign-middle',\n 'tox-collection__item-container--valign-bottom': 'tinymce__oxide--tox-collection__item-container--valign-bottom',\n 'tox-collection__item-container--column': 'tinymce__oxide--tox-collection__item-container--column',\n 'tox-collection': 'tinymce__oxide--tox-collection',\n 'tox-collection__item-icon-rtl': 'tinymce__oxide--tox-collection__item-icon-rtl',\n 'tox-color-picker-container': 'tinymce__oxide--tox-color-picker-container',\n 'tox-sv-palette': 'tinymce__oxide--tox-sv-palette',\n 'tox-sv-palette-spectrum': 'tinymce__oxide--tox-sv-palette-spectrum',\n 'tox-sv-palette-thumb': 'tinymce__oxide--tox-sv-palette-thumb',\n 'tox-sv-palette-inner-thumb': 'tinymce__oxide--tox-sv-palette-inner-thumb',\n 'tox-hue-slider': 'tinymce__oxide--tox-hue-slider',\n 'tox-hue-slider-spectrum': 'tinymce__oxide--tox-hue-slider-spectrum',\n 'tox-hue-slider-thumb': 'tinymce__oxide--tox-hue-slider-thumb',\n 'tox-rgb-form': 'tinymce__oxide--tox-rgb-form',\n 'tox-invalid': 'tinymce__oxide--tox-invalid',\n 'tox-rgba-preview': 'tinymce__oxide--tox-rgba-preview',\n 'tox-toolbar': 'tinymce__oxide--tox-toolbar',\n 'tox-swatches': 'tinymce__oxide--tox-swatches',\n 'tox-toolbar__overflow': 'tinymce__oxide--tox-toolbar__overflow',\n 'tox-toolbar__primary': 'tinymce__oxide--tox-toolbar__primary',\n 'tox-swatches-menu': 'tinymce__oxide--tox-swatches-menu',\n 'tox-swatches__row': 'tinymce__oxide--tox-swatches__row',\n 'tox-swatch': 'tinymce__oxide--tox-swatch',\n 'tox-swatch--remove': 'tinymce__oxide--tox-swatch--remove',\n 'tox-swatches__picker-btn': 'tinymce__oxide--tox-swatches__picker-btn',\n 'tox-comment-thread': 'tinymce__oxide--tox-comment-thread',\n 'tox-comment': 'tinymce__oxide--tox-comment',\n 'tox-comment__header': 'tinymce__oxide--tox-comment__header',\n 'tox-comment__date': 'tinymce__oxide--tox-comment__date',\n 'tox-comment__body': 'tinymce__oxide--tox-comment__body',\n 'tox-comment__expander': 'tinymce__oxide--tox-comment__expander',\n 'tox-comment__buttonspacing': 'tinymce__oxide--tox-comment__buttonspacing',\n 'tox-comment-thread__overlay': 'tinymce__oxide--tox-comment-thread__overlay',\n 'tox-comment__reply': 'tinymce__oxide--tox-comment__reply',\n 'tox-comment__edit': 'tinymce__oxide--tox-comment__edit',\n 'tox-comment__gradient': 'tinymce__oxide--tox-comment__gradient',\n 'tox-comment__overlay': 'tinymce__oxide--tox-comment__overlay',\n 'tox-comment__loading-text': 'tinymce__oxide--tox-comment__loading-text',\n 'tox-comment__overlaytext': 'tinymce__oxide--tox-comment__overlaytext',\n 'tox-comment__busy-spinner': 'tinymce__oxide--tox-comment__busy-spinner',\n 'tox-comment__scroll': 'tinymce__oxide--tox-comment__scroll',\n 'tox-conversations': 'tinymce__oxide--tox-conversations',\n 'tox-user': 'tinymce__oxide--tox-user',\n 'tox-user__avatar': 'tinymce__oxide--tox-user__avatar',\n 'tox-user__name': 'tinymce__oxide--tox-user__name',\n 'tox-dialog-wrap': 'tinymce__oxide--tox-dialog-wrap',\n 'tox-dialog-wrap__backdrop': 'tinymce__oxide--tox-dialog-wrap__backdrop',\n 'tox-dialog-wrap__backdrop--opaque': 'tinymce__oxide--tox-dialog-wrap__backdrop--opaque',\n 'tox-dialog': 'tinymce__oxide--tox-dialog',\n 'tox-force-desktop': 'tinymce__oxide--tox-force-desktop',\n 'tox-dialog-inline': 'tinymce__oxide--tox-dialog-inline',\n 'tox-dialog__header': 'tinymce__oxide--tox-dialog__header',\n 'tox-dialog__draghandle': 'tinymce__oxide--tox-dialog__draghandle',\n 'tox-dialog__dismiss': 'tinymce__oxide--tox-dialog__dismiss',\n 'tox-dialog__title': 'tinymce__oxide--tox-dialog__title',\n 'tox-dialog__body': 'tinymce__oxide--tox-dialog__body',\n 'tox-dialog__body-nav': 'tinymce__oxide--tox-dialog__body-nav',\n 'tox-dialog__body-nav-item': 'tinymce__oxide--tox-dialog__body-nav-item',\n 'tox-dialog__body-nav-item--active': 'tinymce__oxide--tox-dialog__body-nav-item--active',\n 'tox-dialog--width-lg': 'tinymce__oxide--tox-dialog--width-lg',\n 'tox-dialog--width-md': 'tinymce__oxide--tox-dialog--width-md',\n 'tox-dialog__body-content--centered': 'tinymce__oxide--tox-dialog__body-content--centered',\n 'tox-dialog__footer': 'tinymce__oxide--tox-dialog__footer',\n 'tox-dialog__footer-end': 'tinymce__oxide--tox-dialog__footer-end',\n 'tox-dialog__footer-start': 'tinymce__oxide--tox-dialog__footer-start',\n 'tox-dialog__busy-spinner': 'tinymce__oxide--tox-dialog__busy-spinner',\n 'tox-dialog__table': 'tinymce__oxide--tox-dialog__table',\n 'tox-dialog__popups': 'tinymce__oxide--tox-dialog__popups',\n 'tox-dialog__body-iframe': 'tinymce__oxide--tox-dialog__body-iframe',\n 'tox-navobj': 'tinymce__oxide--tox-navobj',\n 'tox-dialog-dock-fadeout': 'tinymce__oxide--tox-dialog-dock-fadeout',\n 'tox-dialog-dock-fadein': 'tinymce__oxide--tox-dialog-dock-fadein',\n 'tox-dialog-dock-transition': 'tinymce__oxide--tox-dialog-dock-transition',\n 'tox-platform-ie': 'tinymce__oxide--tox-platform-ie',\n 'tox-dialog__disable-scroll': 'tinymce__oxide--tox-dialog__disable-scroll',\n 'tox-dropzone-container': 'tinymce__oxide--tox-dropzone-container',\n 'tox-dropzone': 'tinymce__oxide--tox-dropzone',\n 'tox-edit-area': 'tinymce__oxide--tox-edit-area',\n 'tox-edit-area__iframe': 'tinymce__oxide--tox-edit-area__iframe',\n 'tox-inline-edit-area': 'tinymce__oxide--tox-inline-edit-area',\n 'tox-editor-container': 'tinymce__oxide--tox-editor-container',\n 'tox-tinymce--toolbar-bottom': 'tinymce__oxide--tox-tinymce--toolbar-bottom',\n 'tox-tinymce--toolbar-sticky-on': 'tinymce__oxide--tox-tinymce--toolbar-sticky-on',\n 'tox-editor-dock-fadeout': 'tinymce__oxide--tox-editor-dock-fadeout',\n 'tox-editor-dock-fadein': 'tinymce__oxide--tox-editor-dock-fadein',\n 'tox-editor-dock-transition': 'tinymce__oxide--tox-editor-dock-transition',\n 'tox-control-wrap': 'tinymce__oxide--tox-control-wrap',\n 'tox-control-wrap--status-invalid': 'tinymce__oxide--tox-control-wrap--status-invalid',\n 'tox-control-wrap__status-icon-invalid': 'tinymce__oxide--tox-control-wrap__status-icon-invalid',\n 'tox-control-wrap--status-unknown': 'tinymce__oxide--tox-control-wrap--status-unknown',\n 'tox-control-wrap__status-icon-unknown': 'tinymce__oxide--tox-control-wrap__status-icon-unknown',\n 'tox-control-wrap--status-valid': 'tinymce__oxide--tox-control-wrap--status-valid',\n 'tox-control-wrap__status-icon-valid': 'tinymce__oxide--tox-control-wrap__status-icon-valid',\n 'tox-control-wrap__status-icon-wrap': 'tinymce__oxide--tox-control-wrap__status-icon-wrap',\n 'tox-textfield': 'tinymce__oxide--tox-textfield',\n 'tox-autocompleter': 'tinymce__oxide--tox-autocompleter',\n 'tox-menu': 'tinymce__oxide--tox-menu',\n 'tox-autocompleter-highlight': 'tinymce__oxide--tox-autocompleter-highlight',\n 'tox-color-input': 'tinymce__oxide--tox-color-input',\n 'tox-label': 'tinymce__oxide--tox-label',\n 'tox-toolbar-label': 'tinymce__oxide--tox-toolbar-label',\n 'tox-form': 'tinymce__oxide--tox-form',\n 'tox-form-group--maximize': 'tinymce__oxide--tox-form-group--maximize',\n 'tox-form__group--error': 'tinymce__oxide--tox-form__group--error',\n 'tox-form__group--collection': 'tinymce__oxide--tox-form__group--collection',\n 'tox-form__grid': 'tinymce__oxide--tox-form__grid',\n 'tox-form__grid--2col': 'tinymce__oxide--tox-form__grid--2col',\n 'tox-form__grid--3col': 'tinymce__oxide--tox-form__grid--3col',\n 'tox-form__grid--4col': 'tinymce__oxide--tox-form__grid--4col',\n 'tox-form__controls-h-stack': 'tinymce__oxide--tox-form__controls-h-stack',\n 'tox-form__group--inline': 'tinymce__oxide--tox-form__group--inline',\n 'tox-form__group--stretched': 'tinymce__oxide--tox-form__group--stretched',\n 'tox-textarea': 'tinymce__oxide--tox-textarea',\n 'tox-lock': 'tinymce__oxide--tox-lock',\n 'tox-locked': 'tinymce__oxide--tox-locked',\n 'tox-lock-icon__unlock': 'tinymce__oxide--tox-lock-icon__unlock',\n 'tox-lock-icon__lock': 'tinymce__oxide--tox-lock-icon__lock',\n 'tox-listboxfield': 'tinymce__oxide--tox-listboxfield',\n 'tox-listbox--select': 'tinymce__oxide--tox-listbox--select',\n 'tox-toolbar-textfield': 'tinymce__oxide--tox-toolbar-textfield',\n 'tox-naked-btn': 'tinymce__oxide--tox-naked-btn',\n 'tox-listbox__select-label': 'tinymce__oxide--tox-listbox__select-label',\n 'tox-listbox__select-chevron': 'tinymce__oxide--tox-listbox__select-chevron',\n 'tox-selectfield': 'tinymce__oxide--tox-selectfield',\n 'tox-fullscreen': 'tinymce__oxide--tox-fullscreen',\n 'tox-statusbar__resize-handle': 'tinymce__oxide--tox-statusbar__resize-handle',\n 'tox-shadowhost': 'tinymce__oxide--tox-shadowhost',\n 'tox-help__more-link': 'tinymce__oxide--tox-help__more-link',\n 'tox-image-tools': 'tinymce__oxide--tox-image-tools',\n 'tox-image-tools__toolbar': 'tinymce__oxide--tox-image-tools__toolbar',\n 'tox-image-tools__image': 'tinymce__oxide--tox-image-tools__image',\n 'tox-image-tools__image-bg': 'tinymce__oxide--tox-image-tools__image-bg',\n 'tox-spacer': 'tinymce__oxide--tox-spacer',\n 'tox-croprect-block': 'tinymce__oxide--tox-croprect-block',\n 'tox-croprect-handle': 'tinymce__oxide--tox-croprect-handle',\n 'tox-croprect-handle-move': 'tinymce__oxide--tox-croprect-handle-move',\n 'tox-croprect-handle-nw': 'tinymce__oxide--tox-croprect-handle-nw',\n 'tox-croprect-handle-ne': 'tinymce__oxide--tox-croprect-handle-ne',\n 'tox-croprect-handle-sw': 'tinymce__oxide--tox-croprect-handle-sw',\n 'tox-croprect-handle-se': 'tinymce__oxide--tox-croprect-handle-se',\n 'tox-slider': 'tinymce__oxide--tox-slider',\n 'tox-insert-table-picker': 'tinymce__oxide--tox-insert-table-picker',\n 'tox-insert-table-picker__selected': 'tinymce__oxide--tox-insert-table-picker__selected',\n 'tox-insert-table-picker__label': 'tinymce__oxide--tox-insert-table-picker__label',\n 'tox-menu__label': 'tinymce__oxide--tox-menu__label',\n 'tox-menubar': 'tinymce__oxide--tox-menubar',\n 'tox-mbtn': 'tinymce__oxide--tox-mbtn',\n 'tox-mbtn--active': 'tinymce__oxide--tox-mbtn--active',\n 'tox-mbtn__select-label': 'tinymce__oxide--tox-mbtn__select-label',\n 'tox-mbtn__select-chevron': 'tinymce__oxide--tox-mbtn__select-chevron',\n 'tox-notification': 'tinymce__oxide--tox-notification',\n 'tox-notification--in': 'tinymce__oxide--tox-notification--in',\n 'tox-notification--success': 'tinymce__oxide--tox-notification--success',\n 'tox-notification--error': 'tinymce__oxide--tox-notification--error',\n 'tox-notification--warn': 'tinymce__oxide--tox-notification--warn',\n 'tox-notification--warning': 'tinymce__oxide--tox-notification--warning',\n 'tox-notification--info': 'tinymce__oxide--tox-notification--info',\n 'tox-notification__body': 'tinymce__oxide--tox-notification__body',\n 'tox-notification__icon': 'tinymce__oxide--tox-notification__icon',\n 'tox-notification__dismiss': 'tinymce__oxide--tox-notification__dismiss',\n 'tox-progress-bar': 'tinymce__oxide--tox-progress-bar',\n 'tox-pop': 'tinymce__oxide--tox-pop',\n 'tox-pop--resizing': 'tinymce__oxide--tox-pop--resizing',\n 'tox-pop__dialog': 'tinymce__oxide--tox-pop__dialog',\n 'tox-pop--bottom': 'tinymce__oxide--tox-pop--bottom',\n 'tox-pop--top': 'tinymce__oxide--tox-pop--top',\n 'tox-pop--left': 'tinymce__oxide--tox-pop--left',\n 'tox-pop--right': 'tinymce__oxide--tox-pop--right',\n 'tox-pop--align-left': 'tinymce__oxide--tox-pop--align-left',\n 'tox-pop--align-right': 'tinymce__oxide--tox-pop--align-right',\n 'tox-sidebar-wrap': 'tinymce__oxide--tox-sidebar-wrap',\n 'tox-sidebar': 'tinymce__oxide--tox-sidebar',\n 'tox-sidebar__slider': 'tinymce__oxide--tox-sidebar__slider',\n 'tox-sidebar__pane-container': 'tinymce__oxide--tox-sidebar__pane-container',\n 'tox-sidebar__pane': 'tinymce__oxide--tox-sidebar__pane',\n 'tox-sidebar--sliding-closed': 'tinymce__oxide--tox-sidebar--sliding-closed',\n 'tox-sidebar--sliding-open': 'tinymce__oxide--tox-sidebar--sliding-open',\n 'tox-sidebar--sliding-growing': 'tinymce__oxide--tox-sidebar--sliding-growing',\n 'tox-sidebar--sliding-shrinking': 'tinymce__oxide--tox-sidebar--sliding-shrinking',\n 'tox-selector': 'tinymce__oxide--tox-selector',\n 'tox-platform-touch': 'tinymce__oxide--tox-platform-touch',\n 'tox-slider__rail': 'tinymce__oxide--tox-slider__rail',\n 'tox-slider__handle': 'tinymce__oxide--tox-slider__handle',\n 'tox-source-code': 'tinymce__oxide--tox-source-code',\n 'tox-spinner': 'tinymce__oxide--tox-spinner',\n 'tam-bouncing-dots': 'tinymce__oxide--tam-bouncing-dots',\n 'tox-statusbar': 'tinymce__oxide--tox-statusbar',\n 'tox-statusbar__text-container': 'tinymce__oxide--tox-statusbar__text-container',\n 'tox-statusbar__path': 'tinymce__oxide--tox-statusbar__path',\n 'tox-statusbar__wordcount': 'tinymce__oxide--tox-statusbar__wordcount',\n 'tox-statusbar__path-item': 'tinymce__oxide--tox-statusbar__path-item',\n 'tox-statusbar__branding': 'tinymce__oxide--tox-statusbar__branding',\n 'tox-throbber': 'tinymce__oxide--tox-throbber',\n 'tox-throbber__busy-spinner': 'tinymce__oxide--tox-throbber__busy-spinner',\n 'tox-tbtn': 'tinymce__oxide--tox-tbtn',\n 'tox-tbtn-more': 'tinymce__oxide--tox-tbtn-more',\n 'tox-tbtn--disabled': 'tinymce__oxide--tox-tbtn--disabled',\n 'tox-tbtn--enabled': 'tinymce__oxide--tox-tbtn--enabled',\n 'tox-tbtn--md': 'tinymce__oxide--tox-tbtn--md',\n 'tox-tbtn--lg': 'tinymce__oxide--tox-tbtn--lg',\n 'tox-tbtn--return': 'tinymce__oxide--tox-tbtn--return',\n 'tox-tbtn--labeled': 'tinymce__oxide--tox-tbtn--labeled',\n 'tox-tbtn__vlabel': 'tinymce__oxide--tox-tbtn__vlabel',\n 'tox-tbtn--select': 'tinymce__oxide--tox-tbtn--select',\n 'tox-tbtn__select-label': 'tinymce__oxide--tox-tbtn__select-label',\n 'tox-tbtn__select-chevron': 'tinymce__oxide--tox-tbtn__select-chevron',\n 'tox-tbtn--bespoke': 'tinymce__oxide--tox-tbtn--bespoke',\n 'tox-split-button': 'tinymce__oxide--tox-split-button',\n 'tox-split-button__chevron': 'tinymce__oxide--tox-split-button__chevron',\n 'tox-toolbar-overlord': 'tinymce__oxide--tox-toolbar-overlord',\n 'tox-toolbar__overflow--closed': 'tinymce__oxide--tox-toolbar__overflow--closed',\n 'tox-toolbar__overflow--growing': 'tinymce__oxide--tox-toolbar__overflow--growing',\n 'tox-toolbar__overflow--shrinking': 'tinymce__oxide--tox-toolbar__overflow--shrinking',\n 'tox-toolbar--scrolling': 'tinymce__oxide--tox-toolbar--scrolling',\n 'tox-toolbar--no-divider': 'tinymce__oxide--tox-toolbar--no-divider',\n 'tox-tbtn__icon-rtl': 'tinymce__oxide--tox-tbtn__icon-rtl',\n 'tox-toolbar__group': 'tinymce__oxide--tox-toolbar__group',\n 'tox-toolbar__group--pull-right': 'tinymce__oxide--tox-toolbar__group--pull-right',\n 'tox-tooltip': 'tinymce__oxide--tox-tooltip',\n 'tox-tooltip__body': 'tinymce__oxide--tox-tooltip__body',\n 'tox-tooltip__arrow': 'tinymce__oxide--tox-tooltip__arrow',\n 'tox-tooltip--down': 'tinymce__oxide--tox-tooltip--down',\n 'tox-tooltip--up': 'tinymce__oxide--tox-tooltip--up',\n 'tox-tooltip--right': 'tinymce__oxide--tox-tooltip--right',\n 'tox-tooltip--left': 'tinymce__oxide--tox-tooltip--left',\n 'tox-well': 'tinymce__oxide--tox-well',\n 'tox-custom-editor': 'tinymce__oxide--tox-custom-editor',\n 'tox-dialog-loading': 'tinymce__oxide--tox-dialog-loading',\n 'tox-tab': 'tinymce__oxide--tox-tab',\n 'tox-dialog__content-js': 'tinymce__oxide--tox-dialog__content-js',\n 'tox-image-tools-edit-panel': 'tinymce__oxide--tox-image-tools-edit-panel',\n 'tox-image-tools__sidebar': 'tinymce__oxide--tox-image-tools__sidebar'\n};\nconst contentCSSBinding = {\n componentId: 'bKkob',\n template: function (theme) {\n return `\n\n\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-item-anchor {\n background: transparent url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A\") no-repeat center;\n cursor: default;\n display: inline-block;\n height: 12px !important;\n padding: 0 2px;\n -webkit-user-modify: read-only;\n -moz-user-modify: read-only;\n -webkit-user-select: all;\n user-select: all;\n width: 8px !important;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-item-anchor[data-mce-selected] {\n outline-offset: 1px;\n}\n.tinymce__oxide--tox-comments-visible .tinymce__oxide--tox-comment {\n background-color: #fff0b7;\n}\n.tinymce__oxide--tox-comments-visible .tinymce__oxide--tox-comment--active {\n background-color: #ffe168;\n}\n.tinymce__oxide--tox-checklist > li:not(.tinymce__oxide--tox-checklist--hidden) {\n list-style: none;\n margin: 0.25em 0;\n}\n.tinymce__oxide--tox-checklist > li:not(.tinymce__oxide--tox-checklist--hidden)::before {\n content: url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A\");\n cursor: pointer;\n height: 1em;\n margin-left: -1.5em;\n margin-top: 0.125em;\n position: absolute;\n width: 1em;\n}\n.tinymce__oxide--tox-checklist li:not(.tinymce__oxide--tox-checklist--hidden).tinymce__oxide--tox-checklist--checked::before {\n content: url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A\");\n}\n[dir=rtl] .tinymce__oxide--tox-checklist > li:not(.tinymce__oxide--tox-checklist--hidden)::before {\n margin-left: 0;\n margin-right: -1.5em;\n}\n\n\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n color: black;\n background: none;\n text-shadow: 0 1px white;\n font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n font-size: 1em;\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n line-height: 1.5;\n tab-size: 4;\n -webkit-hyphens: none;\n hyphens: none;\n}\n[dir=\"ltr\"] code[class*=\"language-\"],\n[dir=\"ltr\"] pre[class*=\"language-\"] {\n text-align: left;\n}\n[dir=\"rtl\"] code[class*=\"language-\"],\n[dir=\"rtl\"] pre[class*=\"language-\"] {\n text-align: left;\n}\npre[class*=\"language-\"]::selection,\npre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection,\ncode[class*=\"language-\"] ::selection {\n text-shadow: none;\n background: #b3d4fc;\n}\n@media print {\n code[class*=\"language-\"],\n pre[class*=\"language-\"] {\n text-shadow: none;\n }\n}\n\npre[class*=\"language-\"] {\n padding: 1em;\n margin: 0.5em 0;\n overflow: auto;\n}\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n background: #f5f2f0;\n}\n\n:not(pre) > code[class*=\"language-\"] {\n padding: 0.1em;\n border-radius: 0.3em;\n white-space: normal;\n}\n.tinymce__oxide--token.tinymce__oxide--comment,\n.tinymce__oxide--token.tinymce__oxide--prolog,\n.tinymce__oxide--token.tinymce__oxide--doctype,\n.tinymce__oxide--token.tinymce__oxide--cdata {\n color: slategray;\n}\n.tinymce__oxide--token.tinymce__oxide--punctuation {\n color: #999;\n}\n.tinymce__oxide--namespace {\n opacity: 0.7;\n}\n.tinymce__oxide--token.tinymce__oxide--property,\n.tinymce__oxide--token.tinymce__oxide--tag,\n.tinymce__oxide--token.tinymce__oxide--boolean,\n.tinymce__oxide--token.tinymce__oxide--number,\n.tinymce__oxide--token.tinymce__oxide--constant,\n.tinymce__oxide--token.tinymce__oxide--symbol,\n.tinymce__oxide--token.tinymce__oxide--deleted {\n color: #905;\n}\n.tinymce__oxide--token.tinymce__oxide--selector,\n.tinymce__oxide--token.tinymce__oxide--attr-name,\n.tinymce__oxide--token.tinymce__oxide--string,\n.tinymce__oxide--token.tinymce__oxide--char,\n.tinymce__oxide--token.tinymce__oxide--builtin,\n.tinymce__oxide--token.tinymce__oxide--inserted {\n color: #690;\n}\n.tinymce__oxide--token.tinymce__oxide--operator,\n.tinymce__oxide--token.tinymce__oxide--entity,\n.tinymce__oxide--token.tinymce__oxide--url,\n.tinymce__oxide--language-css .tinymce__oxide--token.tinymce__oxide--string,\n.tinymce__oxide--style .tinymce__oxide--token.tinymce__oxide--string {\n color: #9a6e3a;\n background: hsla(0, 0%, 100%, 0.5);\n}\n.tinymce__oxide--token.tinymce__oxide--atrule,\n.tinymce__oxide--token.tinymce__oxide--attr-value,\n.tinymce__oxide--token.tinymce__oxide--keyword {\n color: #07a;\n}\n.tinymce__oxide--token.tinymce__oxide--function,\n.tinymce__oxide--token.tinymce__oxide--class-name {\n color: #DD4A68;\n}\n.tinymce__oxide--token.tinymce__oxide--regex,\n.tinymce__oxide--token.tinymce__oxide--important,\n.tinymce__oxide--token.tinymce__oxide--variable {\n color: #e90;\n}\n.tinymce__oxide--token.tinymce__oxide--important,\n.tinymce__oxide--token.tinymce__oxide--bold {\n font-weight: bold;\n}\n.tinymce__oxide--token.tinymce__oxide--italic {\n font-style: italic;\n}\n.tinymce__oxide--token.tinymce__oxide--entity {\n cursor: help;\n}\n\n.tinymce__oxide--mce-content-body {\n overflow-wrap: break-word;\n word-wrap: break-word;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-visual-caret {\n background-color: black;\n background-color: currentColor;\n position: absolute;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-visual-caret-hidden {\n display: none;\n}\n.tinymce__oxide--mce-content-body *[data-mce-caret] {\n left: -1000px;\n margin: 0;\n padding: 0;\n position: absolute;\n right: auto;\n top: 0;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-offscreen-selection {\n left: -2000000px;\n max-width: 1000000px;\n position: absolute;\n}\n.tinymce__oxide--mce-content-body *[contentEditable=false] {\n cursor: default;\n}\n.tinymce__oxide--mce-content-body *[contentEditable=true] {\n cursor: text;\n}\n.tinymce__oxide--tox-cursor-format-painter {\n cursor: url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A\"), default;\n}\n.tinymce__oxide--mce-content-body figure.tinymce__oxide--align-left {\n float: left;\n}\n[dir=\"ltr\"] .tinymce__oxide--mce-content-body figure.tinymce__oxide--align-left {\n float: left;\n}\n[dir=\"rtl\"] .tinymce__oxide--mce-content-body figure.tinymce__oxide--align-left {\n float: left;\n}\n.tinymce__oxide--mce-content-body figure.tinymce__oxide--align-right {\n float: right;\n}\n[dir=\"ltr\"] .tinymce__oxide--mce-content-body figure.tinymce__oxide--align-right {\n float: right;\n}\n[dir=\"rtl\"] .tinymce__oxide--mce-content-body figure.tinymce__oxide--align-right {\n float: right;\n}\n.tinymce__oxide--mce-content-body figure.tinymce__oxide--image.tinymce__oxide--align-center {\n display: table;\n margin-left: auto;\n margin-right: auto;\n}\n.tinymce__oxide--mce-preview-object {\n border: 1px solid gray;\n display: inline-block;\n line-height: 0;\n margin: 0 2px 0 2px;\n position: relative;\n}\n.tinymce__oxide--mce-preview-object .tinymce__oxide--mce-shim {\n background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tinymce__oxide--mce-preview-object[data-mce-selected=\"2\"] .tinymce__oxide--mce-shim {\n display: none;\n}\n.tinymce__oxide--mce-object {\n background: transparent url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A\") no-repeat center;\n border: 1px dashed #aaa;\n}\n.tinymce__oxide--mce-pagebreak {\n border: 1px dashed #aaa;\n cursor: default;\n display: block;\n height: 5px;\n margin-top: 15px;\n page-break-before: always;\n width: 100%;\n}\n@media print {\n .tinymce__oxide--mce-pagebreak {\n border: 0;\n }\n}\n.tinymce__oxide--tiny-pageembed .tinymce__oxide--mce-shim {\n background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tinymce__oxide--tiny-pageembed[data-mce-selected=\"2\"] .tinymce__oxide--mce-shim {\n display: none;\n}\n.tinymce__oxide--tiny-pageembed {\n display: inline-block;\n position: relative;\n}\n.tinymce__oxide--tiny-pageembed--21by9,\n.tinymce__oxide--tiny-pageembed--16by9,\n.tinymce__oxide--tiny-pageembed--4by3,\n.tinymce__oxide--tiny-pageembed--1by1 {\n display: block;\n overflow: hidden;\n padding: 0;\n position: relative;\n width: 100%;\n}\n.tinymce__oxide--tiny-pageembed--21by9 {\n padding-top: 42.857143%;\n}\n.tinymce__oxide--tiny-pageembed--16by9 {\n padding-top: 56.25%;\n}\n.tinymce__oxide--tiny-pageembed--4by3 {\n padding-top: 75%;\n}\n.tinymce__oxide--tiny-pageembed--1by1 {\n padding-top: 100%;\n}\n.tinymce__oxide--tiny-pageembed--21by9 iframe,\n.tinymce__oxide--tiny-pageembed--16by9 iframe,\n.tinymce__oxide--tiny-pageembed--4by3 iframe,\n.tinymce__oxide--tiny-pageembed--1by1 iframe {\n border: 0;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tinymce__oxide--mce-content-body[data-mce-placeholder] {\n position: relative;\n}\n.tinymce__oxide--mce-content-body[data-mce-placeholder]:not(.tinymce__oxide--mce-visualblocks)::before {\n color: rgba(34, 47, 62, 0.7);\n content: attr(data-mce-placeholder);\n position: absolute;\n}\n.tinymce__oxide--mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.tinymce__oxide--mce-visualblocks)::before {\n left: 1px;\n}\n.tinymce__oxide--mce-content-body[dir=rtl][data-mce-placeholder]:not(.tinymce__oxide--mce-visualblocks)::before {\n right: 1px;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle {\n background-color: #4099ff;\n border-color: #4099ff;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n height: 10px;\n position: absolute;\n width: 10px;\n z-index: 10000;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle:hover {\n background-color: #4099ff;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle:nth-of-type(1) {\n cursor: nwse-resize;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle:nth-of-type(2) {\n cursor: nesw-resize;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle:nth-of-type(3) {\n cursor: nwse-resize;\n}\n.tinymce__oxide--mce-content-body div.tinymce__oxide--mce-resizehandle:nth-of-type(4) {\n cursor: nesw-resize;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-resize-backdrop {\n z-index: 10000;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-clonedresizable {\n cursor: default;\n opacity: 0.5;\n outline: 1px dashed black;\n position: absolute;\n z-index: 10001;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-clonedresizable.tinymce__oxide--mce-resizetable-columns th,\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-clonedresizable.tinymce__oxide--mce-resizetable-columns td {\n border: 0;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-resize-helper {\n background: #555;\n background: rgba(0, 0, 0, 0.75);\n border: 1px;\n border-radius: 3px;\n color: white;\n display: none;\n font-family: sans-serif;\n font-size: 12px;\n line-height: 14px;\n margin: 5px 10px;\n padding: 5px;\n position: absolute;\n white-space: nowrap;\n z-index: 10002;\n}\n.tinymce__oxide--tox-rtc-user-selection {\n position: relative;\n}\n.tinymce__oxide--tox-rtc-user-cursor {\n bottom: 0;\n cursor: default;\n position: absolute;\n top: 0;\n width: 2px;\n}\n.tinymce__oxide--tox-rtc-user-cursor::before {\n background-color: inherit;\n border-radius: 50%;\n content: '';\n display: block;\n height: 8px;\n position: absolute;\n right: -3px;\n top: -3px;\n width: 8px;\n}\n.tinymce__oxide--tox-rtc-user-cursor:hover::after {\n background-color: inherit;\n border-radius: 100px;\n box-sizing: border-box;\n color: #fff;\n content: attr(data-user);\n display: block;\n font-size: 12px;\n font-weight: bold;\n left: -5px;\n min-height: 8px;\n min-width: 8px;\n padding: 0 12px;\n position: absolute;\n top: -11px;\n white-space: nowrap;\n z-index: 1000;\n}\n.tinymce__oxide--tox-rtc-user-selection--1 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #2dc26b;\n}\n.tinymce__oxide--tox-rtc-user-selection--2 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #e03e2d;\n}\n.tinymce__oxide--tox-rtc-user-selection--3 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #f1c40f;\n}\n.tinymce__oxide--tox-rtc-user-selection--4 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #3598db;\n}\n.tinymce__oxide--tox-rtc-user-selection--5 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #b96ad9;\n}\n.tinymce__oxide--tox-rtc-user-selection--6 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #e67e23;\n}\n.tinymce__oxide--tox-rtc-user-selection--7 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #aaa69d;\n}\n.tinymce__oxide--tox-rtc-user-selection--8 .tinymce__oxide--tox-rtc-user-cursor {\n background-color: #f368e0;\n}\n.tinymce__oxide--tox-rtc-remote-image {\n background: #eaeaea url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A\") no-repeat center center;\n border: 1px solid #ccc;\n min-height: 240px;\n min-width: 320px;\n}\n.tinymce__oxide--mce-match-marker {\n background: #aaa;\n color: #fff;\n}\n.tinymce__oxide--mce-match-marker-selected {\n background: #39f;\n color: #fff;\n}\n.tinymce__oxide--mce-match-marker-selected::selection {\n background: #39f;\n color: #fff;\n}\n.tinymce__oxide--mce-content-body img[data-mce-selected],\n.tinymce__oxide--mce-content-body video[data-mce-selected],\n.tinymce__oxide--mce-content-body audio[data-mce-selected],\n.tinymce__oxide--mce-content-body object[data-mce-selected],\n.tinymce__oxide--mce-content-body embed[data-mce-selected],\n.tinymce__oxide--mce-content-body table[data-mce-selected] {\n outline: 3px solid #b4d7ff;\n}\n.tinymce__oxide--mce-content-body hr[data-mce-selected] {\n outline: 3px solid #b4d7ff;\n outline-offset: 1px;\n}\n.tinymce__oxide--mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {\n outline: 3px solid #b4d7ff;\n}\n.tinymce__oxide--mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {\n outline: 3px solid #b4d7ff;\n}\n.tinymce__oxide--mce-content-body *[contentEditable=false][data-mce-selected] {\n cursor: not-allowed;\n outline: 3px solid #b4d7ff;\n}\n.tinymce__oxide--mce-content-body.tinymce__oxide--mce-content-readonly *[contentEditable=true]:focus,\n.tinymce__oxide--mce-content-body.tinymce__oxide--mce-content-readonly *[contentEditable=true]:hover {\n outline: none;\n}\n.tinymce__oxide--mce-content-body *[data-mce-selected=\"inline-boundary\"] {\n background-color: #b4d7ff;\n}\n.tinymce__oxide--mce-content-body .tinymce__oxide--mce-edit-focus {\n outline: 3px solid #b4d7ff;\n}\n.tinymce__oxide--mce-content-body td[data-mce-selected],\n.tinymce__oxide--mce-content-body th[data-mce-selected] {\n position: relative;\n}\n.tinymce__oxide--mce-content-body td[data-mce-selected]::selection,\n.tinymce__oxide--mce-content-body th[data-mce-selected]::selection {\n background: none;\n}\n.tinymce__oxide--mce-content-body td[data-mce-selected] *,\n.tinymce__oxide--mce-content-body th[data-mce-selected] * {\n outline: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n user-select: none;\n}\n.tinymce__oxide--mce-content-body td[data-mce-selected]::after,\n.tinymce__oxide--mce-content-body th[data-mce-selected]::after {\n background-color: rgba(180, 215, 255, 0.7);\n border: 1px solid rgba(180, 215, 255, 0.7);\n bottom: -1px;\n content: '';\n left: -1px;\n mix-blend-mode: multiply;\n position: absolute;\n right: -1px;\n top: -1px;\n}\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\n .tinymce__oxide--mce-content-body td[data-mce-selected]::after,\n .tinymce__oxide--mce-content-body th[data-mce-selected]::after {\n border-color: rgba(0, 84, 180, 0.7);\n }\n}\n.tinymce__oxide--mce-content-body img::selection {\n background: none;\n}\n.tinymce__oxide--ephox-snooker-resizer-bar {\n background-color: #b4d7ff;\n opacity: 0;\n -webkit-user-select: none;\n user-select: none;\n}\n.tinymce__oxide--ephox-snooker-resizer-cols {\n cursor: col-resize;\n}\n.tinymce__oxide--ephox-snooker-resizer-rows {\n cursor: row-resize;\n}\n.tinymce__oxide--ephox-snooker-resizer-bar.tinymce__oxide--ephox-snooker-resizer-bar-dragging {\n opacity: 1;\n}\n.tinymce__oxide--mce-spellchecker-word {\n background-image: url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A\");\n background-position: 0 calc(100% + 1px);\n background-repeat: repeat-x;\n background-size: auto 6px;\n cursor: default;\n height: 2rem;\n}\n.tinymce__oxide--mce-spellchecker-grammar {\n background-image: url(\"data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A\");\n background-position: 0 calc(100% + 1px);\n background-repeat: repeat-x;\n background-size: auto 6px;\n cursor: default;\n}\n.tinymce__oxide--mce-toc {\n border: 1px solid gray;\n}\n.tinymce__oxide--mce-toc h2 {\n margin: 4px;\n}\n.tinymce__oxide--mce-toc li {\n list-style-type: none;\n}\ntable[style*=\"border-width: 0px\"],\n.tinymce__oxide--mce-item-table:not([border]),\n.tinymce__oxide--mce-item-table[border=\"0\"],\ntable[style*=\"border-width: 0px\"] td,\n.tinymce__oxide--mce-item-table:not([border]) td,\n.tinymce__oxide--mce-item-table[border=\"0\"] td,\ntable[style*=\"border-width: 0px\"] th,\n.tinymce__oxide--mce-item-table:not([border]) th,\n.tinymce__oxide--mce-item-table[border=\"0\"] th,\ntable[style*=\"border-width: 0px\"] caption,\n.tinymce__oxide--mce-item-table:not([border]) caption,\n.tinymce__oxide--mce-item-table[border=\"0\"] caption {\n border: 1px dashed #bbb;\n}\n.tinymce__oxide--mce-visualblocks p,\n.tinymce__oxide--mce-visualblocks h1,\n.tinymce__oxide--mce-visualblocks h2,\n.tinymce__oxide--mce-visualblocks h3,\n.tinymce__oxide--mce-visualblocks h4,\n.tinymce__oxide--mce-visualblocks h5,\n.tinymce__oxide--mce-visualblocks h6,\n.tinymce__oxide--mce-visualblocks div:not([data-mce-bogus]),\n.tinymce__oxide--mce-visualblocks section,\n.tinymce__oxide--mce-visualblocks article,\n.tinymce__oxide--mce-visualblocks blockquote,\n.tinymce__oxide--mce-visualblocks address,\n.tinymce__oxide--mce-visualblocks pre,\n.tinymce__oxide--mce-visualblocks figure,\n.tinymce__oxide--mce-visualblocks figcaption,\n.tinymce__oxide--mce-visualblocks hgroup,\n.tinymce__oxide--mce-visualblocks aside,\n.tinymce__oxide--mce-visualblocks ul,\n.tinymce__oxide--mce-visualblocks ol,\n.tinymce__oxide--mce-visualblocks dl {\n background-repeat: no-repeat;\n border: 1px dashed #bbb;\n margin-left: 3px;\n padding-top: 10px;\n}\n.tinymce__oxide--mce-visualblocks p {\n background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);\n}\n.tinymce__oxide--mce-visualblocks h1 {\n background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);\n}\n.tinymce__oxide--mce-visualblocks h2 {\n background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);\n}\n.tinymce__oxide--mce-visualblocks h3 {\n background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);\n}\n.tinymce__oxide--mce-visualblocks h4 {\n background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);\n}\n.tinymce__oxide--mce-visualblocks h5 {\n background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);\n}\n.tinymce__oxide--mce-visualblocks h6 {\n background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);\n}\n.tinymce__oxide--mce-visualblocks div:not([data-mce-bogus]) {\n background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);\n}\n.tinymce__oxide--mce-visualblocks section {\n background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);\n}\n.tinymce__oxide--mce-visualblocks article {\n background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);\n}\n.tinymce__oxide--mce-visualblocks blockquote {\n background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);\n}\n.tinymce__oxide--mce-visualblocks address {\n background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);\n}\n.tinymce__oxide--mce-visualblocks pre {\n background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);\n}\n.tinymce__oxide--mce-visualblocks figure {\n background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);\n}\n.tinymce__oxide--mce-visualblocks figcaption {\n border: 1px dashed #bbb;\n}\n.tinymce__oxide--mce-visualblocks hgroup {\n background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);\n}\n.tinymce__oxide--mce-visualblocks aside {\n background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);\n}\n.tinymce__oxide--mce-visualblocks ul {\n background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);\n}\n.tinymce__oxide--mce-visualblocks ol {\n background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);\n}\n.tinymce__oxide--mce-visualblocks dl {\n background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);\n}\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) p,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h1,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h2,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h3,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h4,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h5,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) h6,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) section,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) article,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) blockquote,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) address,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) pre,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) figure,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) figcaption,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) hgroup,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) aside,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) ul,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) ol,\n.tinymce__oxide--mce-visualblocks:not([dir=rtl]) dl {\n margin-left: 3px;\n}\n.tinymce__oxide--mce-visualblocks[dir=rtl] p,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h1,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h2,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h3,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h4,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h5,\n.tinymce__oxide--mce-visualblocks[dir=rtl] h6,\n.tinymce__oxide--mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),\n.tinymce__oxide--mce-visualblocks[dir=rtl] section,\n.tinymce__oxide--mce-visualblocks[dir=rtl] article,\n.tinymce__oxide--mce-visualblocks[dir=rtl] blockquote,\n.tinymce__oxide--mce-visualblocks[dir=rtl] address,\n.tinymce__oxide--mce-visualblocks[dir=rtl] pre,\n.tinymce__oxide--mce-visualblocks[dir=rtl] figure,\n.tinymce__oxide--mce-visualblocks[dir=rtl] figcaption,\n.tinymce__oxide--mce-visualblocks[dir=rtl] hgroup,\n.tinymce__oxide--mce-visualblocks[dir=rtl] aside,\n.tinymce__oxide--mce-visualblocks[dir=rtl] ul,\n.tinymce__oxide--mce-visualblocks[dir=rtl] ol,\n.tinymce__oxide--mce-visualblocks[dir=rtl] dl {\n background-position-x: right;\n margin-right: 3px;\n}\n.tinymce__oxide--mce-nbsp,\n.tinymce__oxide--mce-shy {\n background: #aaa;\n}\n.tinymce__oxide--mce-shy::after {\n content: '-';\n}\nbody {\n font-family: sans-serif;\n}\ntable {\n border-collapse: collapse;\n}\n`;\n },\n 'mce-content-body': 'tinymce__oxide--mce-content-body',\n 'mce-item-anchor': 'tinymce__oxide--mce-item-anchor',\n 'tox-comments-visible': 'tinymce__oxide--tox-comments-visible',\n 'tox-comment': 'tinymce__oxide--tox-comment',\n 'tox-comment--active': 'tinymce__oxide--tox-comment--active',\n 'tox-checklist': 'tinymce__oxide--tox-checklist',\n 'tox-checklist--hidden': 'tinymce__oxide--tox-checklist--hidden',\n 'tox-checklist--checked': 'tinymce__oxide--tox-checklist--checked',\n 'token': 'tinymce__oxide--token',\n 'comment': 'tinymce__oxide--comment',\n 'prolog': 'tinymce__oxide--prolog',\n 'doctype': 'tinymce__oxide--doctype',\n 'cdata': 'tinymce__oxide--cdata',\n 'punctuation': 'tinymce__oxide--punctuation',\n 'namespace': 'tinymce__oxide--namespace',\n 'property': 'tinymce__oxide--property',\n 'tag': 'tinymce__oxide--tag',\n 'boolean': 'tinymce__oxide--boolean',\n 'number': 'tinymce__oxide--number',\n 'constant': 'tinymce__oxide--constant',\n 'symbol': 'tinymce__oxide--symbol',\n 'deleted': 'tinymce__oxide--deleted',\n 'selector': 'tinymce__oxide--selector',\n 'attr-name': 'tinymce__oxide--attr-name',\n 'string': 'tinymce__oxide--string',\n 'char': 'tinymce__oxide--char',\n 'builtin': 'tinymce__oxide--builtin',\n 'inserted': 'tinymce__oxide--inserted',\n 'operator': 'tinymce__oxide--operator',\n 'entity': 'tinymce__oxide--entity',\n 'url': 'tinymce__oxide--url',\n 'language-css': 'tinymce__oxide--language-css',\n 'style': 'tinymce__oxide--style',\n 'atrule': 'tinymce__oxide--atrule',\n 'attr-value': 'tinymce__oxide--attr-value',\n 'keyword': 'tinymce__oxide--keyword',\n 'function': 'tinymce__oxide--function',\n 'class-name': 'tinymce__oxide--class-name',\n 'regex': 'tinymce__oxide--regex',\n 'important': 'tinymce__oxide--important',\n 'variable': 'tinymce__oxide--variable',\n 'bold': 'tinymce__oxide--bold',\n 'italic': 'tinymce__oxide--italic',\n 'mce-visual-caret': 'tinymce__oxide--mce-visual-caret',\n 'mce-visual-caret-hidden': 'tinymce__oxide--mce-visual-caret-hidden',\n 'mce-offscreen-selection': 'tinymce__oxide--mce-offscreen-selection',\n 'tox-cursor-format-painter': 'tinymce__oxide--tox-cursor-format-painter',\n 'align-left': 'tinymce__oxide--align-left',\n 'align-right': 'tinymce__oxide--align-right',\n 'image': 'tinymce__oxide--image',\n 'align-center': 'tinymce__oxide--align-center',\n 'mce-preview-object': 'tinymce__oxide--mce-preview-object',\n 'mce-shim': 'tinymce__oxide--mce-shim',\n 'mce-object': 'tinymce__oxide--mce-object',\n 'mce-pagebreak': 'tinymce__oxide--mce-pagebreak',\n 'tiny-pageembed': 'tinymce__oxide--tiny-pageembed',\n 'tiny-pageembed--21by9': 'tinymce__oxide--tiny-pageembed--21by9',\n 'tiny-pageembed--16by9': 'tinymce__oxide--tiny-pageembed--16by9',\n 'tiny-pageembed--4by3': 'tinymce__oxide--tiny-pageembed--4by3',\n 'tiny-pageembed--1by1': 'tinymce__oxide--tiny-pageembed--1by1',\n 'mce-visualblocks': 'tinymce__oxide--mce-visualblocks',\n 'mce-resizehandle': 'tinymce__oxide--mce-resizehandle',\n 'mce-resize-backdrop': 'tinymce__oxide--mce-resize-backdrop',\n 'mce-clonedresizable': 'tinymce__oxide--mce-clonedresizable',\n 'mce-resizetable-columns': 'tinymce__oxide--mce-resizetable-columns',\n 'mce-resize-helper': 'tinymce__oxide--mce-resize-helper',\n 'tox-rtc-user-selection': 'tinymce__oxide--tox-rtc-user-selection',\n 'tox-rtc-user-cursor': 'tinymce__oxide--tox-rtc-user-cursor',\n 'tox-rtc-user-selection--1': 'tinymce__oxide--tox-rtc-user-selection--1',\n 'tox-rtc-user-selection--2': 'tinymce__oxide--tox-rtc-user-selection--2',\n 'tox-rtc-user-selection--3': 'tinymce__oxide--tox-rtc-user-selection--3',\n 'tox-rtc-user-selection--4': 'tinymce__oxide--tox-rtc-user-selection--4',\n 'tox-rtc-user-selection--5': 'tinymce__oxide--tox-rtc-user-selection--5',\n 'tox-rtc-user-selection--6': 'tinymce__oxide--tox-rtc-user-selection--6',\n 'tox-rtc-user-selection--7': 'tinymce__oxide--tox-rtc-user-selection--7',\n 'tox-rtc-user-selection--8': 'tinymce__oxide--tox-rtc-user-selection--8',\n 'tox-rtc-remote-image': 'tinymce__oxide--tox-rtc-remote-image',\n 'mce-match-marker': 'tinymce__oxide--mce-match-marker',\n 'mce-match-marker-selected': 'tinymce__oxide--mce-match-marker-selected',\n 'mce-content-readonly': 'tinymce__oxide--mce-content-readonly',\n 'mce-edit-focus': 'tinymce__oxide--mce-edit-focus',\n 'ephox-snooker-resizer-bar': 'tinymce__oxide--ephox-snooker-resizer-bar',\n 'ephox-snooker-resizer-cols': 'tinymce__oxide--ephox-snooker-resizer-cols',\n 'ephox-snooker-resizer-rows': 'tinymce__oxide--ephox-snooker-resizer-rows',\n 'ephox-snooker-resizer-bar-dragging': 'tinymce__oxide--ephox-snooker-resizer-bar-dragging',\n 'mce-spellchecker-word': 'tinymce__oxide--mce-spellchecker-word',\n 'mce-spellchecker-grammar': 'tinymce__oxide--mce-spellchecker-grammar',\n 'mce-toc': 'tinymce__oxide--mce-toc',\n 'mce-item-table': 'tinymce__oxide--mce-item-table',\n 'mce-nbsp': 'tinymce__oxide--mce-nbsp',\n 'mce-shy': 'tinymce__oxide--mce-shy'\n};\n\nconst RestoreAutoSaveModal = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(2), __webpack_require__.e(69)]).then(__webpack_require__.bind(null, /*! ./RestoreAutoSaveModal */ \"./src/rce/RestoreAutoSaveModal.js\")));\nconst RceHtmlEditor = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(25), __webpack_require__.e(68)]).then(__webpack_require__.bind(null, /*! ./RceHtmlEditor */ \"./src/rce/RceHtmlEditor.js\")));\nconst ASYNC_FOCUS_TIMEOUT = 250;\nconst DEFAULT_RCE_HEIGHT = '400px';\nconst toolbarPropType = prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n // name of the toolbar the items are added to\n // if this toolbar doesn't exist, it is created\n // tinymce toolbar config does not\n // include a key to identify the individual toolbars, just a name\n // which is translated. This toolbar's name must be translated\n // in order to be merged correctly.\n name: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n // items added to the toolbar\n // each is the name of the button some plugin has\n // registered with tinymce\n items: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string).isRequired\n}));\nconst menuPropType = prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.objectOf( // the key is the name of the menu item a plugin has\n// registered with tinymce. If it does not exist in the\n// default menubar, it will be added.\nprop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n // if this is a new menu in the menubar, title is it's label.\n // if these are items being merged into an existing menu, title is ignored\n title: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n // items is a space separated list it menu_items\n // some plugin has registered with tinymce\n items: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired\n}));\nconst ltiToolsPropType = prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n // id of the tool\n id: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number]),\n // is this a favorite tool?\n favorite: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool\n}));\nconst editorOptionsPropType = prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n // height of the RCE.\n // if a number interpreted as pixels.\n // if a string as a CSS value.\n height: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string]),\n // entries you want merged into the toolbar. See toolBarPropType above.\n toolbar: toolbarPropType,\n // entries you want merged into to the menus. See menuPropType above.\n // If an entry defines a new menu, tinymce's menubar config option will\n // be updated for you. In fact, if you provide an editorOptions.menubar value\n // it will be overwritten.\n menu: menuPropType,\n // additional plugins that get merged into the default list of plugins\n // it is up to you to import the plugin's definition which will\n // register it and any related toolbar or menu entries with tinymce.\n plugins: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string),\n // is this RCE readonly?\n readonly: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool\n});\nconst skinCSS = skinCSSBinding.template().replace(/tinymce__oxide--/g, '');\nconst contentCSS = contentCSSBinding.template().replace(/tinymce__oxide--/g, ''); // If we ever get our jest tests configured so they can handle importing real esModules,\n// we can move this to plugins/instructure-ui-icons/plugin.js like the rest.\n\nfunction addKebabIcon(editor) {\n editor.ui.registry.addIcon('more-drawer', `\n <svg viewBox=\"0 0 1920 1920\">\n <path d=\"M1129.412 1637.647c0 93.448-75.964 169.412-169.412 169.412-93.448 0-169.412-75.964-169.412-169.412 0-93.447 75.964-169.412 169.412-169.412 93.448 0 169.412 75.965 169.412 169.412zm0-677.647c0 93.448-75.964 169.412-169.412 169.412-93.448 0-169.412-75.964-169.412-169.412 0-93.448 75.964-169.412 169.412-169.412 93.448 0 169.412 75.964 169.412 169.412zm0-677.647c0 93.447-75.964 169.412-169.412 169.412-93.448 0-169.412-75.965-169.412-169.412 0-93.448 75.964-169.412 169.412-169.412 93.448 0 169.412 75.964 169.412 169.412z\" stroke=\"none\" stroke-width=\"1\" fill-rule=\"evenodd\"/>\n </svg>\n `);\n} // Get oxide the default skin injected into the DOM before the overrides loaded by themeable\n\n\nlet inserted = false;\n\nfunction injectTinySkin() {\n if (inserted) return;\n inserted = true;\n const style = document.createElement('style');\n style.setAttribute('data-skin', 'tiny oxide skin');\n style.appendChild( // the .replace here is because the ui-themeable babel hook adds that prefix to all the class names\n document.createTextNode(skinCSS));\n const beforeMe = document.head.querySelector('style[data-glamor]') || // find instui's themeable stylesheet\n document.head.querySelector('style') || // find any stylesheet\n document.head.firstElementChild;\n document.head.insertBefore(style, beforeMe);\n}\n\nconst editorWrappers = new WeakMap();\n\nfunction focusToolbar(el) {\n const $firstToolbarButton = el.querySelector('.tox-tbtn');\n $firstToolbarButton && $firstToolbarButton.focus();\n}\n\nfunction focusFirstMenuButton(el) {\n const $firstMenu = el.querySelector('.tox-mbtn');\n $firstMenu && $firstMenu.focus();\n}\n\nfunction isElementWithinTable(node) {\n let elem = node;\n\n while (elem) {\n if (elem.tagName === 'TABLE' || elem.tagName === 'TD' || elem.tagName === 'TH') {\n return true;\n }\n\n elem = elem.parentElement;\n }\n\n return false;\n} // determines if localStorage is available for our use.\n// see https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\n\n\nfunction storageAvailable() {\n let storage;\n\n try {\n storage = window.localStorage;\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n } catch (e) {\n return e instanceof DOMException && ( // everything except Firefox\n e.code === 22 || // Firefox\n e.code === 1014 || // test name field too, because code might not be present\n // everything except Firefox\n e.name === 'QuotaExceededError' || // Firefox\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') && // acknowledge QuotaExceededError only if there's something already stored\n storage && storage.length !== 0;\n }\n}\n\nfunction getHtmlEditorCookie() {\n const value = Object(_common_getCookie__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('rce.htmleditor');\n return value === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"] || value === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"] ? value : _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"];\n}\n\nfunction renderLoading() {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Loading');\n} // safari implements only the webkit prefixed version of the fullscreen api\n\n\nconst FS_ELEMENT = document.fullscreenElement === undefined ? 'webkitFullscreenElement' : 'fullscreenElement';\nconst FS_REQUEST = document.body.requestFullscreen ? 'requestFullscreen' : 'webkitRequestFullscreen';\nconst FS_EXIT = document.exitFullscreen ? 'exitFullscreen' : 'webkitExitFullscreen';\nlet alertIdValue = 0;\nlet RCEWrapper = (_dec = Object(_instructure_ui_themeable__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_skins_theme__WEBPACK_IMPORTED_MODULE_27__[\"default\"], styles), _dec(_class = (_class2 = class RCEWrapper extends react__WEBPACK_IMPORTED_MODULE_3___default.a.Component {\n static getByEditor(editor) {\n return editorWrappers.get(editor);\n }\n\n constructor(props) {\n var _this, _props$editorOptions;\n\n super(props);\n _this = this;\n\n this.onRemove = () => {\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].detachEditor(this);\n this.props.onRemove && this.props.onRemove(this);\n };\n\n this.toggleView = newView => {\n // coming from the menubar, we don't have a newView,\n const wasFullscreen = this._isFullscreen();\n\n if (wasFullscreen) this._exitFullscreen();\n let newState;\n\n switch (this.state.editorView) {\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]:\n newState = {\n editorView: newView || _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"]\n };\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"]:\n newState = {\n editorView: newView || _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]\n };\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]:\n newState = {\n editorView: newView || _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]\n };\n }\n\n this.setState(newState, () => {\n if (wasFullscreen) {\n window.setTimeout(() => {\n this._enterFullscreen();\n }, 200); // due to the animation it takes some time for fullscreen to complete\n }\n });\n this.checkAccessibility();\n\n if (newView === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"] || newView === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]) {\n document.cookie = `rce.htmleditor=${newView};path=/;max-age=31536000`;\n } // Emit view change event\n\n\n this.mceInstance().fire(_customEvents__WEBPACK_IMPORTED_MODULE_25__[\"VIEW_CHANGE\"], {\n target: this.editor,\n newView: newState.editorView\n });\n };\n\n this.contentTrayClosing = false;\n this.blurTimer = 0;\n\n this.handleFocusRCE = event => {\n this.handleFocus(event);\n };\n\n this.handleBlurRCE = event => {\n var _this$_elementRef$cur;\n\n if (event.relatedTarget === null) {\n // focus might be moving to tinymce\n this.handleBlur(event);\n }\n\n if (!((_this$_elementRef$cur = this._elementRef.current) !== null && _this$_elementRef$cur !== void 0 && _this$_elementRef$cur.contains(event.relatedTarget))) {\n this.handleBlur(event);\n }\n };\n\n this.handleFocusEditor = (event, _editor) => {\n // use .active to put a focus ring around the content area\n // when the editor has focus. This isn't perfect, but it's\n // what we've got for now.\n const ifr = this.iframe;\n ifr && ifr.parentElement.classList.add('active');\n\n this._forceCloseFloatingToolbar();\n\n this.handleFocus(event);\n };\n\n this.handleFocusHtmlEditor = event => {\n this.handleFocus(event);\n };\n\n this.handleBlurEditor = (event, _editor) => {\n const ifr = this.iframe;\n ifr && ifr.parentElement.classList.remove('active');\n this.handleBlur(event);\n };\n\n this.handleKey = event => {\n if (event.code === 'F9' && event.altKey) {\n event.preventDefault();\n event.stopPropagation();\n this.setFocusAbilityForHeader(true);\n focusFirstMenuButton(this._elementRef.current);\n } else if (event.code === 'F10' && event.altKey) {\n event.preventDefault();\n event.stopPropagation();\n this.setFocusAbilityForHeader(true);\n focusToolbar(this._elementRef.current);\n } else if ((event.code === 'F8' || event.code === 'Digit0') && event.altKey) {\n event.preventDefault();\n event.stopPropagation();\n this.openKBShortcutModal();\n } else if (event.code === 'Escape') {\n this._forceCloseFloatingToolbar();\n\n if (this.state.fullscreenState.isTinyFullscreen) {\n this.mceInstance().execCommand('mceFullScreen'); // turn it off\n } else {\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].hideTrays();\n }\n } else if (['n', 'N', 'd', 'D'].indexOf(event.key) !== -1) {\n // Prevent key events from bubbling up on touch screen device\n event.stopPropagation();\n }\n };\n\n this.handleClickFullscreen = () => {\n if (this._isFullscreen()) {\n this._exitFullscreen();\n } else {\n this._enterFullscreen();\n }\n };\n\n this.handleExternalClick = () => {\n this._forceCloseFloatingToolbar();\n\n Object(_instructure_debounce__WEBPACK_IMPORTED_MODULE_11__[\"debounce\"])(this.checkAccessibility, 1000)();\n };\n\n this.handleInputChange = () => {\n this.checkAccessibility();\n };\n\n this.onInit = (_event, editor) => {\n var _this$props$onInitted, _this$props;\n\n editor.rceWrapper = this;\n this.editor = editor;\n const textarea = this.editor.getElement(); // expected by canvas\n\n textarea.dataset.rich_text = true; // start with the textarea and tinymce in sync\n\n textarea.value = this.getCode();\n textarea.style.height = this.state.height; // Capture click events outside the iframe\n\n document.addEventListener('click', this.handleExternalClick);\n\n if (document.body.classList.contains('Underline-All-Links__enabled')) {\n this.iframe.contentDocument.body.classList.add('Underline-All-Links__enabled');\n }\n\n editor.on('wordCountUpdate', this.onWordCountUpdate); // add an aria-label to the application div that wraps RCE\n // and change role from \"application\" to \"document\" to ensure\n // the editor gets properly picked up by screen readers\n\n const tinyapp = document.querySelector('.tox-tinymce[role=\"application\"]');\n\n if (tinyapp) {\n tinyapp.setAttribute('aria-label', Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Rich Content Editor'));\n tinyapp.setAttribute('role', 'document');\n tinyapp.setAttribute('tabIndex', '-1');\n } // Adds a focusout event listener for handling screen reader navigation focus\n\n\n const header = this._elementRef.current.querySelector('.tox-editor-header');\n\n if (header) {\n header.addEventListener('focusout', e => {\n const leavingHeader = !header.contains(e.relatedTarget);\n\n if (leavingHeader) {\n this.setFocusAbilityForHeader(false);\n }\n });\n }\n\n this.setFocusAbilityForHeader(false); // Probably should do this in tinymce.scss, but we only want it in new rce\n\n textarea.style.resize = 'none';\n editor.on('ExecCommand', this._forceCloseFloatingToolbar);\n editor.on('keydown', this.handleKey);\n editor.on('FullscreenStateChanged', this._toggleFullscreen); // This propagates click events on the editor out of the iframe to the parent\n // document. We need this so that click events get captured properly by instui\n // focus-trapping components, so they properly ignore trapping focus on click.\n\n editor.on('click', () => window.document.body.click(), true);\n editor.on('Cut Paste Change input Undo Redo', Object(_instructure_debounce__WEBPACK_IMPORTED_MODULE_11__[\"debounce\"])(this.handleInputChange, 1000));\n this.announceContextToolbars(editor);\n\n if (this.isAutoSaving) {\n this.initAutoSave(editor);\n } // first view\n\n\n this.setEditorView(this.state.editorView); // readonly should have been handled via the init property passed\n // to <Editor>, but it's not.\n\n editor.mode.set(this.props.readOnly ? 'readonly' : 'design'); // Not using iframe_aria_text because compatibility issues.\n // Not using iframe_attrs because library overwriting.\n\n if (this.iframe) {\n this.iframe.setAttribute('title', Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Rich Text Area. Press ALT+0 for Rich Content Editor shortcuts.'));\n }\n\n (_this$props$onInitted = (_this$props = this.props).onInitted) === null || _this$props$onInitted === void 0 ? void 0 : _this$props$onInitted.call(_this$props, editor);\n };\n\n this._toggleFullscreen = event => {\n const isTinyFullscreen = event.state;\n const fullscreenState = {\n isTinyFullscreen\n };\n const header = document.getElementById('header');\n\n if (header) {\n if (isTinyFullscreen) {\n fullscreenState.headerDisp = header.style.display;\n header.style.display = 'none';\n } else {\n header.style.display = this.state.fullscreenState.headerDisp;\n }\n }\n\n this.setState({\n fullscreenState\n }); // if we're leaving fullscreen, remove event listeners on the fullscreen element\n\n if (!document[FS_ELEMENT] && this.state.fullscreenElem) {\n this.state.fullscreenElem.removeEventListener('fullscreenchange', this._toggleFullscreen);\n this.state.fullscreenElem.removeEventListener('webkitfullscreenchange', this._toggleFullscreen);\n this.setState({\n fullscreenState: {\n fullscreenElem: null\n }\n });\n } // if we don't defer setState, the pretty editor's height isn't correct\n // when entering fullscreen\n\n\n window.setTimeout(() => {\n if (document[FS_ELEMENT]) {\n this.setState(state => {\n return {\n fullscreenState: { ...state.fullscreenState,\n fullscreenElem: document[FS_ELEMENT]\n }\n };\n });\n } else {\n this.forceUpdate();\n }\n\n this.focusCurrentView();\n }, 0);\n };\n\n this._forceCloseFloatingToolbar = () => {\n if (this._elementRef.current) {\n const moreButton = this._elementRef.current.querySelector('.tox-toolbar-overlord .tox-toolbar__group:last-child button:last-child');\n\n if (moreButton !== null && moreButton !== void 0 && moreButton.getAttribute('aria-owns')) {\n // the floating toolbar is open\n moreButton.click(); // close the floating toolbar\n\n const editor = this.mceInstance(); // return focus to the editor\n\n editor === null || editor === void 0 ? void 0 : editor.focus();\n }\n }\n };\n\n this.announcing = 0;\n\n this.initAutoSave = editor => {\n this.storage = window.localStorage;\n\n if (this.storage) {\n editor.on('change Undo Redo', this.doAutoSave);\n editor.on('blur', this.doAutoSave);\n this.cleanupAutoSave();\n\n try {\n const autosaved = this.getAutoSaved(this.autoSaveKey);\n\n if (autosaved && autosaved.content) {\n // We'll compare just the text of the autosave content, since\n // Canvas is prone to swizzling images and iframes which will\n // make the editor content and autosave content never match up\n const editorContent = this.patchAutosavedContent(editor.getContent({\n no_events: true\n }), true);\n const autosavedContent = this.patchAutosavedContent(autosaved.content, true);\n\n if (autosavedContent !== editorContent) {\n this.setState({\n confirmAutoSave: true,\n autoSavedContent: this.patchAutosavedContent(autosaved.content)\n });\n } else {\n this.storage.removeItem(this.autoSaveKey);\n }\n }\n } catch (ex) {\n // log and ignore\n // eslint-disable-next-line no-console\n console.error('Failed initializing rce autosave', ex);\n }\n }\n };\n\n this.cleanupAutoSave = function () {\n let deleteAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (_this.storage) {\n const expiry = deleteAll ? Date.now() : Date.now() - _this.props.autosave.maxAge;\n let i = 0;\n let key;\n\n while (key = _this.storage.key(i++)) {\n if (/^rceautosave:/.test(key)) {\n const autosaved = _this.getAutoSaved(key);\n\n if (autosaved && autosaved.autosaveTimestamp < expiry) {\n _this.storage.removeItem(key);\n }\n }\n }\n }\n };\n\n this.restoreAutoSave = ans => {\n this.setState({\n confirmAutoSave: false\n }, () => {\n const editor = this.mceInstance();\n\n if (ans) {\n editor.setContent(this.state.autoSavedContent, {});\n }\n\n this.storage.removeItem(this.autoSaveKey);\n });\n this.checkAccessibility();\n };\n\n this.doAutoSave = function (e) {\n let retry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (_this.storage) {\n const editor = _this.mceInstance(); // if the editor is empty don't save\n\n\n if (editor.dom.isEmpty(editor.getBody())) {\n return;\n }\n\n const content = editor.getContent({\n no_events: true\n });\n\n try {\n _this.storage.setItem(_this.autoSaveKey, JSON.stringify({\n autosaveTimestamp: Date.now(),\n content\n }));\n } catch (ex) {\n if (!retry) {\n // probably failed because there's not enough space\n // delete up all the other entries and try again\n _this.cleanupAutoSave(true);\n\n _this.doAutoSave(e, true);\n } else {\n console.error('Autosave failed:', ex); // eslint-disable-line no-console\n }\n }\n }\n };\n\n this.onWordCountUpdate = e => {\n const shouldIgnore = Object(_plugins_instructure_wordcount_utils_countContent__WEBPACK_IMPORTED_MODULE_34__[\"countShouldIgnore\"])(this.editor, 'body', 'words');\n const updatedCount = e.wordCount.words - shouldIgnore;\n this.setState(state => {\n if (updatedCount !== state.wordCount) {\n return {\n wordCount: updatedCount\n };\n } else return null;\n });\n };\n\n this.onNodeChange = e => {\n // This is basically copied out of the tinymce silver theme code for the status bar\n const path = e.parents.filter(p => p.nodeName !== 'BR' && !p.getAttribute('data-mce-bogus') && p.getAttribute('data-mce-type') !== 'bookmark').map(p => p.nodeName.toLowerCase()).reverse();\n this.setState({\n path\n });\n };\n\n this.onEditorChange = (content, _editor) => {\n var _this$props$onContent, _this$props2;\n\n (_this$props$onContent = (_this$props2 = this.props).onContentChange) === null || _this$props$onContent === void 0 ? void 0 : _this$props$onContent.call(_this$props2, content);\n };\n\n this.onResize = (_e, coordinates) => {\n const editor = this.mceInstance();\n\n if (editor) {\n const container = editor.getContainer();\n if (!container) return;\n const currentContainerHeight = Number.parseInt(container.style.height, 10);\n if (isNaN(currentContainerHeight)) return; // eslint-disable-line no-restricted-globals\n\n const modifiedHeight = currentContainerHeight + coordinates.deltaY;\n const newHeight = `${modifiedHeight}px`;\n container.style.height = newHeight;\n this.getTextarea().style.height = newHeight;\n this.setState({\n height: newHeight\n }); // play nice and send the same event that the silver theme would send\n\n editor.fire('ResizeEditor');\n }\n };\n\n this.onA11yChecker = () => {\n // eslint-disable-next-line promise/catch-or-return\n this.a11yCheckerReady.then(() => {\n this.onTinyMCEInstance('openAccessibilityChecker', {\n skip_focus: true\n });\n });\n };\n\n this.checkAccessibility = () => {\n const editor = this.mceInstance();\n editor.execCommand('checkAccessibility', false, {\n done: errors => {\n this.setState({\n a11yErrorsCount: errors.length\n });\n }\n }, {\n skip_focus: true\n });\n };\n\n this.openKBShortcutModal = () => {\n this.setState({\n KBShortcutModalOpen: true,\n KBShortcutFocusReturn: document.activeElement\n });\n };\n\n this.closeKBShortcutModal = () => {\n this.setState({\n KBShortcutModalOpen: false\n });\n };\n\n this.KBShortcutModalExited = () => {\n if (this.state.KBShortcutFocusReturn === this.iframe) {\n // if the iframe has focus, we need to forward it on to tinymce\n this.editor.focus(false);\n } else if (this._showOnFocusButton && document.activeElement === document.body) {\n // when the modal is opened from the showOnFocus button, focus doesn't\n // get automatically returned to the button like it should.\n this._showOnFocusButton.focus();\n } else {\n var _this$_showOnFocusBut;\n\n (_this$_showOnFocusBut = this._showOnFocusButton) === null || _this$_showOnFocusBut === void 0 ? void 0 : _this$_showOnFocusBut.focus();\n }\n };\n\n this.setFocusAbilityForHeader = focusable => {\n // Sets aria-hidden to prevent screen readers focus in RCE menus and toolbar\n const header = this._elementRef.current.querySelector('.tox-editor-header');\n\n if (header) {\n header.setAttribute('aria-hidden', focusable ? 'false' : 'true');\n }\n };\n\n this.handleTextareaChange = () => {\n if (this.isHidden()) {\n this.setCode(this.textareaValue());\n this.doAutoSave();\n }\n };\n\n this.addAlert = alert => {\n alert.id = alertIdValue++;\n this.setState(state => {\n let messages = state.messages.concat(alert);\n messages = lodash__WEBPACK_IMPORTED_MODULE_5___default.a.uniqBy(messages, 'text'); // Don't show the same message twice\n\n return {\n messages\n };\n });\n };\n\n this.removeAlert = messageId => {\n this.setState(state => {\n const messages = state.messages.filter(message => message.id !== messageId);\n return {\n messages\n };\n });\n };\n\n this.resetAlertId = () => {\n if (this.state.messages.length > 0) {\n throw new Error('There are messages currently, you cannot reset when they are non-zero');\n }\n\n alertIdValue = 0;\n };\n\n // Set up some limited global state that can be referenced\n // as needed in RCE's components and function / plugin definitions\n // Not intended to be dynamically changed!\n _RCEGlobals__WEBPACK_IMPORTED_MODULE_19__[\"default\"].setFeatures(this.getRequiredFeatureStatuses());\n _RCEGlobals__WEBPACK_IMPORTED_MODULE_19__[\"default\"].setConfig(this.getRequiredConfigValues());\n this.editor = null; // my tinymce editor instance\n\n this.language = Object(_normalizeLocale__WEBPACK_IMPORTED_MODULE_17__[\"default\"])(this.props.language); // interface consistent with editorBox\n\n this.get_code = this.getCode;\n this.set_code = this.setCode;\n this.insert_code = this.insertCode; // test override points\n\n this.indicator = false;\n this._elementRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createRef();\n this._editorPlaceholderRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createRef();\n this._prettyHtmlEditorRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createRef();\n this._showOnFocusButton = null;\n injectTinySkin();\n let ht = ((_props$editorOptions = props.editorOptions) === null || _props$editorOptions === void 0 ? void 0 : _props$editorOptions.height) || DEFAULT_RCE_HEIGHT;\n\n if (!Number.isNaN(ht)) {\n ht = `${ht}px`;\n }\n\n const currentRCECount = document.querySelectorAll('.rce-wrapper').length;\n const maxInitRenderedRCEs = Number.isNaN(props.maxInitRenderedRCEs) ? RCEWrapper.defaultProps.maxInitRenderedRCEs : props.maxInitRenderedRCEs;\n this.state = {\n path: [],\n wordCount: 0,\n editorView: props.editorView || _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"],\n shouldShowOnFocusButton: props.renderKBShortcutModal === undefined ? true : props.renderKBShortcutModal,\n KBShortcutModalOpen: false,\n messages: [],\n announcement: null,\n confirmAutoSave: false,\n autoSavedContent: '',\n id: this.props.id || this.props.textareaId || `${Date.now()}`,\n height: ht,\n fullscreenState: {\n headerDisp: 'static',\n isTinyFullscreen: false\n },\n a11yErrorsCount: 0,\n shouldShowEditor: typeof IntersectionObserver === 'undefined' || maxInitRenderedRCEs <= 0 || currentRCECount < maxInitRenderedRCEs\n };\n this.pendingEventHandlers = []; // Get top 2 favorited LTI Tools\n\n this.ltiToolFavorites = this.props.ltiTools.filter(e => e.favorite).map(e => `instructure_external_button_${e.id}`).slice(0, 2) || [];\n this.tinymceInitOptions = this.wrapOptions(props.editorOptions);\n _alertHandler__WEBPACK_IMPORTED_MODULE_31__[\"default\"].alertFunc = this.addAlert;\n this.handleContentTrayClosing = this.handleContentTrayClosing.bind(this);\n this.a11yCheckerReady = Promise.all(/*! import() */[__webpack_require__.e(4), __webpack_require__.e(7), __webpack_require__.e(38)]).then(__webpack_require__.bind(null, /*! ./initA11yChecker */ \"./src/rce/initA11yChecker.js\")).then(initA11yChecker => {\n initA11yChecker.default(this.language);\n this.checkAccessibility();\n }).catch(err => {\n // eslint-disable-next-line no-console\n console.error('Failed initializing a11y checker', err);\n });\n }\n\n getRequiredFeatureStatuses() {\n const {\n new_equation_editor = false,\n new_math_equation_handling = false,\n rce_ux_improvements = false\n } = this.props.features;\n return {\n new_equation_editor,\n new_math_equation_handling,\n rce_ux_improvements\n };\n }\n\n getRequiredConfigValues() {\n return {\n locale: Object(_normalizeLocale__WEBPACK_IMPORTED_MODULE_17__[\"default\"])(this.props.language),\n flashAlertTimeout: this.props.flashAlertTimeout,\n timezone: this.props.timezone\n };\n }\n\n getCanvasUrl() {\n return this.props.canvasOrigin;\n } // getCode and setCode naming comes from tinyMCE\n // kind of strange but want to be consistent\n\n\n getCode() {\n return this.isHidden() ? this.textareaValue() : this.mceInstance().getContent();\n }\n\n checkReadyToGetCode(promptFunc) {\n let status = true; // Check for remaining placeholders\n\n if (this.mceInstance().dom.doc.querySelector(`[data-placeholder-for]`)) {\n status = promptFunc(Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Content is still being uploaded, if you continue it will not be embedded properly.'));\n }\n\n return status;\n }\n\n setCode(newContent) {\n var _this$mceInstance;\n\n (_this$mceInstance = this.mceInstance()) === null || _this$mceInstance === void 0 ? void 0 : _this$mceInstance.setContent(newContent);\n } // This function is called imperatively by the page that renders the RCE.\n // It should be called when the RCE content is done being edited.\n\n\n RCEClosed() {\n // We want to clear the autosaved content, since the page was legitimately closed.\n if (this.storage) {\n this.storage.removeItem(this.autoSaveKey);\n }\n }\n\n indicateEditor(element) {\n if (document.querySelector('[role=\"dialog\"][data-mce-component]')) {\n // there is a modal open, which zeros out the vertical scroll\n // so the indicator is in the wrong place. Give it a chance to close\n window.setTimeout(() => {\n this.indicateEditor(element);\n }, 100);\n return;\n }\n\n const editor = this.mceInstance();\n\n if (this.indicator) {\n this.indicator(editor, element);\n } else if (!this.isHidden()) {\n Object(_common_indicate__WEBPACK_IMPORTED_MODULE_21__[\"default\"])(Object(_indicatorRegion__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(editor, element));\n }\n }\n\n contentInserted(element) {\n this.indicateEditor(element);\n this.checkImageLoadError(element);\n this.sizeEditorForContent(element);\n } // make a attempt at sizing the editor so that the new content fits.\n // works under the assumptions the body's box-sizing is not content-box\n // and that the content is w/in a <p> whose margin is 12px top and bottom\n // (which, in canvas, is set in app/stylesheets/components/_ic-typography.scss)\n\n\n sizeEditorForContent(elem) {\n let height;\n\n if (elem && elem.nodeType === 1) {\n height = elem.clientHeight;\n }\n\n if (height) {\n const ifr = this.iframe;\n\n if (ifr) {\n const editor_body_style = ifr.contentWindow.getComputedStyle(this.iframe.contentDocument.body);\n const editor_ht = ifr.contentDocument.body.clientHeight - parseInt(editor_body_style['padding-top'], 10) - parseInt(editor_body_style['padding-bottom'], 10);\n const para_margin_ht = 24;\n const reserve_ht = Math.ceil(height + para_margin_ht);\n\n if (reserve_ht > editor_ht) {\n this.onResize(null, {\n deltaY: reserve_ht - editor_ht\n });\n }\n }\n }\n }\n\n checkImageLoadError(element) {\n if (!element || element.tagName !== 'IMG') {\n return;\n }\n\n if (!element.complete) {\n element.onload = () => this.checkImageLoadError(element);\n\n return;\n } // checking naturalWidth in a future event loop run prevents a race\n // condition between the onload callback and naturalWidth being set.\n\n\n setTimeout(() => {\n if (element.naturalWidth === 0) {\n element.style.border = '1px solid #000';\n element.style.padding = '2px';\n }\n }, 0);\n }\n\n insertCode(code) {\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertContent\"](editor, code);\n this.contentInserted(element);\n }\n\n insertEmbedCode(code) {\n const editor = this.mceInstance(); // don't replace selected text, but embed after\n\n editor.selection.collapse(); // tinymce treats iframes uniquely, and doesn't like adding attributes\n // once it's in the editor, and I'd rather not parse the incomming html\n // string with a regex, so let's create a temp copy, then add a title\n // attribute if one doesn't exist. This will let screenreaders announce\n // that there's some embedded content helper\n // From what I've read, \"title\" is more reliable than \"aria-label\" for\n // elements like iframes and embeds.\n\n const temp = document.createElement('div');\n temp.innerHTML = code;\n const code_elem = temp.firstElementChild;\n\n if (code_elem) {\n if (!code_elem.hasAttribute('title') && !code_elem.hasAttribute('aria-label')) {\n code_elem.setAttribute('title', Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('embedded content'));\n }\n\n code = code_elem.outerHTML;\n } // inserting an iframe in tinymce (as is often the case with\n // embedded content) causes it to wrap it in a span\n // and it's often inserted into a <p> on top of that. Find the\n // iframe and use it to flash the indicator.\n\n\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertContent\"](editor, code);\n const ifr = element && element.querySelector && element.querySelector('iframe');\n\n if (ifr) {\n this.contentInserted(ifr);\n } else {\n this.contentInserted(element);\n }\n }\n\n insertImage(image) {\n var _element$nextSibling, _element$nextSibling$;\n\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertImage\"](editor, image, this.getCanvasUrl()); // Removes TinyMCE's caret text if exists.\n\n if ((element === null || element === void 0 ? void 0 : (_element$nextSibling = element.nextSibling) === null || _element$nextSibling === void 0 ? void 0 : (_element$nextSibling$ = _element$nextSibling.data) === null || _element$nextSibling$ === void 0 ? void 0 : _element$nextSibling$.trim()) === '') {\n element.nextSibling.remove();\n }\n\n if (element && element.complete) {\n this.contentInserted(element);\n } else if (element) {\n element.onload = () => this.contentInserted(element);\n\n element.onerror = () => this.checkImageLoadError(element);\n }\n }\n\n insertImagePlaceholder(fileMetaProps) {\n let width, height;\n let align = 'middle';\n\n if (Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_28__[\"isImage\"])(fileMetaProps.contentType) && fileMetaProps.displayAs !== 'link') {\n const image = new Image();\n image.src = fileMetaProps.domObject.preview;\n width = image.width;\n height = image.height; // we constrain the <img> to max-width: 100%, so scale the size down if necessary\n\n const maxWidth = this.iframe.contentDocument.body.clientWidth;\n\n if (width > maxWidth) {\n height = Math.round(maxWidth / width * height);\n width = maxWidth;\n }\n\n width = `${width}px`;\n height = `${height}px`;\n } else if (Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_28__[\"isVideo\"])(fileMetaProps.contentType || fileMetaProps.type)) {\n width = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_33__[\"VIDEO_SIZE_DEFAULT\"].width;\n height = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_33__[\"VIDEO_SIZE_DEFAULT\"].height;\n align = 'bottom';\n } else if (Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_28__[\"isAudio\"])(fileMetaProps.contentType || fileMetaProps.type)) {\n width = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_33__[\"AUDIO_PLAYER_SIZE\"].width;\n height = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_33__[\"AUDIO_PLAYER_SIZE\"].height;\n align = 'bottom';\n } else {\n width = `${fileMetaProps.name.length}rem`;\n height = '1rem';\n } // if you're wondering, the scatter about in the svg\n // is because tinymce will strip empty elements\n\n\n const markup = `\n <span\n aria-label=\"${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Loading')}\"\n data-placeholder-for=\"${encodeURIComponent(fileMetaProps.name)}\"\n style=\"width: ${width}; height: ${height}; vertical-align: ${align};\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" height=\"100px\" width=\"100px\">\n <g style=\"stroke-width:.5rem;fill:none;stroke-linecap:round;\"> \n <circle class=\"c1\" cx=\"50%\" cy=\"50%\" r=\"28px\"> </circle>\n <circle class=\"c2\" cx=\"50%\" cy=\"50%\" r=\"28px\"> </circle>\n \n </g>\n \n </svg>\n </span>`;\n const editor = this.mceInstance();\n editor.undoManager.ignore(() => {\n editor.execCommand('mceInsertContent', false, markup);\n });\n }\n\n insertVideo(video) {\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertVideo\"](editor, video, this.getCanvasUrl());\n this.contentInserted(element);\n }\n\n insertAudio(audio) {\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertAudio\"](editor, audio, this.getCanvasUrl());\n this.contentInserted(element);\n }\n\n insertMathEquation(tex) {\n const editor = this.mceInstance();\n _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertEquation\"](editor, tex);\n }\n\n removePlaceholders(name) {\n const placeholder = this.mceInstance().dom.doc.querySelector(`[data-placeholder-for=\"${encodeURIComponent(name)}\"]`);\n\n if (placeholder) {\n const editor = this.mceInstance();\n editor.undoManager.ignore(() => {\n editor.dom.remove(placeholder);\n });\n }\n }\n\n insertLink(link) {\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"insertLink\"](editor, link, this.getCanvasUrl());\n this.contentInserted(element);\n }\n\n existingContentToLink() {\n const editor = this.mceInstance();\n return _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"existingContentToLink\"](editor);\n }\n\n existingContentToLinkIsImg() {\n const editor = this.mceInstance();\n return _contentInsertion__WEBPACK_IMPORTED_MODULE_14__[\"existingContentToLinkIsImg\"](editor);\n } // since we may defer rendering tinymce, queue up any tinymce event handlers\n\n\n tinymceOn(tinymceEventName, handler) {\n if (this.state.shouldShowEditor) {\n this.mceInstance().on(tinymceEventName, handler);\n } else {\n this.pendingEventHandlers.push({\n name: tinymceEventName,\n handler\n });\n }\n }\n\n mceInstance() {\n if (this.editor) {\n return this.editor;\n }\n\n const editors = this.props.tinymce.editors || [];\n return editors.filter(ed => ed.id === this.props.textareaId)[0];\n }\n\n onTinyMCEInstance(command) {\n const editor = this.mceInstance();\n\n if (editor) {\n if (command === 'mceRemoveEditor') {\n editor.execCommand('mceNewDocument');\n } // makes sure content can't persist past removal\n\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n editor.execCommand(command, false, ...args);\n }\n }\n\n destroy() {\n this._destroyCalled = true;\n this.unhandleTextareaChange();\n this.props.handleUnmount && this.props.handleUnmount();\n }\n\n getTextarea() {\n return document.getElementById(this.props.textareaId);\n }\n\n textareaValue() {\n return this.getTextarea().value;\n }\n\n get id() {\n return this.state.id;\n }\n\n _isFullscreen() {\n return this.state.fullscreenState.isTinyFullscreen || document[FS_ELEMENT];\n }\n\n _enterFullscreen() {\n switch (this.state.editorView) {\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"]:\n this._prettyHtmlEditorRef.current.addEventListener('fullscreenchange', this._toggleFullscreen);\n\n this._prettyHtmlEditorRef.current.addEventListener('webkitfullscreenchange', this._toggleFullscreen); // if I don't focus first, FF complains that the element\n // is not in the active browser tab and requestFullscreen fails\n\n\n this._prettyHtmlEditorRef.current.focus();\n\n this._prettyHtmlEditorRef.current[FS_REQUEST]();\n\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]:\n this.getTextarea().addEventListener('fullscreenchange', this._toggleFullscreen);\n this.getTextarea().addEventListener('webkitfullscreenchange', this._toggleFullscreen);\n this.getTextarea()[FS_REQUEST]();\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]:\n this.mceInstance().execCommand('mceFullScreen');\n break;\n }\n }\n\n _exitFullscreen() {\n if (this.state.fullscreenState.isTinyFullscreen) {\n this.mceInstance().execCommand('mceFullScreen');\n } else if (document[FS_ELEMENT]) {\n document[FS_ELEMENT][FS_EXIT]();\n }\n }\n\n focus() {\n this.onTinyMCEInstance('mceFocus'); // tinymce doesn't always call the focus handler.\n\n this.handleFocusEditor(new Event('focus', {\n target: this.mceInstance()\n }));\n }\n\n focusCurrentView() {\n switch (this.state.editorView) {\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]:\n this.mceInstance().focus();\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"]:\n {\n const cmta = this._elementRef.current.querySelector('.CodeMirror textarea');\n\n if (cmta) {\n cmta.focus();\n } else {\n window.setTimeout(() => {\n var _this$_elementRef$cur2;\n\n (_this$_elementRef$cur2 = this._elementRef.current.querySelector('.CodeMirror textarea')) === null || _this$_elementRef$cur2 === void 0 ? void 0 : _this$_elementRef$cur2.focus();\n }, 200);\n }\n }\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]:\n this.getTextarea().focus();\n break;\n }\n }\n\n is_dirty() {\n var _this$mceInstance2;\n\n if (this.mceInstance().isDirty()) {\n return true;\n }\n\n const content = this.isHidden() ? this.textareaValue() : (_this$mceInstance2 = this.mceInstance()) === null || _this$mceInstance2 === void 0 ? void 0 : _this$mceInstance2.getContent();\n return content !== this.cleanInitialContent();\n }\n\n cleanInitialContent() {\n if (!this._cleanInitialContent) {\n const el = window.document.createElement('div');\n el.innerHTML = this.props.defaultContent;\n const serializer = this.mceInstance().serializer;\n this._cleanInitialContent = serializer.serialize(el, {\n getInner: true\n });\n }\n\n return this._cleanInitialContent;\n }\n\n isHtmlView() {\n return this.state.editorView !== _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"];\n }\n\n isHidden() {\n return this.mceInstance().isHidden();\n }\n\n get iframe() {\n return document.getElementById(`${this.props.textareaId}_ifr`);\n } // these focus and blur event handlers work together so that RCEWrapper\n // can report focus and blur events from the RCE at-large\n\n\n get focused() {\n return this === _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].getEditor();\n }\n\n handleFocus(_event) {\n if (!this.focused) {\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].focusEditor(this);\n this.props.onFocus && this.props.onFocus(this);\n }\n }\n\n handleContentTrayClosing(isClosing) {\n this.contentTrayClosing = isClosing;\n }\n\n handleBlur(event) {\n if (this.blurTimer) return;\n\n if (this.focused) {\n // because the old active element fires blur before the next element gets focus\n // we often need a moment to see if focus comes back\n event && event.persist && event.persist();\n this.blurTimer = window.setTimeout(() => {\n var _this$_elementRef$cur3, _event$focusedEditor, _event$relatedTarget, _event$relatedTarget$;\n\n this.blurTimer = 0;\n\n if (this.contentTrayClosing) {\n // the CanvasContentTray is in the process of closing\n // wait until it finishes\n return;\n }\n\n if ((_this$_elementRef$cur3 = this._elementRef.current) !== null && _this$_elementRef$cur3 !== void 0 && _this$_elementRef$cur3.contains(document.activeElement)) {\n // focus is still somewhere w/in me\n return;\n }\n\n const activeClass = document.activeElement && document.activeElement.getAttribute('class');\n\n if ((event.focusedEditor === undefined || event.target.id === ((_event$focusedEditor = event.focusedEditor) === null || _event$focusedEditor === void 0 ? void 0 : _event$focusedEditor.id)) && activeClass !== null && activeClass !== void 0 && _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_1___default()(activeClass).call(activeClass, 'tox-')) {\n // if a toolbar button has focus, then the user clicks on the \"more\" button\n // focus jumps to the body, then eventually to the popped up toolbar. This\n // catches that case.\n return;\n }\n\n if (event !== null && event !== void 0 && (_event$relatedTarget = event.relatedTarget) !== null && _event$relatedTarget !== void 0 && (_event$relatedTarget$ = _event$relatedTarget.getAttribute('class')) !== null && _event$relatedTarget$ !== void 0 && _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_1___default()(_event$relatedTarget$).call(_event$relatedTarget$, 'tox-')) {\n // a tinymce popup has focus\n return;\n }\n\n const popups = document.querySelectorAll('[data-mce-component]');\n\n for (const popup of popups) {\n if (popup.contains(document.activeElement)) {\n // one of our popups has focus\n return;\n }\n }\n\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].blurEditor(this);\n this.props.onBlur && this.props.onBlur(event);\n }, ASYNC_FOCUS_TIMEOUT);\n }\n }\n\n call(methodName) {\n // since exists? has a ? and cant be a regular function just return true\n // rather than calling as a fn on the editor\n if (methodName === 'exists?') {\n return true;\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return this[methodName](...args);\n }\n\n announceContextToolbars(editor) {\n editor.on('NodeChange', () => {\n const node = editor.selection.getNode();\n\n if (Object(_plugins_shared_ContentSelection__WEBPACK_IMPORTED_MODULE_32__[\"isImageEmbed\"])(node, editor)) {\n if (this.announcing !== 1) {\n this.setState({\n announcement: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('type Control F9 to access image options. {text}', {\n text: node.getAttribute('alt')\n })\n });\n this.announcing = 1;\n }\n } else if (Object(_plugins_shared_ContentSelection__WEBPACK_IMPORTED_MODULE_32__[\"isFileLink\"])(node, editor)) {\n if (this.announcing !== 2) {\n this.setState({\n announcement: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('type Control F9 to access link options. {text}', {\n text: node.textContent\n })\n });\n this.announcing = 2;\n }\n } else if (isElementWithinTable(node, editor)) {\n if (this.announcing !== 3) {\n this.setState({\n announcement: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('type Control F9 to access table options. {text}', {\n text: node.textContent\n })\n });\n this.announcing = 3;\n }\n } else {\n this.setState({\n announcement: null\n });\n this.announcing = 0;\n }\n });\n }\n /* ********** autosave support *************** */\n\n\n // if a placeholder image shows up in autosaved content, we have to remove it\n // because the data url gets converted to a blob, which is not valid when restored.\n // besides, the placeholder is intended to be temporary while the file\n // is being uploaded\n patchAutosavedContent(content, asText) {\n const temp = document.createElement('div');\n temp.innerHTML = content;\n temp.querySelectorAll('[data-placeholder-for]').forEach(placeholder => {\n placeholder.parentElement.removeChild(placeholder);\n });\n if (asText) return temp.textContent;\n return temp.innerHTML;\n }\n\n getAutoSaved(key) {\n let autosaved = null;\n\n try {\n autosaved = this.storage && JSON.parse(this.storage.getItem(key));\n } catch (_ex) {\n this.storage.removeItem(this.autoSaveKey);\n }\n\n return autosaved;\n } // only autosave if the feature flag is set, and there is only 1 RCE on the page\n // the latter condition is necessary because the popup RestoreAutoSaveModal\n // is lousey UX when there are >1\n\n\n get isAutoSaving() {\n // If the editor is invisible for some reason, don't show the autosave modal\n // This doesn't apply if the editor is off-screen or has visibility:hidden;\n // only if it isn't rendered or has display:none;\n const editorVisible = this.editor.getContainer().offsetParent;\n return this.props.autosave.enabled && editorVisible && document.querySelectorAll('.rce-wrapper').length === 1 && storageAvailable();\n }\n\n get autoSaveKey() {\n var _this$props$trayProps;\n\n const userId = (_this$props$trayProps = this.props.trayProps) === null || _this$props$trayProps === void 0 ? void 0 : _this$props$trayProps.containingContext.userId;\n return `rceautosave:${userId}${window.location.href}:${this.props.textareaId}`;\n }\n\n componentWillUnmount() {\n if (this.state.shouldShowEditor) {\n var _this$mutationObserve, _this$intersectionObs;\n\n window.clearTimeout(this.blurTimer);\n\n if (!this._destroyCalled) {\n this.destroy();\n }\n\n this._elementRef.current.removeEventListener('keydown', this.handleKey, true);\n\n (_this$mutationObserve = this.mutationObserver) === null || _this$mutationObserve === void 0 ? void 0 : _this$mutationObserve.disconnect();\n (_this$intersectionObs = this.intersectionObserver) === null || _this$intersectionObs === void 0 ? void 0 : _this$intersectionObs.disconnect();\n }\n }\n\n wrapOptions() {\n var _this$props$trayProps2, _this$props$trayProps3, _this$props$trayProps4;\n\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const rcsExists = !!((_this$props$trayProps2 = this.props.trayProps) !== null && _this$props$trayProps2 !== void 0 && _this$props$trayProps2.host && (_this$props$trayProps3 = this.props.trayProps) !== null && _this$props$trayProps3 !== void 0 && _this$props$trayProps3.jwt);\n const userLocale = _editorLanguage__WEBPACK_IMPORTED_MODULE_16___default()(this.language);\n const setupCallback = options.setup;\n const canvasPlugins = rcsExists ? ['instructure_links', 'instructure_image', 'instructure_documents', 'instructure_equation', 'instructure_external_tools', 'instructure_wordcount'] : ['instructure_links'];\n\n if (rcsExists && !this.props.instRecordDisabled) {\n canvasPlugins.splice(2, 0, 'instructure_record');\n }\n\n if (rcsExists && this.props.use_rce_icon_maker && ((_this$props$trayProps4 = this.props.trayProps) === null || _this$props$trayProps4 === void 0 ? void 0 : _this$props$trayProps4.contextType) === 'course') {\n canvasPlugins.push('instructure_icon_maker');\n }\n\n const possibleNewMenubarItems = this.props.editorOptions.menu ? Object.keys(this.props.editorOptions.menu).join(' ') : undefined;\n const wrappedOpts = { ..._defaultTinymceConfig__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n ...options,\n readonly: this.props.readOnly,\n theme: 'silver',\n // some older code specified 'modern', which doesn't exist any more\n height: options.height || DEFAULT_RCE_HEIGHT,\n language: userLocale,\n document_base_url: this.props.canvasOrigin,\n block_formats: options.block_formats || [`${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Heading 2')}=h2`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Heading 3')}=h3`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Heading 4')}=h4`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Preformatted')}=pre`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Paragraph')}=p`].join('; '),\n setup: editor => {\n var _bridge$trayProps;\n\n addKebabIcon(editor);\n editorWrappers.set(editor, this);\n const trayPropsWithColor = {\n brandColor: this.theme.canvasBrandColor,\n ...this.props.trayProps\n };\n (_bridge$trayProps = _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].trayProps) === null || _bridge$trayProps === void 0 ? void 0 : _bridge$trayProps.set(editor, trayPropsWithColor);\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].userLocale = userLocale;\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].canvasOrigin = this.props.canvasOrigin;\n\n if (typeof setupCallback === 'function') {\n setupCallback(editor);\n }\n },\n // Consumers can, and should!, still pass a content_css prop so that the content\n // in the editor matches the styles of the app it will be displayed in when saved.\n // This is just so we inject the helper class names that tinyMCE uses for\n // things like table resizing and stuff.\n content_css: options.content_css || [],\n content_style: contentCSS,\n menubar: mergeMenuItems('edit view insert format tools table', possibleNewMenubarItems),\n // default menu options listed at https://www.tiny.cloud/docs/configure/editor-appearance/#menu\n // tinymce's default edit and table menus are fine\n // we include all the canvas specific items in the menu and toolbar\n // and rely on tinymce only showing them if the plugin is provided.\n menu: mergeMenu({\n format: {\n title: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Format'),\n items: 'bold italic underline strikethrough superscript subscript codeformat | formats blockformats fontformats fontsizes align directionality | forecolor backcolor | removeformat'\n },\n insert: {\n title: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Insert'),\n items: 'instructure_links instructure_image instructure_media instructure_document instructure_icon_maker | instructure_equation inserttable instructure_media_embed | hr'\n },\n tools: {\n title: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Tools'),\n items: 'instructure_wordcount lti_tools_menuitem'\n },\n view: {\n title: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('View'),\n items: 'fullscreen instructure_html_view'\n }\n }, options.menu),\n toolbar: mergeToolbar([{\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Styles'),\n items: ['fontsizeselect', 'formatselect']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Formatting'),\n items: ['bold', 'italic', 'underline', 'forecolor', 'backcolor', 'inst_subscript', 'inst_superscript']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Content'),\n items: ['instructure_links', 'instructure_image', 'instructure_record', 'instructure_documents', 'instructure_icon_maker']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('External Tools'),\n items: [...this.ltiToolFavorites, 'lti_tool_dropdown', 'lti_mru_button']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Alignment and Lists'),\n items: ['align', 'bullist', 'inst_indent', 'inst_outdent']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('Miscellaneous'),\n items: ['removeformat', 'table', 'instructure_equation', 'instructure_media_embed']\n }], options.toolbar),\n contextmenu: '',\n // show the browser's native context menu\n toolbar_mode: 'floating',\n toolbar_sticky: true,\n plugins: mergePlugins(['autolink', 'media', 'paste', 'table', 'link', 'directionality', 'lists', 'textpattern', 'hr', 'fullscreen', 'instructure-ui-icons', 'instructure_condensed_buttons', 'instructure_links', 'instructure_html_view', 'instructure_media_embed', 'instructure_external_tools', 'a11y_checker', 'wordcount', ...canvasPlugins], Object(_sanitizePlugins__WEBPACK_IMPORTED_MODULE_18__[\"sanitizePlugins\"])(options.plugins)),\n textpattern_patterns: [{\n start: '* ',\n cmd: 'InsertUnorderedList'\n }, {\n start: '- ',\n cmd: 'InsertUnorderedList'\n }]\n };\n\n if (this.props.trayProps) {\n wrappedOpts.canvas_rce_user_context = {\n type: this.props.trayProps.contextType,\n id: this.props.trayProps.contextId\n };\n wrappedOpts.canvas_rce_containing_context = {\n type: this.props.trayProps.containingContext.contextType,\n id: this.props.trayProps.containingContext.contextId\n };\n }\n\n return wrappedOpts;\n }\n\n unhandleTextareaChange() {\n if (this._textareaEl) {\n this._textareaEl.removeEventListener('input', this.handleTextareaChange);\n }\n }\n\n registerTextareaChange() {\n const el = this.getTextarea();\n\n if (this._textareaEl !== el) {\n this.unhandleTextareaChange();\n\n if (el) {\n el.addEventListener('input', this.handleTextareaChange);\n\n if (this.props.textareaClassName) {\n // split the string on whitespace because classList doesn't let you add multiple\n // space seperated classes at a time but does let you add an array of them\n el.classList.add(...this.props.textareaClassName.split(/\\s+/));\n }\n\n this._textareaEl = el;\n }\n }\n }\n\n componentDidMount() {\n if (this.state.shouldShowEditor) {\n this.editorReallyDidMount();\n } else {\n this.intersectionObserver = new IntersectionObserver(entries => {\n const entry = entries[0];\n\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n this.setState({\n shouldShowEditor: true\n });\n }\n }, // initialize the RCE when it gets close to entering the viewport\n {\n root: null,\n rootMargin: '200px 0px',\n threshold: 0.0\n });\n this.intersectionObserver.observe(this._editorPlaceholderRef.current);\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.state.shouldShowEditor) {\n if (!prevState.shouldShowEditor) {\n var _this$intersectionObs2;\n\n this.editorReallyDidMount();\n (_this$intersectionObs2 = this.intersectionObserver) === null || _this$intersectionObs2 === void 0 ? void 0 : _this$intersectionObs2.disconnect();\n } else {\n this.registerTextareaChange();\n\n if (prevState.editorView !== this.state.editorView) {\n this.setEditorView(this.state.editorView);\n this.focusCurrentView();\n }\n\n if (prevProps.readOnly !== this.props.readOnly) {\n this.mceInstance().mode.set(this.props.readOnly ? 'readonly' : 'design');\n }\n }\n }\n }\n\n editorReallyDidMount() {\n const myTiny = this.mceInstance();\n this.pendingEventHandlers.forEach(e => {\n myTiny.on(e.name, e.handler);\n });\n this.registerTextareaChange();\n\n this._elementRef.current.addEventListener('keydown', this.handleKey, true); // give the textarea its initial size\n\n\n this.onResize(null, {\n deltaY: 0\n }); // Preload the LTI Tools modal\n // This helps with loading the favorited external tools\n\n if (this.ltiToolFavorites.length > 0) {\n __webpack_require__.e(/*! import() */ 10).then(__webpack_require__.bind(null, /*! ./plugins/instructure_external_tools/components/LtiToolsModal */ \"./src/rce/plugins/instructure_external_tools/components/LtiToolsModal/index.js\"));\n } // .tox-tinymce-aux is where tinymce puts the floating toolbar when\n // the user clicks the More... button\n // Tinymce doesn't fire onFocus when the user clicks More... from somewhere\n // outside, so we'll handle that here by watching for the floating toolbar\n // to come and go.\n\n\n const portals = document.querySelectorAll('.tox-tinymce-aux'); // my portal will be the last one in the doc because tinyumce appends them\n\n const tinymce_floating_toolbar_portal = portals[portals.length - 1];\n\n if (tinymce_floating_toolbar_portal) {\n this.mutationObserver = new MutationObserver((mutationList, _observer) => {\n mutationList.forEach(mutation => {\n if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {\n this.handleFocusEditor(new Event('focus', {\n target: mutation.target\n }));\n }\n });\n });\n this.mutationObserver.observe(tinymce_floating_toolbar_portal, {\n childList: true\n });\n }\n\n _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"].renderEditor(this);\n }\n\n setEditorView(view) {\n var _this$getTextarea$lab, _this$getTextarea$lab2, _this$getTextarea$lab3, _this$getTextarea$lab4, _this$_elementRef$cur4, _this$getTextarea$lab5, _this$getTextarea$lab6;\n\n switch (view) {\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]:\n this.getTextarea().removeAttribute('aria-hidden');\n (_this$getTextarea$lab = this.getTextarea().labels) === null || _this$getTextarea$lab === void 0 ? void 0 : (_this$getTextarea$lab2 = _this$getTextarea$lab[0]) === null || _this$getTextarea$lab2 === void 0 ? void 0 : _this$getTextarea$lab2.removeAttribute('aria-hidden');\n this.mceInstance().hide();\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"]:\n this.getTextarea().setAttribute('aria-hidden', true);\n (_this$getTextarea$lab3 = this.getTextarea().labels) === null || _this$getTextarea$lab3 === void 0 ? void 0 : (_this$getTextarea$lab4 = _this$getTextarea$lab3[0]) === null || _this$getTextarea$lab4 === void 0 ? void 0 : _this$getTextarea$lab4.setAttribute('aria-hidden', true);\n this.mceInstance().hide();\n (_this$_elementRef$cur4 = this._elementRef.current.querySelector('.CodeMirror')) === null || _this$_elementRef$cur4 === void 0 ? void 0 : _this$_elementRef$cur4.CodeMirror.setCursor(0, 0);\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"]:\n this.setCode(this.textareaValue());\n this.getTextarea().setAttribute('aria-hidden', true);\n (_this$getTextarea$lab5 = this.getTextarea().labels) === null || _this$getTextarea$lab5 === void 0 ? void 0 : (_this$getTextarea$lab6 = _this$getTextarea$lab5[0]) === null || _this$getTextarea$lab6 === void 0 ? void 0 : _this$getTextarea$lab6.setAttribute('aria-hidden', true);\n this.mceInstance().show();\n }\n }\n\n renderHtmlEditor() {\n // the div keeps the editor from collapsing while the code editor is downloaded\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_3__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"div\", {\n style: {\n height: this.state.height,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_9__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"medium\"\n }))\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_10__[\"View\"], {\n as: \"div\",\n borderRadius: \"medium\",\n borderWidth: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(RceHtmlEditor, {\n ref: this._prettyHtmlEditorRef,\n height: document[FS_ELEMENT] ? `${window.screen.height}px` : this.state.height,\n code: this.getCode(),\n onChange: value => {\n this.getTextarea().value = value;\n this.handleTextareaChange();\n },\n onFocus: this.handleFocusHtmlEditor\n })));\n }\n\n render() {\n const {\n trayProps,\n ...mceProps\n } = this.props;\n\n if (!this.state.shouldShowEditor) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"div\", {\n ref: this._editorPlaceholderRef,\n style: {\n height: `${this.props.editorOptions.height}px`,\n border: '1px solid grey'\n }\n });\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"div\", {\n key: this.id,\n className: `${styles.root} rce-wrapper`,\n ref: this._elementRef,\n onFocus: this.handleFocusRCE,\n onBlur: this.handleBlurRCE\n }, this.state.shouldShowOnFocusButton && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_ShowOnFocusButton__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n onClick: this.openKBShortcutModal,\n margin: \"xx-small\",\n screenReaderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])('View keyboard shortcuts'),\n ref: el => this._showOnFocusButton = el\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_instructure_ui_icons__WEBPACK_IMPORTED_MODULE_7__[\"IconKeyboardShortcutsLine\"], null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_AlertMessageArea__WEBPACK_IMPORTED_MODULE_30__[\"default\"], {\n messages: this.state.messages,\n liveRegion: this.props.liveRegion,\n afterDismiss: this.removeAlert\n }), this.state.editorView === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"] && this.renderHtmlEditor(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"div\", {\n style: {\n display: this.state.editorView === _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"] ? 'none' : 'block'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_tinymce_tinymce_react__WEBPACK_IMPORTED_MODULE_4__[\"Editor\"], {\n id: mceProps.textareaId,\n textareaName: mceProps.name,\n init: this.tinymceInitOptions,\n initialValue: mceProps.defaultContent,\n onInit: this.onInit,\n onClick: this.handleFocusEditor,\n onKeypress: this.handleFocusEditor,\n onActivate: this.handleFocusEditor,\n onRemove: this.onRemove,\n onFocus: this.handleFocusEditor,\n onBlur: this.handleBlurEditor,\n onNodeChange: this.onNodeChange,\n onEditorChange: this.onEditorChange\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n readOnly: this.props.readOnly,\n onChangeView: newView => this.toggleView(newView),\n path: this.state.path,\n wordCount: this.state.wordCount,\n editorView: this.state.editorView,\n preferredHtmlEditor: getHtmlEditorCookie(),\n onResize: this.onResize,\n onKBShortcutModalOpen: this.openKBShortcutModal,\n onA11yChecker: this.onA11yChecker,\n onFullscreen: this.handleClickFullscreen,\n a11yBadgeColor: this.theme.canvasBadgeBackgroundColor,\n a11yErrorsCount: this.state.a11yErrorsCount\n }), this.props.trayProps && this.props.trayProps.containingContext && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_plugins_shared_CanvasContentTray__WEBPACK_IMPORTED_MODULE_23__[\"default\"], Object(_babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n key: this.id,\n canvasOrigin: this.getCanvasUrl(),\n bridge: _bridge__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n editor: this,\n onTrayClosing: this.handleContentTrayClosing,\n use_rce_icon_maker: this.props.use_rce_icon_maker\n }, trayProps)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_KeyboardShortcutModal__WEBPACK_IMPORTED_MODULE_29__[\"default\"], {\n onExited: this.KBShortcutModalExited,\n onDismiss: this.closeKBShortcutModal,\n open: this.state.KBShortcutModalOpen\n }), this.state.confirmAutoSave ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_3__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_9__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"small\"\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(RestoreAutoSaveModal, {\n savedContent: this.state.autoSavedContent,\n open: this.state.confirmAutoSave,\n onNo: () => this.restoreAutoSave(false),\n onYes: () => this.restoreAutoSave(true)\n })) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_instructure_ui_alerts__WEBPACK_IMPORTED_MODULE_8__[\"Alert\"], {\n screenReaderOnly: true,\n liveRegion: this.props.liveRegion\n }, this.state.announcement));\n }\n\n}, _class2.propTypes = {\n autosave: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n enabled: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n maxAge: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number\n }),\n canvasOrigin: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n defaultContent: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n editorOptions: editorOptionsPropType,\n handleUnmount: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n editorView: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOf([_StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"WYSIWYG_VIEW\"], _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"PRETTY_HTML_EDITOR_VIEW\"], _StatusBar__WEBPACK_IMPORTED_MODULE_24__[\"RAW_HTML_EDITOR_VIEW\"]]),\n renderKBShortcutModal: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n id: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n language: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n liveRegion: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired,\n ltiTools: ltiToolsPropType,\n onContentChange: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onFocus: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onBlur: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onInitted: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onRemove: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n textareaClassName: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n textareaId: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n readOnly: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n tinymce: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object,\n trayProps: _plugins_shared_CanvasContentTray__WEBPACK_IMPORTED_MODULE_23__[\"trayPropTypes\"],\n toolbar: toolbarPropType,\n menu: menuPropType,\n plugins: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string),\n instRecordDisabled: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n highContrastCSS: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string),\n maxInitRenderedRCEs: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n use_rce_icon_maker: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n features: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.objectOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool),\n flashAlertTimeout: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n timezone: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string\n}, _class2.defaultProps = {\n trayProps: null,\n autosave: {\n enabled: false\n },\n highContrastCSS: [],\n ltiTools: [],\n maxInitRenderedRCEs: -1,\n features: {},\n timezone: (_Intl = Intl) === null || _Intl === void 0 ? void 0 : (_Intl$DateTimeFormat = _Intl.DateTimeFormat()) === null || _Intl$DateTimeFormat === void 0 ? void 0 : (_Intl$DateTimeFormat$ = _Intl$DateTimeFormat.resolvedOptions()) === null || _Intl$DateTimeFormat$ === void 0 ? void 0 : _Intl$DateTimeFormat$.timeZone,\n canvasOrigin: ''\n}, _class2.skinCssInjected = false, _class2)) || _class); // standard: string of tinymce menu commands\n// e.g. 'instructure_links | inserttable instructure_media_embed | hr'\n// custom: a string of tinymce menu commands\n// returns: standard + custom with any duplicate commands removed from custom\n\nfunction mergeMenuItems(standard, custom) {\n var _custom$trim;\n\n let c = custom === null || custom === void 0 ? void 0 : (_custom$trim = custom.trim) === null || _custom$trim === void 0 ? void 0 : _custom$trim.call(custom);\n if (!c) return standard;\n const s = new Set(standard.split(/[\\s|]+/)); // remove any duplicates\n\n c = c.split(/\\s+/).filter(m => !s.has(m));\n c = c.join(' ').replace(/^\\s*\\|\\s*/, '').replace(/\\s*\\|\\s*$/, '');\n return `${standard} | ${c}`;\n} // standard: the incoming tinymce menu object\n// custom: tinymce menu object to merge into standard\n// returns: the merged result by mutating incoming standard arg.\n// It will add commands to existing menus, or add a new menu\n// if the custom one does not exist\n\n\nfunction mergeMenu(standard, custom) {\n if (!custom) return standard;\n Object.keys(custom).forEach(k => {\n const curr_m = standard[k];\n\n if (curr_m) {\n curr_m.items = mergeMenuItems(curr_m.items, custom[k].items);\n } else {\n standard[k] = { ...custom[k]\n };\n }\n });\n return standard;\n} // standard: incoming tinymce toolbar array\n// custom: tinymce toolbar array to merge into standard\n// returns: the merged result by mutating the incoming standard arg.\n// It will add commands to existing toolbars, or add a new toolbar\n// if the custom one does not exist\n\n\nfunction mergeToolbar(standard, custom) {\n if (!custom) return standard; // merge given toolbar data into the default toolbar\n\n custom.forEach(tb => {\n const curr_tb = standard.find(t => tb.name && Object(_format_message__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(tb.name) === t.name);\n\n if (curr_tb) {\n curr_tb.items.splice(curr_tb.items.length, 0, ...tb.items);\n } else {\n standard.push(tb);\n }\n });\n return standard;\n} // standard: incoming array of plugin names\n// custom: array of plugin names to merge\n// returns: the merged result, duplicates removed\n\n\nfunction mergePlugins(standard, custom) {\n if (!custom) return standard;\n const union = new Set(standard);\n\n for (const p of custom) {\n union.add(p);\n }\n\n return [...union];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (RCEWrapper);\n\n\n//# sourceURL=webpack:///./src/rce/RCEWrapper.js?");
|
|
17631
17631
|
|
|
17632
17632
|
/***/ }),
|
|
17633
17633
|
|
|
@@ -17834,6 +17834,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _for
|
|
|
17834
17834
|
|
|
17835
17835
|
/***/ }),
|
|
17836
17836
|
|
|
17837
|
+
/***/ "./src/rce/plugins/instructure_wordcount/utils/countContent.ts":
|
|
17838
|
+
/*!*********************************************************************!*\
|
|
17839
|
+
!*** ./src/rce/plugins/instructure_wordcount/utils/countContent.ts ***!
|
|
17840
|
+
\*********************************************************************/
|
|
17841
|
+
/*! exports provided: IGNORE_WORDCOUNT_ATTRIBUTE, countWords, countCharsNoSpaces, countChars, callbackForCategory, countShouldIgnore, getTinymceCount, countContent */
|
|
17842
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17843
|
+
|
|
17844
|
+
"use strict";
|
|
17845
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IGNORE_WORDCOUNT_ATTRIBUTE\", function() { return IGNORE_WORDCOUNT_ATTRIBUTE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"countWords\", function() { return countWords; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"countCharsNoSpaces\", function() { return countCharsNoSpaces; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"countChars\", function() { return countChars; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"callbackForCategory\", function() { return callbackForCategory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"countShouldIgnore\", function() { return countShouldIgnore; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTinymceCount\", function() { return getTinymceCount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"countContent\", function() { return countContent; });\n/*\n * Copyright (C) 2022 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nconst IGNORE_WORDCOUNT_ATTRIBUTE = 'data-ignore-wordcount';\nconst countWords = node => {\n if (node.getAttribute(IGNORE_WORDCOUNT_ATTRIBUTE) === 'chars-only') return 0;\n const textContent = (node === null || node === void 0 ? void 0 : node.innerText) || '';\n const trimmedTextContent = textContent.trim();\n if (trimmedTextContent.length === 0) return 0;\n return trimmedTextContent.split(/\\s+/).length;\n};\nconst countCharsNoSpaces = node => {\n const textContent = (node === null || node === void 0 ? void 0 : node.innerText) || '';\n const matches = textContent.match(/ /g); // a single space\n\n const spaces = matches ? matches.length : 0;\n return countChars(node) - spaces;\n};\nconst countChars = node => {\n const textContent = (node === null || node === void 0 ? void 0 : node.innerText) || '';\n const iterator = textContent[Symbol.iterator]();\n let count = 0;\n\n while (!iterator.next().done) {\n count++;\n }\n\n return count;\n};\nconst callbackForCategory = category => {\n switch (category) {\n case 'words':\n return countWords;\n\n case 'chars-no-spaces':\n return countCharsNoSpaces;\n\n case 'chars':\n return countChars;\n }\n};\nconst countShouldIgnore = (ed, scope, category) => {\n if (scope === 'selection') return 0;\n const nodesToCount = Array.from(ed.getBody().querySelectorAll(`[${IGNORE_WORDCOUNT_ATTRIBUTE}]`));\n const callback = callbackForCategory(category);\n return nodesToCount.reduce((total, node) => total + callback(node), 0);\n};\nconst getTinymceCount = (ed, scope, category) => {\n const wc = ed.plugins.wordcount[scope];\n\n switch (category) {\n case 'words':\n return wc.getWordCount();\n\n case 'chars-no-spaces':\n return wc.getCharacterCountWithoutSpaces();\n\n case 'chars':\n return wc.getCharacterCount();\n }\n};\nconst countContent = (ed, scope, category) => {\n return getTinymceCount(ed, scope, category) - countShouldIgnore(ed, scope, category);\n};\n\n//# sourceURL=webpack:///./src/rce/plugins/instructure_wordcount/utils/countContent.ts?");
|
|
17846
|
+
|
|
17847
|
+
/***/ }),
|
|
17848
|
+
|
|
17837
17849
|
/***/ "./src/rce/plugins/shared/CanvasContentTray.js":
|
|
17838
17850
|
/*!*****************************************************!*\
|
|
17839
17851
|
!*** ./src/rce/plugins/shared/CanvasContentTray.js ***!
|
|
@@ -17842,7 +17854,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _for
|
|
|
17842
17854
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17843
17855
|
|
|
17844
17856
|
"use strict";
|
|
17845
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CanvasContentTray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"trayPropTypes\", function() { return trayPropTypes; });\n/* harmony import */ var _babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/extends */ \"../../node_modules/@babel/runtime-corejs3/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _instructure_ui_tray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-tray */ \"../../node_modules/@instructure/ui-tray/es/index.js\");\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_heading__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-heading */ \"../../node_modules/@instructure/ui-heading/es/index.js\");\n/* harmony import */ var _instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-spinner */ \"../../node_modules/@instructure/ui-spinner/es/index.js\");\n/* harmony import */ var _instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-flex */ \"../../node_modules/@instructure/ui-flex/es/index.js\");\n/* harmony import */ var _ErrorBoundary__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ErrorBoundary */ \"./src/rce/plugins/shared/ErrorBoundary.js\");\n/* harmony import */ var _bridge_Bridge__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../bridge/Bridge */ \"./src/bridge/Bridge.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _Filter__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Filter */ \"./src/rce/plugins/shared/Filter.js\");\n/* harmony import */ var _StoreContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./StoreContext */ \"./src/rce/plugins/shared/StoreContext.js\");\n/* harmony import */ var _trayUtils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./trayUtils */ \"./src/rce/plugins/shared/trayUtils.js\");\n/* harmony import */ var _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../instructure_icon_maker/svg/constants */ \"./src/rce/plugins/instructure_icon_maker/svg/constants.js\");\n/* harmony import */ var _ContentSelection__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ContentSelection */ \"./src/rce/plugins/shared/ContentSelection.js\");\n/* harmony import */ var _linkUtils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./linkUtils */ \"./src/rce/plugins/shared/linkUtils.js\");\n/* harmony import */ var _LinkDisplay__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./LinkDisplay */ \"./src/rce/plugins/shared/LinkDisplay.js\");\n\n\n/*\n * Copyright (C) 2019 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Returns the translated tray label\n * @param {string} contentType - The type of content showing on tray\n * @param {string} contentSubtype - The current subtype of content loaded in the tray\n * @param {string} contextType - The user's context\n * @returns {string}\n */\n\nfunction getTrayLabel(contentType, contentSubtype, contextType) {\n if (contentType === 'links' && contextType === 'course') {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Course Links');\n } else if (contentType === 'links' && contextType === 'group') {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Group Links');\n }\n\n switch (contentSubtype) {\n case _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_14__[\"ICON_MAKER_ICONS\"]:\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Icon Maker Icons');\n\n case 'images':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Course Images');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Group Images');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('User Images');\n\n case 'media':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Course Media');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Group Media');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('User Media');\n\n case 'documents':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Course Documents');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Group Documents');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('User Documents');\n\n default:\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Tray');\n // Shouldn't ever get here\n }\n}\n\nconst thePanels = {\n icon_maker_icons: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(3), __webpack_require__.e(1), __webpack_require__.e(31)]).then(__webpack_require__.bind(null, /*! ../instructure_icon_maker/components/SavedIconMakerList */ \"./src/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js\"))),\n links: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(2), __webpack_require__.e(27)]).then(__webpack_require__.bind(null, /*! ../instructure_links/components/LinksPanel */ \"./src/rce/plugins/instructure_links/components/LinksPanel.js\"))),\n images: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(3), __webpack_require__.e(1), __webpack_require__.e(34)]).then(__webpack_require__.bind(null, /*! ../instructure_image/Images */ \"./src/rce/plugins/instructure_image/Images/index.js\"))),\n documents: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(1), __webpack_require__.e(32)]).then(__webpack_require__.bind(null, /*! ../instructure_documents/components/DocumentsPanel */ \"./src/rce/plugins/instructure_documents/components/DocumentsPanel.js\"))),\n media: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(1), __webpack_require__.e(33)]).then(__webpack_require__.bind(null, /*! ../instructure_record/MediaPanel */ \"./src/rce/plugins/instructure_record/MediaPanel/index.js\"))),\n all: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(28), __webpack_require__.e(35)]).then(__webpack_require__.bind(null, /*! ./RceFileBrowser */ \"./src/rce/plugins/shared/RceFileBrowser.js\"))),\n unknown: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => __webpack_require__.e(/*! import() */ 73).then(__webpack_require__.bind(null, /*! ./UnknownFileTypePanel */ \"./src/rce/plugins/shared/UnknownFileTypePanel.js\")))\n}; // Returns a Suspense wrapped lazy loaded component\n// pulled from useLazy's cache\n\nfunction DynamicPanel(props) {\n let key = '';\n\n if (props.contentType === 'links') {\n key = 'links';\n } else {\n key = props.contentSubtype in thePanels ? props.contentSubtype : 'unknown';\n }\n\n const Component = thePanels[key];\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_6__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"large\"\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Component, props));\n}\n\nfunction renderLoading() {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Loading');\n}\n\nconst FILTER_SETTINGS_BY_PLUGIN = {\n user_documents: {\n contextType: 'user',\n contentType: 'user_files',\n contentSubtype: 'documents',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n course_documents: {\n contextType: 'course',\n contentType: 'course_files',\n contentSubtype: 'documents',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n group_documents: {\n contextType: 'group',\n contentType: 'group_files',\n contentSubtype: 'documents',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n user_images: {\n contextType: 'user',\n contentType: 'user_files',\n contentSubtype: 'images',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n course_images: {\n contextType: 'course',\n contentType: 'course_files',\n contentSubtype: 'images',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n group_images: {\n contextType: 'group',\n contentType: 'group_files',\n contentSubtype: 'images',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n user_media: {\n contextType: 'user',\n contentType: 'user_files',\n contentSubtype: 'media',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n course_media: {\n contextType: 'course',\n contentType: 'course_files',\n contentSubtype: 'media',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n group_media: {\n contextType: 'group',\n contentType: 'group_files',\n contentSubtype: 'media',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n course_links: {\n contextType: 'course',\n contentType: 'links',\n contentSubtype: 'all',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n course_link_edit: {\n contextType: 'course',\n contentType: 'links',\n contentSubtype: 'edit',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n group_links: {\n contextType: 'group',\n contentType: 'links',\n contentSubtype: 'all',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n list_icon_maker_icons: {\n contextType: 'course',\n contentType: 'course_files',\n contentSubtype: _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_14__[\"ICON_MAKER_ICONS\"],\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n all: {\n contextType: 'course',\n contentType: 'course_files',\n contentSubtype: 'all',\n sortValue: 'alphabetical',\n sortDir: 'asc',\n searchString: ''\n }\n};\n\nfunction isLoading(cprops) {\n var _cprops$collections$a, _cprops$collections$a2, _cprops$collections$d, _cprops$collections$m, _cprops$collections$q, _cprops$collections$w, _cprops$documents$cou, _cprops$documents$use, _cprops$documents$gro, _cprops$media$course, _cprops$media$user, _cprops$media$group, _cprops$all_files;\n\n return ((_cprops$collections$a = cprops.collections.announcements) === null || _cprops$collections$a === void 0 ? void 0 : _cprops$collections$a.isLoading) || ((_cprops$collections$a2 = cprops.collections.assignments) === null || _cprops$collections$a2 === void 0 ? void 0 : _cprops$collections$a2.isLoading) || ((_cprops$collections$d = cprops.collections.discussions) === null || _cprops$collections$d === void 0 ? void 0 : _cprops$collections$d.isLoading) || ((_cprops$collections$m = cprops.collections.modules) === null || _cprops$collections$m === void 0 ? void 0 : _cprops$collections$m.isLoading) || ((_cprops$collections$q = cprops.collections.quizzes) === null || _cprops$collections$q === void 0 ? void 0 : _cprops$collections$q.isLoading) || ((_cprops$collections$w = cprops.collections.wikiPages) === null || _cprops$collections$w === void 0 ? void 0 : _cprops$collections$w.isLoading) || ((_cprops$documents$cou = cprops.documents.course) === null || _cprops$documents$cou === void 0 ? void 0 : _cprops$documents$cou.isLoading) || ((_cprops$documents$use = cprops.documents.user) === null || _cprops$documents$use === void 0 ? void 0 : _cprops$documents$use.isLoading) || ((_cprops$documents$gro = cprops.documents.group) === null || _cprops$documents$gro === void 0 ? void 0 : _cprops$documents$gro.isLoading) || ((_cprops$media$course = cprops.media.course) === null || _cprops$media$course === void 0 ? void 0 : _cprops$media$course.isLoading) || ((_cprops$media$user = cprops.media.user) === null || _cprops$media$user === void 0 ? void 0 : _cprops$media$user.isLoading) || ((_cprops$media$group = cprops.media.group) === null || _cprops$media$group === void 0 ? void 0 : _cprops$media$group.isLoading) || ((_cprops$all_files = cprops.all_files) === null || _cprops$all_files === void 0 ? void 0 : _cprops$all_files.isLoading);\n}\n/**\n * This component is used within various plugins to handle loading in content\n * from Canvas. It is essentially the main component.\n */\n\n\nfunction CanvasContentTray(props) {\n // should the tray be rendered open?\n const [isOpen, setIsOpen] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false); // has the tray fully opened. we use this to defer rendering the content\n // until the tray is open.\n\n const [hasOpened, setHasOpened] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false); // should we close the tray after the user clicks on something in it?\n\n const [hidingTrayOnAction, setHidingTrayOnAction] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(true);\n const trayRef = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useRef\"])(null);\n const scrollingAreaRef = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useRef\"])(null);\n const [filterSettings, setFilterSettings] = Object(_Filter__WEBPACK_IMPORTED_MODULE_11__[\"useFilterSettings\"])();\n const [isEditTray, setIsEditTray] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false);\n const [link, setLink] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(null);\n const [linkText, setLinkText] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(null);\n const [placeholderText, setPlaceholderText] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(null);\n const Icon = Object(_linkUtils__WEBPACK_IMPORTED_MODULE_16__[\"getIcon\"])(link === null || link === void 0 ? void 0 : link.type);\n const {\n bridge,\n editor,\n onTrayClosing\n } = { ...props\n };\n const handleDismissTray = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useCallback\"])(() => {\n // return focus to the RCE if focus was on this tray\n if (trayRef.current && trayRef.current.contains(document.activeElement)) {\n bridge.focusActiveEditor(false);\n }\n\n onTrayClosing && onTrayClosing(CanvasContentTray.globalOpenCount); // tell RCEWrapper we're closing if we're open\n\n setIsOpen(false);\n }, [bridge, onTrayClosing]);\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(() => {\n const controller = {\n showTrayForPlugin(plugin) {\n // increment a counter that's used as the key when rendering\n // this gets us a new instance everytime, which is necessary\n // to get the queries run so we have up to date data.\n ++CanvasContentTray.globalOpenCount;\n setFilterSettings(FILTER_SETTINGS_BY_PLUGIN[plugin]);\n setIsOpen(true);\n\n if (plugin === 'course_link_edit') {\n setIsEditTray(true);\n const {\n fileName,\n contentType,\n url,\n published,\n text\n } = Object(_ContentSelection__WEBPACK_IMPORTED_MODULE_15__[\"getLinkContentFromEditor\"])(editor.editor);\n setLink({\n title: fileName,\n type: contentType,\n href: url,\n published\n });\n setLinkText(text);\n setPlaceholderText(text);\n } else {\n setIsEditTray(false);\n }\n },\n\n hideTray(forceClose) {\n if (forceClose || hidingTrayOnAction) {\n handleDismissTray();\n }\n }\n\n };\n bridge.attachController(controller, editor.id);\n return () => {\n bridge.detachController(editor.id);\n }; // it's OK the setFilterSettings is not a dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor.id, bridge, handleDismissTray, hidingTrayOnAction]);\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(() => {\n if (hasOpened && scrollingAreaRef.current && !scrollingAreaRef.current.style.overscrollBehaviorY) {\n scrollingAreaRef.current.style.overscrollBehaviorY = 'contain';\n }\n }, [hasOpened]);\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(() => {\n var _trayRef$current;\n\n if (!hasOpened) return;\n let c = document.querySelector('[role=\"main\"]');\n let target_w = 0;\n if (!c) return;\n const margin = window.getComputedStyle(c).direction === 'ltr' ? document.body.getBoundingClientRect().right - c.getBoundingClientRect().right : c.getBoundingClientRect().left;\n target_w = c.offsetWidth - ((_trayRef$current = trayRef.current) === null || _trayRef$current === void 0 ? void 0 : _trayRef$current.offsetWidth) + margin;\n\n if (target_w >= 320 && target_w < c.offsetWidth) {\n c.style.boxSizing = 'border-box';\n c.style.width = `${target_w}px`;\n }\n\n setHidingTrayOnAction(target_w < 320);\n return () => {\n c = document.querySelector('[role=\"main\"]');\n if (!c) return;\n c.style.width = '';\n };\n }, [hasOpened]);\n\n function handleOpenTray() {\n bridge.focusEditor(editor);\n setHasOpened(true);\n }\n\n function handleExitTray() {\n onTrayClosing && onTrayClosing(true); // tell RCEWrapper we're closing\n }\n\n function handleCloseTray() {\n setHasOpened(false);\n onTrayClosing && onTrayClosing(false); // tell RCEWrapper we're closed\n }\n\n function handleReplaceButton() {\n handleDismissTray();\n const newLink = { ...link,\n forceRename: true,\n text: linkText || placeholderText\n };\n bridge.insertLink(newLink);\n }\n\n function renderFooter() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, {\n background: \"secondary\",\n borderWidth: \"small none none none\",\n padding: \"small medium\",\n textAlign: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"Button\"], {\n onClick: handleDismissTray\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Cancel')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"Button\"], {\n margin: \"0 0 0 x-small\",\n color: \"primary\",\n onClick: handleReplaceButton,\n \"data-testid\": \"replace-link-button\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Replace')));\n }\n\n function handleFilterChange(newFilter, onChangeContext, onChangeSearchString, onChangeSortBy) {\n const newFilterSettings = { ...newFilter\n };\n\n if (newFilterSettings.sortValue) {\n newFilterSettings.sortDir = newFilterSettings.sortValue === 'alphabetical' ? 'asc' : 'desc';\n onChangeSortBy({\n sort: newFilterSettings.sortValue,\n dir: newFilterSettings.sortDir\n });\n }\n\n if ('searchString' in newFilterSettings && filterSettings.searchString !== newFilterSettings.searchString) {\n onChangeSearchString(newFilterSettings.searchString);\n }\n\n setFilterSettings(newFilterSettings);\n\n if (newFilterSettings.contentType) {\n let contextType, contextId;\n\n switch (newFilterSettings.contentType) {\n case 'user_files':\n contextType = 'user';\n contextId = props.containingContext.userId;\n break;\n\n case 'group_files':\n contextType = 'group';\n contextId = props.containingContext.contextId;\n break;\n\n case 'course_files':\n contextType = props.contextType;\n contextId = props.containingContext.contextId;\n break;\n\n case 'links':\n contextType = props.containingContext.contextType;\n contextId = props.containingContext.contextId;\n }\n\n onChangeContext({\n contextType,\n contextId\n });\n }\n }\n\n function getHeader() {\n return isEditTray ? Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Edit Course Link') : Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Add');\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_StoreContext__WEBPACK_IMPORTED_MODULE_12__[\"StoreProvider\"], Object(_babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n key: CanvasContentTray.globalOpenCount,\n contextType: filterSettings.contextType || props.contextType\n }), contentProps => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_tray__WEBPACK_IMPORTED_MODULE_3__[\"Tray\"], {\n \"data-mce-component\": true,\n \"data-testid\": \"CanvasContentTray\",\n label: getTrayLabel(filterSettings.contentType, filterSettings.contentSubtype, contentProps.contextType),\n open: isOpen,\n placement: \"end\",\n size: \"regular\",\n shouldContainFocus: true,\n shouldReturnFocus: false,\n shouldCloseOnDocumentClick: false,\n onDismiss: handleDismissTray,\n onClose: handleCloseTray,\n onExit: handleExitTray,\n onOpen: handleOpenTray,\n contentRef: el => trayRef.current = el\n }, isOpen && hasOpened ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"], {\n direction: \"column\",\n as: \"div\",\n height: Object(_trayUtils__WEBPACK_IMPORTED_MODULE_13__[\"getTrayHeight\"])(),\n overflowY: \"hidden\",\n tabIndex: \"-1\",\n \"data-canvascontenttray-content\": true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, {\n padding: \"medium\",\n shadow: \"above\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"], {\n margin: \"none none medium none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, {\n shouldgrow: true,\n shouldshrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_heading__WEBPACK_IMPORTED_MODULE_5__[\"Heading\"], {\n level: \"h2\"\n }, getHeader())), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"CloseButton\"], {\n placement: \"end\",\n onClick: handleDismissTray,\n \"data-testid\": \"CloseButton_ContentTray\",\n screenReaderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Close')\n }))), isEditTray && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_LinkDisplay__WEBPACK_IMPORTED_MODULE_17__[\"LinkDisplay\"], {\n linkText: linkText,\n Icon: Icon,\n placeholderText: placeholderText,\n linkFileName: (link === null || link === void 0 ? void 0 : link.title) || '',\n published: (link === null || link === void 0 ? void 0 : link.published) || false,\n handleTextChange: setLinkText\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_Filter__WEBPACK_IMPORTED_MODULE_11__[\"default\"], Object(_babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, filterSettings, {\n userContextType: props.contextType,\n containingContextType: props.containingContext.contextType,\n onChange: newFilter => {\n handleFilterChange(newFilter, contentProps.onChangeContext, contentProps.onChangeSearchString, contentProps.onChangeSortBy);\n },\n isContentLoading: isLoading(contentProps),\n use_rce_icon_maker: props.use_rce_icon_maker\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, {\n grow: true,\n shrink: true,\n margin: \"xx-small xxx-small 0\",\n elementRef: el => scrollingAreaRef.current = el\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"], {\n justifyItems: \"space-between\",\n direction: \"column\",\n height: \"100%\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, {\n shouldGrow: true,\n shouldShrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_ErrorBoundary__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(DynamicPanel, Object(_babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n contentType: filterSettings.contentType,\n contentSubtype: filterSettings.contentSubtype,\n sortBy: {\n sort: filterSettings.sortValue,\n order: filterSettings.sortDir\n },\n searchString: filterSettings.searchString,\n source: props.source,\n canvasOrigin: props.canvasOrigin,\n jwt: props.jwt,\n host: props.host,\n refreshToken: props.refreshToken,\n context: {\n type: props.contextType,\n id: props.contextId\n },\n editing: isEditTray,\n onEditClick: setLink\n }, contentProps)))), isEditTray && renderFooter()))) : null));\n}\nCanvasContentTray.globalOpenCount = 0;\n\nfunction requiredWithoutSource(props, propName, componentName) {\n if (props.source == null && props[propName] == null) {\n throw new Error(`The prop \\`${propName}\\` is marked as required in \\`${componentName}\\`, but its value is \\`${props[propName]}\\`.`);\n }\n}\n\nconst trayPropsMap = {\n canUploadFiles: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"bool\"].isRequired,\n contextId: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"].isRequired,\n // initial value indicating the user's context (e.g. student v teacher), not the tray's\n contextType: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"].isRequired,\n // initial value indicating the user's context, not the tray's\n containingContext: Object(prop_types__WEBPACK_IMPORTED_MODULE_2__[\"shape\"])({\n contextType: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"].isRequired,\n contextId: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"].isRequired,\n userId: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"].isRequired\n }),\n filesTabDisabled: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"bool\"],\n host: requiredWithoutSource,\n jwt: requiredWithoutSource,\n refreshToken: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"func\"],\n source: Object(prop_types__WEBPACK_IMPORTED_MODULE_2__[\"shape\"])({\n fetchImages: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"func\"].isRequired\n }),\n themeUrl: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"]\n};\nconst trayPropTypes = Object(prop_types__WEBPACK_IMPORTED_MODULE_2__[\"shape\"])(trayPropsMap);\nCanvasContentTray.propTypes = {\n bridge: Object(prop_types__WEBPACK_IMPORTED_MODULE_2__[\"instanceOf\"])(_bridge_Bridge__WEBPACK_IMPORTED_MODULE_9__[\"default\"]).isRequired,\n editor: Object(prop_types__WEBPACK_IMPORTED_MODULE_2__[\"shape\"])({\n id: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"]\n }).isRequired,\n onTrayClosing: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"func\"],\n // called with true when the tray starts closing, false once closed\n onEditClick: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"func\"],\n ...trayPropsMap\n}; // the way we define trayProps, eslint doesn't recognize the following as props\n\n/* eslint-disable react/default-props-match-prop-types */\n\nCanvasContentTray.defaultProps = {\n canUploadFiles: false,\n filesTabDisabled: false,\n refreshToken: null,\n source: null,\n themeUrl: null\n};\n/* eslint-enable react/default-props-match-prop-types */\n\n//# sourceURL=webpack:///./src/rce/plugins/shared/CanvasContentTray.js?");
|
|
17857
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CanvasContentTray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"trayPropTypes\", function() { return trayPropTypes; });\n/* harmony import */ var _babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/extends */ \"../../node_modules/@babel/runtime-corejs3/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _instructure_ui_tray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-tray */ \"../../node_modules/@instructure/ui-tray/es/index.js\");\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_heading__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-heading */ \"../../node_modules/@instructure/ui-heading/es/index.js\");\n/* harmony import */ var _instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-spinner */ \"../../node_modules/@instructure/ui-spinner/es/index.js\");\n/* harmony import */ var _instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-flex */ \"../../node_modules/@instructure/ui-flex/es/index.js\");\n/* harmony import */ var _ErrorBoundary__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ErrorBoundary */ \"./src/rce/plugins/shared/ErrorBoundary.js\");\n/* harmony import */ var _bridge_Bridge__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../bridge/Bridge */ \"./src/bridge/Bridge.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _Filter__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Filter */ \"./src/rce/plugins/shared/Filter.js\");\n/* harmony import */ var _StoreContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./StoreContext */ \"./src/rce/plugins/shared/StoreContext.js\");\n/* harmony import */ var _trayUtils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./trayUtils */ \"./src/rce/plugins/shared/trayUtils.js\");\n/* harmony import */ var _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../instructure_icon_maker/svg/constants */ \"./src/rce/plugins/instructure_icon_maker/svg/constants.js\");\n/* harmony import */ var _ContentSelection__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ContentSelection */ \"./src/rce/plugins/shared/ContentSelection.js\");\n/* harmony import */ var _linkUtils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./linkUtils */ \"./src/rce/plugins/shared/linkUtils.js\");\n/* harmony import */ var _LinkDisplay__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./LinkDisplay */ \"./src/rce/plugins/shared/LinkDisplay.js\");\n\n\n/*\n * Copyright (C) 2019 - present Instructure, Inc.\n *\n * This file is part of Canvas.\n *\n * Canvas is free software: you can redistribute it and/or modify it under\n * the terms of the GNU Affero General Public License as published by the Free\n * Software Foundation, version 3 of the License.\n *\n * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY\n * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\n * details.\n *\n * You should have received a copy of the GNU Affero General Public License along\n * with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Returns the translated tray label\n * @param {string} contentType - The type of content showing on tray\n * @param {string} contentSubtype - The current subtype of content loaded in the tray\n * @param {string} contextType - The user's context\n * @returns {string}\n */\n\nfunction getTrayLabel(contentType, contentSubtype, contextType) {\n if (contentType === 'links' && contextType === 'course') {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Course Links');\n } else if (contentType === 'links' && contextType === 'group') {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Group Links');\n }\n\n switch (contentSubtype) {\n case _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_14__[\"ICON_MAKER_ICONS\"]:\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Icon Maker Icons');\n\n case 'images':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Course Images');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Group Images');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('User Images');\n\n case 'media':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Course Media');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Group Media');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('User Media');\n\n case 'documents':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Course Documents');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Group Documents');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('User Documents');\n\n default:\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Tray');\n // Shouldn't ever get here\n }\n}\n\nconst thePanels = {\n icon_maker_icons: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(3), __webpack_require__.e(1), __webpack_require__.e(32)]).then(__webpack_require__.bind(null, /*! ../instructure_icon_maker/components/SavedIconMakerList */ \"./src/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js\"))),\n links: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(2), __webpack_require__.e(28)]).then(__webpack_require__.bind(null, /*! ../instructure_links/components/LinksPanel */ \"./src/rce/plugins/instructure_links/components/LinksPanel.js\"))),\n images: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(3), __webpack_require__.e(1), __webpack_require__.e(35)]).then(__webpack_require__.bind(null, /*! ../instructure_image/Images */ \"./src/rce/plugins/instructure_image/Images/index.js\"))),\n documents: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(1), __webpack_require__.e(33)]).then(__webpack_require__.bind(null, /*! ../instructure_documents/components/DocumentsPanel */ \"./src/rce/plugins/instructure_documents/components/DocumentsPanel.js\"))),\n media: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(1), __webpack_require__.e(34)]).then(__webpack_require__.bind(null, /*! ../instructure_record/MediaPanel */ \"./src/rce/plugins/instructure_record/MediaPanel/index.js\"))),\n all: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(29), __webpack_require__.e(36)]).then(__webpack_require__.bind(null, /*! ./RceFileBrowser */ \"./src/rce/plugins/shared/RceFileBrowser.js\"))),\n unknown: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.lazy(() => __webpack_require__.e(/*! import() */ 75).then(__webpack_require__.bind(null, /*! ./UnknownFileTypePanel */ \"./src/rce/plugins/shared/UnknownFileTypePanel.js\")))\n}; // Returns a Suspense wrapped lazy loaded component\n// pulled from useLazy's cache\n\nfunction DynamicPanel(props) {\n let key = '';\n\n if (props.contentType === 'links') {\n key = 'links';\n } else {\n key = props.contentSubtype in thePanels ? props.contentSubtype : 'unknown';\n }\n\n const Component = thePanels[key];\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_6__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"large\"\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Component, props));\n}\n\nfunction renderLoading() {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Loading');\n}\n\nconst FILTER_SETTINGS_BY_PLUGIN = {\n user_documents: {\n contextType: 'user',\n contentType: 'user_files',\n contentSubtype: 'documents',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n course_documents: {\n contextType: 'course',\n contentType: 'course_files',\n contentSubtype: 'documents',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n group_documents: {\n contextType: 'group',\n contentType: 'group_files',\n contentSubtype: 'documents',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n user_images: {\n contextType: 'user',\n contentType: 'user_files',\n contentSubtype: 'images',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n course_images: {\n contextType: 'course',\n contentType: 'course_files',\n contentSubtype: 'images',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n group_images: {\n contextType: 'group',\n contentType: 'group_files',\n contentSubtype: 'images',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n user_media: {\n contextType: 'user',\n contentType: 'user_files',\n contentSubtype: 'media',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n course_media: {\n contextType: 'course',\n contentType: 'course_files',\n contentSubtype: 'media',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n group_media: {\n contextType: 'group',\n contentType: 'group_files',\n contentSubtype: 'media',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n course_links: {\n contextType: 'course',\n contentType: 'links',\n contentSubtype: 'all',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n course_link_edit: {\n contextType: 'course',\n contentType: 'links',\n contentSubtype: 'edit',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n group_links: {\n contextType: 'group',\n contentType: 'links',\n contentSubtype: 'all',\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n list_icon_maker_icons: {\n contextType: 'course',\n contentType: 'course_files',\n contentSubtype: _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_14__[\"ICON_MAKER_ICONS\"],\n sortValue: 'date_added',\n sortDir: 'desc',\n searchString: ''\n },\n all: {\n contextType: 'course',\n contentType: 'course_files',\n contentSubtype: 'all',\n sortValue: 'alphabetical',\n sortDir: 'asc',\n searchString: ''\n }\n};\n\nfunction isLoading(cprops) {\n var _cprops$collections$a, _cprops$collections$a2, _cprops$collections$d, _cprops$collections$m, _cprops$collections$q, _cprops$collections$w, _cprops$documents$cou, _cprops$documents$use, _cprops$documents$gro, _cprops$media$course, _cprops$media$user, _cprops$media$group, _cprops$all_files;\n\n return ((_cprops$collections$a = cprops.collections.announcements) === null || _cprops$collections$a === void 0 ? void 0 : _cprops$collections$a.isLoading) || ((_cprops$collections$a2 = cprops.collections.assignments) === null || _cprops$collections$a2 === void 0 ? void 0 : _cprops$collections$a2.isLoading) || ((_cprops$collections$d = cprops.collections.discussions) === null || _cprops$collections$d === void 0 ? void 0 : _cprops$collections$d.isLoading) || ((_cprops$collections$m = cprops.collections.modules) === null || _cprops$collections$m === void 0 ? void 0 : _cprops$collections$m.isLoading) || ((_cprops$collections$q = cprops.collections.quizzes) === null || _cprops$collections$q === void 0 ? void 0 : _cprops$collections$q.isLoading) || ((_cprops$collections$w = cprops.collections.wikiPages) === null || _cprops$collections$w === void 0 ? void 0 : _cprops$collections$w.isLoading) || ((_cprops$documents$cou = cprops.documents.course) === null || _cprops$documents$cou === void 0 ? void 0 : _cprops$documents$cou.isLoading) || ((_cprops$documents$use = cprops.documents.user) === null || _cprops$documents$use === void 0 ? void 0 : _cprops$documents$use.isLoading) || ((_cprops$documents$gro = cprops.documents.group) === null || _cprops$documents$gro === void 0 ? void 0 : _cprops$documents$gro.isLoading) || ((_cprops$media$course = cprops.media.course) === null || _cprops$media$course === void 0 ? void 0 : _cprops$media$course.isLoading) || ((_cprops$media$user = cprops.media.user) === null || _cprops$media$user === void 0 ? void 0 : _cprops$media$user.isLoading) || ((_cprops$media$group = cprops.media.group) === null || _cprops$media$group === void 0 ? void 0 : _cprops$media$group.isLoading) || ((_cprops$all_files = cprops.all_files) === null || _cprops$all_files === void 0 ? void 0 : _cprops$all_files.isLoading);\n}\n/**\n * This component is used within various plugins to handle loading in content\n * from Canvas. It is essentially the main component.\n */\n\n\nfunction CanvasContentTray(props) {\n // should the tray be rendered open?\n const [isOpen, setIsOpen] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false); // has the tray fully opened. we use this to defer rendering the content\n // until the tray is open.\n\n const [hasOpened, setHasOpened] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false); // should we close the tray after the user clicks on something in it?\n\n const [hidingTrayOnAction, setHidingTrayOnAction] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(true);\n const trayRef = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useRef\"])(null);\n const scrollingAreaRef = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useRef\"])(null);\n const [filterSettings, setFilterSettings] = Object(_Filter__WEBPACK_IMPORTED_MODULE_11__[\"useFilterSettings\"])();\n const [isEditTray, setIsEditTray] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false);\n const [link, setLink] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(null);\n const [linkText, setLinkText] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(null);\n const [placeholderText, setPlaceholderText] = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(null);\n const Icon = Object(_linkUtils__WEBPACK_IMPORTED_MODULE_16__[\"getIcon\"])(link === null || link === void 0 ? void 0 : link.type);\n const {\n bridge,\n editor,\n onTrayClosing\n } = { ...props\n };\n const handleDismissTray = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useCallback\"])(() => {\n // return focus to the RCE if focus was on this tray\n if (trayRef.current && trayRef.current.contains(document.activeElement)) {\n bridge.focusActiveEditor(false);\n }\n\n onTrayClosing && onTrayClosing(CanvasContentTray.globalOpenCount); // tell RCEWrapper we're closing if we're open\n\n setIsOpen(false);\n }, [bridge, onTrayClosing]);\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(() => {\n const controller = {\n showTrayForPlugin(plugin) {\n // increment a counter that's used as the key when rendering\n // this gets us a new instance everytime, which is necessary\n // to get the queries run so we have up to date data.\n ++CanvasContentTray.globalOpenCount;\n setFilterSettings(FILTER_SETTINGS_BY_PLUGIN[plugin]);\n setIsOpen(true);\n\n if (plugin === 'course_link_edit') {\n setIsEditTray(true);\n const {\n fileName,\n contentType,\n url,\n published,\n text\n } = Object(_ContentSelection__WEBPACK_IMPORTED_MODULE_15__[\"getLinkContentFromEditor\"])(editor.editor);\n setLink({\n title: fileName,\n type: contentType,\n href: url,\n published\n });\n setLinkText(text);\n setPlaceholderText(text);\n } else {\n setIsEditTray(false);\n }\n },\n\n hideTray(forceClose) {\n if (forceClose || hidingTrayOnAction) {\n handleDismissTray();\n }\n }\n\n };\n bridge.attachController(controller, editor.id);\n return () => {\n bridge.detachController(editor.id);\n }; // it's OK the setFilterSettings is not a dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor.id, bridge, handleDismissTray, hidingTrayOnAction]);\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(() => {\n if (hasOpened && scrollingAreaRef.current && !scrollingAreaRef.current.style.overscrollBehaviorY) {\n scrollingAreaRef.current.style.overscrollBehaviorY = 'contain';\n }\n }, [hasOpened]);\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(() => {\n var _trayRef$current;\n\n if (!hasOpened) return;\n let c = document.querySelector('[role=\"main\"]');\n let target_w = 0;\n if (!c) return;\n const margin = window.getComputedStyle(c).direction === 'ltr' ? document.body.getBoundingClientRect().right - c.getBoundingClientRect().right : c.getBoundingClientRect().left;\n target_w = c.offsetWidth - ((_trayRef$current = trayRef.current) === null || _trayRef$current === void 0 ? void 0 : _trayRef$current.offsetWidth) + margin;\n\n if (target_w >= 320 && target_w < c.offsetWidth) {\n c.style.boxSizing = 'border-box';\n c.style.width = `${target_w}px`;\n }\n\n setHidingTrayOnAction(target_w < 320);\n return () => {\n c = document.querySelector('[role=\"main\"]');\n if (!c) return;\n c.style.width = '';\n };\n }, [hasOpened]);\n\n function handleOpenTray() {\n bridge.focusEditor(editor);\n setHasOpened(true);\n }\n\n function handleExitTray() {\n onTrayClosing && onTrayClosing(true); // tell RCEWrapper we're closing\n }\n\n function handleCloseTray() {\n setHasOpened(false);\n onTrayClosing && onTrayClosing(false); // tell RCEWrapper we're closed\n }\n\n function handleReplaceButton() {\n handleDismissTray();\n const newLink = { ...link,\n forceRename: true,\n text: linkText || placeholderText\n };\n bridge.insertLink(newLink);\n }\n\n function renderFooter() {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, {\n background: \"secondary\",\n borderWidth: \"small none none none\",\n padding: \"small medium\",\n textAlign: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"Button\"], {\n onClick: handleDismissTray\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Cancel')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"Button\"], {\n margin: \"0 0 0 x-small\",\n color: \"primary\",\n onClick: handleReplaceButton,\n \"data-testid\": \"replace-link-button\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Replace')));\n }\n\n function handleFilterChange(newFilter, onChangeContext, onChangeSearchString, onChangeSortBy) {\n const newFilterSettings = { ...newFilter\n };\n\n if (newFilterSettings.sortValue) {\n newFilterSettings.sortDir = newFilterSettings.sortValue === 'alphabetical' ? 'asc' : 'desc';\n onChangeSortBy({\n sort: newFilterSettings.sortValue,\n dir: newFilterSettings.sortDir\n });\n }\n\n if ('searchString' in newFilterSettings && filterSettings.searchString !== newFilterSettings.searchString) {\n onChangeSearchString(newFilterSettings.searchString);\n }\n\n setFilterSettings(newFilterSettings);\n\n if (newFilterSettings.contentType) {\n let contextType, contextId;\n\n switch (newFilterSettings.contentType) {\n case 'user_files':\n contextType = 'user';\n contextId = props.containingContext.userId;\n break;\n\n case 'group_files':\n contextType = 'group';\n contextId = props.containingContext.contextId;\n break;\n\n case 'course_files':\n contextType = props.contextType;\n contextId = props.containingContext.contextId;\n break;\n\n case 'links':\n contextType = props.containingContext.contextType;\n contextId = props.containingContext.contextId;\n }\n\n onChangeContext({\n contextType,\n contextId\n });\n }\n }\n\n function getHeader() {\n return isEditTray ? Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Edit Course Link') : Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Add');\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_StoreContext__WEBPACK_IMPORTED_MODULE_12__[\"StoreProvider\"], Object(_babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n key: CanvasContentTray.globalOpenCount,\n contextType: filterSettings.contextType || props.contextType\n }), contentProps => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_tray__WEBPACK_IMPORTED_MODULE_3__[\"Tray\"], {\n \"data-mce-component\": true,\n \"data-testid\": \"CanvasContentTray\",\n label: getTrayLabel(filterSettings.contentType, filterSettings.contentSubtype, contentProps.contextType),\n open: isOpen,\n placement: \"end\",\n size: \"regular\",\n shouldContainFocus: true,\n shouldReturnFocus: false,\n shouldCloseOnDocumentClick: false,\n onDismiss: handleDismissTray,\n onClose: handleCloseTray,\n onExit: handleExitTray,\n onOpen: handleOpenTray,\n contentRef: el => trayRef.current = el\n }, isOpen && hasOpened ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"], {\n direction: \"column\",\n as: \"div\",\n height: Object(_trayUtils__WEBPACK_IMPORTED_MODULE_13__[\"getTrayHeight\"])(),\n overflowY: \"hidden\",\n tabIndex: \"-1\",\n \"data-canvascontenttray-content\": true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, {\n padding: \"medium\",\n shadow: \"above\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"], {\n margin: \"none none medium none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, {\n shouldgrow: true,\n shouldshrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_heading__WEBPACK_IMPORTED_MODULE_5__[\"Heading\"], {\n level: \"h2\"\n }, getHeader())), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_4__[\"CloseButton\"], {\n placement: \"end\",\n onClick: handleDismissTray,\n \"data-testid\": \"CloseButton_ContentTray\",\n screenReaderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_10__[\"default\"])('Close')\n }))), isEditTray && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_LinkDisplay__WEBPACK_IMPORTED_MODULE_17__[\"LinkDisplay\"], {\n linkText: linkText,\n Icon: Icon,\n placeholderText: placeholderText,\n linkFileName: (link === null || link === void 0 ? void 0 : link.title) || '',\n published: (link === null || link === void 0 ? void 0 : link.published) || false,\n handleTextChange: setLinkText\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_Filter__WEBPACK_IMPORTED_MODULE_11__[\"default\"], Object(_babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, filterSettings, {\n userContextType: props.contextType,\n containingContextType: props.containingContext.contextType,\n onChange: newFilter => {\n handleFilterChange(newFilter, contentProps.onChangeContext, contentProps.onChangeSearchString, contentProps.onChangeSortBy);\n },\n isContentLoading: isLoading(contentProps),\n use_rce_icon_maker: props.use_rce_icon_maker\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, {\n grow: true,\n shrink: true,\n margin: \"xx-small xxx-small 0\",\n elementRef: el => scrollingAreaRef.current = el\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"], {\n justifyItems: \"space-between\",\n direction: \"column\",\n height: \"100%\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_7__[\"Flex\"].Item, {\n shouldGrow: true,\n shouldShrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_ErrorBoundary__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(DynamicPanel, Object(_babel_runtime_corejs3_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n contentType: filterSettings.contentType,\n contentSubtype: filterSettings.contentSubtype,\n sortBy: {\n sort: filterSettings.sortValue,\n order: filterSettings.sortDir\n },\n searchString: filterSettings.searchString,\n source: props.source,\n canvasOrigin: props.canvasOrigin,\n jwt: props.jwt,\n host: props.host,\n refreshToken: props.refreshToken,\n context: {\n type: props.contextType,\n id: props.contextId\n },\n editing: isEditTray,\n onEditClick: setLink\n }, contentProps)))), isEditTray && renderFooter()))) : null));\n}\nCanvasContentTray.globalOpenCount = 0;\n\nfunction requiredWithoutSource(props, propName, componentName) {\n if (props.source == null && props[propName] == null) {\n throw new Error(`The prop \\`${propName}\\` is marked as required in \\`${componentName}\\`, but its value is \\`${props[propName]}\\`.`);\n }\n}\n\nconst trayPropsMap = {\n canUploadFiles: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"bool\"].isRequired,\n contextId: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"].isRequired,\n // initial value indicating the user's context (e.g. student v teacher), not the tray's\n contextType: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"].isRequired,\n // initial value indicating the user's context, not the tray's\n containingContext: Object(prop_types__WEBPACK_IMPORTED_MODULE_2__[\"shape\"])({\n contextType: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"].isRequired,\n contextId: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"].isRequired,\n userId: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"].isRequired\n }),\n filesTabDisabled: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"bool\"],\n host: requiredWithoutSource,\n jwt: requiredWithoutSource,\n refreshToken: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"func\"],\n source: Object(prop_types__WEBPACK_IMPORTED_MODULE_2__[\"shape\"])({\n fetchImages: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"func\"].isRequired\n }),\n themeUrl: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"]\n};\nconst trayPropTypes = Object(prop_types__WEBPACK_IMPORTED_MODULE_2__[\"shape\"])(trayPropsMap);\nCanvasContentTray.propTypes = {\n bridge: Object(prop_types__WEBPACK_IMPORTED_MODULE_2__[\"instanceOf\"])(_bridge_Bridge__WEBPACK_IMPORTED_MODULE_9__[\"default\"]).isRequired,\n editor: Object(prop_types__WEBPACK_IMPORTED_MODULE_2__[\"shape\"])({\n id: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"string\"]\n }).isRequired,\n onTrayClosing: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"func\"],\n // called with true when the tray starts closing, false once closed\n onEditClick: prop_types__WEBPACK_IMPORTED_MODULE_2__[\"func\"],\n ...trayPropsMap\n}; // the way we define trayProps, eslint doesn't recognize the following as props\n\n/* eslint-disable react/default-props-match-prop-types */\n\nCanvasContentTray.defaultProps = {\n canUploadFiles: false,\n filesTabDisabled: false,\n refreshToken: null,\n source: null,\n themeUrl: null\n};\n/* eslint-enable react/default-props-match-prop-types */\n\n//# sourceURL=webpack:///./src/rce/plugins/shared/CanvasContentTray.js?");
|
|
17846
17858
|
|
|
17847
17859
|
/***/ }),
|
|
17848
17860
|
|