@instructure/canvas-rce 5.6.0 → 5.6.1
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 +23 -1
- package/coverage/canvas-rce-jest.xml +3734 -0
- package/coverage/canvas-rce-junit.xml +1517 -0
- package/es/rce/RCE.js +5 -7
- package/es/rce/RCEWrapper.js +11 -8
- package/es/rce/contentInsertion.js +3 -1
- package/es/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/es/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/es/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/es/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/{useArrowKeys.js → useKeyMouseEvents.js} +81 -26
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +20 -2
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +28 -3
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/es/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/es/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/es/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/es/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/es/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/es/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/es/rce/plugins/instructure_image/Images/index.js +1 -1
- package/es/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/es/rce/plugins/instructure_links/components/Link.js +36 -11
- package/es/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/es/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/es/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/es/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/es/rce/plugins/instructure_links/plugin.js +18 -3
- package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/es/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/es/rce/plugins/shared/ContentSelection.js +7 -1
- package/es/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/es/rce/plugins/shared/Filter.js +6 -5
- package/es/rce/plugins/shared/LinkDisplay.js +84 -0
- package/es/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/es/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/rce/RCE.js +5 -7
- package/lib/rce/RCEWrapper.js +11 -8
- package/lib/rce/contentInsertion.js +3 -1
- package/lib/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/{useArrowKeys.js → useKeyMouseEvents.js} +81 -26
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +20 -2
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +28 -3
- package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/rce/plugins/shared/Filter.js +6 -5
- package/lib/rce/plugins/shared/LinkDisplay.js +84 -0
- package/lib/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/ar/modules/rce/RCE.js +5 -7
- package/lib/translated/ar/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/ar/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/ar/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/ar/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/ar/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/ar/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/ar/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/{useArrowKeys.js → useKeyMouseEvents.js} +81 -26
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/ar/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/ar/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/ar/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/ar/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/ar/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/ar/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/ar/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/ar/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/ar/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/ar/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/ar/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/ar/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/ar/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/ar/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/ar/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/ar/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/ar/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/ar/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/ar/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/ar/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/ar/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/ar/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/ca/modules/rce/RCE.js +5 -7
- package/lib/translated/ca/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/ca/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/ca/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/ca/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/ca/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/ca/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/ca/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/{useArrowKeys.js → useKeyMouseEvents.js} +81 -26
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/ca/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/ca/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/ca/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/ca/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/ca/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/ca/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/ca/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/ca/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/ca/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/ca/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/ca/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/ca/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/ca/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/ca/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/ca/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/ca/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/ca/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/ca/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/ca/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/ca/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/ca/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/ca/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/cy/modules/rce/RCE.js +5 -7
- package/lib/translated/cy/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/cy/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/cy/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/cy/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/cy/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/cy/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/cy/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/cy/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/cy/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/cy/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/cy/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/cy/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/cy/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/cy/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/cy/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/cy/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/cy/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/cy/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/cy/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/cy/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/cy/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/cy/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/cy/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/cy/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/cy/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/cy/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/cy/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/cy/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/cy/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/da/modules/rce/RCE.js +5 -7
- package/lib/translated/da/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/da/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/da/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/da/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/da/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/da/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/da/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/da/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/da/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/da/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/da/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/da/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/da/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/da/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/da/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/da/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/da/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/da/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/da/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/da/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/da/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/da/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/da/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/da/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/da/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/da/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/da/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/da/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/da/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/da/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/da/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/da/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/da/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/da-x-k12/modules/rce/RCE.js +5 -7
- package/lib/translated/da-x-k12/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/da-x-k12/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/da-x-k12/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/da-x-k12/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/da-x-k12/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/da-x-k12/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/da-x-k12/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/da-x-k12/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/da-x-k12/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/da-x-k12/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/da-x-k12/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/da-x-k12/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/da-x-k12/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/de/modules/rce/RCE.js +5 -7
- package/lib/translated/de/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/de/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/de/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/de/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/de/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/de/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/de/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/de/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/de/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/de/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/de/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/de/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/de/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/de/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/de/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/de/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/de/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/de/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/de/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/de/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/de/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/de/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/de/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/de/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/de/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/de/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/de/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/de/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/de/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/de/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/de/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/de/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/de/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/el/modules/rce/RCE.js +5 -7
- package/lib/translated/el/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/el/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/el/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/el/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/el/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/el/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/el/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/el/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/el/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/el/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/el/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/el/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/el/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/el/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/el/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/el/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/el/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/el/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/el/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/el/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/el/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/el/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/el/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/el/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/el/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/el/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/el/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/el/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/el/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/el/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/el/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/el/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/el/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/en/modules/rce/RCE.js +5 -7
- package/lib/translated/en/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/en/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/en/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/en/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/en/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/en/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/en/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/en/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/en/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/en/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +10 -7
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/en/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/en/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/en/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/en/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/en/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/en/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/en/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/en/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/en/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/en/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/en/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/en/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/en/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/en/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/en/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/en/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/en/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/en/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/en/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/en/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/en/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/en/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/en/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/RCE.js +5 -7
- package/lib/translated/en-AU-x-unimelb/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/en-AU-x-unimelb/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/en-AU-x-unimelb/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/en-AU-x-unimelb/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +10 -7
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/RCE.js +5 -7
- package/lib/translated/en-GB-x-ukhe/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/en-GB-x-ukhe/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/en-GB-x-ukhe/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/en-GB-x-ukhe/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +10 -7
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/en_AU/modules/rce/RCE.js +5 -7
- package/lib/translated/en_AU/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/en_AU/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/en_AU/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/en_AU/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/en_AU/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/en_AU/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/en_AU/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +10 -7
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/en_AU/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/en_AU/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/en_AU/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/en_AU/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/en_AU/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/en_AU/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/en_AU/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/en_AU/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/en_AU/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/en_AU/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/en_AU/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/en_AU/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/en_AU/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/en_AU/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/en_AU/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/en_AU/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/en_AU/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/en_AU/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/en_AU/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/en_AU/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/en_AU/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/en_AU/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/en_CA/modules/rce/RCE.js +5 -7
- package/lib/translated/en_CA/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/en_CA/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/en_CA/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/en_CA/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/en_CA/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/en_CA/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/en_CA/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +10 -7
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/en_CA/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/en_CA/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/en_CA/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/en_CA/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/en_CA/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/en_CA/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/en_CA/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/en_CA/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/en_CA/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/en_CA/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/en_CA/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/en_CA/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/en_CA/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/en_CA/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/en_CA/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/en_CA/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/en_CA/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/en_CA/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/en_CA/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/en_CA/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/en_CA/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/en_CA/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/en_CY/modules/rce/RCE.js +5 -7
- package/lib/translated/en_CY/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/en_CY/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/en_CY/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/en_CY/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/en_CY/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/en_CY/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/en_CY/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +10 -7
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/en_CY/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/en_CY/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/en_CY/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/en_CY/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/en_CY/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/en_CY/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/en_CY/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/en_CY/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/en_CY/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/en_CY/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/en_CY/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/en_CY/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/en_CY/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/en_CY/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/en_CY/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/en_CY/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/en_CY/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/en_CY/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/en_CY/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/en_CY/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/en_CY/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/en_CY/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/en_GB/modules/rce/RCE.js +5 -7
- package/lib/translated/en_GB/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/en_GB/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/en_GB/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/en_GB/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/en_GB/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/en_GB/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/en_GB/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +10 -7
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/en_GB/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/en_GB/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/en_GB/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/en_GB/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/en_GB/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/en_GB/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/en_GB/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/en_GB/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/en_GB/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/en_GB/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/en_GB/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/en_GB/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/en_GB/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/en_GB/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/en_GB/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/en_GB/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/en_GB/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/en_GB/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/en_GB/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/en_GB/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/en_GB/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/en_GB/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/es/modules/rce/RCE.js +5 -7
- package/lib/translated/es/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/es/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/es/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/es/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/es/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/es/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/es/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/es/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/es/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/es/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/es/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/es/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/es/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/es/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/es/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/es/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/es/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/es/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/es/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/es/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/es/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/es/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/es/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/es/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/es/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/es/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/es/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/es/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/es/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/es/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/es/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/es/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/es/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/es_ES/modules/rce/RCE.js +5 -7
- package/lib/translated/es_ES/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/es_ES/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/es_ES/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/es_ES/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/es_ES/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/es_ES/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/es_ES/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/es_ES/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/es_ES/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/es_ES/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/es_ES/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/es_ES/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/es_ES/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/es_ES/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/es_ES/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/es_ES/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/es_ES/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/es_ES/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/es_ES/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/es_ES/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/es_ES/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/es_ES/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/es_ES/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/es_ES/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/es_ES/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/es_ES/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/es_ES/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/es_ES/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/es_ES/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/fa_IR/modules/rce/RCE.js +5 -7
- package/lib/translated/fa_IR/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/fa_IR/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/fa_IR/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/fa_IR/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/fa_IR/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/fa_IR/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/fa_IR/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/fa_IR/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/fa_IR/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/fa_IR/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/fa_IR/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/fa_IR/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/fa_IR/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/fa_IR/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/fa_IR/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/fa_IR/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/fi/modules/rce/RCE.js +5 -7
- package/lib/translated/fi/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/fi/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/fi/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/fi/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/fi/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/fi/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/fi/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/fi/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/fi/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/fi/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/fi/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/fi/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/fi/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/fi/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/fi/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/fi/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/fi/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/fi/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/fi/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/fi/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/fi/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/fi/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/fi/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/fi/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/fi/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/fi/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/fi/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/fi/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/fi/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/fr/modules/rce/RCE.js +5 -7
- package/lib/translated/fr/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/fr/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/fr/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/fr/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/fr/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/fr/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/fr/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/fr/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/fr/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/fr/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/fr/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/fr/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/fr/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/fr/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/fr/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/fr/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/fr/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/fr/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/fr/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/fr/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/fr/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/fr/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/fr/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/fr/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/fr/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/fr/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/fr/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/fr/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/fr/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/fr_CA/modules/rce/RCE.js +5 -7
- package/lib/translated/fr_CA/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/fr_CA/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/fr_CA/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/fr_CA/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/fr_CA/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/fr_CA/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/fr_CA/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/fr_CA/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/fr_CA/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/fr_CA/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/fr_CA/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/fr_CA/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/fr_CA/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/fr_CA/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/fr_CA/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/fr_CA/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/he/modules/rce/RCE.js +5 -7
- package/lib/translated/he/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/he/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/he/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/he/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/he/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/he/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/he/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/he/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/he/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/he/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/he/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/he/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/he/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/he/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/he/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/he/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/he/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/he/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/he/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/he/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/he/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/he/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/he/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/he/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/he/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/he/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/he/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/he/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/he/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/he/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/he/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/he/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/he/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/ht/modules/rce/RCE.js +5 -7
- package/lib/translated/ht/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/ht/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/ht/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/ht/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/ht/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/ht/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/ht/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/ht/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/ht/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/ht/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/ht/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/ht/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/ht/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/ht/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/ht/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/ht/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/ht/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/ht/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/ht/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/ht/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/ht/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/ht/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/ht/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/ht/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/ht/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/ht/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/ht/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/ht/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/ht/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/hu/modules/rce/RCE.js +5 -7
- package/lib/translated/hu/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/hu/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/hu/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/hu/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/hu/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/hu/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/hu/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/hu/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/hu/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/hu/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/hu/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/hu/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/hu/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/hu/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/hu/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/hu/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/hu/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/hu/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/hu/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/hu/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/hu/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/hu/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/hu/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/hu/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/hu/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/hu/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/hu/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/hu/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/hu/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/hy/modules/rce/RCE.js +5 -7
- package/lib/translated/hy/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/hy/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/hy/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/hy/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/hy/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/hy/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/hy/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/hy/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/hy/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/hy/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/hy/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/hy/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/hy/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/hy/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/hy/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/hy/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/hy/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/hy/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/hy/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/hy/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/hy/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/hy/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/hy/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/hy/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/hy/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/hy/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/hy/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/hy/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/hy/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/is/modules/rce/RCE.js +5 -7
- package/lib/translated/is/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/is/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/is/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/is/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/is/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/is/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/is/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/is/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/is/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/is/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/is/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/is/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/is/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/is/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/is/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/is/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/is/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/is/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/is/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/is/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/is/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/is/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/is/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/is/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/is/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/is/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/is/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/is/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/is/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/is/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/is/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/is/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/is/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/it/modules/rce/RCE.js +5 -7
- package/lib/translated/it/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/it/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/it/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/it/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/it/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/it/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/it/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/it/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/it/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/it/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/it/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/it/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/it/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/it/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/it/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/it/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/it/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/it/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/it/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/it/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/it/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/it/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/it/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/it/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/it/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/it/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/it/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/it/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/it/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/it/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/it/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/it/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/it/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/ja/modules/rce/RCE.js +5 -7
- package/lib/translated/ja/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/ja/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/ja/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/ja/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/ja/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/ja/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/ja/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/ja/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/ja/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/ja/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/ja/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/ja/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/ja/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/ja/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/ja/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/ja/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/ja/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/ja/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/ja/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/ja/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/ja/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/ja/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/ja/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/ja/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/ja/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/ja/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/ja/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/ja/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/ja/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/ko/modules/rce/RCE.js +5 -7
- package/lib/translated/ko/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/ko/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/ko/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/ko/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/ko/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/ko/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/ko/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/ko/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/ko/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/ko/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/ko/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/ko/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/ko/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/ko/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/ko/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/ko/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/ko/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/ko/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/ko/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/ko/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/ko/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/ko/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/ko/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/ko/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/ko/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/ko/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/ko/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/ko/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/ko/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/mi/modules/rce/RCE.js +5 -7
- package/lib/translated/mi/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/mi/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/mi/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/mi/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/mi/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/mi/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/mi/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/mi/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/mi/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/mi/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/mi/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/mi/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/mi/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/mi/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/mi/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/mi/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/mi/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/mi/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/mi/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/mi/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/mi/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/mi/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/mi/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/mi/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/mi/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/mi/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/mi/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/mi/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/mi/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/nb/modules/rce/RCE.js +5 -7
- package/lib/translated/nb/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/nb/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/nb/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/nb/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/nb/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/nb/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/nb/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/nb/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/nb/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/nb/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/nb/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/nb/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/nb/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/nb/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/nb/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/nb/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/nb/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/nb/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/nb/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/nb/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/nb/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/nb/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/nb/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/nb/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/nb/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/nb/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/nb/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/nb/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/nb/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/nb-x-k12/modules/rce/RCE.js +5 -7
- package/lib/translated/nb-x-k12/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/nb-x-k12/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/nb-x-k12/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/nb-x-k12/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/nb-x-k12/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/nb-x-k12/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/nb-x-k12/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/nb-x-k12/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/nb-x-k12/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/nb-x-k12/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/nb-x-k12/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/nb-x-k12/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/nb-x-k12/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/nl/modules/rce/RCE.js +5 -7
- package/lib/translated/nl/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/nl/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/nl/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/nl/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/nl/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/nl/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/nl/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/nl/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/nl/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/nl/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/nl/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/nl/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/nl/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/nl/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/nl/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/nl/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/nl/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/nl/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/nl/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/nl/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/nl/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/nl/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/nl/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/nl/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/nl/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/nl/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/nl/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/nl/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/nl/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/nn/modules/rce/RCE.js +5 -7
- package/lib/translated/nn/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/nn/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/nn/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/nn/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/nn/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/nn/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/nn/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/nn/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/nn/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/nn/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/nn/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/nn/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/nn/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/nn/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/nn/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/nn/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/nn/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/nn/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/nn/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/nn/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/nn/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/nn/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/nn/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/nn/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/nn/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/nn/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/nn/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/nn/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/nn/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/pl/modules/rce/RCE.js +5 -7
- package/lib/translated/pl/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/pl/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/pl/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/pl/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/pl/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/pl/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/pl/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/pl/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/pl/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/pl/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/pl/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/pl/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/pl/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/pl/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/pl/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/pl/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/pl/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/pl/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/pl/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/pl/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/pl/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/pl/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/pl/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/pl/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/pl/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/pl/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/pl/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/pl/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/pl/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/pt/modules/rce/RCE.js +5 -7
- package/lib/translated/pt/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/pt/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/pt/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/pt/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/pt/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/pt/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/pt/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/pt/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/pt/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/pt/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/pt/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/pt/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/pt/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/pt/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/pt/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/pt/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/pt/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/pt/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/pt/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/pt/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/pt/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/pt/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/pt/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/pt/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/pt/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/pt/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/pt/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/pt/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/pt/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/pt_BR/modules/rce/RCE.js +5 -7
- package/lib/translated/pt_BR/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/pt_BR/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/pt_BR/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/pt_BR/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/pt_BR/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/pt_BR/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/pt_BR/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/pt_BR/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/pt_BR/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/pt_BR/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/pt_BR/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/pt_BR/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/pt_BR/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/pt_BR/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/pt_BR/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/pt_BR/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/ru/modules/rce/RCE.js +5 -7
- package/lib/translated/ru/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/ru/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/ru/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/ru/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/ru/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/ru/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/ru/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/ru/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/ru/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/ru/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/ru/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/ru/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/ru/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/ru/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/ru/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/ru/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/ru/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/ru/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/ru/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/ru/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/ru/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/ru/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/ru/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/ru/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/ru/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/ru/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/ru/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/ru/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/ru/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/se/modules/rce/RCE.js +5 -7
- package/lib/translated/se/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/se/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/se/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/se/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/se/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/se/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/se/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/se/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/se/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/se/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +10 -7
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/se/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/se/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/se/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/se/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/se/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/se/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/se/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/se/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/se/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/se/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/se/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/se/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/se/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/se/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/se/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/se/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/se/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/se/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/se/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/se/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/se/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/se/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/se/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/sl/modules/rce/RCE.js +5 -7
- package/lib/translated/sl/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/sl/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/sl/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/sl/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/sl/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/sl/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/sl/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/sl/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/sl/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/sl/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/sl/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/sl/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/sl/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/sl/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/sl/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/sl/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/sl/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/sl/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/sl/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/sl/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/sl/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/sl/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/sl/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/sl/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/sl/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/sl/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/sl/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/sl/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/sl/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/sv/modules/rce/RCE.js +5 -7
- package/lib/translated/sv/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/sv/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/sv/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/sv/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/sv/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/sv/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/sv/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/sv/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/sv/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/sv/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/sv/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/sv/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/sv/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/sv/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/sv/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/sv/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/sv/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/sv/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/sv/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/sv/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/sv/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/sv/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/sv/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/sv/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/sv/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/sv/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/sv/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/sv/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/sv/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/sv-x-k12/modules/rce/RCE.js +5 -7
- package/lib/translated/sv-x-k12/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/sv-x-k12/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/sv-x-k12/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/sv-x-k12/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/sv-x-k12/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/sv-x-k12/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/sv-x-k12/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/sv-x-k12/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/sv-x-k12/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/sv-x-k12/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/sv-x-k12/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/sv-x-k12/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/sv-x-k12/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/th/modules/rce/RCE.js +5 -7
- package/lib/translated/th/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/th/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/th/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/th/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/th/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/th/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/th/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/th/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/th/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/th/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/th/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/th/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/th/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/th/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/th/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/th/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/th/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/th/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/th/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/th/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/th/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/th/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/th/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/th/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/th/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/th/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/th/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/th/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/th/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/th/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/th/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/th/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/th/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/tr/modules/rce/RCE.js +5 -7
- package/lib/translated/tr/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/tr/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/tr/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/tr/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/tr/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/tr/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/tr/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/tr/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/tr/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/tr/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/tr/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/tr/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/tr/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/tr/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/tr/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/tr/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/tr/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/tr/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/tr/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/tr/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/tr/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/tr/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/tr/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/tr/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/tr/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/tr/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/tr/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/tr/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/tr/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/uk_UA/modules/rce/RCE.js +5 -7
- package/lib/translated/uk_UA/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/uk_UA/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/uk_UA/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/uk_UA/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/uk_UA/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/uk_UA/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/uk_UA/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/uk_UA/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/uk_UA/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/uk_UA/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/uk_UA/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/uk_UA/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/uk_UA/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/uk_UA/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/uk_UA/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/uk_UA/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/vi/modules/rce/RCE.js +5 -7
- package/lib/translated/vi/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/vi/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/vi/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/vi/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/vi/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/vi/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/vi/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/vi/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/vi/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/vi/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/vi/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/vi/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/vi/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/vi/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/vi/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/vi/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/vi/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/vi/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/vi/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/vi/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/vi/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/vi/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/vi/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/vi/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/vi/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/vi/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/vi/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/vi/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/vi/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/zh/modules/rce/RCE.js +5 -7
- package/lib/translated/zh/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/zh/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/zh/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/zh/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/zh/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/zh/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/zh/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/zh/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/zh/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/zh/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/zh/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/zh/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/zh/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/zh/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/zh/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/zh/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/zh/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/zh/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/zh/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/zh/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/zh/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/zh/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/zh/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/zh/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/zh/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/zh/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/zh/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/zh/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/zh/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/zh-Hans/modules/rce/RCE.js +5 -7
- package/lib/translated/zh-Hans/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/zh-Hans/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/zh-Hans/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/zh-Hans/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/zh-Hans/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/zh-Hans/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/zh-Hans/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/zh-Hans/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/zh-Hans/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/zh-Hans/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/zh-Hans/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/zh-Hans/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/zh-Hans/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/zh-Hant/modules/rce/RCE.js +5 -7
- package/lib/translated/zh-Hant/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/zh-Hant/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/zh-Hant/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/zh-Hant/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/zh-Hant/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/zh-Hant/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/zh-Hant/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/zh-Hant/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/zh-Hant/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/zh-Hant/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/zh-Hant/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/zh-Hant/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/zh-Hant/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/lib/translated/zh_HK/modules/rce/RCE.js +5 -7
- package/lib/translated/zh_HK/modules/rce/RCEWrapper.js +11 -8
- package/lib/translated/zh_HK/modules/rce/__tests__/RCE.test.js +4 -12
- package/lib/translated/zh_HK/modules/rce/__tests__/contentInsertion.test.js +6 -0
- package/lib/translated/zh_HK/modules/rce/__tests__/root.test.js +1 -7
- package/lib/translated/zh_HK/modules/rce/contentInsertion.js +3 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_documents/components/Link.js +7 -7
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_equation/EquationEditorModal/__tests__/index.test.js +1 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -2
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/ExpandoText.js +1 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_external_tools/components/LtiToolsModal/LtiTool.js +1 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Modal.js +11 -8
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/Preview.js +21 -12
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/__tests__/Preview.test.js +71 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ResetControls.js +38 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/RotationControls.js +12 -8
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ShapeControls.js +1 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/ZoomControls.js +12 -6
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/__tests__/ResetControls.test.js +40 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/controls/index.js +9 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useKeyMouseEvents.js +211 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +18 -2
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +1 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +1 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +26 -3
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Course.test.js +30 -2
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/ImageSection.test.js +1 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/Upload.test.js +27 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/__tests__/utils.test.js +75 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +29 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +19 -11
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/reducers/imageCropper.js +10 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +7 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/svg/__tests__/metadata.test.js +1 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/svg/__tests__/settings.test.js +8 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/svg/constants.js +2 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_image/ImageOptionsTray/index.js +5 -5
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_image/Images/index.js +1 -1
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_links/components/CollectionPanel.js +8 -3
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_links/components/Link.js +36 -11
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +6 -6
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_links/components/LinkSet.js +8 -3
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_links/components/LinksPanel.js +20 -3
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_links/components/NavigationPanel.js +7 -3
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_links/components/__tests__/Link.test.js +84 -0
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_links/plugin.js +18 -3
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_record/AudioOptionsTray/index.js +6 -6
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_record/VideoOptionsTray/index.js +6 -6
- package/lib/translated/zh_HK/modules/rce/plugins/shared/CanvasContentTray.js +90 -7
- package/lib/translated/zh_HK/modules/rce/plugins/shared/ContentSelection.js +7 -1
- package/lib/translated/zh_HK/modules/rce/plugins/shared/DimensionsInput/index.js +2 -2
- package/lib/translated/zh_HK/modules/rce/plugins/shared/Filter.js +6 -5
- package/lib/translated/zh_HK/modules/rce/plugins/shared/LinkDisplay.js +82 -0
- package/lib/translated/zh_HK/modules/rce/plugins/shared/Upload/ComputerPanel.js +2 -4
- package/lib/translated/zh_HK/modules/rce/plugins/shared/Upload/UnsplashPanel.js +1 -1
- package/lib/translated/zh_HK/modules/rce/plugins/shared/__tests__/CanvasContentTray.test.js +48 -3
- package/lib/translated/zh_HK/modules/rce/plugins/shared/__tests__/ContentSelection.test.js +12 -0
- package/lib/translated/zh_HK/modules/rce/plugins/shared/__tests__/Filter.test.js +7 -0
- package/lib/translated/zh_HK/modules/rce/plugins/shared/__tests__/LinkDisplay.test.js +119 -0
- package/package.json +2 -2
- package/testcafe/build/11.js +3 -3
- package/testcafe/build/12.js +1 -1
- package/testcafe/build/20.js +1 -1
- package/testcafe/build/21.js +25 -1
- package/testcafe/build/23.js +90 -66
- package/testcafe/build/24.js +7 -7
- package/testcafe/build/28.js +5 -5
- package/testcafe/build/29.js +10 -10
- package/testcafe/build/30.js +3 -3
- package/testcafe/build/32.js +3 -3
- package/testcafe/build/33.js +3 -3
- package/testcafe/build/34.js +1 -1
- package/testcafe/build/35.js +1 -1
- package/testcafe/build/36.js +18 -19
- package/testcafe/build/37.js +11 -22
- package/testcafe/build/38.js +1 -1
- package/testcafe/build/5.js +12 -1
- package/testcafe/build/6.js +1 -1
- package/testcafe/build/69.js +1 -1
- package/testcafe/build/72.js +1 -1
- package/testcafe/build/73.js +1 -1
- package/testcafe/build/75.js +1 -1
- package/testcafe/build/8.js +46 -10
- package/testcafe/build/9.js +26 -2
- package/testcafe/build/testcafe.js +88 -52
- package/testcafe/entry.js +0 -6
- package/lib/translated/cy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/da/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/da-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/de/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/el/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/en/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/en-AU-x-unimelb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/en-GB-x-ukhe/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/en_AU/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/en_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/en_CY/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/en_GB/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/es/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/es_ES/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/fa_IR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/fi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/fr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/fr_CA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/he/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/ht/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/hu/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/hy/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/is/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/it/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/ja/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/ko/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/mi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/nb/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/nb-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/nl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/nn/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/pl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/pt/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/pt_BR/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/ru/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/se/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/sl/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/sv/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/sv-x-k12/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/th/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/tr/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/uk_UA/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/vi/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/zh/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/zh-Hans/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/zh-Hant/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
- package/lib/translated/zh_HK/modules/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageCropper/useArrowKeys.js +0 -156
|
@@ -676,7 +676,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Acc
|
|
|
676
676
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
677
677
|
|
|
678
678
|
"use strict";
|
|
679
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FocusRegion\", function() { return FocusRegion; });\n/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/classCallCheck */ \"../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/createClass */ \"../../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _instructure_console__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/console */ \"../../node_modules/@instructure/console/es/index.js\");\n/* harmony import */ var keycode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! keycode */ \"../../node_modules/keycode/index.js\");\n/* harmony import */ var keycode__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(keycode__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-dom-utils */ \"../../node_modules/@instructure/ui-dom-utils/es/index.js\");\n/* harmony import */ var _instructure_uid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/uid */ \"../../node_modules/@instructure/uid/es/index.js\");\n/* harmony import */ var _ScreenReaderFocusRegion_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ScreenReaderFocusRegion.js */ \"../../node_modules/@instructure/ui-a11y-utils/es/ScreenReaderFocusRegion.js\");\n/* harmony import */ var _KeyboardFocusRegion_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./KeyboardFocusRegion.js */ \"../../node_modules/@instructure/ui-a11y-utils/es/KeyboardFocusRegion.js\");\n\n\n\n\n/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 - present Instructure, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n\n\n\n\nvar FocusRegion = /*#__PURE__*/function () {\n function FocusRegion(element, options) {\n var _this = this;\n\n Object(_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, FocusRegion);\n\n this._contextElement = null;\n this._preventCloseOnDocumentClick = false;\n this._listeners = [];\n this._active = false;\n\n this.handleDismiss = function (event, documentClick) {\n _this._options.onDismiss(event, documentClick);\n };\n\n this.captureDocumentClick = function (event) {\n var target = event.target;\n _this._preventCloseOnDocumentClick = event.button !== 0 || Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(_this._contextElement, target);\n };\n\n this.handleDocumentClick = function (event) {\n if (_this._options.shouldCloseOnDocumentClick && !_this._preventCloseOnDocumentClick) {\n _this.handleDismiss(event, true);\n }\n };\n\n this.handleFrameClick = function (event, frame) {\n if (!Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(_this._contextElement, frame)) {\n // dismiss if frame is not within the region\n _this.handleDismiss(event, true);\n }\n };\n\n this.handleKeyUp = function (event) {\n if (_this._options.shouldCloseOnEscape && event.keyCode === keycode__WEBPACK_IMPORTED_MODULE_3___default.a.codes.escape && !event.defaultPrevented) {\n _this.handleDismiss(event);\n }\n };\n\n this._options = options || {\n shouldCloseOnDocumentClick: true,\n shouldCloseOnEscape: true,\n onDismiss: function onDismiss(event) {}\n };\n this._contextElement = element;\n this._screenReaderFocusRegion = new _ScreenReaderFocusRegion_js__WEBPACK_IMPORTED_MODULE_6__[\"ScreenReaderFocusRegion\"](element, options);\n this._keyboardFocusRegion = new _KeyboardFocusRegion_js__WEBPACK_IMPORTED_MODULE_7__[\"KeyboardFocusRegion\"](element, options);\n this._id = Object(_instructure_uid__WEBPACK_IMPORTED_MODULE_5__[\"uid\"])();\n }\n\n Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(FocusRegion, [{\n key: \"updateElement\",\n value: function updateElement(element) {\n this._contextElement = element;\n\n if (this._keyboardFocusRegion) {\n this._keyboardFocusRegion.updateElement(element);\n }\n\n if (this._screenReaderFocusRegion) {\n this._screenReaderFocusRegion.updateElement(element);\n }\n }\n }, {\n key: \"activate\",\n value: function activate() {\n var _this2 = this;\n\n if (!this._active) {\n var doc = Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"ownerDocument\"])(this._contextElement);\n\n this._keyboardFocusRegion.activate();\n\n this._screenReaderFocusRegion.activate();\n\n if (this._options.shouldCloseOnDocumentClick) {\n this._listeners.push(Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"addEventListener\"])(doc, 'click', this.captureDocumentClick, true));\n\n this._listeners.push(Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"addEventListener\"])(doc, 'click', this.handleDocumentClick));\n\n Array.from(doc.getElementsByTagName('iframe')).forEach(function (el) {\n // listen for mouseup events on any iframes in the document\n var frameDoc = Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"getFrameDocumentSafe\"])(el);\n\n if (frameDoc) {\n _this2._listeners.push(Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"addEventListener\"])(frameDoc, 'mouseup', function (event) {\n _this2.handleFrameClick(event, el);\n }));\n }\n });\n }\n\n if (this._options.shouldCloseOnEscape) {\n this._listeners.push(Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"addEventListener\"])(doc, 'keyup', this.handleKeyUp));\n }\n\n this._active = true;\n }\n }\n }, {\n key: \"deactivate\",\n value: function deactivate() {\n var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},\n _ref$keyboard = _ref.keyboard,\n keyboard = _ref$keyboard === void 0 ? true : _ref$keyboard;\n\n if (this._active) {\n this._listeners.forEach(function (listener) {\n listener.remove();\n });\n\n this._listeners = [];\n\n if (keyboard) {\n this._keyboardFocusRegion.deactivate();\n }\n\n this._screenReaderFocusRegion.deactivate();\n\n this._active = false;\n }\n }\n }, {\n key: \"focus\",\n value: function focus() {\n /*#__PURE__*/\n\n /*#__PURE__*/\n Object(_instructure_console__WEBPACK_IMPORTED_MODULE_2__[\"error\"])(this._active, \"[FocusRegion] Cannot call '.focus()' on a region that is not currently active.\");\n\n this._keyboardFocusRegion.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n /*#__PURE__*/\n\n /*#__PURE__*/\n Object(_instructure_console__WEBPACK_IMPORTED_MODULE_2__[\"error\"])(!this._active, \"[FocusRegion] Cannot call '.blur()' on a region that is currently active.\");\n\n this._keyboardFocusRegion.blur();\n }\n }, {\n key: \"id\",\n get: function get() {\n return this._id;\n } // Focused returns when the focus region is active. Checking focused with the active element\n // is inconsistent across browsers (Safari/Firefox do not focus elements on click)\n\n }, {\n key: \"focused\",\n get: function get() {\n return this._active;\n }\n }, {\n key: \"keyboardFocusable\",\n get: function get() {\n return (Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"findTabbable\"])(this._contextElement) || []).length > 0;\n }\n }]);\n\n return FocusRegion;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FocusRegion);\n\n\n//# sourceURL=webpack:////Users/jon.scheiding/Code/INST/canvas-lms/node_modules/@instructure/ui-a11y-utils/es/FocusRegion.js?");
|
|
679
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FocusRegion\", function() { return FocusRegion; });\n/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/classCallCheck */ \"../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/createClass */ \"../../node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _instructure_console__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/console */ \"../../node_modules/@instructure/console/es/index.js\");\n/* harmony import */ var keycode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! keycode */ \"../../node_modules/keycode/index.js\");\n/* harmony import */ var keycode__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(keycode__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-dom-utils */ \"../../node_modules/@instructure/ui-dom-utils/es/index.js\");\n/* harmony import */ var _instructure_uid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/uid */ \"../../node_modules/@instructure/uid/es/index.js\");\n/* harmony import */ var _ScreenReaderFocusRegion_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ScreenReaderFocusRegion.js */ \"../../node_modules/@instructure/ui-a11y-utils/es/ScreenReaderFocusRegion.js\");\n/* harmony import */ var _KeyboardFocusRegion_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./KeyboardFocusRegion.js */ \"../../node_modules/@instructure/ui-a11y-utils/es/KeyboardFocusRegion.js\");\n\n\n\n\n/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 - present Instructure, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n\n\n\n\nvar FocusRegion = /*#__PURE__*/function () {\n function FocusRegion(element, options) {\n var _this = this;\n\n Object(_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, FocusRegion);\n\n this._contextElement = null;\n this._preventCloseOnDocumentClick = false;\n this._listeners = [];\n this._active = false;\n\n this.handleDismiss = function (event, documentClick) {\n if (_this._contextElement) {\n _this._options.onDismiss(event, documentClick);\n }\n };\n\n this.captureDocumentClick = function (event) {\n var target = event.target;\n _this._preventCloseOnDocumentClick = event.button !== 0 || Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(_this._contextElement, target);\n };\n\n this.handleDocumentClick = function (event) {\n if (_this._options.shouldCloseOnDocumentClick && !_this._preventCloseOnDocumentClick) {\n _this.handleDismiss(event, true);\n }\n };\n\n this.handleFrameClick = function (event, frame) {\n if (!Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"contains\"])(_this._contextElement, frame)) {\n // dismiss if frame is not within the region\n _this.handleDismiss(event, true);\n }\n };\n\n this.handleKeyUp = function (event) {\n if (_this._options.shouldCloseOnEscape && event.keyCode === keycode__WEBPACK_IMPORTED_MODULE_3___default.a.codes.escape && !event.defaultPrevented) {\n _this.handleDismiss(event);\n }\n };\n\n this._options = options || {\n shouldCloseOnDocumentClick: true,\n shouldCloseOnEscape: true,\n onDismiss: function onDismiss(event) {}\n };\n this._contextElement = element;\n this._screenReaderFocusRegion = new _ScreenReaderFocusRegion_js__WEBPACK_IMPORTED_MODULE_6__[\"ScreenReaderFocusRegion\"](element, options);\n this._keyboardFocusRegion = new _KeyboardFocusRegion_js__WEBPACK_IMPORTED_MODULE_7__[\"KeyboardFocusRegion\"](element, options);\n this._id = Object(_instructure_uid__WEBPACK_IMPORTED_MODULE_5__[\"uid\"])();\n }\n\n Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(FocusRegion, [{\n key: \"updateElement\",\n value: function updateElement(element) {\n this._contextElement = element;\n\n if (this._keyboardFocusRegion) {\n this._keyboardFocusRegion.updateElement(element);\n }\n\n if (this._screenReaderFocusRegion) {\n this._screenReaderFocusRegion.updateElement(element);\n }\n }\n }, {\n key: \"activate\",\n value: function activate() {\n var _this2 = this;\n\n if (!this._active) {\n var doc = Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"ownerDocument\"])(this._contextElement);\n\n this._keyboardFocusRegion.activate();\n\n this._screenReaderFocusRegion.activate();\n\n if (this._options.shouldCloseOnDocumentClick) {\n this._listeners.push(Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"addEventListener\"])(doc, 'click', this.captureDocumentClick, true));\n\n this._listeners.push(Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"addEventListener\"])(doc, 'click', this.handleDocumentClick));\n\n Array.from(doc.getElementsByTagName('iframe')).forEach(function (el) {\n // listen for mouseup events on any iframes in the document\n var frameDoc = Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"getFrameDocumentSafe\"])(el);\n\n if (frameDoc) {\n _this2._listeners.push(Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"addEventListener\"])(frameDoc, 'mouseup', function (event) {\n _this2.handleFrameClick(event, el);\n }));\n }\n });\n }\n\n if (this._options.shouldCloseOnEscape) {\n this._listeners.push(Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"addEventListener\"])(doc, 'keyup', this.handleKeyUp));\n }\n\n this._active = true;\n }\n }\n }, {\n key: \"deactivate\",\n value: function deactivate() {\n var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},\n _ref$keyboard = _ref.keyboard,\n keyboard = _ref$keyboard === void 0 ? true : _ref$keyboard;\n\n if (this._active) {\n this._listeners.forEach(function (listener) {\n listener.remove();\n });\n\n this._listeners = [];\n\n if (keyboard) {\n this._keyboardFocusRegion.deactivate();\n }\n\n this._screenReaderFocusRegion.deactivate();\n\n this._active = false;\n }\n }\n }, {\n key: \"focus\",\n value: function focus() {\n /*#__PURE__*/\n\n /*#__PURE__*/\n Object(_instructure_console__WEBPACK_IMPORTED_MODULE_2__[\"error\"])(this._active, \"[FocusRegion] Cannot call '.focus()' on a region that is not currently active.\");\n\n this._keyboardFocusRegion.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n /*#__PURE__*/\n\n /*#__PURE__*/\n Object(_instructure_console__WEBPACK_IMPORTED_MODULE_2__[\"error\"])(!this._active, \"[FocusRegion] Cannot call '.blur()' on a region that is currently active.\");\n\n this._keyboardFocusRegion.blur();\n }\n }, {\n key: \"id\",\n get: function get() {\n return this._id;\n } // Focused returns when the focus region is active. Checking focused with the active element\n // is inconsistent across browsers (Safari/Firefox do not focus elements on click)\n\n }, {\n key: \"focused\",\n get: function get() {\n return this._active;\n }\n }, {\n key: \"keyboardFocusable\",\n get: function get() {\n return (Object(_instructure_ui_dom_utils__WEBPACK_IMPORTED_MODULE_4__[\"findTabbable\"])(this._contextElement) || []).length > 0;\n }\n }]);\n\n return FocusRegion;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FocusRegion);\n\n\n//# sourceURL=webpack:////Users/jon.scheiding/Code/INST/canvas-lms/node_modules/@instructure/ui-a11y-utils/es/FocusRegion.js?");
|
|
680
680
|
|
|
681
681
|
/***/ }),
|
|
682
682
|
|
|
@@ -16768,7 +16768,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac
|
|
|
16768
16768
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
16769
16769
|
|
|
16770
16770
|
"use strict";
|
|
16771
|
-
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 _instructure_canvas_rce_src_rce_plugins_shared_Upload_constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @instructure/canvas-rce/src/rce/plugins/shared/Upload/constants */ \"./src/rce/plugins/shared/Upload/constants.js\");\n/* harmony import */ var _acceptedMediaFileTypes__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./acceptedMediaFileTypes */ \"../canvas-media/es/acceptedMediaFileTypes.js\");\n/* harmony import */ var _shared_LoadingIndicator__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./shared/LoadingIndicator */ \"../canvas-media/es/shared/LoadingIndicator.js\");\n/* harmony import */ var _saveMediaRecording__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./saveMediaRecording */ \"../canvas-media/es/saveMediaRecording.js\");\n/* harmony import */ var _translationShape__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./translationShape */ \"../canvas-media/es/translationShape.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(5), __webpack_require__.e(10), __webpack_require__.e(20), __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(22), __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_14__[\"saveClosedCaptions\"])(data.mediaObject.media_object.media_id, this.state.subtitles, this.props.rcsConfig, _instructure_canvas_rce_src_rce_plugins_shared_Upload_constants__WEBPACK_IMPORTED_MODULE_11__[\"RCS_MAX_BODY_SIZE\"] - _instructure_canvas_rce_src_rce_plugins_shared_Upload_constants__WEBPACK_IMPORTED_MODULE_11__[\"RCS_REQUEST_SIZE_BUFFER\"]);\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 this.setState({\n selectedPanel: index\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_13__[\"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_12__[\"ACCEPTED_FILE_TYPES\"],\n languages: this.props.languages,\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_13__[\"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: 0,\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_14__[\"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); // If the specified tabs have not changed, don't attempt\n // to set the selected panel state (this would trigger\n // and endless loop).\n\n if (Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"isEqual\"])(prevProps.tabs, this.props.tabs)) return;\n\n if (prevState.selectedPanel === -1) {\n // The tabs prop has changed and the selectedPanel was\n // never set in the constructor. Attempt to infer the\n // selected panel based on the new tabs list\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 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__[\"Modal\"], {\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 }, /*#__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 languages: Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"arrayOf\"])(Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"shape\"])({\n id: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"],\n label: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"]\n })),\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_15__[\"default\"],\n // for testing\n computerFile: Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"instanceOf\"])(File)\n};\nUploadMedia.defaultProps = {\n disableSubmitWhileUploading: false\n};\n\n//# sourceURL=webpack:///../canvas-media/es/UploadMedia.js?");
|
|
16771
|
+
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(5), __webpack_require__.e(10), __webpack_require__.e(20), __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(22), __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 this.setState({\n selectedPanel: index\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 languages: this.props.languages,\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: 0,\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); // If the specified tabs have not changed, don't attempt\n // to set the selected panel state (this would trigger\n // and endless loop).\n\n if (Object(lodash__WEBPACK_IMPORTED_MODULE_3__[\"isEqual\"])(prevProps.tabs, this.props.tabs)) return;\n\n const invalidPanelSelected = () => this.state.selectedPanel === PANELS.COMPUTER && !this.props.tabs.upload || this.state.selectedPanel === PANELS.RECORD && !this.props.tabs.record;\n\n if (prevState.selectedPanel === -1 || invalidPanelSelected()) {\n // The tabs prop has changed and the selectedPanel was\n // never set in the constructor. Attempt to infer the\n // selected panel based on the new tabs list\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 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_6__[\"Modal\"], {\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 }, /*#__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 languages: Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"arrayOf\"])(Object(prop_types__WEBPACK_IMPORTED_MODULE_0__[\"shape\"])({\n id: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"],\n label: prop_types__WEBPACK_IMPORTED_MODULE_0__[\"string\"]\n })),\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};\nUploadMedia.defaultProps = {\n disableSubmitWhileUploading: false\n};\n\n//# sourceURL=webpack:///../canvas-media/es/UploadMedia.js?");
|
|
16772
16772
|
|
|
16773
16773
|
/***/ }),
|
|
16774
16774
|
|
|
@@ -16788,11 +16788,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
16788
16788
|
/*!***********************************!*\
|
|
16789
16789
|
!*** ../canvas-media/es/index.js ***!
|
|
16790
16790
|
\***********************************/
|
|
16791
|
-
/*! exports provided: default, ClosedCaptionPanel, RocketSVG, useComputerPanelFocus, isAudio, isVideo, isPreviewable, sizeMediaPlayer, LoadingIndicator, saveMediaRecording, saveClosedCaptions */
|
|
16791
|
+
/*! exports provided: default, ClosedCaptionPanel, RocketSVG, useComputerPanelFocus, isAudio, isVideo, isPreviewable, sizeMediaPlayer, LoadingIndicator, saveMediaRecording, saveClosedCaptions, CONSTANTS */
|
|
16792
16792
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
16793
16793
|
|
|
16794
16794
|
"use strict";
|
|
16795
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _UploadMedia__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UploadMedia */ \"../canvas-media/es/UploadMedia.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _UploadMedia__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _ClosedCaptionCreator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ClosedCaptionCreator */ \"../canvas-media/es/ClosedCaptionCreator/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ClosedCaptionPanel\", function() { return _ClosedCaptionCreator__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _RocketSVG__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RocketSVG */ \"../canvas-media/es/RocketSVG.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RocketSVG\", function() { return _RocketSVG__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _useComputerPanelFocus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useComputerPanelFocus */ \"../canvas-media/es/useComputerPanelFocus.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useComputerPanelFocus\", function() { return _useComputerPanelFocus__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _shared_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./shared/utils */ \"../canvas-media/es/shared/utils.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAudio\", function() { return _shared_utils__WEBPACK_IMPORTED_MODULE_4__[\"isAudio\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isVideo\", function() { return _shared_utils__WEBPACK_IMPORTED_MODULE_4__[\"isVideo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPreviewable\", function() { return _shared_utils__WEBPACK_IMPORTED_MODULE_4__[\"isPreviewable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sizeMediaPlayer\", function() { return _shared_utils__WEBPACK_IMPORTED_MODULE_4__[\"sizeMediaPlayer\"]; });\n\n/* harmony import */ var _shared_LoadingIndicator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shared/LoadingIndicator */ \"../canvas-media/es/shared/LoadingIndicator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LoadingIndicator\", function() { return _shared_LoadingIndicator__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _saveMediaRecording__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./saveMediaRecording */ \"../canvas-media/es/saveMediaRecording.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"saveMediaRecording\", function() { return _saveMediaRecording__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"saveClosedCaptions\", function() { return _saveMediaRecording__WEBPACK_IMPORTED_MODULE_6__[\"saveClosedCaptions\"]; });\n\n/*\n * Copyright (C) 2020 - 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//# sourceURL=webpack:///../canvas-media/es/index.js?");
|
|
16795
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _UploadMedia__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./UploadMedia */ \"../canvas-media/es/UploadMedia.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _UploadMedia__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _ClosedCaptionCreator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ClosedCaptionCreator */ \"../canvas-media/es/ClosedCaptionCreator/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ClosedCaptionPanel\", function() { return _ClosedCaptionCreator__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _RocketSVG__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RocketSVG */ \"../canvas-media/es/RocketSVG.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RocketSVG\", function() { return _RocketSVG__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _useComputerPanelFocus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useComputerPanelFocus */ \"../canvas-media/es/useComputerPanelFocus.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useComputerPanelFocus\", function() { return _useComputerPanelFocus__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _shared_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./shared/utils */ \"../canvas-media/es/shared/utils.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isAudio\", function() { return _shared_utils__WEBPACK_IMPORTED_MODULE_4__[\"isAudio\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isVideo\", function() { return _shared_utils__WEBPACK_IMPORTED_MODULE_4__[\"isVideo\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"isPreviewable\", function() { return _shared_utils__WEBPACK_IMPORTED_MODULE_4__[\"isPreviewable\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"sizeMediaPlayer\", function() { return _shared_utils__WEBPACK_IMPORTED_MODULE_4__[\"sizeMediaPlayer\"]; });\n\n/* harmony import */ var _shared_LoadingIndicator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./shared/LoadingIndicator */ \"../canvas-media/es/shared/LoadingIndicator.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LoadingIndicator\", function() { return _shared_LoadingIndicator__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _saveMediaRecording__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./saveMediaRecording */ \"../canvas-media/es/saveMediaRecording.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"saveMediaRecording\", function() { return _saveMediaRecording__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"saveClosedCaptions\", function() { return _saveMediaRecording__WEBPACK_IMPORTED_MODULE_6__[\"saveClosedCaptions\"]; });\n\n/* harmony import */ var _shared_constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./shared/constants */ \"../canvas-media/es/shared/constants.js\");\n/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, \"CONSTANTS\", function() { return _shared_constants__WEBPACK_IMPORTED_MODULE_7__; });\n/*\n * Copyright (C) 2020 - 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//# sourceURL=webpack:///../canvas-media/es/index.js?");
|
|
16796
16796
|
|
|
16797
16797
|
/***/ }),
|
|
16798
16798
|
|
|
@@ -16844,6 +16844,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
16844
16844
|
|
|
16845
16845
|
/***/ }),
|
|
16846
16846
|
|
|
16847
|
+
/***/ "../canvas-media/es/shared/constants.js":
|
|
16848
|
+
/*!**********************************************!*\
|
|
16849
|
+
!*** ../canvas-media/es/shared/constants.js ***!
|
|
16850
|
+
\**********************************************/
|
|
16851
|
+
/*! exports provided: CC_FILE_MAX_BYTES */
|
|
16852
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
16853
|
+
|
|
16854
|
+
"use strict";
|
|
16855
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CC_FILE_MAX_BYTES\", function() { return CC_FILE_MAX_BYTES; });\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 CC_FILE_MAX_BYTES = 295000;\n\n//# sourceURL=webpack:///../canvas-media/es/shared/constants.js?");
|
|
16856
|
+
|
|
16857
|
+
/***/ }),
|
|
16858
|
+
|
|
16847
16859
|
/***/ "../canvas-media/es/shared/utils.js":
|
|
16848
16860
|
/*!******************************************!*\
|
|
16849
16861
|
!*** ../canvas-media/es/shared/utils.js ***!
|
|
@@ -16948,7 +16960,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _def
|
|
|
16948
16960
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
16949
16961
|
|
|
16950
16962
|
"use strict";
|
|
16951
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _uploader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uploader */ \"../k5uploader/es/uploader.js\");\n/* harmony import */ var _session_manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./session_manager */ \"../k5uploader/es/session_manager.js\");\n/* harmony import */ var _kaltura_session__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kaltura_session */ \"../k5uploader/es/kaltura_session.js\");\n/* harmony import */ var _message_bus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./message_bus */ \"../k5uploader/es/message_bus.js\");\n/* harmony import */ var _messenger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./messenger */ \"../k5uploader/es/messenger.js\");\n/* harmony import */ var _entry_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./entry_service */ \"../k5uploader/es/entry_service.js\");\n/* harmony import */ var _uiconf_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./uiconf_service */ \"../k5uploader/es/uiconf_service.js\");\n/* harmony import */ var _k5_options__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./k5_options */ \"../k5uploader/es/k5_options.js\");\n\n
|
|
16963
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _uploader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uploader */ \"../k5uploader/es/uploader.js\");\n/* harmony import */ var _session_manager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./session_manager */ \"../k5uploader/es/session_manager.js\");\n/* harmony import */ var _kaltura_session__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kaltura_session */ \"../k5uploader/es/kaltura_session.js\");\n/* harmony import */ var _message_bus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./message_bus */ \"../k5uploader/es/message_bus.js\");\n/* harmony import */ var _messenger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./messenger */ \"../k5uploader/es/messenger.js\");\n/* harmony import */ var _entry_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./entry_service */ \"../k5uploader/es/entry_service.js\");\n/* harmony import */ var _uiconf_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./uiconf_service */ \"../k5uploader/es/uiconf_service.js\");\n/* harmony import */ var _k5_options__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./k5_options */ \"../k5uploader/es/k5_options.js\");\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\nfunction K5Uploader(options) {\n // set up instance as an event dispatcher\n _messenger__WEBPACK_IMPORTED_MODULE_5__[\"default\"].decorate(this);\n _k5_options__WEBPACK_IMPORTED_MODULE_8__[\"default\"].setOptions(options);\n this.buildDependencies();\n this.addListeners();\n this.session.setSession(options.kaltura_session);\n this.loadUiConf();\n}\n\nK5Uploader.prototype.destroy = function () {\n _message_bus__WEBPACK_IMPORTED_MODULE_4__[\"default\"].destroy();\n this.session = undefined;\n this.entryService = undefined;\n this.uiconfService = undefined;\n};\n\nK5Uploader.prototype.buildDependencies = function () {\n this.session = new _kaltura_session__WEBPACK_IMPORTED_MODULE_3__[\"default\"]();\n this.entryService = new _entry_service__WEBPACK_IMPORTED_MODULE_6__[\"default\"]();\n this.uiconfService = new _uiconf_service__WEBPACK_IMPORTED_MODULE_7__[\"default\"]();\n};\n\nK5Uploader.prototype.addListeners = function () {\n _message_bus__WEBPACK_IMPORTED_MODULE_4__[\"default\"].addEventListener('UiConf.error', this.onUiConfError.bind(this));\n _message_bus__WEBPACK_IMPORTED_MODULE_4__[\"default\"].addEventListener('UiConf.complete', this.onUiConfComplete.bind(this));\n _message_bus__WEBPACK_IMPORTED_MODULE_4__[\"default\"].addEventListener('Uploader.error', this.onUploadError.bind(this));\n _message_bus__WEBPACK_IMPORTED_MODULE_4__[\"default\"].addEventListener('Uploader.success', this.onUploadSuccess.bind(this));\n _message_bus__WEBPACK_IMPORTED_MODULE_4__[\"default\"].addEventListener('Uploader.progress', this.onProgress.bind(this));\n _message_bus__WEBPACK_IMPORTED_MODULE_4__[\"default\"].addEventListener('Entry.success', this.onEntrySuccess.bind(this));\n _message_bus__WEBPACK_IMPORTED_MODULE_4__[\"default\"].addEventListener('Entry.fail', this.onEntryFail.bind(this));\n};\n\nK5Uploader.prototype.onSessionLoaded = function (data) {\n this.session = data;\n this.loadUiConf();\n};\n\nK5Uploader.prototype.loadUiConf = function () {\n this.uiconfService.load(this.session);\n};\n\nK5Uploader.prototype.onUiConfComplete = function (result) {\n this.uiconfig = result;\n this.dispatchEvent('K5.ready', {}, this);\n};\n\nK5Uploader.prototype.uploadFile = function (file) {\n var _context;\n\n this.file = file;\n\n if (!file) {\n return;\n }\n\n if (this.uiconfig.acceptableFile(file, _k5_options__WEBPACK_IMPORTED_MODULE_8__[\"default\"].allowedMediaTypes) || _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0___default()(_context = ['webm', 'video/webm', 'audio/webm']).call(_context, file.type)) {\n this.uploader = new _uploader__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n this.uploader.send(this.session, file);\n } else {\n const details = {\n maxFileSize: this.uiconfig.maxFileSize,\n file,\n allowedMediaTypes: _k5_options__WEBPACK_IMPORTED_MODULE_8__[\"default\"].allowedMediaTypes\n };\n this.dispatchEvent('K5.fileError', details, this);\n }\n};\n\nK5Uploader.prototype.onUploadSuccess = function (result) {\n // combine all needed data and add an entry to kaltura\n const allParams = [this.session.asEntryParams(), result.asEntryParams(), _k5_options__WEBPACK_IMPORTED_MODULE_8__[\"default\"].asEntryParams()];\n this.entryService.addEntry(allParams);\n}; // Delegate to publicly available K5 events\n\n\nK5Uploader.prototype.onProgress = function (e) {\n this.dispatchEvent('K5.progress', e, this);\n};\n\nK5Uploader.prototype.onUploadError = function (result) {\n this.dispatchEvent('K5.error', result, this);\n};\n\nK5Uploader.prototype.onEntrySuccess = function (data) {\n this.dispatchEvent('K5.complete', data, this);\n};\n\nK5Uploader.prototype.onEntryFail = function (data) {\n this.dispatchEvent('K5.error', data, this);\n};\n\nK5Uploader.prototype.onUiConfError = function (result) {\n this.dispatchEvent('K5.uiconfError', result, this);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (K5Uploader);\n\n//# sourceURL=webpack:///../k5uploader/es/k5uploader.js?");
|
|
16952
16964
|
|
|
16953
16965
|
/***/ }),
|
|
16954
16966
|
|
|
@@ -17131,30 +17143,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/*\n * Copyright (C) 2019 - p
|
|
|
17131
17143
|
|
|
17132
17144
|
/***/ }),
|
|
17133
17145
|
|
|
17134
|
-
/***/ "./node_modules/@instructure/debounce/es/debounce.js":
|
|
17135
|
-
/*!***********************************************************!*\
|
|
17136
|
-
!*** ./node_modules/@instructure/debounce/es/debounce.js ***!
|
|
17137
|
-
\***********************************************************/
|
|
17138
|
-
/*! exports provided: default, debounce */
|
|
17139
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17140
|
-
|
|
17141
|
-
"use strict";
|
|
17142
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return debounce; });\n/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 - present Instructure, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * ---\n * category: utilities\n * ---\n * Creates a debounced function that delays invoking func until after wait milliseconds have elapsed\n * since the last time the debounced function was invoked. The debounced function comes with a cancel\n * method to cancel delayed func invocations and a flush method to immediately invoke them. Provide options\n * to indicate whether func should be invoked on the leading and/or trailing edge of the wait timeout.\n * The func is invoked with the last arguments provided to the debounced function. Subsequent calls to the\n * debounced function return the result of the last func invocation.\n *\n * [lodash.debounce](https://github.com/lodash/lodash/blob/master/debounce.js)\n * doesn't work well with [sinon fakeTimers](http://sinonjs.org/releases/v1.17.7/fake-timers/)\n * so this is forked from the lodash source.\n *\n * Note: Modified from the original to check for cancelled boolean before invoking func to prevent React setState\n * on unmounted components.\n *\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n */\nfunction debounce(func) {\n var wait = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var lastArgs, lastThis, result, lastCallTime;\n var lastInvokeTime = 0;\n var timers = [];\n var cancelled = false;\n\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function');\n }\n\n var leading = !!options.leading;\n var maxing = ('maxWait' in options);\n var trailing = 'trailing' in options ? !!options.trailing : true;\n var maxWait = maxing ? Math.max(+options.maxWait || 0, wait) : 0;\n\n function invokeFunc(time) {\n var args = lastArgs;\n var thisArg = lastThis;\n lastArgs = lastThis = void 0;\n lastInvokeTime = time;\n\n if (cancelled !== true) {\n result = func.apply(thisArg, args);\n return result;\n }\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time; // Start the timer for the trailing edge.\n\n timers.push(setTimeout(timerExpired, wait)); // Invoke the leading edge.\n\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime;\n var timeSinceLastInvoke = time - lastInvokeTime;\n var result = wait - timeSinceLastCall;\n return maxing ? Math.min(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime;\n var timeSinceLastInvoke = time - lastInvokeTime; // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n\n return typeof lastCallTime === 'undefined' || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n\n function timerExpired() {\n var time = Date.now();\n\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n } // Restart the timer.\n\n\n timers.push(setTimeout(timerExpired, remainingWait(time)));\n }\n\n function trailingEdge(time) {\n clearAllTimers(); // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n\n lastArgs = lastThis = void 0;\n return result;\n }\n\n function cancel() {\n cancelled = true;\n clearAllTimers();\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = void 0;\n }\n\n function flush() {\n return timers.length === 0 ? result : trailingEdge(Date.now());\n }\n\n function clearAllTimers() {\n timers.forEach(function (timerId) {\n return clearTimeout(timerId);\n });\n timers = [];\n }\n\n function debounced() {\n var time = Date.now();\n var isInvoking = shouldInvoke(time);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timers.length === 0) {\n return leadingEdge(lastCallTime);\n }\n\n if (maxing) {\n // Handle invocations in a tight loop.\n timers.push(setTimeout(timerExpired, wait));\n return invokeFunc(lastCallTime);\n }\n }\n\n if (timers.length === 0) {\n timers.push(setTimeout(timerExpired, wait));\n }\n\n return result;\n }\n\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (debounce);\n\n\n//# sourceURL=webpack:///./node_modules/@instructure/debounce/es/debounce.js?");
|
|
17143
|
-
|
|
17144
|
-
/***/ }),
|
|
17145
|
-
|
|
17146
|
-
/***/ "./node_modules/@instructure/debounce/es/index.js":
|
|
17147
|
-
/*!********************************************************!*\
|
|
17148
|
-
!*** ./node_modules/@instructure/debounce/es/index.js ***!
|
|
17149
|
-
\********************************************************/
|
|
17150
|
-
/*! exports provided: default, debounce */
|
|
17151
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17152
|
-
|
|
17153
|
-
"use strict";
|
|
17154
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _debounce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./debounce */ \"./node_modules/@instructure/debounce/es/debounce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return _debounce__WEBPACK_IMPORTED_MODULE_0__[\"debounce\"]; });\n\n/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 - present Instructure, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_debounce__WEBPACK_IMPORTED_MODULE_0__[\"debounce\"]);\n\n\n//# sourceURL=webpack:///./node_modules/@instructure/debounce/es/index.js?");
|
|
17155
|
-
|
|
17156
|
-
/***/ }),
|
|
17157
|
-
|
|
17158
17146
|
/***/ "./node_modules/webpack/buildin/amd-define.js":
|
|
17159
17147
|
/*!***************************************!*\
|
|
17160
17148
|
!*** (webpack)/buildin/amd-define.js ***!
|
|
@@ -17223,6 +17211,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Bri
|
|
|
17223
17211
|
|
|
17224
17212
|
/***/ }),
|
|
17225
17213
|
|
|
17214
|
+
/***/ "./src/canvasFileBrowser/FlashAlert.js":
|
|
17215
|
+
/*!*********************************************!*\
|
|
17216
|
+
!*** ./src/canvasFileBrowser/FlashAlert.js ***!
|
|
17217
|
+
\*********************************************/
|
|
17218
|
+
/*! exports provided: default, showFlashAlert, destroyContainer, showFlashError, showFlashSuccess */
|
|
17219
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17220
|
+
|
|
17221
|
+
"use strict";
|
|
17222
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FlashAlert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showFlashAlert\", function() { return showFlashAlert; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"destroyContainer\", function() { return destroyContainer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showFlashError\", function() { return showFlashError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showFlashSuccess\", function() { return showFlashSuccess; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__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 _format_message__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _instructure_ui_alerts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-alerts */ \"../../node_modules/@instructure/ui-alerts/es/index.js\");\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-text */ \"../../node_modules/@instructure/ui-text/es/index.js\");\n/* harmony import */ var _instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-a11y-content */ \"../../node_modules/@instructure/ui-a11y-content/es/index.js\");\n/* harmony import */ var _instructure_ui_motion__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @instructure/ui-motion */ \"../../node_modules/@instructure/ui-motion/es/index.js\");\n/* harmony import */ var _rce_RCEGlobals__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../rce/RCEGlobals */ \"./src/rce/RCEGlobals.js\");\n/*\n * Copyright (C) 2017 - 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 * Flash alerts, especially for ajax error messages\n * Typical usage:\n * import {showFlashError} from './FlashAlert'\n * ...\n * axios.put(url, data).then((response) => {\n * // do something with response\n * }).catch(showFlashError(your_error_message))\n *\n * showFlashError() with no argument shows a generic message\n *\n * On error, will display an inst-ui Alert at the top of the page\n * with an error message and \"Details\" button. When the user clicks\n * the button, it shows error details extracted from the axios Error\n *\n * You could also import the lower level showFlashAlert function or\n * the FlashAlert component if you need more control\n *\n * showFlashAlert({ err, message, type }, onCloseCallback)\n * err: error object\n * message: user-facing message\n * type: one of ['info', 'success', 'warning', 'error']\n * default is 'info' unless an error object is passed in, else is 'error'\n */\n\n\n\n\n\n\n\n\n\n\nconst messageHolderId = 'flashalert_message_holder'; // specs fail if I reuse jquery's elements\n\nconst screenreaderMessageHolderId = 'flash_screenreader_holder';\nconst TIMEOUT = 10000; // An Alert with a message and \"Details\" button which surfaces\n// more info about the error when pressed.\n// Is displayed at the top of the document, and will close itself after a while\n\nclass FlashAlert extends react__WEBPACK_IMPORTED_MODULE_0___default.a.Component {\n constructor(props) {\n super(props);\n\n this.showDetails = () => {\n this.setState({\n showDetails: true\n });\n clearTimeout(this.timerId);\n this.timerId = setTimeout(() => this.closeAlert(), this.props.timeout);\n };\n\n this.closeAlert = () => {\n this.setState({\n isOpen: false\n }, () => {\n setTimeout(() => {\n clearTimeout(this.timerId);\n this.props.onClose();\n }, 500);\n });\n };\n\n this.state = {\n showDetails: false,\n isOpen: true\n };\n this.timerId = 0;\n }\n\n getLiveRegion() {\n // return element where flash screenreader messages go.\n // create if necessary\n let liveRegion = document.getElementById(screenreaderMessageHolderId);\n\n if (!liveRegion) {\n liveRegion = document.createElement('div');\n liveRegion.id = screenreaderMessageHolderId;\n liveRegion.setAttribute('role', 'alert');\n document.body.appendChild(liveRegion);\n }\n\n return liveRegion;\n }\n\n findDetailMessage() {\n const err = this.props.error;\n let a = err.message;\n let b;\n\n if (err.response) {\n if (err.response.data) {\n try {\n if (Array.isArray(err.response.data.errors)) {\n // probably a canvas api\n a = err.response.data.errors[0].message;\n b = err.message;\n } else if (err.response.data.message) {\n // probably a canvas api too\n a = err.response.data.message;\n b = err.message;\n }\n } catch (ignore) {\n a = err.message;\n }\n }\n }\n\n return {\n a,\n b\n };\n }\n\n renderDetailMessage() {\n const {\n a,\n b\n } = this.findDetailMessage();\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_6__[\"Text\"], {\n as: \"p\",\n fontStyle: \"italic\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_6__[\"Text\"], null, a), b ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"br\", null) : null, b ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_6__[\"Text\"], null, b) : null);\n }\n\n render() {\n let details = null;\n\n if (this.props.error) {\n if (this.state.showDetails) {\n details = this.renderDetailMessage();\n } else {\n details = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_7__[\"PresentationContent\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_5__[\"Button\"], {\n variant: \"link\",\n onClick: this.showDetails\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('Details'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_7__[\"ScreenReaderContent\"], null, this.renderDetailMessage()));\n }\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_motion__WEBPACK_IMPORTED_MODULE_8__[\"Transition\"], {\n transitionOnMount: true,\n in: this.state.isOpen,\n type: \"fade\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_alerts__WEBPACK_IMPORTED_MODULE_4__[\"Alert\"], {\n variant: this.props.variant,\n renderCloseButtonLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('Close'),\n onDismiss: this.closeAlert,\n margin: \"small auto\",\n timeout: this.props.timeout,\n liveRegion: this.getLiveRegion,\n transition: \"fade\",\n screenReaderOnly: this.props.screenReaderOnly\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", {\n style: {\n margin: '0 -5px'\n }\n }, this.props.message), details)));\n }\n\n}\nFlashAlert.propTypes = {\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n message: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired,\n error: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.instanceOf(Error),\n variant: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOf(['info', 'success', 'warning', 'error']),\n timeout: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number,\n screenReaderOnly: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool\n};\nFlashAlert.defaultProps = {\n error: null,\n variant: 'info',\n timeout: TIMEOUT,\n screenReaderOnly: false\n};\nfunction showFlashAlert(_ref) {\n let {\n message,\n err,\n type = err ? 'error' : 'info',\n srOnly = false\n } = _ref;\n\n function closeAlert(atNode) {\n react_dom__WEBPACK_IMPORTED_MODULE_2___default.a.unmountComponentAtNode(atNode);\n atNode.remove();\n }\n\n function getAlertContainer() {\n let alertContainer = document.getElementById(messageHolderId);\n\n if (!alertContainer) {\n alertContainer = document.createElement('div');\n alertContainer.classList.add('clickthrough-container');\n alertContainer.id = messageHolderId;\n alertContainer.setAttribute('style', 'position: fixed; top: 0; left: 0; width: 100%; z-index: 100000;');\n document.body.appendChild(alertContainer);\n }\n\n return alertContainer;\n }\n\n function renderAlert(parent) {\n var _RCEGlobals$getConfig;\n\n const configuredTimeout = (_RCEGlobals$getConfig = _rce_RCEGlobals__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getConfig()) === null || _RCEGlobals$getConfig === void 0 ? void 0 : _RCEGlobals$getConfig.flashAlertTimeout;\n react_dom__WEBPACK_IMPORTED_MODULE_2___default.a.render( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(FlashAlert, {\n message: message,\n timeout: Number.isNaN(parseInt(configuredTimeout, 10)) ? TIMEOUT : configuredTimeout,\n error: err,\n variant: type,\n onClose: closeAlert.bind(null, parent),\n screenReaderOnly: srOnly\n }), parent);\n }\n\n const div = document.createElement('div'); // div.setAttribute('class', styles.flashMessage)\n\n div.setAttribute('style', 'max-width:50em;margin:1rem auto;');\n div.setAttribute('class', 'flashalert-message');\n getAlertContainer().appendChild(div);\n renderAlert(div);\n}\nfunction destroyContainer() {\n const container = document.getElementById(messageHolderId);\n const liveRegion = document.getElementById(screenreaderMessageHolderId);\n if (container) container.remove();\n if (liveRegion) liveRegion.remove();\n}\nfunction showFlashError() {\n let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object(_format_message__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('An error occurred making a network request');\n return err => showFlashAlert({\n message,\n err,\n type: 'error'\n });\n}\nfunction showFlashSuccess(message) {\n return () => showFlashAlert({\n message,\n type: 'success'\n });\n}\n\n//# sourceURL=webpack:///./src/canvasFileBrowser/FlashAlert.js?");
|
|
17223
|
+
|
|
17224
|
+
/***/ }),
|
|
17225
|
+
|
|
17226
17226
|
/***/ "./src/canvasFileBrowser/natcompare.js":
|
|
17227
17227
|
/*!*********************************************!*\
|
|
17228
17228
|
!*** ./src/canvasFileBrowser/natcompare.js ***!
|
|
@@ -17375,7 +17375,19 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17375
17375
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17376
17376
|
|
|
17377
17377
|
"use strict";
|
|
17378
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return KeyboardShortcutModal; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _instructure_ui_heading__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/ui-heading */ \"../../node_modules/@instructure/ui-heading/es/index.js\");\n/* harmony import */ var _instructure_ui_list__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-list */ \"../../node_modules/@instructure/ui-list/es/index.js\");\n/* harmony import */ var _instructure_ui_text__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-text */ \"../../node_modules/@instructure/ui-text/es/index.js\");\n/* harmony import */ var _instructure_ui_modal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-modal */ \"../../node_modules/@instructure/ui-modal/es/index.js\");\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_view__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-view */ \"../../node_modules/@instructure/ui-view/es/index.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.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\nfunction KeyboardShortcutModal(props) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_5__[\"Modal\"], {\n \"data-testid\": \"RCE_KeyboardShortcutModal\",\n \"data-mce-component\": true,\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('Keyboard Shortcuts'),\n open: props.open,\n shouldCloseOnDocumentClick: true,\n shouldReturnFocus: true,\n size: \"auto\",\n onClose: props.onClose,\n onExited: props.onExited,\n onDismiss: props.onDismiss\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_5__[\"Modal\"].Header, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_6__[\"CloseButton\"], {\n placement: \"end\",\n offset: \"medium\",\n
|
|
17378
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return KeyboardShortcutModal; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _instructure_ui_heading__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/ui-heading */ \"../../node_modules/@instructure/ui-heading/es/index.js\");\n/* harmony import */ var _instructure_ui_list__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-list */ \"../../node_modules/@instructure/ui-list/es/index.js\");\n/* harmony import */ var _instructure_ui_text__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-text */ \"../../node_modules/@instructure/ui-text/es/index.js\");\n/* harmony import */ var _instructure_ui_modal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-modal */ \"../../node_modules/@instructure/ui-modal/es/index.js\");\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_view__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-view */ \"../../node_modules/@instructure/ui-view/es/index.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _userOS__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./userOS */ \"./src/rce/userOS.ts\");\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\nfunction KeyboardShortcutModal(props) {\n const OSKey = Object(_userOS__WEBPACK_IMPORTED_MODULE_9__[\"determineOSDependentKey\"])();\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_5__[\"Modal\"], {\n \"data-testid\": \"RCE_KeyboardShortcutModal\",\n \"data-mce-component\": true,\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('Keyboard Shortcuts'),\n open: props.open,\n shouldCloseOnDocumentClick: true,\n shouldReturnFocus: true,\n size: \"auto\",\n onClose: props.onClose,\n onExited: props.onExited,\n onDismiss: props.onDismiss\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_5__[\"Modal\"].Header, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_6__[\"CloseButton\"], {\n placement: \"end\",\n offset: \"medium\",\n color: \"primary\",\n onClick: props.onDismiss,\n screenReaderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('Close')\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_heading__WEBPACK_IMPORTED_MODULE_2__[\"Heading\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('Keyboard Shortcuts'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_modal__WEBPACK_IMPORTED_MODULE_5__[\"Modal\"].Body, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_7__[\"View\"], {\n as: \"div\",\n margin: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_list__WEBPACK_IMPORTED_MODULE_3__[\"List\"], {\n isUnstyled: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_list__WEBPACK_IMPORTED_MODULE_3__[\"List\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_4__[\"Text\"], {\n weight: \"bold\"\n }, OSKey, \"+F8/\", OSKey, \"+0\"), ' ', Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('Open this keyboard shortcuts dialog')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_list__WEBPACK_IMPORTED_MODULE_3__[\"List\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_4__[\"Text\"], {\n weight: \"bold\"\n }, \"CTRL+F9\"), \" \", Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('Focus element options toolbar')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_list__WEBPACK_IMPORTED_MODULE_3__[\"List\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_4__[\"Text\"], {\n weight: \"bold\"\n }, OSKey, \"+F9\"), \" \", Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\"Go to the editor's menubar\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_list__WEBPACK_IMPORTED_MODULE_3__[\"List\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_4__[\"Text\"], {\n weight: \"bold\"\n }, OSKey, \"+F10\"), \" \", Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\"Go to the editor's toolbar\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_list__WEBPACK_IMPORTED_MODULE_3__[\"List\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_4__[\"Text\"], {\n weight: \"bold\"\n }, \"ESC\"), ' ', Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('Close a menu or dialog. Also returns you to the editor area')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_list__WEBPACK_IMPORTED_MODULE_3__[\"List\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_4__[\"Text\"], {\n weight: \"bold\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('TAB/Arrows')), ' ', Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('Navigate through the menu or toolbar'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_7__[\"View\"], {\n as: \"p\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('Other editor shortcuts may be found at'), ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: \"https://www.tiny.cloud/docs/advanced/keyboard-shortcuts/\",\n target: \"rcekbshortcut\"\n }, \"https://www.tiny.cloud/docs/advanced/keyboard-shortcuts/\")))));\n}\nKeyboardShortcutModal.propTypes = {\n open: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"].isRequired,\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"],\n onDismiss: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n onExited: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"]\n};\n\n//# sourceURL=webpack:///./src/rce/KeyboardShortcutModal.js?");
|
|
17379
|
+
|
|
17380
|
+
/***/ }),
|
|
17381
|
+
|
|
17382
|
+
/***/ "./src/rce/RCEGlobals.js":
|
|
17383
|
+
/*!*******************************!*\
|
|
17384
|
+
!*** ./src/rce/RCEGlobals.js ***!
|
|
17385
|
+
\*******************************/
|
|
17386
|
+
/*! exports provided: default */
|
|
17387
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17388
|
+
|
|
17389
|
+
"use strict";
|
|
17390
|
+
eval("__webpack_require__.r(__webpack_exports__);\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 isEmpty = obj => Object.keys(obj).length === 0;\n\nclass RCEGlobals {\n constructor() {\n if (!RCEGlobals.instance) {\n RCEGlobals.instance = this;\n this._data = {\n features: {},\n config: {}\n };\n }\n\n return RCEGlobals.instance;\n }\n\n getFeatures() {\n return this._data.features;\n }\n\n setFeatures(features) {\n // Set only once\n if (isEmpty(this._data.features)) {\n this._data.features = { ...features\n };\n Object.freeze(this._data.features);\n }\n }\n\n getConfig() {\n return this._data.config;\n }\n\n setConfig(config) {\n // Set only once\n if (isEmpty(this._data.config)) {\n this._data.config = { ...config\n };\n Object.freeze(this._data.config);\n }\n }\n\n}\n\nconst instance = new RCEGlobals();\n/* harmony default export */ __webpack_exports__[\"default\"] = (instance);\n\n//# sourceURL=webpack:///./src/rce/RCEGlobals.js?");
|
|
17379
17391
|
|
|
17380
17392
|
/***/ }),
|
|
17381
17393
|
|
|
@@ -17387,7 +17399,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17387
17399
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17388
17400
|
|
|
17389
17401
|
"use strict";
|
|
17390
|
-
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_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _tinymce_tinymce_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tinymce/tinymce-react */ \"../../node_modules/@tinymce/tinymce-react/lib/es2015/main/ts/index.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash */ \"../../node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _instructure_ui_themeable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-themeable */ \"../../node_modules/@instructure/ui-themeable/es/index.js\");\n/* harmony import */ var _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-icons */ \"../../node_modules/@instructure/ui-icons/es/index.js\");\n/* harmony import */ var _instructure_ui_alerts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-alerts */ \"../../node_modules/@instructure/ui-alerts/es/index.js\");\n/* harmony import */ var _instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @instructure/ui-spinner */ \"../../node_modules/@instructure/ui-spinner/es/index.js\");\n/* harmony import */ var _instructure_ui_view__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @instructure/ui-view */ \"../../node_modules/@instructure/ui-view/es/index.js\");\n/* harmony import */ var _instructure_debounce__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @instructure/debounce */ \"./node_modules/@instructure/debounce/es/index.js\");\n/* harmony import */ var _common_getCookie__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common/getCookie */ \"./src/common/getCookie.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _contentInsertion__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./contentInsertion */ \"./src/rce/contentInsertion.js\");\n/* harmony import */ var _indicatorRegion__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./indicatorRegion */ \"./src/rce/indicatorRegion.js\");\n/* harmony import */ var _editorLanguage__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./editorLanguage */ \"./src/rce/editorLanguage.js\");\n/* harmony import */ var _editorLanguage__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_editorLanguage__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _normalizeLocale__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./normalizeLocale */ \"./src/rce/normalizeLocale.js\");\n/* harmony import */ var _sanitizePlugins__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./sanitizePlugins */ \"./src/rce/sanitizePlugins.js\");\n/* harmony import */ var _getCanvasUrl__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./getCanvasUrl */ \"./src/rce/getCanvasUrl.js\");\n/* harmony import */ var _common_indicate__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../common/indicate */ \"./src/common/indicate.js\");\n/* harmony import */ var _bridge__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../bridge */ \"./src/bridge/index.js\");\n/* harmony import */ var _plugins_shared_CanvasContentTray__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./plugins/shared/CanvasContentTray */ \"./src/rce/plugins/shared/CanvasContentTray.js\");\n/* harmony import */ var _StatusBar__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./StatusBar */ \"./src/rce/StatusBar.js\");\n/* harmony import */ var _customEvents__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./customEvents */ \"./src/rce/customEvents.js\");\n/* harmony import */ var _ShowOnFocusButton__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./ShowOnFocusButton */ \"./src/rce/ShowOnFocusButton/index.js\");\n/* harmony import */ var _skins_theme__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../skins/theme */ \"./src/skins/theme.js\");\n/* harmony import */ var _plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./plugins/shared/fileTypeUtils */ \"./src/rce/plugins/shared/fileTypeUtils.js\");\n/* harmony import */ var _KeyboardShortcutModal__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./KeyboardShortcutModal */ \"./src/rce/KeyboardShortcutModal.js\");\n/* harmony import */ var _AlertMessageArea__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./AlertMessageArea */ \"./src/rce/AlertMessageArea.js\");\n/* harmony import */ var _alertHandler__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./alertHandler */ \"./src/rce/alertHandler.js\");\n/* harmony import */ var _plugins_shared_ContentSelection__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./plugins/shared/ContentSelection */ \"./src/rce/plugins/shared/ContentSelection.js\");\n/* harmony import */ var _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./plugins/instructure_record/VideoOptionsTray/TrayController */ \"./src/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js\");\nvar _dec, _class, _class2;\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\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_2___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_2___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(26), __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_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___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_1___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_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string).isRequired\n}));\nconst menuPropType = prop_types__WEBPACK_IMPORTED_MODULE_1___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_1___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_1___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_1___default.a.string.isRequired\n}));\nconst ltiToolsPropType = prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.shape({\n // id of the tool\n id: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number]),\n // is this a favorite tool?\n favorite: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool\n}));\nconst editorOptionsPropType = prop_types__WEBPACK_IMPORTED_MODULE_1___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_1___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number, prop_types__WEBPACK_IMPORTED_MODULE_1___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_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string),\n // is this RCE readonly?\n readonly: prop_types__WEBPACK_IMPORTED_MODULE_1___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_11__[\"default\"])('rce.htmleditor');\n return value === _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"RAW_HTML_EDITOR_VIEW\"] || value === _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"PRETTY_HTML_EDITOR_VIEW\"] ? value : _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"PRETTY_HTML_EDITOR_VIEW\"];\n}\n\nfunction renderLoading() {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"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_5__[\"default\"])(_skins_theme__WEBPACK_IMPORTED_MODULE_25__[\"default\"], styles), _dec(_class = (_class2 = class RCEWrapper extends react__WEBPACK_IMPORTED_MODULE_2___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_20__[\"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_22__[\"WYSIWYG_VIEW\"]:\n newState = {\n editorView: newView || _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"PRETTY_HTML_EDITOR_VIEW\"]\n };\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"PRETTY_HTML_EDITOR_VIEW\"]:\n newState = {\n editorView: newView || _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"WYSIWYG_VIEW\"]\n };\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"RAW_HTML_EDITOR_VIEW\"]:\n newState = {\n editorView: newView || _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"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_22__[\"PRETTY_HTML_EDITOR_VIEW\"] || newView === _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"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_23__[\"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_20__[\"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_10__[\"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_12__[\"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.top.document.body.click(), true);\n editor.on('Cut Paste Change input Undo Redo', Object(_instructure_debounce__WEBPACK_IMPORTED_MODULE_10__[\"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_12__[\"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 header = document.getElementById('header');\n\n if (header) {\n if (event.state) {\n this.setState({\n fullscreenState: {\n headerDisp: header.style.display,\n isTinyFullscreen: true\n }\n });\n header.style.display = 'none';\n } else {\n header.style.display = this.state.fullscreenState.headerDisp;\n this.setState({\n fullscreenState: {\n isTinyFullscreen: false\n }\n });\n }\n } // if we're leaving fullscreen, remove event listeners on the fullscreen element\n\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_4___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 this.editor = null; // my tinymce editor instance\n\n this.language = Object(_normalizeLocale__WEBPACK_IMPORTED_MODULE_16__[\"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_2___default.a.createRef();\n this._editorPlaceholderRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createRef();\n this._prettyHtmlEditorRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___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_22__[\"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_29__[\"default\"].alertFunc = this.addAlert;\n this.handleContentTrayClosing = this.handleContentTrayClosing.bind(this);\n this.a11yCheckerReady = Promise.all(/*! import() */[__webpack_require__.e(4), __webpack_require__.e(5), __webpack_require__.e(8), __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 getCanvasUrl() {\n if (!this.canvasUrl) this.canvasUrl = Object(_getCanvasUrl__WEBPACK_IMPORTED_MODULE_18__[\"getCanvasUrl\"])(this.props.trayProps);\n return this.canvasUrl.then(url => {\n if (!url) {\n console.warn('Could not determine Canvas base URL.', 'Content will be referenced by relative URL.');\n }\n\n return url;\n });\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_12__[\"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_19__[\"default\"])(Object(_indicatorRegion__WEBPACK_IMPORTED_MODULE_14__[\"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_13__[\"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_12__[\"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_13__[\"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_13__[\"insertImage\"](editor, image); // 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_26__[\"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_26__[\"isVideo\"])(fileMetaProps.contentType || fileMetaProps.type)) {\n width = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_31__[\"VIDEO_SIZE_DEFAULT\"].width;\n height = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_31__[\"VIDEO_SIZE_DEFAULT\"].height;\n align = 'bottom';\n } else if (Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_26__[\"isAudio\"])(fileMetaProps.contentType || fileMetaProps.type)) {\n width = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_31__[\"AUDIO_PLAYER_SIZE\"].width;\n height = _plugins_instructure_record_VideoOptionsTray_TrayController__WEBPACK_IMPORTED_MODULE_31__[\"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_12__[\"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_13__[\"insertVideo\"](editor, video);\n this.contentInserted(element);\n }\n\n insertAudio(audio) {\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_13__[\"insertAudio\"](editor, audio);\n this.contentInserted(element);\n }\n\n insertMathEquation(tex) {\n const editor = this.mceInstance();\n return this.getCanvasUrl().then(domain => _contentInsertion__WEBPACK_IMPORTED_MODULE_13__[\"insertEquation\"](editor, tex, domain));\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_13__[\"insertLink\"](editor, link);\n this.contentInserted(element);\n }\n\n existingContentToLink() {\n const editor = this.mceInstance();\n return _contentInsertion__WEBPACK_IMPORTED_MODULE_13__[\"existingContentToLink\"](editor);\n }\n\n existingContentToLinkIsImg() {\n const editor = this.mceInstance();\n return _contentInsertion__WEBPACK_IMPORTED_MODULE_13__[\"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_22__[\"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_22__[\"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_22__[\"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_22__[\"WYSIWYG_VIEW\"]:\n this.mceInstance().focus();\n break;\n\n case _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"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_22__[\"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_22__[\"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_20__[\"default\"].getEditor();\n }\n\n handleFocus(_event) {\n if (!this.focused) {\n _bridge__WEBPACK_IMPORTED_MODULE_20__[\"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_0___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_0___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_20__[\"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_30__[\"isImageEmbed\"])(node, editor)) {\n if (this.announcing !== 1) {\n this.setState({\n announcement: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"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_30__[\"isFileLink\"])(node, editor)) {\n if (this.announcing !== 2) {\n this.setState({\n announcement: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"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_12__[\"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 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 = { ...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: _editorLanguage__WEBPACK_IMPORTED_MODULE_15___default()(this.language),\n block_formats: options.block_formats || [`${Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Heading 2')}=h2`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Heading 3')}=h3`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Heading 4')}=h4`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Preformatted')}=pre`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"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_20__[\"default\"].trayProps) === null || _bridge$trayProps === void 0 ? void 0 : _bridge$trayProps.set(editor, trayPropsWithColor);\n _bridge__WEBPACK_IMPORTED_MODULE_20__[\"default\"].languages = this.props.languages;\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_12__[\"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_12__[\"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_12__[\"default\"])('Tools'),\n items: 'wordcount lti_tools_menuitem'\n },\n view: {\n title: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('View'),\n items: 'fullscreen instructure_html_view'\n }\n }, options.menu),\n toolbar: mergeToolbar([{\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Styles'),\n items: ['fontsizeselect', 'formatselect']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Formatting'),\n items: ['bold', 'italic', 'underline', 'forecolor', 'backcolor', 'inst_subscript', 'inst_superscript']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Content'),\n items: ['instructure_links', 'instructure_image', 'instructure_record', 'instructure_documents', 'instructure_icon_maker']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('External Tools'),\n items: [...this.ltiToolFavorites, 'lti_tool_dropdown', 'lti_mru_button']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Alignment and Lists'),\n items: ['align', 'bullist', 'inst_indent', 'inst_outdent']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"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_17__[\"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() */ 11).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_20__[\"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_22__[\"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_22__[\"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_22__[\"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_2___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_2__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___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_2___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_8__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"medium\"\n }))\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_9__[\"View\"], {\n as: \"div\",\n borderRadius: \"medium\",\n borderWidth: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___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_2___default.a.createElement(\"div\", {\n ref: this._editorPlaceholderRef,\n style: {\n width: `${this.props.editorOptions.width}px`,\n height: `${this.props.editorOptions.height}px`,\n border: '1px solid grey'\n }\n });\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___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_2___default.a.createElement(_ShowOnFocusButton__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n onClick: this.openKBShortcutModal,\n margin: \"xx-small\",\n screenReaderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('View keyboard shortcuts'),\n ref: el => this._showOnFocusButton = el\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_instructure_ui_icons__WEBPACK_IMPORTED_MODULE_6__[\"IconKeyboardShortcutsLine\"], null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_AlertMessageArea__WEBPACK_IMPORTED_MODULE_28__[\"default\"], {\n messages: this.state.messages,\n liveRegion: this.props.liveRegion,\n afterDismiss: this.removeAlert\n }), this.state.editorView === _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"PRETTY_HTML_EDITOR_VIEW\"] && this.renderHtmlEditor(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n style: {\n display: this.state.editorView === _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"PRETTY_HTML_EDITOR_VIEW\"] ? 'none' : 'block'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_tinymce_tinymce_react__WEBPACK_IMPORTED_MODULE_3__[\"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_2___default.a.createElement(_StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"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_2___default.a.createElement(_plugins_shared_CanvasContentTray__WEBPACK_IMPORTED_MODULE_21__[\"default\"], Object.assign({\n key: this.id,\n bridge: _bridge__WEBPACK_IMPORTED_MODULE_20__[\"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_2___default.a.createElement(_KeyboardShortcutModal__WEBPACK_IMPORTED_MODULE_27__[\"default\"], {\n onExited: this.KBShortcutModalExited,\n onDismiss: this.closeKBShortcutModal,\n open: this.state.KBShortcutModalOpen\n }), this.state.confirmAutoSave ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_2__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_8__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"small\"\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___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_2___default.a.createElement(_instructure_ui_alerts__WEBPACK_IMPORTED_MODULE_7__[\"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_1___default.a.shape({\n enabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n maxAge: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number\n }),\n defaultContent: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n editorOptions: editorOptionsPropType,\n handleUnmount: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n editorView: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOf([_StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"WYSIWYG_VIEW\"], _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"PRETTY_HTML_EDITOR_VIEW\"], _StatusBar__WEBPACK_IMPORTED_MODULE_22__[\"RAW_HTML_EDITOR_VIEW\"]]),\n renderKBShortcutModal: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n id: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n language: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n liveRegion: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n ltiTools: ltiToolsPropType,\n onContentChange: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onFocus: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onBlur: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onInitted: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onRemove: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n textareaClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n textareaId: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired,\n languages: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.shape({\n id: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired,\n label: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired\n })),\n readOnly: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n tinymce: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object,\n trayProps: _plugins_shared_CanvasContentTray__WEBPACK_IMPORTED_MODULE_21__[\"trayPropTypes\"],\n toolbar: toolbarPropType,\n menu: menuPropType,\n plugins: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string),\n instRecordDisabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n highContrastCSS: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string),\n maxInitRenderedRCEs: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number,\n use_rce_icon_maker: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool\n}, _class2.defaultProps = {\n trayProps: null,\n languages: [{\n id: 'en',\n label: 'English'\n }],\n autosave: {\n enabled: false\n },\n highContrastCSS: [],\n ltiTools: [],\n maxInitRenderedRCEs: -1\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_12__[\"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?");
|
|
17402
|
+
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_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _tinymce_tinymce_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tinymce/tinymce-react */ \"../../node_modules/@tinymce/tinymce-react/lib/es2015/main/ts/index.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash */ \"../../node_modules/lodash/lodash.js\");\n/* harmony import */ var lodash__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _instructure_ui_themeable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-themeable */ \"../../node_modules/@instructure/ui-themeable/es/index.js\");\n/* harmony import */ var _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-icons */ \"../../node_modules/@instructure/ui-icons/es/index.js\");\n/* harmony import */ var _instructure_ui_alerts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-alerts */ \"../../node_modules/@instructure/ui-alerts/es/index.js\");\n/* harmony import */ var _instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @instructure/ui-spinner */ \"../../node_modules/@instructure/ui-spinner/es/index.js\");\n/* harmony import */ var _instructure_ui_view__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @instructure/ui-view */ \"../../node_modules/@instructure/ui-view/es/index.js\");\n/* harmony import */ var _instructure_debounce__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @instructure/debounce */ \"../../node_modules/@instructure/debounce/es/index.js\");\n/* harmony import */ var _common_getCookie__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common/getCookie */ \"./src/common/getCookie.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _contentInsertion__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./contentInsertion */ \"./src/rce/contentInsertion.js\");\n/* harmony import */ var _indicatorRegion__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./indicatorRegion */ \"./src/rce/indicatorRegion.js\");\n/* harmony import */ var _editorLanguage__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./editorLanguage */ \"./src/rce/editorLanguage.js\");\n/* harmony import */ var _editorLanguage__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_editorLanguage__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _normalizeLocale__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./normalizeLocale */ \"./src/rce/normalizeLocale.js\");\n/* harmony import */ var _sanitizePlugins__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./sanitizePlugins */ \"./src/rce/sanitizePlugins.js\");\n/* harmony import */ var _getCanvasUrl__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./getCanvasUrl */ \"./src/rce/getCanvasUrl.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\");\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\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_2___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_2___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(26), __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_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___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_1___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_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string).isRequired\n}));\nconst menuPropType = prop_types__WEBPACK_IMPORTED_MODULE_1___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_1___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_1___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_1___default.a.string.isRequired\n}));\nconst ltiToolsPropType = prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.shape({\n // id of the tool\n id: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number]),\n // is this a favorite tool?\n favorite: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool\n}));\nconst editorOptionsPropType = prop_types__WEBPACK_IMPORTED_MODULE_1___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_1___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number, prop_types__WEBPACK_IMPORTED_MODULE_1___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_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string),\n // is this RCE readonly?\n readonly: prop_types__WEBPACK_IMPORTED_MODULE_1___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_11__[\"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_12__[\"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_5__[\"default\"])(_skins_theme__WEBPACK_IMPORTED_MODULE_27__[\"default\"], styles), _dec(_class = (_class2 = class RCEWrapper extends react__WEBPACK_IMPORTED_MODULE_2___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_10__[\"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_12__[\"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_10__[\"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_12__[\"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_4___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_16__[\"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_2___default.a.createRef();\n this._editorPlaceholderRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createRef();\n this._prettyHtmlEditorRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___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(5), __webpack_require__.e(8), __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_16__[\"default\"])(this.props.language),\n flashAlertTimeout: this.props.flashAlertTimeout,\n timezone: this.props.timezone\n };\n }\n\n getCanvasUrl() {\n if (!this.canvasUrl) this.canvasUrl = Object(_getCanvasUrl__WEBPACK_IMPORTED_MODULE_18__[\"getCanvasUrl\"])(this.props.trayProps);\n return this.canvasUrl.then(url => {\n if (!url) {\n console.warn('Could not determine Canvas base URL.', 'Content will be referenced by relative URL.');\n }\n\n return url;\n });\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_12__[\"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_14__[\"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_13__[\"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_12__[\"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_13__[\"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_13__[\"insertImage\"](editor, image); // 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_12__[\"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_13__[\"insertVideo\"](editor, video);\n this.contentInserted(element);\n }\n\n insertAudio(audio) {\n const editor = this.mceInstance();\n const element = _contentInsertion__WEBPACK_IMPORTED_MODULE_13__[\"insertAudio\"](editor, audio);\n this.contentInserted(element);\n }\n\n insertMathEquation(tex) {\n const editor = this.mceInstance();\n return this.getCanvasUrl().then(domain => _contentInsertion__WEBPACK_IMPORTED_MODULE_13__[\"insertEquation\"](editor, tex, domain));\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_13__[\"insertLink\"](editor, link);\n this.contentInserted(element);\n }\n\n existingContentToLink() {\n const editor = this.mceInstance();\n return _contentInsertion__WEBPACK_IMPORTED_MODULE_13__[\"existingContentToLink\"](editor);\n }\n\n existingContentToLinkIsImg() {\n const editor = this.mceInstance();\n return _contentInsertion__WEBPACK_IMPORTED_MODULE_13__[\"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_0___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_0___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_12__[\"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_12__[\"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_12__[\"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 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: _editorLanguage__WEBPACK_IMPORTED_MODULE_15___default()(this.language),\n block_formats: options.block_formats || [`${Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Heading 2')}=h2`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Heading 3')}=h3`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Heading 4')}=h4`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Preformatted')}=pre`, `${Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"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\"].languages = this.props.languages;\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_12__[\"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_12__[\"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_12__[\"default\"])('Tools'),\n items: 'wordcount lti_tools_menuitem'\n },\n view: {\n title: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('View'),\n items: 'fullscreen instructure_html_view'\n }\n }, options.menu),\n toolbar: mergeToolbar([{\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Styles'),\n items: ['fontsizeselect', 'formatselect']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Formatting'),\n items: ['bold', 'italic', 'underline', 'forecolor', 'backcolor', 'inst_subscript', 'inst_superscript']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Content'),\n items: ['instructure_links', 'instructure_image', 'instructure_record', 'instructure_documents', 'instructure_icon_maker']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('External Tools'),\n items: [...this.ltiToolFavorites, 'lti_tool_dropdown', 'lti_mru_button']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('Alignment and Lists'),\n items: ['align', 'bullist', 'inst_indent', 'inst_outdent']\n }, {\n name: Object(_format_message__WEBPACK_IMPORTED_MODULE_12__[\"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_17__[\"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() */ 11).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_2___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_2__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___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_2___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_8__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"medium\"\n }))\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_9__[\"View\"], {\n as: \"div\",\n borderRadius: \"medium\",\n borderWidth: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___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_2___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_2___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_2___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_12__[\"default\"])('View keyboard shortcuts'),\n ref: el => this._showOnFocusButton = el\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_instructure_ui_icons__WEBPACK_IMPORTED_MODULE_6__[\"IconKeyboardShortcutsLine\"], null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___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_2___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_2___default.a.createElement(_tinymce_tinymce_react__WEBPACK_IMPORTED_MODULE_3__[\"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_2___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_2___default.a.createElement(_plugins_shared_CanvasContentTray__WEBPACK_IMPORTED_MODULE_23__[\"default\"], Object.assign({\n key: this.id,\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_2___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_2___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_2__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_8__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"small\"\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___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_2___default.a.createElement(_instructure_ui_alerts__WEBPACK_IMPORTED_MODULE_7__[\"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_1___default.a.shape({\n enabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n maxAge: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number\n }),\n defaultContent: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n editorOptions: editorOptionsPropType,\n handleUnmount: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n editorView: prop_types__WEBPACK_IMPORTED_MODULE_1___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_1___default.a.bool,\n id: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n language: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n liveRegion: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n ltiTools: ltiToolsPropType,\n onContentChange: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onFocus: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onBlur: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onInitted: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onRemove: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n textareaClassName: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n textareaId: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired,\n languages: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.shape({\n id: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired,\n label: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired\n })),\n readOnly: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n tinymce: prop_types__WEBPACK_IMPORTED_MODULE_1___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_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string),\n instRecordDisabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n highContrastCSS: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string),\n maxInitRenderedRCEs: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number,\n use_rce_icon_maker: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n features: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.objectOf(prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool),\n flashAlertTimeout: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number,\n timezone: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string\n}, _class2.defaultProps = {\n trayProps: null,\n languages: [{\n id: 'en',\n label: 'English'\n }],\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}, _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_12__[\"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?");
|
|
17391
17403
|
|
|
17392
17404
|
/***/ }),
|
|
17393
17405
|
|
|
@@ -17447,7 +17459,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17447
17459
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17448
17460
|
|
|
17449
17461
|
"use strict";
|
|
17450
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertContent\", function() { return insertContent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertImage\", function() { return insertImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertEquation\", function() { return insertEquation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"existingContentToLink\", function() { return existingContentToLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"existingContentToLinkIsImg\", function() { return existingContentToLinkIsImg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertLink\", function() { return insertLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertVideo\", function() { return insertVideo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertAudio\", function() { return insertAudio; });\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! classnames */ \"../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _contentRendering__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./contentRendering */ \"./src/rce/contentRendering.js\");\n/* harmony import */ var _common_scroll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/scroll */ \"./src/common/scroll.js\");\n/* harmony import */ var _contentInsertionUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./contentInsertionUtils */ \"./src/rce/contentInsertionUtils.js\");\n/* harmony import */ var _plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./plugins/shared/fileTypeUtils */ \"./src/rce/plugins/shared/fileTypeUtils.js\");\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/** * generic content insertion ** */\n// when the editor is hidden, just replace the selected portion of the textarea\n// with the content. branching is for cross-browser\n\nfunction replaceTextareaSelection(editor, content) {\n const element = editor.getElement();\n\n if ('selectionStart' in element) {\n // mozilla / dom 3.0\n const before = element.value.substr(0, element.selectionStart);\n const after = element.value.substr(element.selectionEnd, element.value.length);\n element.value = before + content + after;\n } else if (document.selection) {\n // exploder\n element.focus();\n document.selection.createRange().text = content;\n } else {\n // browser not supported\n element.value += content;\n }\n}\n\nfunction insertContent(editor, content) {\n if (editor.isHidden()) {\n // replaces the textarea selection with the new image. no element returned\n // to indicate because it's raw html.\n replaceTextareaSelection(editor, content);\n return null;\n } else {\n // inserts content at the cursor. getEnd() of the selection after the\n // insertion should reference the newly created node (or first of the newly\n // created nodes if there were multiple, unfortunately), because the cursor\n // itself stays just before the new content.\n _common_scroll__WEBPACK_IMPORTED_MODULE_2__[\"default\"].scrollIntoViewWDelay(editor.iframeElement, {}); // there's a bug in tinymce where insertContent calls execCommand('mceInsertContent'),\n // but doesn't correctly forward the second \"args\" argument. Let's go right for\n // execCommand\n // editor.insertContent(content, {skip_focus: true})\n\n editor.execCommand('mceInsertContent', false, content, {\n skip_focus: true\n });\n return editor.selection.getEnd();\n }\n}\n/** * image insertion ** */\n\nfunction isElemImg(elem) {\n return elem && elem.nodeName.toLowerCase() === 'img';\n}\n\nfunction isElemAnchor(elem) {\n return elem && elem.nodeName.toLowerCase() === 'a';\n}\n/*\n check if we should preserve the parent anchor tag. the criteria is pretty\n strict based on if we have a single image selected with an anchor tag\n surrounding\n*/\n\n\nfunction shouldPreserveImgAnchor(editor) {\n const selection = editor.selection;\n const selectedRange = selection.getRng();\n return isElemImg(selection.getNode()) && isElemAnchor(selectedRange.startContainer) && selectedRange.startContainer === selectedRange.endContainer;\n}\n\nfunction insertImage(editor, image) {\n let content = '';\n\n if (shouldPreserveImgAnchor(editor)) {\n content = Object(_contentRendering__WEBPACK_IMPORTED_MODULE_1__[\"renderLinkedImage\"])(editor.selection.getRng().startContainer, image);\n } else {\n // render the image, constraining its size on insertion\n content = Object(_contentRendering__WEBPACK_IMPORTED_MODULE_1__[\"renderImage\"])({ ...image\n });\n }\n\n return insertContent(editor, content);\n}\nfunction insertEquation(editor, latex, canvasUrl) {\n const docSz = parseFloat(editor.dom.doc.defaultView.getComputedStyle(editor.dom.doc.body).getPropertyValue('font-size')) || 1;\n const sel = editor.selection.getNode();\n const imgSz = sel ? parseFloat(editor.dom.doc.defaultView.getComputedStyle(sel).getPropertyValue('font-size')) || 1 : docSz;\n const scale = imgSz / docSz;\n let url = `/equation_images/${encodeURIComponent(encodeURIComponent(latex))}?scale=${scale}`;\n\n if (canvasUrl) {\n url = canvasUrl + url;\n } // if I simply create the html string, xsslint fails jenkins\n\n\n const img = document.createElement('img');\n img.setAttribute('alt', `LaTeX: ${latex}`);\n img.setAttribute('title', latex);\n img.setAttribute('class', 'equation_image');\n img.setAttribute('data-equation-content', latex);\n img.setAttribute('src', url);\n img.setAttribute('data-ignore-a11y-check', '');\n return insertContent(editor, img.outerHTML);\n}\n/** * link insertion ** */\n// checks if there's an existing anchor containing the cursor\n\nfunction currentLink(editor, link) {\n const cursor = link.selectionDetails && link.selectionDetails.node ? link.selectionDetails.node : editor.selection.getNode(); // This doesn't work in IE 11, but will stop brokeness in other browsers\n\n return editor.dom.getParent(cursor, 'a');\n} // checks if the editor has a current selection (vs. just a cursor position)\n\n\nfunction hasSelection(editor) {\n let selection = editor.selection.getContent();\n selection = editor.dom.decode(selection);\n return !!selection && selection != '';\n}\n\nfunction existingContentToLink(editor, link) {\n return !editor.isHidden() && (link && (currentLink(editor, link) || !!link.selectedContent) || hasSelection(editor));\n} // Parses HTML string with support in old browsers because jQuery's parseHTML was added in 1.8.\n\nfunction parseHTML(htmlString) {\n const tmp = document.implementation.createHTMLDocument();\n tmp.body.innerHTML = htmlString.trim();\n return tmp.body.children;\n}\n\nfunction selectionIsImg(editor) {\n const selection = editor.selection.getContent();\n return editor.dom.$(parseHTML(selection)).is('img');\n}\n\nfunction existingContentToLinkIsImg(editor) {\n return !editor.isHidden() && selectionIsImg(editor);\n}\n\nfunction decorateLinkWithEmbed(link) {\n const type = link.embed && link.embed.type;\n link.class = classnames__WEBPACK_IMPORTED_MODULE_0___default()(link.class, {\n instructure_file_link: true,\n instructure_scribd_file: type === 'scribd' || link['data-canvas-previewable'],\n instructure_image_thumbnail: type === 'image',\n instructure_video_link: type === 'video',\n instructure_audio_link: type === 'audio',\n auto_open: link.embed && link.embed.autoOpenPreview,\n inline_disabled: link.embed && link.embed.disableInlinePreview,\n no_preview: link.embed && link.embed.noPreview\n });\n\n if (link.embed.type == 'video' || link.embed.type == 'audio') {\n link.id = `media_comment_${link.embed.id || 'maybe'}`;\n }\n}\n\nfunction insertLink(editor, link) {\n const linkAttrs = { ...link\n };\n\n if (linkAttrs.embed) {\n decorateLinkWithEmbed(linkAttrs);\n delete linkAttrs.embed;\n }\n\n return insertUndecoratedLink(editor, linkAttrs);\n}\n\nfunction textForLink(linkProps, editor, anchorElm) {\n // Some actions (like editing the link text in the link tray)\n // require an explicit update to the link text\n if (linkProps.forceRename) return linkProps.text; // Other actions (link highlighting an existing link and changing\n // the linked file) should use the anchor text if present\n\n return getAnchorText(editor.selection, anchorElm) || linkProps.text;\n} // link edit/create logic based on tinymce/plugins/link/plugin.js\n\n\nfunction insertUndecoratedLink(editor, linkProps) {\n const selectedElm = editor.selection.getNode();\n const anchorElm = Object(_contentInsertionUtils__WEBPACK_IMPORTED_MODULE_3__[\"getAnchorElement\"])(editor, selectedElm);\n const selectedContent = editor.selection.getContent();\n const selectedPlainText = editor.selection.getContent({\n format: 'text'\n });\n const onlyText = Object(_contentInsertionUtils__WEBPACK_IMPORTED_MODULE_3__[\"isOnlyTextSelected\"])(selectedContent);\n const linkText = onlyText && textForLink(linkProps, editor, anchorElm); // only keep the props we want as attributes on the <a>\n\n const linkAttrs = {\n id: linkProps.id,\n href: Object(_contentInsertionUtils__WEBPACK_IMPORTED_MODULE_3__[\"cleanUrl\"])(linkProps.href || linkProps.url),\n target: linkProps.target,\n class: linkProps.class,\n title: linkProps.title,\n 'data-canvas-previewable': linkProps['data-canvas-previewable']\n };\n\n if (linkAttrs.target === '_blank') {\n linkAttrs.rel = 'noopener noreferrer';\n }\n\n if (anchorElm && !editor.selection.isCollapsed()) {\n updateLink(editor, anchorElm, linkText, linkAttrs);\n } else if (selectedContent) {\n if (linkProps.userText && selectedPlainText !== linkText) {\n createLink(editor, selectedElm, linkText, linkAttrs);\n } else {\n createLink(editor, selectedElm, undefined, linkAttrs);\n }\n } else {\n createLink(editor, selectedElm, linkText, linkAttrs);\n }\n\n return editor.selection.getEnd(); // this will be the newly created or updated content\n}\n\nfunction getAnchorText(selection, anchorElm) {\n return anchorElm ? anchorElm.innerText : selection.getContent({\n format: 'text'\n });\n}\n\nfunction updateLink(editor, anchorElm, text, linkAttrs) {\n if (text && anchorElm.innerText !== text) {\n anchorElm.innerText = text;\n }\n\n editor.dom.setAttribs(anchorElm, linkAttrs);\n editor.selection.select(anchorElm);\n editor.undoManager.add();\n}\n\nfunction createLink(editor, selectedElm, text, linkAttrs) {\n if (Object(_contentInsertionUtils__WEBPACK_IMPORTED_MODULE_3__[\"isImageFigure\"])(selectedElm)) {\n linkImageFigure(editor, selectedElm, linkAttrs);\n } else if (text) {\n // create the whole wazoo\n insertContent(editor, editor.dom.createHTML('a', linkAttrs, editor.dom.encode(text)));\n } else {\n // create a link on the selected content\n editor.execCommand('mceInsertLink', false, linkAttrs);\n }\n}\n\nfunction linkImageFigure(editor, fig, attrs) {\n const img = fig.tagName === 'IMG' ? fig : editor.dom.select('img', fig)[0];\n\n if (img) {\n const a = editor.dom.create('a', attrs);\n img.parentNode.insertBefore(a, img);\n a.appendChild(img);\n }\n}\n/* ** video insertion ** */\n\n\nfunction insertVideo(editor, video) {\n if (editor.selection.isCollapsed()) {\n var _result;\n\n let result = insertContent(editor, Object(_contentRendering__WEBPACK_IMPORTED_MODULE_1__[\"renderVideo\"])(video)); // for some reason, editor.selection.getEnd() returned from\n // insertContent is parent paragraph when inserting the\n // video iframe. Look for the iframe with the right\n // src attribute. (Aside: tinymce strips the id or data-*\n // attributes from the iframe, that's why we can't look for those)\n\n const src = Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_4__[\"mediaPlayerURLFromFile\"])(video);\n result = result.querySelector(`iframe[src=\"${src}\"]`); // When the iframe is inserted, it doesn't allow the video to play\n // because the wrapping span captures the click events. Setting\n // contentEditable to false disables this behavior.\n\n if ((_result = result) !== null && _result !== void 0 && _result.parentElement) {\n editor.dom.setAttrib(result.parentElement, 'contenteditable', false);\n }\n\n return result;\n } else {\n return insertLink(editor, { ...video,\n href: Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_4__[\"mediaPlayerURLFromFile\"])(video)\n });\n }\n}\nfunction insertAudio(editor, audio) {\n if (editor.selection.isCollapsed()) {\n var _result2;\n\n let result = insertContent(editor, Object(_contentRendering__WEBPACK_IMPORTED_MODULE_1__[\"renderAudio\"])(audio));\n const src = Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_4__[\"mediaPlayerURLFromFile\"])(audio);\n result = result.querySelector(`iframe[src=\"${src}\"]`); // When the iframe is inserted, it doesn't allow the audio to play\n // because the wrapping span captures the click events. Setting\n // contentEditable to false disables this behavior.\n\n if ((_result2 = result) !== null && _result2 !== void 0 && _result2.parentElement) {\n editor.dom.setAttrib(result.parentElement, 'contenteditable', false);\n }\n\n return result;\n } else {\n return insertLink(editor, { ...audio,\n href: Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_4__[\"mediaPlayerURLFromFile\"])(audio)\n });\n }\n}\n\n//# sourceURL=webpack:///./src/rce/contentInsertion.js?");
|
|
17462
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertContent\", function() { return insertContent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertImage\", function() { return insertImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertEquation\", function() { return insertEquation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"existingContentToLink\", function() { return existingContentToLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"existingContentToLinkIsImg\", function() { return existingContentToLinkIsImg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertLink\", function() { return insertLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertVideo\", function() { return insertVideo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertAudio\", function() { return insertAudio; });\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! classnames */ \"../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _contentRendering__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./contentRendering */ \"./src/rce/contentRendering.js\");\n/* harmony import */ var _common_scroll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/scroll */ \"./src/common/scroll.js\");\n/* harmony import */ var _contentInsertionUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./contentInsertionUtils */ \"./src/rce/contentInsertionUtils.js\");\n/* harmony import */ var _plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./plugins/shared/fileTypeUtils */ \"./src/rce/plugins/shared/fileTypeUtils.js\");\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/** * generic content insertion ** */\n// when the editor is hidden, just replace the selected portion of the textarea\n// with the content. branching is for cross-browser\n\nfunction replaceTextareaSelection(editor, content) {\n const element = editor.getElement();\n\n if ('selectionStart' in element) {\n // mozilla / dom 3.0\n const before = element.value.substr(0, element.selectionStart);\n const after = element.value.substr(element.selectionEnd, element.value.length);\n element.value = before + content + after;\n } else if (document.selection) {\n // exploder\n element.focus();\n document.selection.createRange().text = content;\n } else {\n // browser not supported\n element.value += content;\n }\n}\n\nfunction insertContent(editor, content) {\n if (editor.isHidden()) {\n // replaces the textarea selection with the new image. no element returned\n // to indicate because it's raw html.\n replaceTextareaSelection(editor, content);\n return null;\n } else {\n // inserts content at the cursor. getEnd() of the selection after the\n // insertion should reference the newly created node (or first of the newly\n // created nodes if there were multiple, unfortunately), because the cursor\n // itself stays just before the new content.\n _common_scroll__WEBPACK_IMPORTED_MODULE_2__[\"default\"].scrollIntoViewWDelay(editor.iframeElement, {}); // there's a bug in tinymce where insertContent calls execCommand('mceInsertContent'),\n // but doesn't correctly forward the second \"args\" argument. Let's go right for\n // execCommand\n // editor.insertContent(content, {skip_focus: true})\n\n editor.execCommand('mceInsertContent', false, content, {\n skip_focus: true\n });\n return editor.selection.getEnd();\n }\n}\n/** * image insertion ** */\n\nfunction isElemImg(elem) {\n return elem && elem.nodeName.toLowerCase() === 'img';\n}\n\nfunction isElemAnchor(elem) {\n return elem && elem.nodeName.toLowerCase() === 'a';\n}\n/*\n check if we should preserve the parent anchor tag. the criteria is pretty\n strict based on if we have a single image selected with an anchor tag\n surrounding\n*/\n\n\nfunction shouldPreserveImgAnchor(editor) {\n const selection = editor.selection;\n const selectedRange = selection.getRng();\n return isElemImg(selection.getNode()) && isElemAnchor(selectedRange.startContainer) && selectedRange.startContainer === selectedRange.endContainer;\n}\n\nfunction insertImage(editor, image) {\n let content = '';\n\n if (shouldPreserveImgAnchor(editor)) {\n content = Object(_contentRendering__WEBPACK_IMPORTED_MODULE_1__[\"renderLinkedImage\"])(editor.selection.getRng().startContainer, image);\n } else {\n // render the image, constraining its size on insertion\n content = Object(_contentRendering__WEBPACK_IMPORTED_MODULE_1__[\"renderImage\"])({ ...image\n });\n }\n\n return insertContent(editor, content);\n}\nfunction insertEquation(editor, latex, canvasUrl) {\n const docSz = parseFloat(editor.dom.doc.defaultView.getComputedStyle(editor.dom.doc.body).getPropertyValue('font-size')) || 1;\n const sel = editor.selection.getNode();\n const imgSz = sel ? parseFloat(editor.dom.doc.defaultView.getComputedStyle(sel).getPropertyValue('font-size')) || 1 : docSz;\n const scale = imgSz / docSz;\n let url = `/equation_images/${encodeURIComponent(encodeURIComponent(latex))}?scale=${scale}`;\n\n if (canvasUrl) {\n url = canvasUrl + url;\n } // if I simply create the html string, xsslint fails jenkins\n\n\n const img = document.createElement('img');\n img.setAttribute('alt', `LaTeX: ${latex}`);\n img.setAttribute('title', latex);\n img.setAttribute('class', 'equation_image');\n img.setAttribute('data-equation-content', latex);\n img.setAttribute('src', url);\n img.setAttribute('data-ignore-a11y-check', '');\n return insertContent(editor, img.outerHTML);\n}\n/** * link insertion ** */\n// checks if there's an existing anchor containing the cursor\n\nfunction currentLink(editor, link) {\n const cursor = link.selectionDetails && link.selectionDetails.node ? link.selectionDetails.node : editor.selection.getNode(); // This doesn't work in IE 11, but will stop brokeness in other browsers\n\n return editor.dom.getParent(cursor, 'a');\n} // checks if the editor has a current selection (vs. just a cursor position)\n\n\nfunction hasSelection(editor) {\n let selection = editor.selection.getContent();\n selection = editor.dom.decode(selection);\n return !!selection && selection != '';\n}\n\nfunction existingContentToLink(editor, link) {\n return !editor.isHidden() && (link && (currentLink(editor, link) || !!link.selectedContent) || hasSelection(editor));\n} // Parses HTML string with support in old browsers because jQuery's parseHTML was added in 1.8.\n\nfunction parseHTML(htmlString) {\n const tmp = document.implementation.createHTMLDocument();\n tmp.body.innerHTML = htmlString.trim();\n return tmp.body.children;\n}\n\nfunction selectionIsImg(editor) {\n const selection = editor.selection.getContent();\n return editor.dom.$(parseHTML(selection)).is('img');\n}\n\nfunction existingContentToLinkIsImg(editor) {\n return !editor.isHidden() && selectionIsImg(editor);\n}\n\nfunction decorateLinkWithEmbed(link) {\n const type = link.embed && link.embed.type;\n link.class = classnames__WEBPACK_IMPORTED_MODULE_0___default()(link.class, {\n instructure_file_link: true,\n instructure_scribd_file: type === 'scribd' || link['data-canvas-previewable'],\n instructure_image_thumbnail: type === 'image',\n instructure_video_link: type === 'video',\n instructure_audio_link: type === 'audio',\n auto_open: link.embed && link.embed.autoOpenPreview,\n inline_disabled: link.embed && link.embed.disableInlinePreview,\n no_preview: link.embed && link.embed.noPreview\n });\n\n if (link.embed.type == 'video' || link.embed.type == 'audio') {\n link.id = `media_comment_${link.embed.id || 'maybe'}`;\n }\n}\n\nfunction insertLink(editor, link) {\n const linkAttrs = { ...link\n };\n\n if (linkAttrs.embed) {\n decorateLinkWithEmbed(linkAttrs);\n delete linkAttrs.embed;\n }\n\n return insertUndecoratedLink(editor, linkAttrs);\n}\n\nfunction textForLink(linkProps, editor, anchorElm) {\n // Some actions (like editing the link text in the link tray)\n // require an explicit update to the link text\n if (linkProps.forceRename) return linkProps.text; // Other actions (link highlighting an existing link and changing\n // the linked file) should use the anchor text if present\n\n return getAnchorText(editor.selection, anchorElm) || linkProps.text;\n} // link edit/create logic based on tinymce/plugins/link/plugin.js\n\n\nfunction insertUndecoratedLink(editor, linkProps) {\n const selectedElm = editor.selection.getNode();\n const anchorElm = Object(_contentInsertionUtils__WEBPACK_IMPORTED_MODULE_3__[\"getAnchorElement\"])(editor, selectedElm);\n const selectedContent = editor.selection.getContent();\n const selectedPlainText = editor.selection.getContent({\n format: 'text'\n });\n const onlyText = Object(_contentInsertionUtils__WEBPACK_IMPORTED_MODULE_3__[\"isOnlyTextSelected\"])(selectedContent);\n const linkText = onlyText && textForLink(linkProps, editor, anchorElm); // only keep the props we want as attributes on the <a>\n\n const linkAttrs = {\n id: linkProps.id,\n href: Object(_contentInsertionUtils__WEBPACK_IMPORTED_MODULE_3__[\"cleanUrl\"])(linkProps.href || linkProps.url),\n target: linkProps.target,\n class: linkProps.class,\n title: linkProps.title,\n 'data-canvas-previewable': linkProps['data-canvas-previewable'],\n 'data-course-type': linkProps['data-course-type'],\n 'data-published': linkProps['data-published']\n };\n\n if (linkAttrs.target === '_blank') {\n linkAttrs.rel = 'noopener noreferrer';\n }\n\n if (anchorElm && !editor.selection.isCollapsed()) {\n updateLink(editor, anchorElm, linkText, linkAttrs);\n } else if (selectedContent) {\n if (linkProps.userText && selectedPlainText !== linkText) {\n createLink(editor, selectedElm, linkText, linkAttrs);\n } else {\n createLink(editor, selectedElm, undefined, linkAttrs);\n }\n } else {\n createLink(editor, selectedElm, linkText, linkAttrs);\n }\n\n return editor.selection.getEnd(); // this will be the newly created or updated content\n}\n\nfunction getAnchorText(selection, anchorElm) {\n return anchorElm ? anchorElm.innerText : selection.getContent({\n format: 'text'\n });\n}\n\nfunction updateLink(editor, anchorElm, text, linkAttrs) {\n if (text && anchorElm.innerText !== text) {\n anchorElm.innerText = text;\n }\n\n editor.dom.setAttribs(anchorElm, linkAttrs);\n editor.selection.select(anchorElm);\n editor.undoManager.add();\n}\n\nfunction createLink(editor, selectedElm, text, linkAttrs) {\n if (Object(_contentInsertionUtils__WEBPACK_IMPORTED_MODULE_3__[\"isImageFigure\"])(selectedElm)) {\n linkImageFigure(editor, selectedElm, linkAttrs);\n } else if (text) {\n // create the whole wazoo\n insertContent(editor, editor.dom.createHTML('a', linkAttrs, editor.dom.encode(text)));\n } else {\n // create a link on the selected content\n editor.execCommand('mceInsertLink', false, linkAttrs);\n }\n}\n\nfunction linkImageFigure(editor, fig, attrs) {\n const img = fig.tagName === 'IMG' ? fig : editor.dom.select('img', fig)[0];\n\n if (img) {\n const a = editor.dom.create('a', attrs);\n img.parentNode.insertBefore(a, img);\n a.appendChild(img);\n }\n}\n/* ** video insertion ** */\n\n\nfunction insertVideo(editor, video) {\n if (editor.selection.isCollapsed()) {\n var _result;\n\n let result = insertContent(editor, Object(_contentRendering__WEBPACK_IMPORTED_MODULE_1__[\"renderVideo\"])(video)); // for some reason, editor.selection.getEnd() returned from\n // insertContent is parent paragraph when inserting the\n // video iframe. Look for the iframe with the right\n // src attribute. (Aside: tinymce strips the id or data-*\n // attributes from the iframe, that's why we can't look for those)\n\n const src = Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_4__[\"mediaPlayerURLFromFile\"])(video);\n result = result.querySelector(`iframe[src=\"${src}\"]`); // When the iframe is inserted, it doesn't allow the video to play\n // because the wrapping span captures the click events. Setting\n // contentEditable to false disables this behavior.\n\n if ((_result = result) !== null && _result !== void 0 && _result.parentElement) {\n editor.dom.setAttrib(result.parentElement, 'contenteditable', false);\n }\n\n return result;\n } else {\n return insertLink(editor, { ...video,\n href: Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_4__[\"mediaPlayerURLFromFile\"])(video)\n });\n }\n}\nfunction insertAudio(editor, audio) {\n if (editor.selection.isCollapsed()) {\n var _result2;\n\n let result = insertContent(editor, Object(_contentRendering__WEBPACK_IMPORTED_MODULE_1__[\"renderAudio\"])(audio));\n const src = Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_4__[\"mediaPlayerURLFromFile\"])(audio);\n result = result.querySelector(`iframe[src=\"${src}\"]`); // When the iframe is inserted, it doesn't allow the audio to play\n // because the wrapping span captures the click events. Setting\n // contentEditable to false disables this behavior.\n\n if ((_result2 = result) !== null && _result2 !== void 0 && _result2.parentElement) {\n editor.dom.setAttrib(result.parentElement, 'contenteditable', false);\n }\n\n return result;\n } else {\n return insertLink(editor, { ...audio,\n href: Object(_plugins_shared_fileTypeUtils__WEBPACK_IMPORTED_MODULE_4__[\"mediaPlayerURLFromFile\"])(audio)\n });\n }\n}\n\n//# sourceURL=webpack:///./src/rce/contentInsertion.js?");
|
|
17451
17463
|
|
|
17452
17464
|
/***/ }),
|
|
17453
17465
|
|
|
@@ -17550,11 +17562,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _wra
|
|
|
17550
17562
|
/*!*****************************************************************!*\
|
|
17551
17563
|
!*** ./src/rce/plugins/instructure_icon_maker/svg/constants.js ***!
|
|
17552
17564
|
\*****************************************************************/
|
|
17553
|
-
/*! exports provided: TYPE, BUTTON_ID, TOOLBAR_ID, ICON_MAKER_ATTRIBUTE, ICON_MAKER_DOWNLOAD_URL_ATTR, ICON_MAKER_ICONS, ICON_MAKER_PARAM, SVG_XML_TYPE, SVG_TYPE, Size, DEFAULT_SETTINGS, BASE_SIZE, STROKE_WIDTH, TEXT_SIZE, MAX_CHAR_COUNT, MAX_TOTAL_TEXT_CHARS, TEXT_BACKGROUND_PADDING */
|
|
17565
|
+
/*! exports provided: TYPE, BUTTON_ID, TOOLBAR_ID, ICON_MAKER_ATTRIBUTE, ICON_MAKER_DOWNLOAD_URL_ATTR, ICON_MAKER_ICONS, ICON_MAKER_PARAM, SVG_XML_TYPE, SVG_TYPE, Size, DEFAULT_SETTINGS, BASE_SIZE, STROKE_WIDTH, TEXT_SIZE, TEXT_SIZE_FONT_DIFF, MAX_CHAR_COUNT, MAX_TOTAL_TEXT_CHARS, TEXT_BACKGROUND_PADDING */
|
|
17554
17566
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17555
17567
|
|
|
17556
17568
|
"use strict";
|
|
17557
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TYPE\", function() { return TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BUTTON_ID\", function() { return BUTTON_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TOOLBAR_ID\", function() { return TOOLBAR_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ICON_MAKER_ATTRIBUTE\", function() { return ICON_MAKER_ATTRIBUTE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ICON_MAKER_DOWNLOAD_URL_ATTR\", function() { return ICON_MAKER_DOWNLOAD_URL_ATTR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ICON_MAKER_ICONS\", function() { return ICON_MAKER_ICONS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ICON_MAKER_PARAM\", function() { return ICON_MAKER_PARAM; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVG_XML_TYPE\", function() { return SVG_XML_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVG_TYPE\", function() { return SVG_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Size\", function() { return Size; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_SETTINGS\", function() { return DEFAULT_SETTINGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BASE_SIZE\", function() { return BASE_SIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STROKE_WIDTH\", function() { return STROKE_WIDTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT_SIZE\", function() { return TEXT_SIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MAX_CHAR_COUNT\", function() { return MAX_CHAR_COUNT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MAX_TOTAL_TEXT_CHARS\", function() { return MAX_TOTAL_TEXT_CHARS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT_BACKGROUND_PADDING\", function() { return TEXT_BACKGROUND_PADDING; });\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 */\nconst TYPE = 'image/svg+xml-icon-maker-icons'; // New constants added to centralize imports\n\nconst BUTTON_ID = 'inst-icon-maker-edit';\nconst TOOLBAR_ID = 'inst-icon-maker-edit-toolbar';\nconst ICON_MAKER_ATTRIBUTE = 'data-inst-icon-maker-icon';\nconst ICON_MAKER_DOWNLOAD_URL_ATTR = 'data-download-url';\nconst ICON_MAKER_ICONS = 'icon_maker_icons';\nconst ICON_MAKER_PARAM = 'icon_maker_icon'; // different definitions for filetypes\n\nconst SVG_XML_TYPE = 'image/svg+xml';\nconst SVG_TYPE = 'image/svg';\nconst Size = {\n None: 'none',\n ExtraSmall: 'x-small',\n Small: 'small',\n Medium: 'medium',\n Large: 'large',\n ExtraLarge: 'x-large'\n};\nconst DEFAULT_SETTINGS = {\n // Basic icon maker settings\n type: TYPE,\n alt: '',\n isDecorative: false,\n shape: 'square',\n size: Size.Small,\n color: null,\n outlineColor: '#000000',\n outlineSize: Size.None,\n text: '',\n textSize: Size.Small,\n textColor: '#000000',\n textBackgroundColor: null,\n textPosition: 'below',\n encodedImage: '',\n encodedImageType: '',\n encodedImageName: '',\n // Additional external attributes\n externalStyle: null,\n externalWidth: null,\n externalHeight: null,\n // Embedded image crop settings\n x: 0,\n y: 0,\n translateX: 0,\n translateY: 0,\n width: 0,\n height: 0,\n transform: '',\n imageSettings: null\n};\nconst BASE_SIZE = {\n [Size.ExtraSmall]: 74,\n [Size.Small]: 122,\n [Size.Medium]: 158,\n [Size.Large]: 218\n};\nconst STROKE_WIDTH = {\n [Size.None]: 0,\n [Size.Small]: 2,\n [Size.Medium]: 4,\n [Size.Large]: 8\n};\nconst TEXT_SIZE = {\n [Size.Small]: 14,\n [Size.Medium]: 16,\n [Size.Large]: 22,\n [Size.ExtraLarge]: 28\n};\nconst MAX_CHAR_COUNT = {\n [Size.Small]: 21,\n [Size.Medium]: 18,\n [Size.Large]: 13,\n [Size.ExtraLarge]: 10\n};\nconst MAX_TOTAL_TEXT_CHARS = 32;\nconst TEXT_BACKGROUND_PADDING = 4;\n\n//# sourceURL=webpack:///./src/rce/plugins/instructure_icon_maker/svg/constants.js?");
|
|
17569
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TYPE\", function() { return TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BUTTON_ID\", function() { return BUTTON_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TOOLBAR_ID\", function() { return TOOLBAR_ID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ICON_MAKER_ATTRIBUTE\", function() { return ICON_MAKER_ATTRIBUTE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ICON_MAKER_DOWNLOAD_URL_ATTR\", function() { return ICON_MAKER_DOWNLOAD_URL_ATTR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ICON_MAKER_ICONS\", function() { return ICON_MAKER_ICONS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ICON_MAKER_PARAM\", function() { return ICON_MAKER_PARAM; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVG_XML_TYPE\", function() { return SVG_XML_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SVG_TYPE\", function() { return SVG_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Size\", function() { return Size; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_SETTINGS\", function() { return DEFAULT_SETTINGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BASE_SIZE\", function() { return BASE_SIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STROKE_WIDTH\", function() { return STROKE_WIDTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT_SIZE\", function() { return TEXT_SIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT_SIZE_FONT_DIFF\", function() { return TEXT_SIZE_FONT_DIFF; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MAX_CHAR_COUNT\", function() { return MAX_CHAR_COUNT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MAX_TOTAL_TEXT_CHARS\", function() { return MAX_TOTAL_TEXT_CHARS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT_BACKGROUND_PADDING\", function() { return TEXT_BACKGROUND_PADDING; });\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 */\nconst TYPE = 'image/svg+xml-icon-maker-icons'; // New constants added to centralize imports\n\nconst BUTTON_ID = 'inst-icon-maker-edit';\nconst TOOLBAR_ID = 'inst-icon-maker-edit-toolbar';\nconst ICON_MAKER_ATTRIBUTE = 'data-inst-icon-maker-icon';\nconst ICON_MAKER_DOWNLOAD_URL_ATTR = 'data-download-url';\nconst ICON_MAKER_ICONS = 'icon_maker_icons';\nconst ICON_MAKER_PARAM = 'icon_maker_icon'; // different definitions for filetypes\n\nconst SVG_XML_TYPE = 'image/svg+xml';\nconst SVG_TYPE = 'image/svg';\nconst Size = {\n None: 'none',\n ExtraSmall: 'x-small',\n Small: 'small',\n Medium: 'medium',\n Large: 'large',\n ExtraLarge: 'x-large'\n};\nconst DEFAULT_SETTINGS = {\n // Basic icon maker settings\n type: TYPE,\n alt: '',\n isDecorative: false,\n shape: 'square',\n size: Size.Small,\n color: null,\n outlineColor: '#000000',\n outlineSize: Size.None,\n text: '',\n textSize: Size.Small,\n textColor: '#000000',\n textBackgroundColor: null,\n textPosition: 'below',\n encodedImage: '',\n encodedImageType: '',\n encodedImageName: '',\n // Additional external attributes\n externalStyle: null,\n externalWidth: null,\n externalHeight: null,\n // Embedded image crop settings\n x: 0,\n y: 0,\n translateX: 0,\n translateY: 0,\n width: 0,\n height: 0,\n transform: '',\n imageSettings: null,\n error: null\n};\nconst BASE_SIZE = {\n [Size.ExtraSmall]: 74,\n [Size.Small]: 122,\n [Size.Medium]: 158,\n [Size.Large]: 218\n};\nconst STROKE_WIDTH = {\n [Size.None]: 0,\n [Size.Small]: 2,\n [Size.Medium]: 4,\n [Size.Large]: 8\n};\nconst TEXT_SIZE = {\n [Size.Small]: 14,\n [Size.Medium]: 16,\n [Size.Large]: 22,\n [Size.ExtraLarge]: 28\n};\nconst TEXT_SIZE_FONT_DIFF = {\n [Size.Small]: -1,\n [Size.Medium]: 0,\n [Size.Large]: 1,\n [Size.ExtraLarge]: 2\n};\nconst MAX_CHAR_COUNT = {\n [Size.Small]: 21,\n [Size.Medium]: 18,\n [Size.Large]: 13,\n [Size.ExtraLarge]: 10\n};\nconst MAX_TOTAL_TEXT_CHARS = 32;\nconst TEXT_BACKGROUND_PADDING = 4;\n\n//# sourceURL=webpack:///./src/rce/plugins/instructure_icon_maker/svg/constants.js?");
|
|
17558
17570
|
|
|
17559
17571
|
/***/ }),
|
|
17560
17572
|
|
|
@@ -17590,7 +17602,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17590
17602
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17591
17603
|
|
|
17592
17604
|
"use strict";
|
|
17593
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return VideoOptionsTray; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/ui-a11y-content */ \"../../node_modules/@instructure/ui-a11y-content/es/index.js\");\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_heading__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-heading */ \"../../node_modules/@instructure/ui-heading/es/index.js\");\n/* harmony import */ var _instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-radio-input */ \"../../node_modules/@instructure/ui-radio-input/es/index.js\");\n/* harmony import */ var _instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-simple-select */ \"../../node_modules/@instructure/ui-simple-select/es/index.js\");\n/* harmony import */ var _instructure_ui_text_area__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-text-area */ \"../../node_modules/@instructure/ui-text-area/es/index.js\");\n/* harmony import */ var _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @instructure/ui-icons */ \"../../node_modules/@instructure/ui-icons/es/index.js\");\n/* harmony import */ var _instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @instructure/ui-flex */ \"../../node_modules/@instructure/ui-flex/es/index.js\");\n/* harmony import */ var _instructure_ui_form_field__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @instructure/ui-form-field */ \"../../node_modules/@instructure/ui-form-field/es/index.js\");\n/* harmony import */ var _instructure_ui_view__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @instructure/ui-view */ \"../../node_modules/@instructure/ui-view/es/index.js\");\n/* harmony import */ var _instructure_ui_tooltip__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @instructure/ui-tooltip */ \"../../node_modules/@instructure/ui-tooltip/es/index.js\");\n/* harmony import */ var _instructure_ui_tray__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @instructure/ui-tray */ \"../../node_modules/@instructure/ui-tray/es/index.js\");\n/* harmony import */ var _shared_StoreContext__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../shared/StoreContext */ \"./src/rce/plugins/shared/StoreContext.js\");\n/* harmony import */ var _instructure_canvas_media__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @instructure/canvas-media */ \"../canvas-media/es/index.js\");\n/* harmony import */ var _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../instructure_image/ImageEmbedOptions */ \"./src/rce/plugins/instructure_image/ImageEmbedOptions.js\");\n/* harmony import */ var _bridge__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../../bridge */ \"./src/bridge/index.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _shared_DimensionsInput__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../shared/DimensionsInput */ \"./src/rce/plugins/shared/DimensionsInput/index.js\");\n/* harmony import */ var _shared_trayUtils__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../shared/trayUtils */ \"./src/rce/plugins/shared/trayUtils.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\n\n\n\n\n\n\nconst getLiveRegion = () => document.getElementById('flash_screenreader_holder');\n\nfunction VideoOptionsTray(props) {\n const {\n videoOptions,\n onEntered,\n onExited,\n onRequestClose,\n onSave,\n open,\n trayProps,\n id\n } = props;\n const {\n naturalHeight,\n naturalWidth\n } = videoOptions;\n const currentHeight = videoOptions.appliedHeight || naturalHeight;\n const currentWidth = videoOptions.appliedWidth || naturalWidth;\n const [titleText, setTitleText] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(videoOptions.titleText);\n const [displayAs, setDisplayAs] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])('embed');\n const [videoSize, setVideoSize] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(videoOptions.videoSize);\n const [videoHeight, setVideoHeight] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(currentHeight);\n const [videoWidth, setVideoWidth] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(currentWidth);\n const [subtitles, setSubtitles] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(videoOptions.tracks || []);\n const [minWidth] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__[\"MIN_WIDTH_VIDEO\"]);\n const [minHeight] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(Math.round(videoHeight / videoWidth * _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__[\"MIN_WIDTH_VIDEO\"]));\n const [minPercentage] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__[\"MIN_PERCENTAGE\"]);\n const dimensionsState = Object(_shared_DimensionsInput__WEBPACK_IMPORTED_MODULE_19__[\"useDimensionsState\"])(videoOptions, {\n minHeight,\n minWidth,\n minPercentage\n });\n\n function handleTitleTextChange(event) {\n setTitleText(event.target.value);\n }\n\n function handleDisplayAsChange(event) {\n event.target.focus();\n setDisplayAs(event.target.value);\n }\n\n function handleVideoSizeChange(event, selectedOption) {\n setVideoSize(selectedOption.value);\n\n if (selectedOption.value === _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__[\"CUSTOM\"]) {\n setVideoHeight(currentHeight);\n setVideoWidth(currentWidth);\n } else {\n const {\n height,\n width\n } = Object(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__[\"scaleToSize\"])(selectedOption.value, naturalWidth, naturalHeight);\n setVideoHeight(height);\n setVideoWidth(width);\n }\n }\n\n function handleUpdateSubtitles(new_subtitles) {\n setSubtitles(new_subtitles);\n }\n\n function handleSave(event, updateMediaObject) {\n event.preventDefault();\n let appliedHeight = videoHeight;\n let appliedWidth = videoWidth;\n\n if (videoSize === _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__[\"CUSTOM\"]) {\n appliedHeight = dimensionsState.height;\n appliedWidth = dimensionsState.width;\n }\n\n onSave({\n media_object_id: videoOptions.id,\n titleText,\n appliedHeight,\n appliedWidth,\n displayAs,\n subtitles,\n updateMediaObject\n });\n }\n\n const tooltipText = Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Used by screen readers to describe the video');\n const textAreaLabel = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"], {\n alignItems: \"center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, null, Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Title')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, {\n margin: \"0 0 0 xx-small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_tooltip__WEBPACK_IMPORTED_MODULE_12__[\"Tooltip\"], {\n on: ['hover', 'focus'],\n placement: \"top\",\n tip: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_11__[\"View\"], {\n display: \"block\",\n id: \"alt-text-label-tooltip\",\n maxWidth: \"14rem\"\n }, tooltipText)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_3__[\"Button\"], {\n icon: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_8__[\"IconQuestionLine\"],\n size: \"small\",\n variant: \"icon\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_2__[\"ScreenReaderContent\"], null, tooltipText)))));\n const messagesForSize = [];\n\n if (videoSize !== _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__[\"CUSTOM\"]) {\n messagesForSize.push({\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('{width} x {height}px', {\n height: videoHeight,\n width: videoWidth\n }),\n type: 'hint'\n });\n }\n\n const saveDisabled = displayAs === 'embed' && (titleText === '' || videoSize === _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__[\"CUSTOM\"] && !dimensionsState.isValid);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_shared_StoreContext__WEBPACK_IMPORTED_MODULE_14__[\"StoreProvider\"], trayProps, contentProps => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_tray__WEBPACK_IMPORTED_MODULE_13__[\"Tray\"], {\n key: \"video-options-tray\",\n \"data-mce-component\": true,\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Video Options Tray'),\n onDismiss: onRequestClose,\n onEntered: onEntered,\n onExited: onExited,\n open: open,\n placement: \"end\",\n shouldCloseOnDocumentClick: true,\n shouldContainFocus: true,\n shouldReturnFocus: true,\n size: \"regular\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"], {\n direction: \"column\",\n height: Object(_shared_trayUtils__WEBPACK_IMPORTED_MODULE_20__[\"getTrayHeight\"])()\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, {\n as: \"header\",\n padding: \"medium\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"], {\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, {\n grow: true,\n shrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_heading__WEBPACK_IMPORTED_MODULE_4__[\"Heading\"], {\n as: \"h2\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Video Options'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_3__[\"CloseButton\"], {\n placemet: \"static\",\n variant: \"icon\",\n onClick: onRequestClose\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Close'))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, {\n as: \"form\",\n grow: true,\n margin: \"none\",\n shrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"], {\n justifyItems: \"space-between\",\n direction: \"column\",\n height: \"100%\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, {\n grow: true,\n padding: \"small\",\n shrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"], {\n direction: \"column\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, {\n padding: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text_area__WEBPACK_IMPORTED_MODULE_7__[\"TextArea\"], {\n \"aria-describedby\": \"alt-text-label-tooltip\",\n disabled: displayAs === 'link',\n height: \"4rem\",\n label: textAreaLabel,\n onChange: handleTitleTextChange,\n placeholder: Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('(Describe the video)'),\n resize: \"vertical\",\n value: titleText\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, {\n margin: \"small none none none\",\n padding: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_5__[\"RadioInputGroup\"], {\n description: Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Display Options'),\n name: \"display-video-as\",\n onChange: handleDisplayAsChange,\n value: displayAs\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_5__[\"RadioInput\"], {\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Embed Video'),\n value: \"embed\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_5__[\"RadioInput\"], {\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Display Text Link (Opens in a new tab)'),\n value: \"link\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, {\n margin: \"small none xx-small none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_11__[\"View\"], {\n as: \"div\",\n padding: \"small small xx-small small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"], {\n id: `${id}-size`,\n disabled: displayAs !== 'embed',\n renderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Size'),\n messages: messagesForSize,\n assistiveText: Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Use arrow keys to navigate options.'),\n onChange: handleVideoSizeChange,\n value: videoSize\n }, _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__[\"videoSizes\"].map(size => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: `${id}-size-${size}`,\n key: size,\n value: size\n }, Object(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__[\"labelForImageSize\"])(size))))), videoSize === _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_16__[\"CUSTOM\"] && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_11__[\"View\"], {\n as: \"div\",\n padding: \"xx-small small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_shared_DimensionsInput__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n dimensionsState: dimensionsState,\n disabled: displayAs !== 'embed',\n minHeight: minHeight,\n minWidth: minWidth,\n minPercentage: minPercentage\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, {\n padding: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_form_field__WEBPACK_IMPORTED_MODULE_10__[\"FormFieldGroup\"], {\n description: Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Closed Captions/Subtitles')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_canvas_media__WEBPACK_IMPORTED_MODULE_15__[\"ClosedCaptionPanel\"], {\n subtitles: subtitles.map(st => ({\n locale: st.locale,\n file: {\n name: st.language || st.locale\n } // this is an artifact of ClosedCaptionCreatorRow's inards\n\n })),\n uploadMediaTranslations: _bridge__WEBPACK_IMPORTED_MODULE_17__[\"default\"].uploadMediaTranslations,\n languages: _bridge__WEBPACK_IMPORTED_MODULE_17__[\"default\"].languages,\n updateSubtitles: handleUpdateSubtitles,\n liveRegion: getLiveRegion\n }))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_9__[\"Flex\"].Item, {\n background: \"secondary\",\n borderWidth: \"small none none none\",\n padding: \"small medium\",\n textAlign: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_3__[\"Button\"], {\n disabled: saveDisabled,\n onClick: event => handleSave(event, contentProps.updateMediaObject),\n variant: \"primary\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_18__[\"default\"])('Done'))))))));\n}\nVideoOptionsTray.propTypes = {\n videoOptions: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n titleText: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n appliedHeight: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"],\n appliedWidth: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"],\n naturalHeight: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"].isRequired,\n naturalWidth: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"].isRequired,\n tracks: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"arrayOf\"])(Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n locale: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired\n }))\n }).isRequired,\n onEntered: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"],\n onExited: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"],\n onRequestClose: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n onSave: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n open: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"].isRequired,\n trayProps: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n host: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n jwt: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired\n }),\n id: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"]\n};\nVideoOptionsTray.defaultProps = {\n onEntered: null,\n onExited: null,\n id: 'video-options-tray'\n};\n\n//# sourceURL=webpack:///./src/rce/plugins/instructure_record/VideoOptionsTray/index.js?");
|
|
17605
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return VideoOptionsTray; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_heading__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-heading */ \"../../node_modules/@instructure/ui-heading/es/index.js\");\n/* harmony import */ var _instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-radio-input */ \"../../node_modules/@instructure/ui-radio-input/es/index.js\");\n/* harmony import */ var _instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-simple-select */ \"../../node_modules/@instructure/ui-simple-select/es/index.js\");\n/* harmony import */ var _instructure_ui_text_area__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-text-area */ \"../../node_modules/@instructure/ui-text-area/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_flex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @instructure/ui-flex */ \"../../node_modules/@instructure/ui-flex/es/index.js\");\n/* harmony import */ var _instructure_ui_form_field__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @instructure/ui-form-field */ \"../../node_modules/@instructure/ui-form-field/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_ui_tooltip__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @instructure/ui-tooltip */ \"../../node_modules/@instructure/ui-tooltip/es/index.js\");\n/* harmony import */ var _instructure_ui_tray__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @instructure/ui-tray */ \"../../node_modules/@instructure/ui-tray/es/index.js\");\n/* harmony import */ var _shared_StoreContext__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../shared/StoreContext */ \"./src/rce/plugins/shared/StoreContext.js\");\n/* harmony import */ var _instructure_canvas_media__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @instructure/canvas-media */ \"../canvas-media/es/index.js\");\n/* harmony import */ var _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../instructure_image/ImageEmbedOptions */ \"./src/rce/plugins/instructure_image/ImageEmbedOptions.js\");\n/* harmony import */ var _bridge__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../../bridge */ \"./src/bridge/index.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../../../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _shared_DimensionsInput__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../shared/DimensionsInput */ \"./src/rce/plugins/shared/DimensionsInput/index.js\");\n/* harmony import */ var _shared_trayUtils__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../shared/trayUtils */ \"./src/rce/plugins/shared/trayUtils.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\n\n\n\n\n\nconst getLiveRegion = () => document.getElementById('flash_screenreader_holder');\n\nfunction VideoOptionsTray(props) {\n const {\n videoOptions,\n onEntered,\n onExited,\n onRequestClose,\n onSave,\n open,\n trayProps,\n id\n } = props;\n const {\n naturalHeight,\n naturalWidth\n } = videoOptions;\n const currentHeight = videoOptions.appliedHeight || naturalHeight;\n const currentWidth = videoOptions.appliedWidth || naturalWidth;\n const [titleText, setTitleText] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(videoOptions.titleText);\n const [displayAs, setDisplayAs] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])('embed');\n const [videoSize, setVideoSize] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(videoOptions.videoSize);\n const [videoHeight, setVideoHeight] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(currentHeight);\n const [videoWidth, setVideoWidth] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(currentWidth);\n const [subtitles, setSubtitles] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(videoOptions.tracks || []);\n const [minWidth] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__[\"MIN_WIDTH_VIDEO\"]);\n const [minHeight] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(Math.round(videoHeight / videoWidth * _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__[\"MIN_WIDTH_VIDEO\"]));\n const [minPercentage] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__[\"MIN_PERCENTAGE\"]);\n const dimensionsState = Object(_shared_DimensionsInput__WEBPACK_IMPORTED_MODULE_18__[\"useDimensionsState\"])(videoOptions, {\n minHeight,\n minWidth,\n minPercentage\n });\n\n function handleTitleTextChange(event) {\n setTitleText(event.target.value);\n }\n\n function handleDisplayAsChange(event) {\n event.target.focus();\n setDisplayAs(event.target.value);\n }\n\n function handleVideoSizeChange(event, selectedOption) {\n setVideoSize(selectedOption.value);\n\n if (selectedOption.value === _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__[\"CUSTOM\"]) {\n setVideoHeight(currentHeight);\n setVideoWidth(currentWidth);\n } else {\n const {\n height,\n width\n } = Object(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__[\"scaleToSize\"])(selectedOption.value, naturalWidth, naturalHeight);\n setVideoHeight(height);\n setVideoWidth(width);\n }\n }\n\n function handleUpdateSubtitles(new_subtitles) {\n setSubtitles(new_subtitles);\n }\n\n function handleSave(event, updateMediaObject) {\n event.preventDefault();\n let appliedHeight = videoHeight;\n let appliedWidth = videoWidth;\n\n if (videoSize === _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__[\"CUSTOM\"]) {\n appliedHeight = dimensionsState.height;\n appliedWidth = dimensionsState.width;\n }\n\n onSave({\n media_object_id: videoOptions.id,\n titleText,\n appliedHeight,\n appliedWidth,\n displayAs,\n subtitles,\n updateMediaObject\n });\n }\n\n const tooltipText = Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Used by screen readers to describe the video');\n const textAreaLabel = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"], {\n alignItems: \"center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, null, Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Title')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, {\n margin: \"0 0 0 xx-small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_tooltip__WEBPACK_IMPORTED_MODULE_11__[\"Tooltip\"], {\n on: ['hover', 'focus'],\n placement: \"top\",\n renderTip: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_10__[\"View\"], {\n display: \"block\",\n id: \"alt-text-label-tooltip\",\n maxWidth: \"14rem\"\n }, tooltipText)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_2__[\"IconButton\"], {\n renderIcon: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_7__[\"IconQuestionLine\"],\n size: \"small\",\n screenReaderLabel: tooltipText,\n withBackground: false,\n withBorder: false\n }))));\n const messagesForSize = [];\n\n if (videoSize !== _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__[\"CUSTOM\"]) {\n messagesForSize.push({\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('{width} x {height}px', {\n height: videoHeight,\n width: videoWidth\n }),\n type: 'hint'\n });\n }\n\n const saveDisabled = displayAs === 'embed' && (titleText === '' || videoSize === _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__[\"CUSTOM\"] && !dimensionsState.isValid);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_shared_StoreContext__WEBPACK_IMPORTED_MODULE_13__[\"StoreProvider\"], trayProps, contentProps => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_tray__WEBPACK_IMPORTED_MODULE_12__[\"Tray\"], {\n key: \"video-options-tray\",\n \"data-mce-component\": true,\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Video Options Tray'),\n onDismiss: onRequestClose,\n onEntered: onEntered,\n onExited: onExited,\n open: open,\n placement: \"end\",\n shouldCloseOnDocumentClick: true,\n shouldContainFocus: true,\n shouldReturnFocus: true,\n size: \"regular\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"], {\n direction: \"column\",\n height: Object(_shared_trayUtils__WEBPACK_IMPORTED_MODULE_19__[\"getTrayHeight\"])()\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, {\n as: \"header\",\n padding: \"medium\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"], {\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, {\n shouldGrow: true,\n shouldShrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_heading__WEBPACK_IMPORTED_MODULE_3__[\"Heading\"], {\n as: \"h2\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Video Options'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_2__[\"CloseButton\"], {\n color: \"primary\",\n onClick: onRequestClose,\n screenReaderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Close')\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, {\n as: \"form\",\n shouldGrow: true,\n margin: \"none\",\n shouldShrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"], {\n justifyItems: \"space-between\",\n direction: \"column\",\n height: \"100%\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, {\n shouldGrow: true,\n padding: \"small\",\n shouldShrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"], {\n direction: \"column\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, {\n padding: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text_area__WEBPACK_IMPORTED_MODULE_6__[\"TextArea\"], {\n \"aria-describedby\": \"alt-text-label-tooltip\",\n disabled: displayAs === 'link',\n height: \"4rem\",\n label: textAreaLabel,\n onChange: handleTitleTextChange,\n placeholder: Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('(Describe the video)'),\n resize: \"vertical\",\n value: titleText\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, {\n margin: \"small none none none\",\n padding: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_4__[\"RadioInputGroup\"], {\n description: Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Display Options'),\n name: \"display-video-as\",\n onChange: handleDisplayAsChange,\n value: displayAs\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_4__[\"RadioInput\"], {\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Embed Video'),\n value: \"embed\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_4__[\"RadioInput\"], {\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Display Text Link (Opens in a new tab)'),\n value: \"link\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, {\n margin: \"small none xx-small none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_10__[\"View\"], {\n as: \"div\",\n padding: \"small small xx-small small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_5__[\"SimpleSelect\"], {\n id: `${id}-size`,\n disabled: displayAs !== 'embed',\n renderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Size'),\n messages: messagesForSize,\n assistiveText: Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Use arrow keys to navigate options.'),\n onChange: handleVideoSizeChange,\n value: videoSize\n }, _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__[\"videoSizes\"].map(size => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_5__[\"SimpleSelect\"].Option, {\n id: `${id}-size-${size}`,\n key: size,\n value: size\n }, Object(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__[\"labelForImageSize\"])(size))))), videoSize === _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_15__[\"CUSTOM\"] && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_10__[\"View\"], {\n as: \"div\",\n padding: \"xx-small small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_shared_DimensionsInput__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n dimensionsState: dimensionsState,\n disabled: displayAs !== 'embed',\n minHeight: minHeight,\n minWidth: minWidth,\n minPercentage: minPercentage\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, {\n padding: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_form_field__WEBPACK_IMPORTED_MODULE_9__[\"FormFieldGroup\"], {\n description: Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Closed Captions/Subtitles')\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_canvas_media__WEBPACK_IMPORTED_MODULE_14__[\"ClosedCaptionPanel\"], {\n subtitles: subtitles.map(st => ({\n locale: st.locale,\n file: {\n name: st.language || st.locale\n } // this is an artifact of ClosedCaptionCreatorRow's inards\n\n })),\n uploadMediaTranslations: _bridge__WEBPACK_IMPORTED_MODULE_16__[\"default\"].uploadMediaTranslations,\n languages: _bridge__WEBPACK_IMPORTED_MODULE_16__[\"default\"].languages,\n updateSubtitles: handleUpdateSubtitles,\n liveRegion: getLiveRegion\n }))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_8__[\"Flex\"].Item, {\n background: \"secondary\",\n borderWidth: \"small none none none\",\n padding: \"small medium\",\n textAlign: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_2__[\"Button\"], {\n disabled: saveDisabled,\n onClick: event => handleSave(event, contentProps.updateMediaObject),\n variant: \"primary\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_17__[\"default\"])('Done'))))))));\n}\nVideoOptionsTray.propTypes = {\n videoOptions: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n titleText: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n appliedHeight: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"],\n appliedWidth: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"],\n naturalHeight: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"].isRequired,\n naturalWidth: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"].isRequired,\n tracks: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"arrayOf\"])(Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n locale: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired\n }))\n }).isRequired,\n onEntered: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"],\n onExited: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"],\n onRequestClose: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n onSave: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n open: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"].isRequired,\n trayProps: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n host: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n jwt: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired\n }),\n id: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"]\n};\nVideoOptionsTray.defaultProps = {\n onEntered: null,\n onExited: null,\n id: 'video-options-tray'\n};\n\n//# sourceURL=webpack:///./src/rce/plugins/instructure_record/VideoOptionsTray/index.js?");
|
|
17594
17606
|
|
|
17595
17607
|
/***/ }),
|
|
17596
17608
|
|
|
@@ -17614,7 +17626,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _for
|
|
|
17614
17626
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17615
17627
|
|
|
17616
17628
|
"use strict";
|
|
17617
|
-
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 react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _instructure_ui_tray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/ui-tray */ \"../../node_modules/@instructure/ui-tray/es/index.js\");\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_heading__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-heading */ \"../../node_modules/@instructure/ui-heading/es/index.js\");\n/* harmony import */ var _instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-spinner */ \"../../node_modules/@instructure/ui-spinner/es/index.js\");\n/* harmony import */ var _instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-flex */ \"../../node_modules/@instructure/ui-flex/es/index.js\");\n/* harmony import */ var _ErrorBoundary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ErrorBoundary */ \"./src/rce/plugins/shared/ErrorBoundary.js\");\n/* harmony import */ var _bridge_Bridge__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../bridge/Bridge */ \"./src/bridge/Bridge.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _Filter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Filter */ \"./src/rce/plugins/shared/Filter.js\");\n/* harmony import */ var _StoreContext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./StoreContext */ \"./src/rce/plugins/shared/StoreContext.js\");\n/* harmony import */ var _trayUtils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./trayUtils */ \"./src/rce/plugins/shared/trayUtils.js\");\n/* harmony import */ var _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../instructure_icon_maker/svg/constants */ \"./src/rce/plugins/instructure_icon_maker/svg/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 * 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_9__[\"default\"])('Course Links');\n } else if (contentType === 'links' && contextType === 'group') {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Group Links');\n }\n\n switch (contentSubtype) {\n case _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_13__[\"ICON_MAKER_ICONS\"]:\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Icon Maker Icons');\n\n case 'images':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Course Images');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Group Images');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('User Images');\n\n case 'media':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Course Media');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Group Media');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('User Media');\n\n case 'documents':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Course Documents');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Group Documents');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('User Documents');\n\n default:\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Tray');\n // Shouldn't ever get here\n }\n}\n\nconst thePanels = {\n icon_maker_icons: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(3), __webpack_require__.e(4), __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_0___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_0___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(3), __webpack_require__.e(4), __webpack_require__.e(1), __webpack_require__.e(33)]).then(__webpack_require__.bind(null, /*! ../instructure_image/Images */ \"./src/rce/plugins/instructure_image/Images/index.js\"))),\n documents: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(1), __webpack_require__.e(34)]).then(__webpack_require__.bind(null, /*! ../instructure_documents/components/DocumentsPanel */ \"./src/rce/plugins/instructure_documents/components/DocumentsPanel.js\"))),\n media: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(1), __webpack_require__.e(35)]).then(__webpack_require__.bind(null, /*! ../instructure_record/MediaPanel */ \"./src/rce/plugins/instructure_record/MediaPanel/index.js\"))),\n all: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(29), __webpack_require__.e(36)]).then(__webpack_require__.bind(null, /*! ./FileBrowser */ \"./src/rce/plugins/shared/FileBrowser.js\"))),\n unknown: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.lazy(() => __webpack_require__.e(/*! import() */ 74).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_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_5__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"large\"\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Component, props));\n}\n\nfunction renderLoading() {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"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 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_13__[\"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_0__[\"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_0__[\"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_0__[\"useState\"])(true);\n const trayRef = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n const scrollingAreaRef = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n const [filterSettings, setFilterSettings] = Object(_Filter__WEBPACK_IMPORTED_MODULE_10__[\"useFilterSettings\"])();\n const {\n bridge,\n editor,\n onTrayClosing\n } = { ...props\n };\n const handleDismissTray = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"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_0__[\"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\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_0__[\"useEffect\"])(() => {\n if (hasOpened && scrollingAreaRef.current && !scrollingAreaRef.current.style.overscrollBehaviorY) {\n scrollingAreaRef.current.style.overscrollBehaviorY = 'contain';\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 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 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_StoreContext__WEBPACK_IMPORTED_MODULE_11__[\"StoreProvider\"], Object.assign({}, props, {\n key: CanvasContentTray.globalOpenCount,\n contextType: filterSettings.contextType || props.contextType\n }), contentProps => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_tray__WEBPACK_IMPORTED_MODULE_2__[\"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 onEntered: () => {\n const c = document.querySelector('[role=\"main\"]');\n let target_w = 0;\n\n if (c) {\n var _trayRef$current;\n\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\n setHidingTrayOnAction(target_w < 320);\n },\n onExiting: () => {\n const c = document.querySelector('[role=\"main\"]');\n if (c) c.style.width = '';\n },\n contentRef: el => trayRef.current = el\n }, isOpen && hasOpened ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"], {\n direction: \"column\",\n as: \"div\",\n height: Object(_trayUtils__WEBPACK_IMPORTED_MODULE_12__[\"getTrayHeight\"])(),\n overflowY: \"hidden\",\n tabIndex: \"-1\",\n \"data-canvascontenttray-content\": true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"].Item, {\n padding: \"medium\",\n shadow: \"above\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"], {\n margin: \"none none medium none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"].Item, {\n shouldgrow: true,\n shouldshrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_heading__WEBPACK_IMPORTED_MODULE_4__[\"Heading\"], {\n level: \"h2\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Add'))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_3__[\"CloseButton\"], {\n placement: \"end\",\n onClick: handleDismissTray,\n \"data-testid\": \"CloseButton_ContentTray\",\n screenReaderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Close')\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Filter__WEBPACK_IMPORTED_MODULE_10__[\"default\"], Object.assign({}, 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_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"].Item, {\n shouldgrow: true,\n shouldshrink: true,\n margin: \"xx-small xxx-small 0\",\n elementRef: el => scrollingAreaRef.current = el\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ErrorBoundary__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(DynamicPanel, Object.assign({\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 jwt: props.jwt,\n host: props.host,\n refreshToken: props.refreshToken,\n context: {\n type: props.contextType,\n id: props.contextId\n }\n }, contentProps))))) : 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_1__[\"bool\"].isRequired,\n contextId: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"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_1__[\"string\"].isRequired,\n // initial value indicating the user's context, not the tray's\n containingContext: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n contextType: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n contextId: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n userId: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired\n }),\n filesTabDisabled: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"],\n host: requiredWithoutSource,\n jwt: requiredWithoutSource,\n refreshToken: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"],\n source: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n fetchImages: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired\n }),\n themeUrl: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"]\n};\nconst trayPropTypes = Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])(trayPropsMap);\nCanvasContentTray.propTypes = {\n bridge: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"instanceOf\"])(_bridge_Bridge__WEBPACK_IMPORTED_MODULE_8__[\"default\"]).isRequired,\n editor: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n id: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"]\n }).isRequired,\n onTrayClosing: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"],\n // called with true when the tray starts closing, false once closed\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?");
|
|
17629
|
+
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 react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _instructure_ui_tray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/ui-tray */ \"../../node_modules/@instructure/ui-tray/es/index.js\");\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_heading__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-heading */ \"../../node_modules/@instructure/ui-heading/es/index.js\");\n/* harmony import */ var _instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-spinner */ \"../../node_modules/@instructure/ui-spinner/es/index.js\");\n/* harmony import */ var _instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-flex */ \"../../node_modules/@instructure/ui-flex/es/index.js\");\n/* harmony import */ var _ErrorBoundary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ErrorBoundary */ \"./src/rce/plugins/shared/ErrorBoundary.js\");\n/* harmony import */ var _bridge_Bridge__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../bridge/Bridge */ \"./src/bridge/Bridge.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _Filter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Filter */ \"./src/rce/plugins/shared/Filter.js\");\n/* harmony import */ var _StoreContext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./StoreContext */ \"./src/rce/plugins/shared/StoreContext.js\");\n/* harmony import */ var _trayUtils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./trayUtils */ \"./src/rce/plugins/shared/trayUtils.js\");\n/* harmony import */ var _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../instructure_icon_maker/svg/constants */ \"./src/rce/plugins/instructure_icon_maker/svg/constants.js\");\n/* harmony import */ var _ContentSelection__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ContentSelection */ \"./src/rce/plugins/shared/ContentSelection.js\");\n/* harmony import */ var _linkUtils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./linkUtils */ \"./src/rce/plugins/shared/linkUtils.js\");\n/* harmony import */ var _LinkDisplay__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LinkDisplay */ \"./src/rce/plugins/shared/LinkDisplay.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\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_9__[\"default\"])('Course Links');\n } else if (contentType === 'links' && contextType === 'group') {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Group Links');\n }\n\n switch (contentSubtype) {\n case _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_13__[\"ICON_MAKER_ICONS\"]:\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Icon Maker Icons');\n\n case 'images':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Course Images');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Group Images');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('User Images');\n\n case 'media':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Course Media');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Group Media');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('User Media');\n\n case 'documents':\n if (contentType === 'course_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Course Documents');\n if (contentType === 'group_files') return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Group Documents');\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('User Documents');\n\n default:\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Tray');\n // Shouldn't ever get here\n }\n}\n\nconst thePanels = {\n icon_maker_icons: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(3), __webpack_require__.e(4), __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_0___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_0___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(3), __webpack_require__.e(4), __webpack_require__.e(1), __webpack_require__.e(33)]).then(__webpack_require__.bind(null, /*! ../instructure_image/Images */ \"./src/rce/plugins/instructure_image/Images/index.js\"))),\n documents: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(1), __webpack_require__.e(34)]).then(__webpack_require__.bind(null, /*! ../instructure_documents/components/DocumentsPanel */ \"./src/rce/plugins/instructure_documents/components/DocumentsPanel.js\"))),\n media: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(1), __webpack_require__.e(35)]).then(__webpack_require__.bind(null, /*! ../instructure_record/MediaPanel */ \"./src/rce/plugins/instructure_record/MediaPanel/index.js\"))),\n all: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.lazy(() => Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(29), __webpack_require__.e(37)]).then(__webpack_require__.bind(null, /*! ./FileBrowser */ \"./src/rce/plugins/shared/FileBrowser.js\"))),\n unknown: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.lazy(() => __webpack_require__.e(/*! import() */ 74).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_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0__[\"Suspense\"], {\n fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_spinner__WEBPACK_IMPORTED_MODULE_5__[\"Spinner\"], {\n renderTitle: renderLoading,\n size: \"large\"\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Component, props));\n}\n\nfunction renderLoading() {\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"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_13__[\"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_0__[\"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_0__[\"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_0__[\"useState\"])(true);\n const trayRef = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n const scrollingAreaRef = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n const [filterSettings, setFilterSettings] = Object(_Filter__WEBPACK_IMPORTED_MODULE_10__[\"useFilterSettings\"])();\n const [isEditTray, setIsEditTray] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false);\n const [link, setLink] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(null);\n const [linkText, setLinkText] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(null);\n const [placeholderText, setPlaceholderText] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(null);\n const Icon = Object(_linkUtils__WEBPACK_IMPORTED_MODULE_15__[\"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_0__[\"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_0__[\"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_14__[\"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_0__[\"useEffect\"])(() => {\n if (hasOpened && scrollingAreaRef.current && !scrollingAreaRef.current.style.overscrollBehaviorY) {\n scrollingAreaRef.current.style.overscrollBehaviorY = 'contain';\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_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"].Item, {\n background: \"secondary\",\n borderWidth: \"small none none none\",\n padding: \"small medium\",\n textAlign: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_3__[\"Button\"], {\n onClick: handleDismissTray\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Cancel')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_3__[\"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_9__[\"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_9__[\"default\"])('Edit Course Link') : Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Add');\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_StoreContext__WEBPACK_IMPORTED_MODULE_11__[\"StoreProvider\"], Object.assign({}, props, {\n key: CanvasContentTray.globalOpenCount,\n contextType: filterSettings.contextType || props.contextType\n }), contentProps => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_tray__WEBPACK_IMPORTED_MODULE_2__[\"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 onEntered: () => {\n const c = document.querySelector('[role=\"main\"]');\n let target_w = 0;\n\n if (c) {\n var _trayRef$current;\n\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\n setHidingTrayOnAction(target_w < 320);\n },\n onExiting: () => {\n const c = document.querySelector('[role=\"main\"]');\n if (c) c.style.width = '';\n },\n contentRef: el => trayRef.current = el\n }, isOpen && hasOpened ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"], {\n direction: \"column\",\n as: \"div\",\n height: Object(_trayUtils__WEBPACK_IMPORTED_MODULE_12__[\"getTrayHeight\"])(),\n overflowY: \"hidden\",\n tabIndex: \"-1\",\n \"data-canvascontenttray-content\": true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"].Item, {\n padding: \"medium\",\n shadow: \"above\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"], {\n margin: \"none none medium none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"].Item, {\n shouldgrow: true,\n shouldshrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_heading__WEBPACK_IMPORTED_MODULE_4__[\"Heading\"], {\n level: \"h2\"\n }, getHeader())), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_3__[\"CloseButton\"], {\n placement: \"end\",\n onClick: handleDismissTray,\n \"data-testid\": \"CloseButton_ContentTray\",\n screenReaderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_9__[\"default\"])('Close')\n }))), isEditTray && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_LinkDisplay__WEBPACK_IMPORTED_MODULE_16__[\"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_0___default.a.createElement(_Filter__WEBPACK_IMPORTED_MODULE_10__[\"default\"], Object.assign({}, 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_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"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_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"], {\n justifyItems: \"space-between\",\n direction: \"column\",\n height: \"100%\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_6__[\"Flex\"].Item, {\n shouldGrow: true,\n shouldShrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ErrorBoundary__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(DynamicPanel, Object.assign({\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 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_1__[\"bool\"].isRequired,\n contextId: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"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_1__[\"string\"].isRequired,\n // initial value indicating the user's context, not the tray's\n containingContext: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n contextType: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n contextId: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n userId: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired\n }),\n filesTabDisabled: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"],\n host: requiredWithoutSource,\n jwt: requiredWithoutSource,\n refreshToken: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"],\n source: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n fetchImages: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired\n }),\n themeUrl: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"]\n};\nconst trayPropTypes = Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])(trayPropsMap);\nCanvasContentTray.propTypes = {\n bridge: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"instanceOf\"])(_bridge_Bridge__WEBPACK_IMPORTED_MODULE_8__[\"default\"]).isRequired,\n editor: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n id: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"]\n }).isRequired,\n onTrayClosing: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"],\n // called with true when the tray starts closing, false once closed\n onEditClick: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"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?");
|
|
17618
17630
|
|
|
17619
17631
|
/***/ }),
|
|
17620
17632
|
|
|
@@ -17626,7 +17638,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17626
17638
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17627
17639
|
|
|
17628
17640
|
"use strict";
|
|
17629
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LINK_TYPE\", function() { return LINK_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FILE_LINK_TYPE\", function() { return FILE_LINK_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMAGE_EMBED_TYPE\", function() { return IMAGE_EMBED_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VIDEO_EMBED_TYPE\", function() { return VIDEO_EMBED_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT_TYPE\", function() { return TEXT_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NONE_TYPE\", function() { return NONE_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISPLAY_AS_LINK\", function() { return DISPLAY_AS_LINK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISPLAY_AS_EMBED\", function() { return DISPLAY_AS_EMBED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISPLAY_AS_EMBED_DISABLED\", function() { return DISPLAY_AS_EMBED_DISABLED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISPLAY_AS_DOWNLOAD_LINK\", function() { return DISPLAY_AS_DOWNLOAD_LINK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asImageEmbed\", function() { return asImageEmbed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asLink\", function() { return asLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asVideoElement\", function() { return asVideoElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asAudioElement\", function() { return asAudioElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getContentFromElement\", function() { return getContentFromElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getContentFromEditor\", function() { return getContentFromEditor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLinkContentFromEditor\", function() { return getLinkContentFromEditor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFileLink\", function() { return isFileLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isImageEmbed\", function() { return isImageEmbed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isVideoElement\", function() { return isVideoElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAudioElement\", function() { return isAudioElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findMediaPlayerIframe\", function() { return findMediaPlayerIframe; });\n/* harmony import */ var _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../instructure_image/ImageEmbedOptions */ \"./src/rce/plugins/instructure_image/ImageEmbedOptions.js\");\n/* harmony import */ var _contentInsertionUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../contentInsertionUtils */ \"./src/rce/contentInsertionUtils.js\");\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! url */ \"../../node_modules/url/url.js\");\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(url__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../format-message */ \"./src/format-message.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\nconst FILE_DOWNLOAD_PATH_REGEX = /^\\/(courses\\/\\d+\\/)?files\\/\\d+\\/download$/;\nconst LINK_TYPE = 'link';\nconst FILE_LINK_TYPE = 'file-link';\nconst IMAGE_EMBED_TYPE = 'image-embed';\nconst VIDEO_EMBED_TYPE = 'video-embed';\nconst TEXT_TYPE = 'text';\nconst NONE_TYPE = 'none';\nconst DISPLAY_AS_LINK = 'link';\nconst DISPLAY_AS_EMBED = 'embed';\nconst DISPLAY_AS_EMBED_DISABLED = 'embed-disabled';\nconst DISPLAY_AS_DOWNLOAD_LINK = 'download-link';\nfunction asImageEmbed($element) {\n const nodeName = $element.nodeName.toLowerCase();\n\n if (nodeName !== 'img') {\n return null;\n }\n\n return { ...Object(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_0__[\"fromImageEmbed\"])($element),\n $element,\n type: IMAGE_EMBED_TYPE\n };\n}\nfunction asLink($element, editor) {\n let $link = $element;\n\n if ($link.tagName !== 'A') {\n // the user may have selected some text that is w/in a link\n // but didn't include the <a>. Let's see if that's true\n $link = editor.dom.getParent($link, 'a[href]');\n }\n\n if (!$link || $link.tagName !== 'A' || !$link.href) {\n return null;\n }\n\n const {\n pathname\n } = url__WEBPACK_IMPORTED_MODULE_2__[\"parse\"]($link.href);\n const type = FILE_DOWNLOAD_PATH_REGEX.test(pathname) ? FILE_LINK_TYPE : LINK_TYPE;\n let displayAs = DISPLAY_AS_LINK;\n\n if ($link.classList.contains('no_preview')) {\n displayAs = DISPLAY_AS_DOWNLOAD_LINK;\n } else if ($link.classList.contains('auto_open')) {\n displayAs = DISPLAY_AS_EMBED;\n } else if ($link.classList.contains('inline_disabled')) {\n displayAs = DISPLAY_AS_EMBED_DISABLED;\n }\n\n const isPreviewable = $link.hasAttribute('data-canvas-previewable') || $link.classList.contains('instructure_scribd_file'); // needed to cover docs linked while there was a bug didn't add the data attr.\n\n return {\n $element: $link,\n displayAs,\n text: $link.textContent,\n onlyTextSelected: Object(_contentInsertionUtils__WEBPACK_IMPORTED_MODULE_1__[\"isOnlyTextSelected\"])(editor.selection.getContent()),\n type,\n isPreviewable,\n url: $link.href\n };\n} // the video element is a bit tricky.\n// tinymce won't let me add many attributes to the iframe,\n// even though I've listed them in tinymce.config.js\n// extended_valid_elements.\n// we have to rely on the span tinymce wraps around the iframe\n// and it's attributes, even though this could change with future\n// tinymce releases.\n// see https://github.com/tinymce/tinymce/issues/5181\n\nfunction asVideoElement($element) {\n var _$videoElem$parentEle;\n\n const $videoElem = findMediaPlayerIframe($element);\n\n if (!isVideoElement($videoElem)) {\n return null;\n }\n\n return { ...Object(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_0__[\"fromVideoEmbed\"])($videoElem),\n $element,\n type: VIDEO_EMBED_TYPE,\n id: ((_$videoElem$parentEle = $videoElem.parentElement) === null || _$videoElem$parentEle === void 0 ? void 0 : _$videoElem$parentEle.getAttribute('data-mce-p-data-media-id')) || $videoElem.getAttribute('data-mce-p-data-media-id')\n };\n}\nfunction asAudioElement($element) {\n var _$element$parentEleme;\n\n if (!$element) {\n return null;\n }\n\n const $audioIframe = $element.tagName === 'IFRAME' ? $element : $element.firstElementChild;\n const $tinymceIframeShim = $audioIframe.parentElement;\n const title = ($audioIframe.getAttribute('title') || $tinymceIframeShim.getAttribute('data-mce-p-title') || '').replace(Object(_format_message__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('Video player for '), '');\n const audioOptions = {\n titleText: title,\n id: ((_$element$parentEleme = $element.parentElement) === null || _$element$parentEleme === void 0 ? void 0 : _$element$parentEleme.getAttribute('data-mce-p-data-media-id')) || $element.getAttribute('data-mce-p-data-media-id')\n };\n\n if ($audioIframe.tagName === 'IFRAME') {\n const audioDoc = $audioIframe.contentDocument;\n\n try {\n var _audioDoc$querySelect;\n\n const trackSJson = (_audioDoc$querySelect = audioDoc.querySelector('[data-tracks]')) === null || _audioDoc$querySelect === void 0 ? void 0 : _audioDoc$querySelect.getAttribute('data-tracks');\n\n if (trackSJson) {\n audioOptions.tracks = JSON.parse(trackSJson);\n } // eslint-disable-next-line no-empty\n\n } catch (e) {}\n }\n\n return audioOptions;\n}\n\nfunction asText($element, editor) {\n const text = editor && editor.selection.getContent({\n format: 'text'\n });\n\n if (!text) {\n return null;\n }\n\n return {\n $element,\n text,\n type: TEXT_TYPE\n };\n}\n\nfunction asNone($element) {\n return {\n $element: $element || null,\n type: NONE_TYPE\n };\n}\n\nfunction getContentFromElement($element, editor) {\n if (!($element && $element.nodeName)) {\n return asNone();\n }\n\n const content = asLink($element, editor) || asImageEmbed($element) || asVideoElement($element) || asText($element, editor) || asNone($element);\n return content;\n}\nfunction getContentFromEditor(editor) {\n let expandSelection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let $element;\n\n if (editor && editor.selection) {\n // tinymce selects the element around the cursor, whether it's\n // content is selected in the copy/paste sense or not.\n // We want to include this content if it's _really_ selected,\n // or if editing the surrounding link, but not if creating a new link\n if (expandSelection || !editor.selection.isCollapsed()) {\n $element = editor.selection.getNode();\n }\n }\n\n if ($element == null) {\n return asNone();\n }\n\n return getContentFromElement($element, editor);\n} // if the selection is somewhere w/in a <a>,\n// find the <a> and return it's info\n\nfunction getLinkContentFromEditor(editor) {\n const $element = editor.selection.getNode();\n return $element ? asLink($element, editor) : null;\n}\nfunction isFileLink($element, editor) {\n return !!asLink($element, editor);\n}\nfunction isImageEmbed($element) {\n return !!asImageEmbed($element) && !$element.getAttribute('data-placeholder-for');\n}\n\nfunction isMediaElement($element, mediaType) {\n var _tinymceIframeShim$fi;\n\n // the video is hosted in an iframe, but tinymce\n // wraps it in a span with swizzled attribute names\n if (!($element !== null && $element !== void 0 && $element.getAttribute)) {\n return false;\n }\n\n const tinymceIframeShim = $element.tagName === 'IFRAME' ? $element.parentElement : $element;\n\n if (((_tinymceIframeShim$fi = tinymceIframeShim.firstElementChild) === null || _tinymceIframeShim$fi === void 0 ? void 0 : _tinymceIframeShim$fi.tagName) !== 'IFRAME') {\n return false;\n }\n\n const media_obj_id = tinymceIframeShim.getAttribute('data-mce-p-data-media-id');\n\n if (!media_obj_id) {\n return false;\n }\n\n const media_type = tinymceIframeShim.getAttribute('data-mce-p-data-media-type');\n return media_type === mediaType;\n}\n\nfunction isVideoElement($element) {\n return isMediaElement($element, 'video');\n}\nfunction isAudioElement($element) {\n return isMediaElement($element, 'audio');\n}\nfunction findMediaPlayerIframe(elem) {\n var _elem$firstElementChi;\n\n if (elem.tagName === 'IFRAME') {\n // we have the iframe\n return elem;\n }\n\n if (((_elem$firstElementChi = elem.firstElementChild) === null || _elem$firstElementChi === void 0 ? void 0 : _elem$firstElementChi.tagName) === 'IFRAME') {\n // we have the shim tinymce puts around the iframe\n return elem.firstElementChild;\n }\n\n if (elem.classList.contains('mce-shim')) {\n var _elem$previousSibling;\n\n // tinymce puts a <span class='mce-shin'> after the iframe (since v5, I think)\n if (((_elem$previousSibling = elem.previousSibling) === null || _elem$previousSibling === void 0 ? void 0 : _elem$previousSibling.tagName) === 'IFRAME') {\n return elem.previousSibling;\n }\n }\n\n return null;\n}\n\n//# sourceURL=webpack:///./src/rce/plugins/shared/ContentSelection.js?");
|
|
17641
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LINK_TYPE\", function() { return LINK_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FILE_LINK_TYPE\", function() { return FILE_LINK_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMAGE_EMBED_TYPE\", function() { return IMAGE_EMBED_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VIDEO_EMBED_TYPE\", function() { return VIDEO_EMBED_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TEXT_TYPE\", function() { return TEXT_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NONE_TYPE\", function() { return NONE_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISPLAY_AS_LINK\", function() { return DISPLAY_AS_LINK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISPLAY_AS_EMBED\", function() { return DISPLAY_AS_EMBED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISPLAY_AS_EMBED_DISABLED\", function() { return DISPLAY_AS_EMBED_DISABLED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISPLAY_AS_DOWNLOAD_LINK\", function() { return DISPLAY_AS_DOWNLOAD_LINK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asImageEmbed\", function() { return asImageEmbed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asLink\", function() { return asLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asVideoElement\", function() { return asVideoElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"asAudioElement\", function() { return asAudioElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getContentFromElement\", function() { return getContentFromElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getContentFromEditor\", function() { return getContentFromEditor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLinkContentFromEditor\", function() { return getLinkContentFromEditor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFileLink\", function() { return isFileLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isImageEmbed\", function() { return isImageEmbed; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isVideoElement\", function() { return isVideoElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isAudioElement\", function() { return isAudioElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findMediaPlayerIframe\", function() { return findMediaPlayerIframe; });\n/* harmony import */ var _instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../instructure_image/ImageEmbedOptions */ \"./src/rce/plugins/instructure_image/ImageEmbedOptions.js\");\n/* harmony import */ var _contentInsertionUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../contentInsertionUtils */ \"./src/rce/contentInsertionUtils.js\");\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! url */ \"../../node_modules/url/url.js\");\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(url__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../format-message */ \"./src/format-message.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\nconst FILE_DOWNLOAD_PATH_REGEX = /^\\/(courses\\/\\d+\\/)?files\\/\\d+\\/download$/;\nconst LINK_TYPE = 'link';\nconst FILE_LINK_TYPE = 'file-link';\nconst IMAGE_EMBED_TYPE = 'image-embed';\nconst VIDEO_EMBED_TYPE = 'video-embed';\nconst TEXT_TYPE = 'text';\nconst NONE_TYPE = 'none';\nconst DISPLAY_AS_LINK = 'link';\nconst DISPLAY_AS_EMBED = 'embed';\nconst DISPLAY_AS_EMBED_DISABLED = 'embed-disabled';\nconst DISPLAY_AS_DOWNLOAD_LINK = 'download-link';\nfunction asImageEmbed($element) {\n const nodeName = $element.nodeName.toLowerCase();\n\n if (nodeName !== 'img') {\n return null;\n }\n\n return { ...Object(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_0__[\"fromImageEmbed\"])($element),\n $element,\n type: IMAGE_EMBED_TYPE\n };\n}\nfunction asLink($element, editor) {\n let $link = $element;\n\n if ($link.tagName !== 'A') {\n // the user may have selected some text that is w/in a link\n // but didn't include the <a>. Let's see if that's true\n $link = editor.dom.getParent($link, 'a[href]');\n }\n\n if (!$link || $link.tagName !== 'A' || !$link.href) {\n return null;\n }\n\n const {\n pathname\n } = url__WEBPACK_IMPORTED_MODULE_2__[\"parse\"]($link.href);\n const type = FILE_DOWNLOAD_PATH_REGEX.test(pathname) ? FILE_LINK_TYPE : LINK_TYPE;\n let displayAs = DISPLAY_AS_LINK;\n\n if ($link.classList.contains('no_preview')) {\n displayAs = DISPLAY_AS_DOWNLOAD_LINK;\n } else if ($link.classList.contains('auto_open')) {\n displayAs = DISPLAY_AS_EMBED;\n } else if ($link.classList.contains('inline_disabled')) {\n displayAs = DISPLAY_AS_EMBED_DISABLED;\n }\n\n const contentType = $link.getAttribute('data-course-type');\n const fileName = $link.getAttribute('title');\n const published = $link.getAttribute('data-published') === 'true';\n const isPreviewable = $link.hasAttribute('data-canvas-previewable') || $link.classList.contains('instructure_scribd_file'); // needed to cover docs linked while there was a bug didn't add the data attr.\n\n return {\n $element: $link,\n displayAs,\n text: $link.textContent,\n onlyTextSelected: Object(_contentInsertionUtils__WEBPACK_IMPORTED_MODULE_1__[\"isOnlyTextSelected\"])(editor.selection.getContent()),\n type,\n isPreviewable,\n url: $link.href,\n contentType,\n fileName,\n published\n };\n} // the video element is a bit tricky.\n// tinymce won't let me add many attributes to the iframe,\n// even though I've listed them in tinymce.config.js\n// extended_valid_elements.\n// we have to rely on the span tinymce wraps around the iframe\n// and it's attributes, even though this could change with future\n// tinymce releases.\n// see https://github.com/tinymce/tinymce/issues/5181\n\nfunction asVideoElement($element) {\n var _$videoElem$parentEle;\n\n const $videoElem = findMediaPlayerIframe($element);\n\n if (!isVideoElement($videoElem)) {\n return null;\n }\n\n return { ...Object(_instructure_image_ImageEmbedOptions__WEBPACK_IMPORTED_MODULE_0__[\"fromVideoEmbed\"])($videoElem),\n $element,\n type: VIDEO_EMBED_TYPE,\n id: ((_$videoElem$parentEle = $videoElem.parentElement) === null || _$videoElem$parentEle === void 0 ? void 0 : _$videoElem$parentEle.getAttribute('data-mce-p-data-media-id')) || $videoElem.getAttribute('data-mce-p-data-media-id')\n };\n}\nfunction asAudioElement($element) {\n var _$element$parentEleme;\n\n if (!$element) {\n return null;\n }\n\n const $audioIframe = $element.tagName === 'IFRAME' ? $element : $element.firstElementChild;\n const $tinymceIframeShim = $audioIframe.parentElement;\n const title = ($audioIframe.getAttribute('title') || $tinymceIframeShim.getAttribute('data-mce-p-title') || '').replace(Object(_format_message__WEBPACK_IMPORTED_MODULE_3__[\"default\"])('Video player for '), '');\n const audioOptions = {\n titleText: title,\n id: ((_$element$parentEleme = $element.parentElement) === null || _$element$parentEleme === void 0 ? void 0 : _$element$parentEleme.getAttribute('data-mce-p-data-media-id')) || $element.getAttribute('data-mce-p-data-media-id')\n };\n\n if ($audioIframe.tagName === 'IFRAME') {\n const audioDoc = $audioIframe.contentDocument;\n\n try {\n var _audioDoc$querySelect;\n\n const trackSJson = (_audioDoc$querySelect = audioDoc.querySelector('[data-tracks]')) === null || _audioDoc$querySelect === void 0 ? void 0 : _audioDoc$querySelect.getAttribute('data-tracks');\n\n if (trackSJson) {\n audioOptions.tracks = JSON.parse(trackSJson);\n } // eslint-disable-next-line no-empty\n\n } catch (e) {}\n }\n\n return audioOptions;\n}\n\nfunction asText($element, editor) {\n const text = editor && editor.selection.getContent({\n format: 'text'\n });\n\n if (!text) {\n return null;\n }\n\n return {\n $element,\n text,\n type: TEXT_TYPE\n };\n}\n\nfunction asNone($element) {\n return {\n $element: $element || null,\n type: NONE_TYPE\n };\n}\n\nfunction getContentFromElement($element, editor) {\n if (!($element && $element.nodeName)) {\n return asNone();\n }\n\n const content = asLink($element, editor) || asImageEmbed($element) || asVideoElement($element) || asText($element, editor) || asNone($element);\n return content;\n}\nfunction getContentFromEditor(editor) {\n let expandSelection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let $element;\n\n if (editor && editor.selection) {\n // tinymce selects the element around the cursor, whether it's\n // content is selected in the copy/paste sense or not.\n // We want to include this content if it's _really_ selected,\n // or if editing the surrounding link, but not if creating a new link\n if (expandSelection || !editor.selection.isCollapsed()) {\n $element = editor.selection.getNode();\n }\n }\n\n if ($element == null) {\n return asNone();\n }\n\n return getContentFromElement($element, editor);\n} // if the selection is somewhere w/in a <a>,\n// find the <a> and return it's info\n\nfunction getLinkContentFromEditor(editor) {\n const $element = editor.selection.getNode();\n return $element ? asLink($element, editor) : null;\n}\nfunction isFileLink($element, editor) {\n return !!asLink($element, editor);\n}\nfunction isImageEmbed($element) {\n return !!asImageEmbed($element) && !$element.getAttribute('data-placeholder-for');\n}\n\nfunction isMediaElement($element, mediaType) {\n var _tinymceIframeShim$fi;\n\n // the video is hosted in an iframe, but tinymce\n // wraps it in a span with swizzled attribute names\n if (!($element !== null && $element !== void 0 && $element.getAttribute)) {\n return false;\n }\n\n const tinymceIframeShim = $element.tagName === 'IFRAME' ? $element.parentElement : $element;\n\n if (((_tinymceIframeShim$fi = tinymceIframeShim.firstElementChild) === null || _tinymceIframeShim$fi === void 0 ? void 0 : _tinymceIframeShim$fi.tagName) !== 'IFRAME') {\n return false;\n }\n\n const media_obj_id = tinymceIframeShim.getAttribute('data-mce-p-data-media-id');\n\n if (!media_obj_id) {\n return false;\n }\n\n const media_type = tinymceIframeShim.getAttribute('data-mce-p-data-media-type');\n return media_type === mediaType;\n}\n\nfunction isVideoElement($element) {\n return isMediaElement($element, 'video');\n}\nfunction isAudioElement($element) {\n return isMediaElement($element, 'audio');\n}\nfunction findMediaPlayerIframe(elem) {\n var _elem$firstElementChi;\n\n if (elem.tagName === 'IFRAME') {\n // we have the iframe\n return elem;\n }\n\n if (((_elem$firstElementChi = elem.firstElementChild) === null || _elem$firstElementChi === void 0 ? void 0 : _elem$firstElementChi.tagName) === 'IFRAME') {\n // we have the shim tinymce puts around the iframe\n return elem.firstElementChild;\n }\n\n if (elem.classList.contains('mce-shim')) {\n var _elem$previousSibling;\n\n // tinymce puts a <span class='mce-shin'> after the iframe (since v5, I think)\n if (((_elem$previousSibling = elem.previousSibling) === null || _elem$previousSibling === void 0 ? void 0 : _elem$previousSibling.tagName) === 'IFRAME') {\n return elem.previousSibling;\n }\n }\n\n return null;\n}\n\n//# sourceURL=webpack:///./src/rce/plugins/shared/ContentSelection.js?");
|
|
17630
17642
|
|
|
17631
17643
|
/***/ }),
|
|
17632
17644
|
|
|
@@ -17662,7 +17674,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17662
17674
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17663
17675
|
|
|
17664
17676
|
"use strict";
|
|
17665
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DimensionsInput; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/ui-a11y-content */ \"../../node_modules/@instructure/ui-a11y-content/es/index.js\");\n/* harmony import */ var _instructure_ui_form_field__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-form-field */ \"../../node_modules/@instructure/ui-form-field/es/index.js\");\n/* harmony import */ var _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-icons */ \"../../node_modules/@instructure/ui-icons/es/index.js\");\n/* harmony import */ var _instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-flex */ \"../../node_modules/@instructure/ui-flex/es/index.js\");\n/* harmony import */ var _instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-radio-input */ \"../../node_modules/@instructure/ui-radio-input/es/index.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _DimensionInput__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./DimensionInput */ \"./src/rce/plugins/shared/DimensionsInput/DimensionInput.js\");\n/* harmony import */ var _useDimensionsState__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./useDimensionsState */ \"./src/rce/plugins/shared/DimensionsInput/useDimensionsState.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useDimensionsState\", function() { return _useDimensionsState__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\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\nconst getMessage = (dimensionsState, minWidth, minHeight, minPercentage) => {\n let result = {\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Aspect ratio will be preserved'),\n type: 'hint'\n };\n\n if (dimensionsState.usePercentageUnits) {\n if (!dimensionsState.isNumeric) {\n result = {\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Percentage must be a number'),\n type: 'error'\n };\n } else if (!dimensionsState.isAtLeastMinimums) {\n result = {\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Must be at least {percentage}%', {\n percentage: minPercentage\n }),\n type: 'error'\n };\n }\n } else if (!dimensionsState.isNumeric) {\n result = {\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Width and height must be numbers'),\n type: 'error'\n };\n } else if (!dimensionsState.isAtLeastMinimums) {\n result = {\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Must be at least {width} x {height}px', {\n width: minWidth,\n height: minHeight\n }),\n type: 'error'\n };\n }\n\n return result;\n};\n\nfunction DimensionsInput(props) {\n const {\n dimensionsState,\n minHeight,\n minWidth,\n minPercentage\n } = props;\n\n const handleDimensionTypeChange = e => {\n dimensionsState.setUsePercentageUnits(e.target.value === 'percentage');\n };\n\n const message = getMessage(dimensionsState, minWidth, minHeight, minPercentage);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"], {\n direction: \"column\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n padding: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_6__[\"RadioInputGroup\"], {\n \"data-testid\": \"dimension-type\",\n name: \"dimension-type\",\n description: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Dimension Type'),\n onChange: handleDimensionTypeChange,\n value: dimensionsState.usePercentageUnits ? 'percentage' : 'pixels'\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_6__[\"RadioInput\"], {\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Pixels'),\n value: \"pixels\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_6__[\"RadioInput\"], {\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Percentage'),\n value: \"percentage\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n padding: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_form_field__WEBPACK_IMPORTED_MODULE_3__[\"FormFieldGroup\"], {\n description: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_2__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Dimensions')),\n messages: [message]\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"], {\n alignItems: \"start\",\n direction: \"row\",\n \"data-testid\": \"input-number-container\"\n }, dimensionsState.usePercentageUnits ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n shouldShrink: true,\n shouldGrow: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_DimensionInput__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n dimensionState: dimensionsState.percentageState,\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Percentage')\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n padding: \"x-small small\"\n }, \"%\")) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n shrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_DimensionInput__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n dimensionState: dimensionsState.widthState,\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Width'),\n minValue: minWidth\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n padding: \"x-small small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_icons__WEBPACK_IMPORTED_MODULE_4__[\"IconLockLine\"], null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n shrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_DimensionInput__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n dimensionState: dimensionsState.heightState,\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Height'),\n minValue: minHeight\n })))))));\n}\nDimensionsInput.propTypes = {\n dimensionsState: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n heightState: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n addOffset: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n inputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n setInputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired\n }).isRequired,\n isNumeric: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"].isRequired,\n usePercentageUnits: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"].isRequired,\n setUsePercentageUnits: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n widthState: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n addOffset: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n inputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n setInputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired\n }).isRequired,\n percentageState: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n addOffset: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n inputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n setInputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired\n }).isRequired\n }),\n minHeight: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"].isRequired,\n minWidth: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"].isRequired,\n minPercentage: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"].isRequired\n};\n\n//# sourceURL=webpack:///./src/rce/plugins/shared/DimensionsInput/index.js?");
|
|
17677
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DimensionsInput; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/ui-a11y-content */ \"../../node_modules/@instructure/ui-a11y-content/es/index.js\");\n/* harmony import */ var _instructure_ui_form_field__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-form-field */ \"../../node_modules/@instructure/ui-form-field/es/index.js\");\n/* harmony import */ var _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-icons */ \"../../node_modules/@instructure/ui-icons/es/index.js\");\n/* harmony import */ var _instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-flex */ \"../../node_modules/@instructure/ui-flex/es/index.js\");\n/* harmony import */ var _instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-radio-input */ \"../../node_modules/@instructure/ui-radio-input/es/index.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _DimensionInput__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./DimensionInput */ \"./src/rce/plugins/shared/DimensionsInput/DimensionInput.js\");\n/* harmony import */ var _useDimensionsState__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./useDimensionsState */ \"./src/rce/plugins/shared/DimensionsInput/useDimensionsState.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"useDimensionsState\", function() { return _useDimensionsState__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\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\nconst getMessage = (dimensionsState, minWidth, minHeight, minPercentage) => {\n let result = {\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Aspect ratio will be preserved'),\n type: 'hint'\n };\n\n if (dimensionsState.usePercentageUnits) {\n if (!dimensionsState.isNumeric) {\n result = {\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Percentage must be a number'),\n type: 'error'\n };\n } else if (!dimensionsState.isAtLeastMinimums) {\n result = {\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Must be at least {percentage}%', {\n percentage: minPercentage\n }),\n type: 'error'\n };\n }\n } else if (!dimensionsState.isNumeric) {\n result = {\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Width and height must be numbers'),\n type: 'error'\n };\n } else if (!dimensionsState.isAtLeastMinimums) {\n result = {\n text: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Must be at least {width} x {height}px', {\n width: minWidth,\n height: minHeight\n }),\n type: 'error'\n };\n }\n\n return result;\n};\n\nfunction DimensionsInput(props) {\n const {\n dimensionsState,\n minHeight,\n minWidth,\n minPercentage\n } = props;\n\n const handleDimensionTypeChange = e => {\n dimensionsState.setUsePercentageUnits(e.target.value === 'percentage');\n };\n\n const message = getMessage(dimensionsState, minWidth, minHeight, minPercentage);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"], {\n direction: \"column\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n padding: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_6__[\"RadioInputGroup\"], {\n \"data-testid\": \"dimension-type\",\n name: \"dimension-type\",\n description: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Dimension Type'),\n onChange: handleDimensionTypeChange,\n value: dimensionsState.usePercentageUnits ? 'percentage' : 'pixels'\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_6__[\"RadioInput\"], {\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Pixels'),\n value: \"pixels\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_radio_input__WEBPACK_IMPORTED_MODULE_6__[\"RadioInput\"], {\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Percentage'),\n value: \"percentage\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n padding: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_form_field__WEBPACK_IMPORTED_MODULE_3__[\"FormFieldGroup\"], {\n description: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_2__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Dimensions')),\n messages: [message]\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"], {\n alignItems: \"start\",\n direction: \"row\",\n \"data-testid\": \"input-number-container\"\n }, dimensionsState.usePercentageUnits ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n shouldShrink: true,\n shouldGrow: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_DimensionInput__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n dimensionState: dimensionsState.percentageState,\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Percentage')\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n padding: \"x-small small\"\n }, \"%\")) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n shouldShrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_DimensionInput__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n dimensionState: dimensionsState.widthState,\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Width'),\n minValue: minWidth\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n padding: \"x-small small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_icons__WEBPACK_IMPORTED_MODULE_4__[\"IconLockLine\"], null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_5__[\"Flex\"].Item, {\n shouldShrink: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_DimensionInput__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n dimensionState: dimensionsState.heightState,\n label: Object(_format_message__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('Height'),\n minValue: minHeight\n })))))));\n}\nDimensionsInput.propTypes = {\n dimensionsState: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n heightState: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n addOffset: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n inputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n setInputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired\n }).isRequired,\n isNumeric: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"].isRequired,\n usePercentageUnits: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"].isRequired,\n setUsePercentageUnits: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n widthState: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n addOffset: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n inputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n setInputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired\n }).isRequired,\n percentageState: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"shape\"])({\n addOffset: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n inputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n setInputValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired\n }).isRequired\n }),\n minHeight: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"].isRequired,\n minWidth: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"].isRequired,\n minPercentage: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"number\"].isRequired\n};\n\n//# sourceURL=webpack:///./src/rce/plugins/shared/DimensionsInput/index.js?");
|
|
17666
17678
|
|
|
17667
17679
|
/***/ }),
|
|
17668
17680
|
|
|
@@ -17698,7 +17710,19 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17698
17710
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17699
17711
|
|
|
17700
17712
|
"use strict";
|
|
17701
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useFilterSettings\", function() { return useFilterSettings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Filter; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-flex */ \"../../node_modules/@instructure/ui-flex/es/index.js\");\n/* harmony import */ var _instructure_ui_view__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-view */ \"../../node_modules/@instructure/ui-view/es/index.js\");\n/* harmony import */ var _instructure_ui_text_input__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-text-input */ \"../../node_modules/@instructure/ui-text-input/es/index.js\");\n/* harmony import */ var _instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-simple-select */ \"../../node_modules/@instructure/ui-simple-select/es/index.js\");\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @instructure/ui-a11y-content */ \"../../node_modules/@instructure/ui-a11y-content/es/index.js\");\n/* harmony import */ var _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../instructure_icon_maker/svg/constants */ \"./src/rce/plugins/instructure_icon_maker/svg/constants.js\");\n/* harmony import */ var _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @instructure/ui-icons */ \"../../node_modules/@instructure/ui-icons/es/index.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\nconst DEFAULT_FILTER_SETTINGS = {\n contentSubtype: 'all',\n contentType: 'links',\n sortValue: 'date_added',\n searchString: ''\n};\nfunction useFilterSettings(default_settings) {\n const [filterSettings, setFilterSettings] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(default_settings || DEFAULT_FILTER_SETTINGS);\n\n function updateFilterSettings(nextSettings) {\n setFilterSettings({ ...filterSettings,\n ...nextSettings\n });\n }\n\n return [filterSettings, updateFilterSettings];\n}\n\nfunction fileLabelFromContext(contextType) {\n switch (contextType) {\n case 'user':\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('User Files');\n\n case 'course':\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Course Files');\n\n case 'group':\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Group Files');\n\n case 'files':\n default:\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Files');\n }\n}\n\nfunction renderTypeOptions(contentType, contentSubtype, userContextType) {\n const options = [/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n key: \"links\",\n id: \"links\",\n value: \"links\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconLinkLine\"]\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Links'))];\n\n if (userContextType === 'course' && contentType !== 'links' && contentSubtype !== 'all') {\n options.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n key: \"course_files\",\n id: \"course_files\",\n value: \"course_files\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconFolderLine\"]\n }, fileLabelFromContext('course')));\n }\n\n if (userContextType === 'group' && contentType !== 'links' && contentSubtype !== 'all') {\n options.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n key: \"group_files\",\n id: \"group_files\",\n value: \"group_files\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconFolderLine\"]\n }, fileLabelFromContext('group')));\n } // Icon Maker icons are only stored in course folders.\n\n\n if (contentSubtype !== _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_9__[\"ICON_MAKER_ICONS\"]) {\n options.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n key: \"user_files\",\n id: \"user_files\",\n value: \"user_files\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconFolderLine\"]\n }, fileLabelFromContext(contentType === 'links' || contentSubtype === 'all' ? 'files' : 'user')));\n }\n\n return options;\n}\n\nfunction renderType(contentType, contentSubtype, onChange, userContextType, containingContextType) {\n // Check containingContextType so that we always show context links\n if (containingContextType === 'course' || containingContextType === 'group') {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"], {\n renderLabel: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Content Type')),\n assistiveText: Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Use arrow keys to navigate options.'),\n onChange: (e, selection) => {\n const changed = {\n contentType: selection.value\n };\n\n if (contentType === 'links') {\n // when changing away from links, go to all user files\n changed.contentSubtype = 'all';\n }\n\n onChange(changed);\n },\n value: contentType\n }, renderTypeOptions(contentType, contentSubtype, userContextType));\n } else {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_4__[\"View\"], {\n as: \"div\",\n borderWidth: \"small\",\n padding: \"x-small small\",\n borderRadius: \"medium\",\n width: \"100%\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Content Type')), fileLabelFromContext('user', contentSubtype));\n }\n}\n\nfunction shouldSearch(searchString) {\n return searchString.length === 0 || searchString.length >= 3;\n}\n\nfunction Filter(props) {\n const {\n contentType,\n contentSubtype,\n onChange,\n sortValue,\n searchString,\n userContextType,\n isContentLoading,\n containingContextType\n } = props;\n const [pendingSearchString, setPendingSearchString] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(searchString);\n const [searchInputTimer, setSearchInputTimer] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(0); // only run on mounting to trigger change to correct contextType\n\n Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(() => {\n onChange({\n contentType\n });\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n function doSearch(value) {\n if (shouldSearch(value)) {\n if (searchInputTimer) {\n window.clearTimeout(searchInputTimer);\n setSearchInputTimer(0);\n }\n\n onChange({\n searchString: value\n });\n }\n }\n\n function handleChangeSearch(value) {\n setPendingSearchString(value);\n\n if (searchInputTimer) {\n window.clearTimeout(searchInputTimer);\n }\n\n const tid = window.setTimeout(() => doSearch(value), 250);\n setSearchInputTimer(tid);\n }\n\n function handleClear() {\n handleChangeSearch('');\n }\n\n function renderClearButton() {\n if (pendingSearchString) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_7__[\"IconButton\"], {\n screenReaderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Clear'),\n onClick: handleClear,\n withBorder: false,\n withBackground: false,\n size: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconXLine\"], null));\n }\n\n return undefined;\n }\n\n const searchMessage = Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Enter at least 3 characters to search');\n const loadingMessage = Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Loading, please wait');\n const msg = isContentLoading ? loadingMessage : searchMessage;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_4__[\"View\"], {\n display: \"block\",\n direction: \"column\"\n }, renderType(contentType, contentSubtype, onChange, userContextType, containingContextType), contentType !== 'links' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"], {\n margin: \"small none none none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"].Item, {\n grow: true,\n shrink: true,\n margin: \"none xx-small none none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"], {\n renderLabel: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Content Subtype')),\n assistiveText: Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Use arrow keys to navigate options.'),\n onChange: (e, selection) => {\n const changed = {\n contentSubtype: selection.value\n };\n\n if (changed.contentSubtype === 'all') {\n // when flipped to All, the context needs to be user\n // so we can get media_objects, which are all returned in the user context\n changed.contentType = 'user_files';\n } else if (changed.contentSubtype === _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_9__[\"ICON_MAKER_ICONS\"]) {\n // Icon Maker icons only belong to Courses.\n changed.contentType = 'course_files';\n }\n\n onChange(changed);\n },\n value: contentSubtype\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"images\",\n value: \"images\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconImageLine\"]\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Images')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"documents\",\n value: \"documents\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconDocumentLine\"]\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Documents')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"media\",\n value: \"media\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconAttachMediaLine\"]\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Media')), props.use_rce_icon_maker && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_9__[\"ICON_MAKER_ICONS\"],\n value: _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_9__[\"ICON_MAKER_ICONS\"],\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconImageLine\"]\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Icon Maker Icons')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"all\",\n value: \"all\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('All')))), contentSubtype !== 'all' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"].Item, {\n grow: true,\n shrink: true,\n margin: \"none none none xx-small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"], {\n renderLabel: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Sort By')),\n assistiveText: Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Use arrow keys to navigate options.'),\n onChange: (e, selection) => {\n onChange({\n sortValue: selection.value\n });\n },\n value: sortValue\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"date_added\",\n value: \"date_added\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Date Added')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"alphabetical\",\n value: \"alphabetical\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Alphabetical'))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_4__[\"View\"], {\n as: \"div\",\n margin: \"small none none none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text_input__WEBPACK_IMPORTED_MODULE_5__[\"TextInput\"], {\n renderLabel: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Search')),\n renderBeforeInput: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconSearchLine\"], {\n inline: false\n }),\n renderAfterInput: renderClearButton(),\n messages: [{\n type: 'hint',\n text: msg\n }],\n placeholder: Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Search'),\n value: pendingSearchString,\n onChange: (e, value) => handleChangeSearch(value),\n onKeyDown: e => {\n if (e.key === 'Enter') {\n doSearch(pendingSearchString);\n }\n }\n })));\n}\nFilter.propTypes = {\n /**\n * `contentSubtype` is the secondary filter setting, currently only used when\n * `contentType` is set to \"files\"\n */\n contentSubtype: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n\n /**\n * `contentType` is the primary filter setting (e.g. links, files)\n */\n contentType: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"oneOf\"])(['links', 'user_files', 'course_files', 'group_files']).isRequired,\n\n /**\n * `onChange` is called when any of the Filter settings are changed\n */\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n\n /**\n * `sortValue` defines how items in the CanvasContentTray are sorted\n */\n sortValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n\n /**\n * `searchString` is used to search for matching file names. Must be >3 chars long\n */\n searchString: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n\n /**\n * The user's context\n */\n userContextType: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"oneOf\"])(['user', 'course', 'group']),\n\n /**\n * Is my content currently loading?\n */\n isContentLoading: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"],\n\n /**\n * The page context\n */\n containingContextType: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"oneOf\"])(['user', 'course', 'group']),\n\n /**\n * Should include Icon Maker?\n */\n use_rce_icon_maker: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"]\n};\n\n//# sourceURL=webpack:///./src/rce/plugins/shared/Filter.js?");
|
|
17713
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useFilterSettings\", function() { return useFilterSettings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Filter; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-flex */ \"../../node_modules/@instructure/ui-flex/es/index.js\");\n/* harmony import */ var _instructure_ui_view__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-view */ \"../../node_modules/@instructure/ui-view/es/index.js\");\n/* harmony import */ var _instructure_ui_text_input__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @instructure/ui-text-input */ \"../../node_modules/@instructure/ui-text-input/es/index.js\");\n/* harmony import */ var _instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @instructure/ui-simple-select */ \"../../node_modules/@instructure/ui-simple-select/es/index.js\");\n/* harmony import */ var _instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @instructure/ui-buttons */ \"../../node_modules/@instructure/ui-buttons/es/index.js\");\n/* harmony import */ var _instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @instructure/ui-a11y-content */ \"../../node_modules/@instructure/ui-a11y-content/es/index.js\");\n/* harmony import */ var _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../instructure_icon_maker/svg/constants */ \"./src/rce/plugins/instructure_icon_maker/svg/constants.js\");\n/* harmony import */ var _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @instructure/ui-icons */ \"../../node_modules/@instructure/ui-icons/es/index.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\nconst DEFAULT_FILTER_SETTINGS = {\n contentSubtype: 'all',\n contentType: 'links',\n sortValue: 'date_added',\n searchString: ''\n};\nfunction useFilterSettings(default_settings) {\n const [filterSettings, setFilterSettings] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(default_settings || DEFAULT_FILTER_SETTINGS);\n\n function updateFilterSettings(nextSettings) {\n setFilterSettings({ ...filterSettings,\n ...nextSettings\n });\n }\n\n return [filterSettings, updateFilterSettings];\n}\n\nfunction fileLabelFromContext(contextType) {\n switch (contextType) {\n case 'user':\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('User Files');\n\n case 'course':\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Course Files');\n\n case 'group':\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Group Files');\n\n case 'files':\n default:\n return Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Files');\n }\n}\n\nfunction renderTypeOptions(contentType, contentSubtype, userContextType) {\n const options = [/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n key: \"links\",\n id: \"links\",\n value: \"links\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconLinkLine\"]\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Links'))];\n\n if (userContextType === 'course' && contentType !== 'links' && contentSubtype !== 'all') {\n options.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n key: \"course_files\",\n id: \"course_files\",\n value: \"course_files\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconFolderLine\"]\n }, fileLabelFromContext('course')));\n }\n\n if (userContextType === 'group' && contentType !== 'links' && contentSubtype !== 'all') {\n options.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n key: \"group_files\",\n id: \"group_files\",\n value: \"group_files\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconFolderLine\"]\n }, fileLabelFromContext('group')));\n } // Icon Maker icons are only stored in course folders.\n\n\n if (contentSubtype !== _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_9__[\"ICON_MAKER_ICONS\"]) {\n options.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n key: \"user_files\",\n id: \"user_files\",\n value: \"user_files\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconFolderLine\"]\n }, fileLabelFromContext(contentType === 'links' || contentSubtype === 'all' ? 'files' : 'user')));\n }\n\n return options;\n}\n\nfunction renderType(contentType, contentSubtype, onChange, userContextType, containingContextType) {\n // Check containingContextType so that we always show context links\n if (containingContextType === 'course' || containingContextType === 'group') {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"], {\n renderLabel: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Content Type')),\n assistiveText: Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Use arrow keys to navigate options.'),\n onChange: (e, selection) => {\n const changed = {\n contentType: selection.value\n };\n\n if (contentType === 'links') {\n // when changing away from links, go to all user files\n changed.contentSubtype = 'all';\n }\n\n onChange(changed);\n },\n value: contentType\n }, renderTypeOptions(contentType, contentSubtype, userContextType));\n } else {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_4__[\"View\"], {\n as: \"div\",\n borderWidth: \"small\",\n padding: \"x-small small\",\n borderRadius: \"medium\",\n width: \"100%\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Content Type')), fileLabelFromContext('user', contentSubtype));\n }\n}\n\nfunction shouldSearch(searchString) {\n return searchString.length === 0 || searchString.length >= 3;\n}\n\nfunction Filter(props) {\n const {\n contentType,\n contentSubtype,\n onChange,\n sortValue,\n searchString,\n userContextType,\n isContentLoading,\n containingContextType\n } = props;\n const [pendingSearchString, setPendingSearchString] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(searchString);\n const [searchInputTimer, setSearchInputTimer] = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(0); // only run on mounting to trigger change to correct contextType\n\n Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(() => {\n onChange({\n contentType\n });\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n function doSearch(value) {\n if (shouldSearch(value)) {\n if (searchInputTimer) {\n window.clearTimeout(searchInputTimer);\n setSearchInputTimer(0);\n }\n\n onChange({\n searchString: value\n });\n }\n }\n\n function handleChangeSearch(value) {\n setPendingSearchString(value);\n\n if (searchInputTimer) {\n window.clearTimeout(searchInputTimer);\n }\n\n const tid = window.setTimeout(() => doSearch(value), 250);\n setSearchInputTimer(tid);\n }\n\n function handleClear() {\n handleChangeSearch('');\n }\n\n function renderClearButton() {\n if (pendingSearchString) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_buttons__WEBPACK_IMPORTED_MODULE_7__[\"IconButton\"], {\n screenReaderLabel: Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Clear'),\n onClick: handleClear,\n withBorder: false,\n withBackground: false,\n size: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconXLine\"], null));\n }\n\n return undefined;\n }\n\n const searchMessage = Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Enter at least 3 characters to search');\n const loadingMessage = Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Loading, please wait');\n const msg = isContentLoading ? loadingMessage : searchMessage;\n const isEdit = contentSubtype === 'edit';\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_4__[\"View\"], {\n display: \"block\",\n direction: \"column\"\n }, !isEdit && renderType(contentType, contentSubtype, onChange, userContextType, containingContextType), contentType !== 'links' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"], {\n margin: \"small none none none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"].Item, {\n shouldGrow: true,\n shouldShrink: true,\n margin: \"none xx-small none none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"], {\n renderLabel: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Content Subtype')),\n assistiveText: Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Use arrow keys to navigate options.'),\n onChange: (e, selection) => {\n const changed = {\n contentSubtype: selection.value\n };\n\n if (changed.contentSubtype === 'all') {\n // when flipped to All, the context needs to be user\n // so we can get media_objects, which are all returned in the user context\n changed.contentType = 'user_files';\n } else if (changed.contentSubtype === _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_9__[\"ICON_MAKER_ICONS\"]) {\n // Icon Maker icons only belong to Courses.\n changed.contentType = 'course_files';\n }\n\n onChange(changed);\n },\n value: contentSubtype\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"images\",\n value: \"images\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconImageLine\"]\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Images')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"documents\",\n value: \"documents\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconDocumentLine\"]\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Documents')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"media\",\n value: \"media\",\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconAttachMediaLine\"]\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Media')), props.use_rce_icon_maker && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_9__[\"ICON_MAKER_ICONS\"],\n value: _instructure_icon_maker_svg_constants__WEBPACK_IMPORTED_MODULE_9__[\"ICON_MAKER_ICONS\"],\n renderBeforeLabel: _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconImageLine\"]\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Icon Maker Icons')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"all\",\n value: \"all\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('All')))), contentSubtype !== 'all' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"].Item, {\n shouldGrow: true,\n shouldShrink: true,\n margin: \"none none none xx-small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"], {\n renderLabel: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Sort By')),\n assistiveText: Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Use arrow keys to navigate options.'),\n onChange: (e, selection) => {\n onChange({\n sortValue: selection.value\n });\n },\n value: sortValue\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"date_added\",\n value: \"date_added\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Date Added')), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_simple_select__WEBPACK_IMPORTED_MODULE_6__[\"SimpleSelect\"].Option, {\n id: \"alphabetical\",\n value: \"alphabetical\"\n }, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Alphabetical'))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_4__[\"View\"], {\n as: \"div\",\n margin: \"small none none none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text_input__WEBPACK_IMPORTED_MODULE_5__[\"TextInput\"], {\n renderLabel: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_a11y_content__WEBPACK_IMPORTED_MODULE_8__[\"ScreenReaderContent\"], null, Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Search')),\n renderBeforeInput: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_icons__WEBPACK_IMPORTED_MODULE_10__[\"IconSearchLine\"], {\n inline: false\n }),\n renderAfterInput: renderClearButton(),\n messages: [{\n type: 'hint',\n text: msg\n }],\n placeholder: Object(_format_message__WEBPACK_IMPORTED_MODULE_2__[\"default\"])('Search'),\n value: pendingSearchString,\n onChange: (e, value) => handleChangeSearch(value),\n onKeyDown: e => {\n if (e.key === 'Enter') {\n doSearch(pendingSearchString);\n }\n }\n })));\n}\nFilter.propTypes = {\n /**\n * `contentSubtype` is the secondary filter setting, currently only used when\n * `contentType` is set to \"files\"\n */\n contentSubtype: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n\n /**\n * `contentType` is the primary filter setting (e.g. links, files)\n */\n contentType: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"oneOf\"])(['links', 'user_files', 'course_files', 'group_files']).isRequired,\n\n /**\n * `onChange` is called when any of the Filter settings are changed\n */\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"func\"].isRequired,\n\n /**\n * `sortValue` defines how items in the CanvasContentTray are sorted\n */\n sortValue: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n\n /**\n * `searchString` is used to search for matching file names. Must be >3 chars long\n */\n searchString: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"string\"].isRequired,\n\n /**\n * The user's context\n */\n userContextType: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"oneOf\"])(['user', 'course', 'group']),\n\n /**\n * Is my content currently loading?\n */\n isContentLoading: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"],\n\n /**\n * The page context\n */\n containingContextType: Object(prop_types__WEBPACK_IMPORTED_MODULE_1__[\"oneOf\"])(['user', 'course', 'group']),\n\n /**\n * Should include Icon Maker?\n */\n use_rce_icon_maker: prop_types__WEBPACK_IMPORTED_MODULE_1__[\"bool\"]\n};\n\n//# sourceURL=webpack:///./src/rce/plugins/shared/Filter.js?");
|
|
17714
|
+
|
|
17715
|
+
/***/ }),
|
|
17716
|
+
|
|
17717
|
+
/***/ "./src/rce/plugins/shared/LinkDisplay.js":
|
|
17718
|
+
/*!***********************************************!*\
|
|
17719
|
+
!*** ./src/rce/plugins/shared/LinkDisplay.js ***!
|
|
17720
|
+
\***********************************************/
|
|
17721
|
+
/*! exports provided: LinkDisplay */
|
|
17722
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17723
|
+
|
|
17724
|
+
"use strict";
|
|
17725
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkDisplay\", function() { return LinkDisplay; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _instructure_ui_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @instructure/ui-view */ \"../../node_modules/@instructure/ui-view/es/index.js\");\n/* harmony import */ var _instructure_ui_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/ui-text */ \"../../node_modules/@instructure/ui-text/es/index.js\");\n/* harmony import */ var _instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/ui-flex */ \"../../node_modules/@instructure/ui-flex/es/index.js\");\n/* harmony import */ var _instructure_ui_text_input__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @instructure/ui-text-input */ \"../../node_modules/@instructure/ui-text-input/es/index.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _canvasFileBrowser_FlashAlert__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../canvasFileBrowser/FlashAlert */ \"./src/canvasFileBrowser/FlashAlert.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\n\n\nconst EDIT_MESSAGE = Object(_format_message__WEBPACK_IMPORTED_MODULE_5__[\"default\"])('If left empty link, text will display as course link name');\nconst LinkDisplay = _ref => {\n let {\n linkText,\n Icon,\n placeholderText,\n linkFileName,\n published,\n handleTextChange\n } = _ref;\n Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(() => {\n Object(_canvasFileBrowser_FlashAlert__WEBPACK_IMPORTED_MODULE_6__[\"showFlashAlert\"])({\n message: Object(_format_message__WEBPACK_IMPORTED_MODULE_5__[\"default\"])('Selected {linkFileName}', {\n linkFileName\n }),\n type: 'info',\n srOnly: true\n });\n }, [linkFileName]);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_1__[\"View\"], {\n as: \"div\",\n \"data-testid\": \"LinkDisplay\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_1__[\"View\"], {\n as: \"div\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"].Item, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text_input__WEBPACK_IMPORTED_MODULE_4__[\"TextInput\"], {\n renderLabel: () => Object(_format_message__WEBPACK_IMPORTED_MODULE_5__[\"default\"])('Text (optional)'),\n onChange: (e, value) => handleTextChange(value),\n value: linkText,\n placeholder: placeholderText,\n messages: [{\n type: 'hint',\n text: EDIT_MESSAGE\n }]\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_1__[\"View\"], {\n as: \"div\",\n margin: \"medium none medium none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"], {\n margin: \"small none small none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_2__[\"Text\"], {\n weight: \"bold\"\n }, \"Current Link\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"], {\n margin: \"small none none none\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"].Item, {\n padding: \"0 x-small 0 small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_text__WEBPACK_IMPORTED_MODULE_2__[\"Text\"], {\n \"data-testid\": \"icon-wrapper\",\n color: published ? 'success' : 'primary'\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Icon, {\n size: \"x-small\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_flex__WEBPACK_IMPORTED_MODULE_3__[\"Flex\"].Item, {\n padding: \"0 x-small 0 0\",\n grow: true,\n shrink: true,\n textAlign: \"start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_view__WEBPACK_IMPORTED_MODULE_1__[\"View\"], {\n as: \"div\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n \"data-testid\": \"selected-link-name\"\n }, linkFileName))))));\n};\n\n//# sourceURL=webpack:///./src/rce/plugins/shared/LinkDisplay.js?");
|
|
17702
17726
|
|
|
17703
17727
|
/***/ }),
|
|
17704
17728
|
|
|
@@ -17750,18 +17774,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17750
17774
|
|
|
17751
17775
|
/***/ }),
|
|
17752
17776
|
|
|
17753
|
-
/***/ "./src/rce/plugins/shared/Upload/constants.js":
|
|
17754
|
-
/*!****************************************************!*\
|
|
17755
|
-
!*** ./src/rce/plugins/shared/Upload/constants.js ***!
|
|
17756
|
-
\****************************************************/
|
|
17757
|
-
/*! exports provided: RCS_MAX_BODY_SIZE, RCS_REQUEST_SIZE_BUFFER */
|
|
17758
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17759
|
-
|
|
17760
|
-
"use strict";
|
|
17761
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RCS_MAX_BODY_SIZE\", function() { return RCS_MAX_BODY_SIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RCS_REQUEST_SIZE_BUFFER\", function() { return RCS_REQUEST_SIZE_BUFFER; });\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 */\nconst RCS_MAX_BODY_SIZE = 300000;\nconst RCS_REQUEST_SIZE_BUFFER = 5000; // account for the non-file bytes\n\n//# sourceURL=webpack:///./src/rce/plugins/shared/Upload/constants.js?");
|
|
17762
|
-
|
|
17763
|
-
/***/ }),
|
|
17764
|
-
|
|
17765
17777
|
/***/ "./src/rce/plugins/shared/buildDownloadUrl.js":
|
|
17766
17778
|
/*!****************************************************!*\
|
|
17767
17779
|
!*** ./src/rce/plugins/shared/buildDownloadUrl.js ***!
|
|
@@ -17786,6 +17798,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17786
17798
|
|
|
17787
17799
|
/***/ }),
|
|
17788
17800
|
|
|
17801
|
+
/***/ "./src/rce/plugins/shared/linkUtils.js":
|
|
17802
|
+
/*!*********************************************!*\
|
|
17803
|
+
!*** ./src/rce/plugins/shared/linkUtils.js ***!
|
|
17804
|
+
\*********************************************/
|
|
17805
|
+
/*! exports provided: IconBlank, getIcon */
|
|
17806
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17807
|
+
|
|
17808
|
+
"use strict";
|
|
17809
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IconBlank\", function() { return IconBlank; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getIcon\", function() { return getIcon; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../../node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _instructure_ui_svg_images__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @instructure/ui-svg-images */ \"../../node_modules/@instructure/ui-svg-images/es/index.js\");\n/* harmony import */ var _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @instructure/ui-icons */ \"../../node_modules/@instructure/ui-icons/es/index.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\nconst IconBlank = props => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_instructure_ui_svg_images__WEBPACK_IMPORTED_MODULE_1__[\"SVGIcon\"], Object.assign({\n name: \"IconBlank\",\n viewBox: \"0 0 1920 1920\"\n }, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"g\", {\n role: \"presentation\"\n }));\n};\nconst getIcon = type => {\n switch (type) {\n case 'assignments':\n return _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_2__[\"IconAssignmentLine\"];\n\n case 'discussions':\n return _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_2__[\"IconDiscussionLine\"];\n\n case 'modules':\n return _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_2__[\"IconModuleLine\"];\n\n case 'quizzes':\n return _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_2__[\"IconQuizLine\"];\n\n case 'quizzes.next':\n return _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_2__[\"IconQuizSolid\"];\n\n case 'announcements':\n return _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_2__[\"IconAnnouncementLine\"];\n\n case 'wikiPages':\n return _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_2__[\"IconDocumentLine\"];\n\n case 'navigation':\n return IconBlank;\n\n default:\n return _instructure_ui_icons__WEBPACK_IMPORTED_MODULE_2__[\"IconDocumentLine\"];\n }\n};\n\n//# sourceURL=webpack:///./src/rce/plugins/shared/linkUtils.js?");
|
|
17810
|
+
|
|
17811
|
+
/***/ }),
|
|
17812
|
+
|
|
17789
17813
|
/***/ "./src/rce/plugins/shared/trayUtils.js":
|
|
17790
17814
|
/*!*********************************************!*\
|
|
17791
17815
|
!*** ./src/rce/plugins/shared/trayUtils.js ***!
|
|
@@ -17822,6 +17846,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17822
17846
|
|
|
17823
17847
|
/***/ }),
|
|
17824
17848
|
|
|
17849
|
+
/***/ "./src/rce/userOS.ts":
|
|
17850
|
+
/*!***************************!*\
|
|
17851
|
+
!*** ./src/rce/userOS.ts ***!
|
|
17852
|
+
\***************************/
|
|
17853
|
+
/*! exports provided: determineUserOS, determineOSDependentKey */
|
|
17854
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17855
|
+
|
|
17856
|
+
"use strict";
|
|
17857
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"determineUserOS\", function() { return determineUserOS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"determineOSDependentKey\", function() { return determineOSDependentKey; });\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 determineUserOS = () => {\n const rawOS = navigator.userAgent;\n if (rawOS.indexOf('Mac') !== -1) return 'Mac';else if (rawOS.indexOf('Win') !== -1) return 'Windows';else return 'Other';\n};\nconst determineOSDependentKey = () => {\n switch (determineUserOS()) {\n case 'Mac':\n return 'OPTION';\n\n case 'Windows':\n default:\n return 'ALT';\n }\n};\n\n//# sourceURL=webpack:///./src/rce/userOS.ts?");
|
|
17858
|
+
|
|
17859
|
+
/***/ }),
|
|
17860
|
+
|
|
17825
17861
|
/***/ "./src/rce/wrapInitCb.js":
|
|
17826
17862
|
/*!*******************************!*\
|
|
17827
17863
|
!*** ./src/rce/wrapInitCb.js ***!
|
|
@@ -17842,7 +17878,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
|
17842
17878
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
17843
17879
|
|
|
17844
17880
|
"use strict";
|
|
17845
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"headerFor\", function() { return headerFor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"originFromHost\", function() { return originFromHost; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSearchParam\", function() { return getSearchParam; });\n/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var isomorphic_fetch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! isomorphic-fetch */ \"../../node_modules/isomorphic-fetch/fetch-npm-browserify.js\");\n/* harmony import */ var isomorphic_fetch__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(isomorphic_fetch__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! url */ \"../../node_modules/url/url.js\");\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(url__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _instructure_canvas_media__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/canvas-media */ \"../canvas-media/es/index.js\");\n/* harmony import */ var _common_fileUrl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/fileUrl */ \"./src/common/fileUrl.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _rce_alertHandler__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../rce/alertHandler */ \"./src/rce/alertHandler.js\");\n/* harmony import */ var _rce_plugins_shared_Upload_constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../rce/plugins/shared/Upload/constants */ \"./src/rce/plugins/shared/Upload/constants.js\");\n/* harmony import */ var _sidebar_containers_sidebarHandlers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../sidebar/containers/sidebarHandlers */ \"./src/sidebar/containers/sidebarHandlers.js\");\n/* harmony import */ var _buildError__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./buildError */ \"./src/rcs/buildError.js\");\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\nfunction headerFor(jwt) {\n return {\n Authorization: 'Bearer ' + jwt\n };\n}\nfunction originFromHost(host, windowOverride) {\n let origin = host;\n\n if (typeof origin !== 'string') {\n origin = '';\n } else if (origin && origin.substr(0, 4) !== 'http') {\n var _windowHandle$locatio;\n\n origin = `//${origin}`;\n const windowHandle = windowOverride || (typeof window !== 'undefined' ? window : undefined);\n\n if (origin.length > 0 && windowHandle !== null && windowHandle !== void 0 && (_windowHandle$locatio = windowHandle.location) !== null && _windowHandle$locatio !== void 0 && _windowHandle$locatio.protocol) {\n origin = `${windowHandle.location.protocol}${origin}`;\n }\n }\n\n return origin;\n} // filter a response to raise an error on a 400+ status\n\nfunction checkStatus(response) {\n if (response.status < 400) {\n return response;\n } else {\n const error = new Error(response.statusText);\n error.response = response;\n throw error;\n }\n}\n\nfunction defaultRefreshTokenHandler() {\n throw new Error('Token expired, no refresh function provided');\n}\n\nfunction normalizeFileData(file) {\n return {\n // copy the name to the default display name if none provided\n display_name: file.name,\n ...file,\n // wrap the url\n href: Object(_common_fileUrl__WEBPACK_IMPORTED_MODULE_4__[\"downloadToWrap\"])(file.href || file.url)\n };\n}\n\nfunction throwConnectionError(error) {\n if (error.name === 'TypeError') {\n // eslint-disable-next-line no-console\n console.error(`Failed to fetch from the canvas-rce-api.\n Did you forget to start it or configure it?\n Details can be found at https://github.com/instructure/canvas-rce-api\n `);\n }\n\n throw error;\n}\n\nclass RceApiSource {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.jwt = options.jwt;\n this.host = options.host;\n this.refreshToken = options.refreshToken || defaultRefreshTokenHandler;\n this.hasSession = false;\n this.alertFunc = options.alertFunc || _rce_alertHandler__WEBPACK_IMPORTED_MODULE_6__[\"default\"].handleAlert;\n }\n\n getSession() {\n const headers = headerFor(this.jwt);\n const uri = this.baseUri('session');\n return this.apiReallyFetch(uri, headers).then(data => {\n this.hasSession = true;\n return data;\n }).catch(throwConnectionError);\n } // initial state of a collection is empty, not loading, with bookmark set to\n // uri for initial page fetch\n\n\n initializeCollection(endpoint, props) {\n return {\n links: [],\n bookmark: this.uriFor(endpoint, props),\n isLoading: false,\n hasMore: true,\n searchString: props.searchString\n };\n }\n\n initializeUpload() {\n return {\n uploading: false,\n folders: {},\n formExpanded: false\n };\n }\n\n initializeImages(props) {\n return this.initializeDocuments(props);\n }\n\n initializeDocuments(props) {\n return {\n [props.contextType]: {\n files: [],\n bookmark: null,\n isLoading: false,\n hasMore: true\n },\n searchString: ''\n };\n }\n\n initializeMedia(props) {\n return this.initializeDocuments(props);\n }\n\n initializeFlickr() {\n return {\n searchResults: [],\n searching: false,\n formExpanded: false\n };\n } // fetches the given URI and filters it to either an error or parsed response\n\n\n fetchPage(uri) {\n return this.apiFetch(uri, headerFor(this.jwt));\n }\n\n fetchBookmarkedData(fetchFunction, properties, onSuccess, onError, bookmark) {\n return fetchFunction(properties, bookmark).then(result => {\n onSuccess(result);\n\n if (result.bookmark) {\n this.fetchBookmarkedData(fetchFunction, properties, onSuccess, onError, result.bookmark);\n }\n }).catch(error => {\n onError(error);\n });\n }\n\n fetchDocs(props) {\n const documents = props.documents[props.contextType];\n const uri = documents.bookmark || this.uriFor('documents', props);\n return this.apiFetch(uri, headerFor(this.jwt)).then(_ref => {\n let {\n bookmark,\n files\n } = _ref;\n return {\n bookmark,\n files: files.map(f => Object(_common_fileUrl__WEBPACK_IMPORTED_MODULE_4__[\"fixupFileUrl\"])(props.contextType, props.contextId, f))\n };\n });\n }\n\n fetchMedia(props) {\n const media = props.media[props.contextType];\n const uri = media.bookmark || this.uriFor('media', props);\n return this.apiFetch(uri, headerFor(this.jwt));\n }\n\n fetchFiles(uri) {\n return this.fetchPage(uri).then(_ref2 => {\n let {\n bookmark,\n files\n } = _ref2;\n return {\n bookmark,\n files: files.map(normalizeFileData)\n };\n });\n }\n\n fetchLinks(key, props) {\n const {\n collections\n } = props;\n const bookmark = collections[key].bookmark || this.uriFor(key, props);\n return this.fetchPage(bookmark);\n }\n\n fetchRootFolder(props) {\n return this.fetchPage(this.uriFor('folders', props), this.jwt);\n }\n\n mediaServerSession() {\n return this.apiPost(this.baseUri('v1/services/kaltura_session'), headerFor(this.jwt), {});\n }\n\n uploadMediaToCanvas(mediaObject) {\n var _context;\n\n const body = {\n id: mediaObject.entryId,\n type: {\n 2: 'image',\n 5: 'audio'\n }[mediaObject.mediaType] || _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0___default()(_context = mediaObject.type).call(_context, 'audio') ? 'audio' : 'video',\n context_code: mediaObject.contextCode,\n title: mediaObject.title,\n user_entered_title: mediaObject.userTitle\n };\n return this.apiPost(this.baseUri('media_objects'), headerFor(this.jwt), body);\n }\n\n updateMediaObject(apiProps, _ref3) {\n let {\n media_object_id,\n title\n } = _ref3;\n const uri = `${this.baseUri('media_objects', apiProps.host)}/${media_object_id}?user_entered_title=${encodeURIComponent(title)}`;\n return this.apiPost(uri, headerFor(this.jwt), null, 'PUT');\n } // PUT to //RCS/api/media_objects/:mediaId/media_tracks [{locale, content}, ...]\n // receive back a 200 with the new subtitles, or a 4xx error\n\n\n updateClosedCaptions(apiProps, _ref4, maxBytes) {\n let {\n media_object_id,\n subtitles\n } = _ref4;\n return Object(_instructure_canvas_media__WEBPACK_IMPORTED_MODULE_3__[\"saveClosedCaptions\"])(media_object_id, subtitles, {\n origin: originFromHost(apiProps.host),\n headers: headerFor(apiProps.jwt)\n }, maxBytes || _rce_plugins_shared_Upload_constants__WEBPACK_IMPORTED_MODULE_7__[\"RCS_MAX_BODY_SIZE\"] - _rce_plugins_shared_Upload_constants__WEBPACK_IMPORTED_MODULE_7__[\"RCS_REQUEST_SIZE_BUFFER\"]).catch(e => {\n console.error('Failed saving CC', e);\n this.alertFunc(Object(_buildError__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({\n message: 'failed to save captions'\n }, e));\n });\n } // GET /media_objects/:mediaId/media_tracks\n // receive back the current list of media_tracks\n\n\n fetchClosedCaptions(_mediaId) {\n return Promise.resolve([{\n locale: 'af',\n content: '1\\r\\n00:00:00,000 --> 00:00:01,251\\r\\nThis is the content\\r\\n'\n }, {\n locale: 'es',\n content: '1\\r\\n00:00:00,000 --> 00:00:01,251\\r\\nThis is the content\\r\\n'\n }]);\n } // fetches folders for the given context to upload files to\n\n\n fetchFolders(props, bookmark) {\n const headers = headerFor(this.jwt);\n const uri = bookmark || this.uriFor('folders/all', props);\n return this.apiFetch(uri, headers);\n } // Fetches all files for a given folder\n\n\n fetchFilesForFolder(props, bookmark) {\n let uri;\n\n if (!bookmark) {\n const perPageQuery = props.perPage ? `per_page=${props.perPage}` : '';\n const categoryQuery = `category=${_sidebar_containers_sidebarHandlers__WEBPACK_IMPORTED_MODULE_8__[\"DEFAULT_FILE_CATEGORY\"]}`;\n uri = `${props.filesUrl}?${perPageQuery}&${categoryQuery}${getSearchParam(props.searchString)}`;\n\n if (props.sortBy) {\n uri += `${getSortParams(props.sortBy.sort, props.sortBy.order)}`;\n }\n }\n\n return this.fetchPage(uri || bookmark, this.jwt);\n }\n\n fetchSubFolders(props, bookmark) {\n const uri = bookmark || `${this.baseUri('folders', props.host)}/${props.folderId}`;\n return this.apiFetch(uri, headerFor(this.jwt));\n }\n\n fetchIconMakerFolder(_ref5) {\n let {\n contextId,\n contextType\n } = _ref5;\n const uri = this.uriFor('folders/icon_maker', {\n contextId,\n contextType,\n host: this.host,\n jwt: this.jwt\n });\n return this.fetchPage(uri);\n }\n\n fetchMediaFolder(props) {\n let uri;\n\n if (props.contextType === 'user') {\n uri = this.uriFor('folders', props);\n } else {\n uri = this.uriFor('folders/media', props);\n }\n\n return this.fetchPage(uri);\n }\n\n fetchMediaObjectIframe(mediaObjectId) {\n return this.fetchPage(this.uriFor(`media_objects_iframe/${mediaObjectId}`));\n }\n\n fetchImages(props) {\n const images = props.images[props.contextType];\n const uri = images.bookmark || this.uriFor('images', props);\n const headers = headerFor(this.jwt);\n return this.apiFetch(uri, headers).then(_ref6 => {\n let {\n bookmark,\n files\n } = _ref6;\n return {\n bookmark,\n files: files.map(f => Object(_common_fileUrl__WEBPACK_IMPORTED_MODULE_4__[\"fixupFileUrl\"])(props.contextType, props.contextId, f)),\n searchString: props.searchString\n };\n });\n }\n\n preflightUpload(fileProps, apiProps) {\n const headers = headerFor(this.jwt);\n const uri = this.baseUri('upload', apiProps.host);\n const body = {\n contextId: apiProps.contextId,\n contextType: apiProps.contextType,\n file: fileProps,\n no_redirect: true,\n onDuplicate: apiProps.onDuplicate,\n category: apiProps.category\n };\n return this.apiPost(uri, headers, body);\n }\n\n uploadFRD(fileDomObject, preflightProps) {\n var _context2;\n\n const data = new window.FormData();\n Object.keys(preflightProps.upload_params).forEach(uploadProp => {\n data.append(uploadProp, preflightProps.upload_params[uploadProp]);\n });\n data.append('file', fileDomObject);\n const fetchOptions = {\n method: 'POST',\n body: data\n };\n\n if (!preflightProps.upload_params['x-amz-signature'] && !_babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0___default()(_context2 = preflightProps.upload_url).call(_context2, 'files_api')) {\n // _not_ an S3 upload, include the credentials in the upload POST\n // local uploads can include crendentials for same-origin requests\n fetchOptions.credentials = 'include';\n }\n\n return fetch(preflightProps.upload_url, fetchOptions).then(checkStatus).then(res => res.json()).then(uploadResults => {\n return this.finalizeUpload(preflightProps, uploadResults);\n }).catch(e => {\n this.alertFunc(Object(_buildError__WEBPACK_IMPORTED_MODULE_9__[\"default\"])({}, e));\n });\n }\n\n finalizeUpload(preflightProps, uploadResults) {\n if (preflightProps.upload_params.success_url) {\n // s3 upload, follow-up at success_url to finalize. the success_url doesn't\n // require authentication\n return fetch(preflightProps.upload_params.success_url).then(checkStatus).then(res => res.json());\n } else if (uploadResults.location) {\n // inst-fs upload, follow-up by fetching file identified by location in\n // response. we can't just fetch the location as would be intended because\n // it requires Canvas authentication. we also don't have an RCE API\n // endpoint to forward it through.\n const {\n pathname\n } = Object(url__WEBPACK_IMPORTED_MODULE_2__[\"parse\"])(uploadResults.location);\n const matchData = pathname.match(/^\\/api\\/v1\\/files\\/((?:\\d+~)?\\d+)$/);\n\n if (!matchData) {\n const error = new Error('cannot determine file ID from location');\n error.location = uploadResults.location;\n throw error;\n }\n\n const fileId = matchData[1];\n return this.getFile(fileId).then(fileResults => {\n fileResults.uuid = uploadResults.uuid; // if present, we'll need the uuid for the file verifier downstream\n\n return fileResults;\n });\n } else {\n // local-storage upload, this _is_ the attachment information\n return Promise.resolve(uploadResults);\n }\n }\n\n setUsageRights(fileId, usageRights) {\n const headers = headerFor(this.jwt);\n const uri = this.baseUri('usage_rights');\n const body = {\n fileId,\n ...usageRights\n };\n return this.apiPost(uri, headers, body);\n }\n\n searchFlickr(term, apiProps) {\n const headers = headerFor(this.jwt);\n const base = this.baseUri('flickr_search', apiProps.host);\n const uri = `${base}?term=${encodeURIComponent(term)}`;\n return this.apiFetch(uri, headers);\n }\n\n searchUnsplash(term, page) {\n const headers = headerFor(this.jwt);\n const base = this.baseUri('unsplash/search');\n const uri = `${base}?term=${encodeURIComponent(term)}&page=${page}&per_page=12`;\n return this.apiFetch(uri, headers);\n }\n\n pingbackUnsplash(id) {\n const headers = headerFor(this.jwt);\n const base = this.baseUri('unsplash/pingback');\n const uri = `${base}?id=${id}`;\n return this.apiFetch(uri, headers, {\n skipParse: true\n });\n }\n\n getFile(id) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const headers = headerFor(this.jwt);\n const base = this.baseUri('file'); // Valid query parameters for getFile\n\n const {\n replacement_chain_context_type,\n replacement_chain_context_id\n } = options;\n const uri = this.addParamsIfPresent(`${base}/${id}`, {\n replacement_chain_context_type,\n replacement_chain_context_id\n });\n return this.apiFetch(uri, headers).then(normalizeFileData);\n } // @private\n\n\n addParamsIfPresent(uri, params) {\n let url;\n\n try {\n url = new URL(uri);\n } catch (e) {\n // Just return the URI if it was invalid\n return uri;\n } // Add all truthy parameters to the URL\n\n\n for (const [name, value] of Object.entries(params)) {\n if (!value) continue;\n url.searchParams.append(name, value);\n }\n\n return url.toString();\n } // @private\n\n\n async apiFetch(uri, headers, options) {\n if (!this.hasSession) {\n await this.getSession();\n }\n\n return this.apiReallyFetch(uri, headers, options);\n }\n\n apiReallyFetch(uri, headers) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n uri = this.normalizeUriProtocol(uri);\n return fetch(uri, {\n headers\n }).then(response => {\n if (response.status === 401) {\n // retry once with fresh token\n return this.buildRetryHeaders(headers).then(newHeaders => {\n return fetch(uri, {\n headers: newHeaders\n });\n });\n } else {\n return response;\n }\n }).then(checkStatus).then(options.skipParse ? () => {} : res => res.json()).catch(throwConnectionError).catch(e => {\n this.alertFunc(Object(_buildError__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(e));\n throw e;\n });\n } // @private\n\n\n apiPost(uri, headers, body) {\n let method = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'POST';\n headers = { ...headers,\n 'Content-Type': 'application/json'\n };\n const fetchOptions = {\n method,\n headers\n };\n\n if (body) {\n fetchOptions.body = JSON.stringify(body);\n } else {\n fetchOptions.form = body;\n }\n\n uri = this.normalizeUriProtocol(uri);\n return fetch(uri, fetchOptions).then(response => {\n if (response.status === 401) {\n // retry once with fresh token\n return this.buildRetryHeaders(fetchOptions.headers).then(newHeaders => {\n const newOptions = { ...fetchOptions,\n headers: newHeaders\n };\n return fetch(uri, newOptions);\n });\n } else {\n return response;\n }\n }).then(checkStatus).then(res => res.json()).catch(throwConnectionError).catch(e => e.response.json().then(body => {\n console.error(e); // eslint-disable-line no-console\n\n this.alertFunc(Object(_buildError__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(body));\n throw e;\n }));\n } // @private\n\n\n normalizeUriProtocol(uri, windowOverride) {\n const windowHandle = windowOverride || (typeof window !== 'undefined' ? window : undefined);\n\n if (windowHandle && windowHandle.location && windowHandle.location.protocol === 'https:') {\n return uri.replace('http://', 'https://');\n }\n\n return uri;\n } // @private\n\n\n buildRetryHeaders(headers) {\n return new Promise(resolve => {\n this.refreshToken(freshToken => {\n this.jwt = freshToken;\n const freshHeader = headerFor(freshToken);\n const mergedHeaders = { ...headers,\n ...freshHeader\n };\n resolve(mergedHeaders);\n });\n });\n }\n\n baseUri(endpoint, host, windowOverride) {\n if (!host && this.host) {\n host = this.host;\n }\n\n host = originFromHost(host, windowOverride);\n const sharedEndpoints = ['images', 'media', 'documents', 'all']; // 'all' will eventually be something different\n\n const endpt = _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0___default()(sharedEndpoints).call(sharedEndpoints, endpoint) ? 'documents' : endpoint;\n return `${host}/api/${endpt}`;\n } // returns the URI to use with the fetchPage method to fetch the first page of\n // the given endpoint. e.g. for wikiPages it might return:\n //\n // //rce.docker/api/wikiPages?context_type=course&context_id=42\n //\n\n\n uriFor(endpoint, props) {\n const {\n host,\n contextType,\n contextId,\n sortBy,\n searchString,\n perPage\n } = props;\n let extra = '';\n const pageSizeParam = perPage ? `&per_page=${perPage}` : '';\n\n switch (endpoint) {\n case 'images':\n extra = `&content_types=image${getSortParams(sortBy.sort, sortBy.dir)}${getSearchParam(searchString)}${optionalQuery(props, 'category')}`;\n break;\n\n case 'media':\n // when requesting media files via the documents endpoint\n extra = `&content_types=video,audio${getSortParams(sortBy.sort, sortBy.dir)}${getSearchParam(searchString)}`;\n break;\n\n case 'documents':\n extra = `&exclude_content_types=image,video,audio${getSortParams(sortBy.sort, sortBy.dir)}${getSearchParam(searchString)}`;\n break;\n\n case 'media_objects':\n // when requesting media objects (this is the currently used branch)\n extra = `${getSortParams(sortBy.sort === 'alphabetical' ? 'title' : 'date', sortBy.dir)}${getSearchParam(searchString)}`;\n break;\n\n default:\n extra = getSearchParam(searchString);\n }\n\n return `${this.baseUri(endpoint, host)}?contextType=${contextType}&contextId=${contextId}${pageSizeParam}${extra}`;\n }\n\n}\n\nfunction getSortParams(sort, dir) {\n let sortBy = sort;\n\n if (sortBy === 'date_added') {\n sortBy = 'created_at';\n } else if (sortBy === 'alphabetical') {\n sortBy = 'name';\n }\n\n return `&sort=${sortBy}&order=${dir}`;\n}\n\nfunction optionalQuery(props, name) {\n return props[name] ? `&${name}=${props[name]}` : '';\n}\n\nfunction getSearchParam(searchString) {\n return (searchString === null || searchString === void 0 ? void 0 : searchString.length) >= 3 ? `&search_term=${encodeURIComponent(searchString)}` : '';\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (RceApiSource);\n\n//# sourceURL=webpack:///./src/rcs/api.js?");
|
|
17881
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"headerFor\", function() { return headerFor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"originFromHost\", function() { return originFromHost; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSearchParam\", function() { return getSearchParam; });\n/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var isomorphic_fetch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! isomorphic-fetch */ \"../../node_modules/isomorphic-fetch/fetch-npm-browserify.js\");\n/* harmony import */ var isomorphic_fetch__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(isomorphic_fetch__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! url */ \"../../node_modules/url/url.js\");\n/* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(url__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _instructure_canvas_media__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @instructure/canvas-media */ \"../canvas-media/es/index.js\");\n/* harmony import */ var _common_fileUrl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/fileUrl */ \"./src/common/fileUrl.js\");\n/* harmony import */ var _format_message__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../format-message */ \"./src/format-message.js\");\n/* harmony import */ var _rce_alertHandler__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../rce/alertHandler */ \"./src/rce/alertHandler.js\");\n/* harmony import */ var _sidebar_containers_sidebarHandlers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../sidebar/containers/sidebarHandlers */ \"./src/sidebar/containers/sidebarHandlers.js\");\n/* harmony import */ var _buildError__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./buildError */ \"./src/rcs/buildError.js\");\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\nfunction headerFor(jwt) {\n return {\n Authorization: 'Bearer ' + jwt\n };\n}\nfunction originFromHost(host, windowOverride) {\n let origin = host;\n\n if (typeof origin !== 'string') {\n origin = '';\n } else if (origin && origin.substr(0, 4) !== 'http') {\n var _windowHandle$locatio;\n\n origin = `//${origin}`;\n const windowHandle = windowOverride || (typeof window !== 'undefined' ? window : undefined);\n\n if (origin.length > 0 && windowHandle !== null && windowHandle !== void 0 && (_windowHandle$locatio = windowHandle.location) !== null && _windowHandle$locatio !== void 0 && _windowHandle$locatio.protocol) {\n origin = `${windowHandle.location.protocol}${origin}`;\n }\n }\n\n return origin;\n} // filter a response to raise an error on a 400+ status\n\nfunction checkStatus(response) {\n if (response.status < 400) {\n return response;\n } else {\n const error = new Error(response.statusText);\n error.response = response;\n throw error;\n }\n}\n\nfunction defaultRefreshTokenHandler() {\n throw new Error('Token expired, no refresh function provided');\n}\n\nfunction normalizeFileData(file) {\n return {\n // copy the name to the default display name if none provided\n display_name: file.name,\n ...file,\n // wrap the url\n href: Object(_common_fileUrl__WEBPACK_IMPORTED_MODULE_4__[\"downloadToWrap\"])(file.href || file.url)\n };\n}\n\nfunction throwConnectionError(error) {\n if (error.name === 'TypeError') {\n // eslint-disable-next-line no-console\n console.error(`Failed to fetch from the canvas-rce-api.\n Did you forget to start it or configure it?\n Details can be found at https://github.com/instructure/canvas-rce-api\n `);\n }\n\n throw error;\n}\n\nclass RceApiSource {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.jwt = options.jwt;\n this.host = options.host;\n this.refreshToken = options.refreshToken || defaultRefreshTokenHandler;\n this.hasSession = false;\n this.alertFunc = options.alertFunc || _rce_alertHandler__WEBPACK_IMPORTED_MODULE_6__[\"default\"].handleAlert;\n }\n\n getSession() {\n const headers = headerFor(this.jwt);\n const uri = this.baseUri('session');\n return this.apiReallyFetch(uri, headers).then(data => {\n this.hasSession = true;\n return data;\n }).catch(throwConnectionError);\n } // initial state of a collection is empty, not loading, with bookmark set to\n // uri for initial page fetch\n\n\n initializeCollection(endpoint, props) {\n return {\n links: [],\n bookmark: this.uriFor(endpoint, props),\n isLoading: false,\n hasMore: true,\n searchString: props.searchString\n };\n }\n\n initializeUpload() {\n return {\n uploading: false,\n folders: {},\n formExpanded: false\n };\n }\n\n initializeImages(props) {\n return this.initializeDocuments(props);\n }\n\n initializeDocuments(props) {\n return {\n [props.contextType]: {\n files: [],\n bookmark: null,\n isLoading: false,\n hasMore: true\n },\n searchString: ''\n };\n }\n\n initializeMedia(props) {\n return this.initializeDocuments(props);\n }\n\n initializeFlickr() {\n return {\n searchResults: [],\n searching: false,\n formExpanded: false\n };\n } // fetches the given URI and filters it to either an error or parsed response\n\n\n fetchPage(uri) {\n return this.apiFetch(uri, headerFor(this.jwt));\n }\n\n fetchBookmarkedData(fetchFunction, properties, onSuccess, onError, bookmark) {\n return fetchFunction(properties, bookmark).then(result => {\n onSuccess(result);\n\n if (result.bookmark) {\n this.fetchBookmarkedData(fetchFunction, properties, onSuccess, onError, result.bookmark);\n }\n }).catch(error => {\n onError(error);\n });\n }\n\n fetchDocs(props) {\n const documents = props.documents[props.contextType];\n const uri = documents.bookmark || this.uriFor('documents', props);\n return this.apiFetch(uri, headerFor(this.jwt)).then(_ref => {\n let {\n bookmark,\n files\n } = _ref;\n return {\n bookmark,\n files: files.map(f => Object(_common_fileUrl__WEBPACK_IMPORTED_MODULE_4__[\"fixupFileUrl\"])(props.contextType, props.contextId, f))\n };\n });\n }\n\n fetchMedia(props) {\n const media = props.media[props.contextType];\n const uri = media.bookmark || this.uriFor('media', props);\n return this.apiFetch(uri, headerFor(this.jwt));\n }\n\n fetchFiles(uri) {\n return this.fetchPage(uri).then(_ref2 => {\n let {\n bookmark,\n files\n } = _ref2;\n return {\n bookmark,\n files: files.map(normalizeFileData)\n };\n });\n }\n\n fetchLinks(key, props) {\n const {\n collections\n } = props;\n const bookmark = collections[key].bookmark || this.uriFor(key, props);\n return this.fetchPage(bookmark);\n }\n\n fetchRootFolder(props) {\n return this.fetchPage(this.uriFor('folders', props), this.jwt);\n }\n\n mediaServerSession() {\n return this.apiPost(this.baseUri('v1/services/kaltura_session'), headerFor(this.jwt), {});\n }\n\n uploadMediaToCanvas(mediaObject) {\n var _context;\n\n const body = {\n id: mediaObject.entryId,\n type: {\n 2: 'image',\n 5: 'audio'\n }[mediaObject.mediaType] || _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0___default()(_context = mediaObject.type).call(_context, 'audio') ? 'audio' : 'video',\n context_code: mediaObject.contextCode,\n title: mediaObject.title,\n user_entered_title: mediaObject.userTitle\n };\n return this.apiPost(this.baseUri('media_objects'), headerFor(this.jwt), body);\n }\n\n updateMediaObject(apiProps, _ref3) {\n let {\n media_object_id,\n title\n } = _ref3;\n const uri = `${this.baseUri('media_objects', apiProps.host)}/${media_object_id}?user_entered_title=${encodeURIComponent(title)}`;\n return this.apiPost(uri, headerFor(this.jwt), null, 'PUT');\n } // PUT to //RCS/api/media_objects/:mediaId/media_tracks [{locale, content}, ...]\n // receive back a 200 with the new subtitles, or a 4xx error\n\n\n updateClosedCaptions(apiProps, _ref4, maxBytes) {\n let {\n media_object_id,\n subtitles\n } = _ref4;\n return Object(_instructure_canvas_media__WEBPACK_IMPORTED_MODULE_3__[\"saveClosedCaptions\"])(media_object_id, subtitles, {\n origin: originFromHost(apiProps.host),\n headers: headerFor(apiProps.jwt)\n }, maxBytes || _instructure_canvas_media__WEBPACK_IMPORTED_MODULE_3__[\"CONSTANTS\"].CC_FILE_MAX_BYTES).catch(e => {\n console.error('Failed saving CC', e);\n this.alertFunc(Object(_buildError__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n message: 'failed to save captions'\n }, e));\n });\n } // GET /media_objects/:mediaId/media_tracks\n // receive back the current list of media_tracks\n\n\n fetchClosedCaptions(_mediaId) {\n return Promise.resolve([{\n locale: 'af',\n content: '1\\r\\n00:00:00,000 --> 00:00:01,251\\r\\nThis is the content\\r\\n'\n }, {\n locale: 'es',\n content: '1\\r\\n00:00:00,000 --> 00:00:01,251\\r\\nThis is the content\\r\\n'\n }]);\n } // fetches folders for the given context to upload files to\n\n\n fetchFolders(props, bookmark) {\n const headers = headerFor(this.jwt);\n const uri = bookmark || this.uriFor('folders/all', props);\n return this.apiFetch(uri, headers);\n } // Fetches all files for a given folder\n\n\n fetchFilesForFolder(props, bookmark) {\n let uri;\n\n if (!bookmark) {\n const perPageQuery = props.perPage ? `per_page=${props.perPage}` : '';\n const categoryQuery = `category=${_sidebar_containers_sidebarHandlers__WEBPACK_IMPORTED_MODULE_7__[\"DEFAULT_FILE_CATEGORY\"]}`;\n uri = `${props.filesUrl}?${perPageQuery}&${categoryQuery}${getSearchParam(props.searchString)}`;\n\n if (props.sortBy) {\n uri += `${getSortParams(props.sortBy.sort, props.sortBy.order)}`;\n }\n }\n\n return this.fetchPage(uri || bookmark, this.jwt);\n }\n\n fetchSubFolders(props, bookmark) {\n const uri = bookmark || `${this.baseUri('folders', props.host)}/${props.folderId}`;\n return this.apiFetch(uri, headerFor(this.jwt));\n }\n\n fetchIconMakerFolder(_ref5) {\n let {\n contextId,\n contextType\n } = _ref5;\n const uri = this.uriFor('folders/icon_maker', {\n contextId,\n contextType,\n host: this.host,\n jwt: this.jwt\n });\n return this.fetchPage(uri);\n }\n\n fetchMediaFolder(props) {\n let uri;\n\n if (props.contextType === 'user') {\n uri = this.uriFor('folders', props);\n } else {\n uri = this.uriFor('folders/media', props);\n }\n\n return this.fetchPage(uri);\n }\n\n fetchMediaObjectIframe(mediaObjectId) {\n return this.fetchPage(this.uriFor(`media_objects_iframe/${mediaObjectId}`));\n }\n\n fetchImages(props) {\n const images = props.images[props.contextType];\n const uri = images.bookmark || this.uriFor('images', props);\n const headers = headerFor(this.jwt);\n return this.apiFetch(uri, headers).then(_ref6 => {\n let {\n bookmark,\n files\n } = _ref6;\n return {\n bookmark,\n files: files.map(f => Object(_common_fileUrl__WEBPACK_IMPORTED_MODULE_4__[\"fixupFileUrl\"])(props.contextType, props.contextId, f)),\n searchString: props.searchString\n };\n });\n }\n\n preflightUpload(fileProps, apiProps) {\n const headers = headerFor(this.jwt);\n const uri = this.baseUri('upload', apiProps.host);\n const body = {\n contextId: apiProps.contextId,\n contextType: apiProps.contextType,\n file: fileProps,\n no_redirect: true,\n onDuplicate: apiProps.onDuplicate,\n category: apiProps.category\n };\n return this.apiPost(uri, headers, body);\n }\n\n uploadFRD(fileDomObject, preflightProps) {\n var _context2;\n\n const data = new window.FormData();\n Object.keys(preflightProps.upload_params).forEach(uploadProp => {\n data.append(uploadProp, preflightProps.upload_params[uploadProp]);\n });\n data.append('file', fileDomObject);\n const fetchOptions = {\n method: 'POST',\n body: data\n };\n\n if (!preflightProps.upload_params['x-amz-signature'] && !_babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0___default()(_context2 = preflightProps.upload_url).call(_context2, 'files_api')) {\n // _not_ an S3 upload, include the credentials in the upload POST\n // local uploads can include crendentials for same-origin requests\n fetchOptions.credentials = 'include';\n }\n\n return fetch(preflightProps.upload_url, fetchOptions).then(checkStatus).then(res => res.json()).then(uploadResults => {\n return this.finalizeUpload(preflightProps, uploadResults);\n }).catch(e => {\n this.alertFunc(Object(_buildError__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({}, e));\n });\n }\n\n finalizeUpload(preflightProps, uploadResults) {\n if (preflightProps.upload_params.success_url) {\n // s3 upload, follow-up at success_url to finalize. the success_url doesn't\n // require authentication\n return fetch(preflightProps.upload_params.success_url).then(checkStatus).then(res => res.json());\n } else if (uploadResults.location) {\n // inst-fs upload, follow-up by fetching file identified by location in\n // response. we can't just fetch the location as would be intended because\n // it requires Canvas authentication. we also don't have an RCE API\n // endpoint to forward it through.\n const {\n pathname\n } = Object(url__WEBPACK_IMPORTED_MODULE_2__[\"parse\"])(uploadResults.location);\n const matchData = pathname.match(/^\\/api\\/v1\\/files\\/((?:\\d+~)?\\d+)$/);\n\n if (!matchData) {\n const error = new Error('cannot determine file ID from location');\n error.location = uploadResults.location;\n throw error;\n }\n\n const fileId = matchData[1];\n return this.getFile(fileId).then(fileResults => {\n fileResults.uuid = uploadResults.uuid; // if present, we'll need the uuid for the file verifier downstream\n\n return fileResults;\n });\n } else {\n // local-storage upload, this _is_ the attachment information\n return Promise.resolve(uploadResults);\n }\n }\n\n setUsageRights(fileId, usageRights) {\n const headers = headerFor(this.jwt);\n const uri = this.baseUri('usage_rights');\n const body = {\n fileId,\n ...usageRights\n };\n return this.apiPost(uri, headers, body);\n }\n\n searchFlickr(term, apiProps) {\n const headers = headerFor(this.jwt);\n const base = this.baseUri('flickr_search', apiProps.host);\n const uri = `${base}?term=${encodeURIComponent(term)}`;\n return this.apiFetch(uri, headers);\n }\n\n searchUnsplash(term, page) {\n const headers = headerFor(this.jwt);\n const base = this.baseUri('unsplash/search');\n const uri = `${base}?term=${encodeURIComponent(term)}&page=${page}&per_page=12`;\n return this.apiFetch(uri, headers);\n }\n\n pingbackUnsplash(id) {\n const headers = headerFor(this.jwt);\n const base = this.baseUri('unsplash/pingback');\n const uri = `${base}?id=${id}`;\n return this.apiFetch(uri, headers, {\n skipParse: true\n });\n }\n\n getFile(id) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const headers = headerFor(this.jwt);\n const base = this.baseUri('file'); // Valid query parameters for getFile\n\n const {\n replacement_chain_context_type,\n replacement_chain_context_id\n } = options;\n const uri = this.addParamsIfPresent(`${base}/${id}`, {\n replacement_chain_context_type,\n replacement_chain_context_id\n });\n return this.apiFetch(uri, headers).then(normalizeFileData);\n } // @private\n\n\n addParamsIfPresent(uri, params) {\n let url;\n\n try {\n url = new URL(uri);\n } catch (e) {\n // Just return the URI if it was invalid\n return uri;\n } // Add all truthy parameters to the URL\n\n\n for (const [name, value] of Object.entries(params)) {\n if (!value) continue;\n url.searchParams.append(name, value);\n }\n\n return url.toString();\n } // @private\n\n\n async apiFetch(uri, headers, options) {\n if (!this.hasSession) {\n await this.getSession();\n }\n\n return this.apiReallyFetch(uri, headers, options);\n }\n\n apiReallyFetch(uri, headers) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n uri = this.normalizeUriProtocol(uri);\n return fetch(uri, {\n headers\n }).then(response => {\n if (response.status === 401) {\n // retry once with fresh token\n return this.buildRetryHeaders(headers).then(newHeaders => {\n return fetch(uri, {\n headers: newHeaders\n });\n });\n } else {\n return response;\n }\n }).then(checkStatus).then(options.skipParse ? () => {} : res => res.json()).catch(throwConnectionError).catch(e => {\n this.alertFunc(Object(_buildError__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(e));\n throw e;\n });\n } // @private\n\n\n apiPost(uri, headers, body) {\n let method = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'POST';\n headers = { ...headers,\n 'Content-Type': 'application/json'\n };\n const fetchOptions = {\n method,\n headers\n };\n\n if (body) {\n fetchOptions.body = JSON.stringify(body);\n } else {\n fetchOptions.form = body;\n }\n\n uri = this.normalizeUriProtocol(uri);\n return fetch(uri, fetchOptions).then(response => {\n if (response.status === 401) {\n // retry once with fresh token\n return this.buildRetryHeaders(fetchOptions.headers).then(newHeaders => {\n const newOptions = { ...fetchOptions,\n headers: newHeaders\n };\n return fetch(uri, newOptions);\n });\n } else {\n return response;\n }\n }).then(checkStatus).then(res => res.json()).catch(throwConnectionError).catch(e => e.response.json().then(body => {\n console.error(e); // eslint-disable-line no-console\n\n this.alertFunc(Object(_buildError__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(body));\n throw e;\n }));\n } // @private\n\n\n normalizeUriProtocol(uri, windowOverride) {\n const windowHandle = windowOverride || (typeof window !== 'undefined' ? window : undefined);\n\n if (windowHandle && windowHandle.location && windowHandle.location.protocol === 'https:') {\n return uri.replace('http://', 'https://');\n }\n\n return uri;\n } // @private\n\n\n buildRetryHeaders(headers) {\n return new Promise(resolve => {\n this.refreshToken(freshToken => {\n this.jwt = freshToken;\n const freshHeader = headerFor(freshToken);\n const mergedHeaders = { ...headers,\n ...freshHeader\n };\n resolve(mergedHeaders);\n });\n });\n }\n\n baseUri(endpoint, host, windowOverride) {\n if (!host && this.host) {\n host = this.host;\n }\n\n host = originFromHost(host, windowOverride);\n const sharedEndpoints = ['images', 'media', 'documents', 'all']; // 'all' will eventually be something different\n\n const endpt = _babel_runtime_corejs3_core_js_stable_instance_includes__WEBPACK_IMPORTED_MODULE_0___default()(sharedEndpoints).call(sharedEndpoints, endpoint) ? 'documents' : endpoint;\n return `${host}/api/${endpt}`;\n } // returns the URI to use with the fetchPage method to fetch the first page of\n // the given endpoint. e.g. for wikiPages it might return:\n //\n // //rce.docker/api/wikiPages?context_type=course&context_id=42\n //\n\n\n uriFor(endpoint, props) {\n const {\n host,\n contextType,\n contextId,\n sortBy,\n searchString,\n perPage\n } = props;\n let extra = '';\n const pageSizeParam = perPage ? `&per_page=${perPage}` : '';\n\n switch (endpoint) {\n case 'images':\n extra = `&content_types=image${getSortParams(sortBy.sort, sortBy.dir)}${getSearchParam(searchString)}${optionalQuery(props, 'category')}`;\n break;\n\n case 'media':\n // when requesting media files via the documents endpoint\n extra = `&content_types=video,audio${getSortParams(sortBy.sort, sortBy.dir)}${getSearchParam(searchString)}`;\n break;\n\n case 'documents':\n extra = `&exclude_content_types=image,video,audio${getSortParams(sortBy.sort, sortBy.dir)}${getSearchParam(searchString)}`;\n break;\n\n case 'media_objects':\n // when requesting media objects (this is the currently used branch)\n extra = `${getSortParams(sortBy.sort === 'alphabetical' ? 'title' : 'date', sortBy.dir)}${getSearchParam(searchString)}`;\n break;\n\n default:\n extra = getSearchParam(searchString);\n }\n\n return `${this.baseUri(endpoint, host)}?contextType=${contextType}&contextId=${contextId}${pageSizeParam}${extra}`;\n }\n\n}\n\nfunction getSortParams(sort, dir) {\n let sortBy = sort;\n\n if (sortBy === 'date_added') {\n sortBy = 'created_at';\n } else if (sortBy === 'alphabetical') {\n sortBy = 'name';\n }\n\n return `&sort=${sortBy}&order=${dir}`;\n}\n\nfunction optionalQuery(props, name) {\n return props[name] ? `&${name}=${props[name]}` : '';\n}\n\nfunction getSearchParam(searchString) {\n return (searchString === null || searchString === void 0 ? void 0 : searchString.length) >= 3 ? `&search_term=${encodeURIComponent(searchString)}` : '';\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (RceApiSource);\n\n//# sourceURL=webpack:///./src/rcs/api.js?");
|
|
17846
17882
|
|
|
17847
17883
|
/***/ }),
|
|
17848
17884
|
|