{"version":3,"sources":["webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-svg-images/lib/components/SVGIcon/theme.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/react/matchComponentTypes.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/setTextDirection.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/Grid/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/ThemeContextTypes.js","webpack:///./node_modules/react-transition-group/CSSTransitionGroup.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/dom/getComputedStyle.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-tabs/lib/components/TabList/TabPanel/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/formatVariableNames.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/wrapInitCb.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-layout/lib/components/Grid/GridCol/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/common/fileUrl.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-tabs/lib/components/TabList/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/newPageLinkExpanded.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-form-field/lib/components/FormFieldMessage/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-forms/lib/components/Checkbox/CheckboxFacade/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/ThemeContextTypes.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/parseCss.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/transformCss.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/scopeStylesToNode.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/formatVariableName.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/formatVariableNames.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/pickOverrides.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/customPropertiesSupported.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/replaceValuesWithVariableNames.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/applyCustomMediaToCss.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/getCssText.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/applyVariablesToNode.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/utils/setTextDirection.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/themeable.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/components/ApplyTheme/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/makeThemeVars.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/registry.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_image/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/plugins/noneditable/plugin.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/lib/utils/makeThemeVars.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_image/clickCallback.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-alerts/lib/components/Alert/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/deepEqual.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-forms/lib/components/Checkbox/ToggleFacade/theme.js","webpack:///./node_modules/react-tinymce/lib/helpers/uuid.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Solid/IconWarningBorderless.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/react/getDisplayName.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Line/IconDocument.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-layout/lib/components/View/theme.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-form-field/lib/components/FormFieldLayout/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/collections.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-form-field/lib/components/FormFieldMessage/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/ImageUploadsList.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/react/passthroughProps.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/async.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-tabs/lib/components/TabList/Tab/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-testable/es/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/contentInsertion.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-form-field/lib/components/FormFieldMessages/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-forms/lib/components/FormField/FormFieldLayout/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/replaceValuesWithVariableNames.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/AltTextForm.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-a11y/lib/components/ScreenReaderContent/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/sources/api.js","webpack:///./node_modules/react-tinymce/lib/helpers/ucFirst.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-svg-images/lib/components/InlineSVG/theme.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/capitalizeFirstLetter.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/deepEqual.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/UsageRightsForm.js","webpack:///./node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/Grid/GridCol/theme.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/react-transition-group/utils/ChildMapping.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-svg-images/lib/components/SVGIcon/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/actions/data.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/noop.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/console/es/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/tinymce.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/format-message.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/react/passthroughProps.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_links/clickCallback.js","webpack:///./node_modules/dom-helpers/util/inDOM.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Solid/IconArrowOpenEnd.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-i18n/lib/utils/getTextDirection.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/react/matchComponentTypes.js","webpack:///./node_modules/@instructure/ui-core/lib/components/Select/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/parseCss.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Line/IconMiniArrowDown.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/uid/es/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/dom/ownerWindow.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/applyVariablesToNode.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-motion/lib/components/Transition/theme.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/dom/canUseDOM.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Solid/IconMinimize.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-form-field/lib/components/FormFieldLabel/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/customPropertiesSupported.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Line/IconFolder.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/dom/ownerDocument.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/plugins/media/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-form-field/lib/components/FormFieldLabel/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/indicatorRegion.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/contentInsertionUtils.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-toggle-details/lib/components/Expandable/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/common/browser.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-forms/lib/components/Checkbox/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/themes/modern/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-forms/lib/components/Checkbox/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/Grid/GridRow/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-layout/lib/components/Grid/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_equella/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/normalizeProps.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/common/components/FileTree/Folder.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/lib/utils/getShorthandPropValue.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/react/ensureSingleChild.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/UploadedImage.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/isEmpty.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/Flex/index.js","webpack:///./node_modules/react-tinymce/lib/components/TinyMCE.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-forms/lib/components/Checkbox/CheckboxFacade/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/store/configureStore.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-forms/lib/components/FormField/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/editorLanguage.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/plugins/wordcount/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/common/components/FileTree/styles.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-forms/lib/components/FormField/FormFieldMessages/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/folder.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Solid/IconSearch.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/react/ensureSingleChild.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/LinkToNewPage.js","webpack:///./node_modules/@babel/runtime/helpers/objectSpread.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/dom/getComputedStyle.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/session.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/ThemeContextTypes.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/parseCss.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/transformCss.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/scopeStylesToNode.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/formatVariableName.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/formatVariableNames.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/pickOverrides.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/customPropertiesSupported.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/replaceValuesWithVariableNames.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/applyCustomMediaToCss.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/getCssText.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/applyVariablesToNode.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/utils/setTextDirection.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/themeable.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/es/components/ApplyTheme/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-i18n/lib/bidirectional.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/dom/getActiveElement.js","webpack:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/actions/upload.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/dom/canUseDOM.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/Grid/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/folders.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/plugins/link/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Solid/IconInfoBorderless.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/react/safeCloneElement.js","webpack:///./node_modules/chain-function/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-stylesheet/es/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_external_tools/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/contentRendering.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-svg-images/lib/components/InlineSVG/theme.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/images.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/mirrorShorthand.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-form-field/lib/components/FormFieldMessages/theme.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-forms/lib/utils/FormPropTypes.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-i18n/lib/TextDirectionContextTypes.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-toggle-details/lib/components/ToggleDetails/theme.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/Browser.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-i18n/lib/utils/getTextDirection.js","webpack:///./node_modules/@instructure/ui-core/lib/components/Select/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/rootFolderId.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/shallowEqual.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/actions/ui.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/files.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_record/clickCallback.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/react/getElementType.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_links/plugin.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/lib/utils/ThemeablePropTypes.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/common/components/Loading.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-testable/es/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/uid/es/uid.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/ms.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-icons/lib/Solid/IconArrowOpenDown.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/parseUnit.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-a11y/lib/utils/hasVisibleChildren.js","webpack:///./node_modules/react-transition-group/TransitionGroup.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-svg-images/lib/components/InlineSVG/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-form-field/lib/components/FormFieldMessage/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-form-field/lib/utils/FormPropTypes.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/pickOverrides.js","webpack:///./node_modules/dom-helpers/class/removeClass.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/common/components/LoadMore.js","webpack:///./node_modules/tinymce-light-skin/lib/skin.js","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/actions/links.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-form-field/lib/components/FormFieldLabel/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-form-field/lib/components/FormField/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/convertCase.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/common/components/FileTree/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Line/IconX.js","webpack:///./node_modules/lodash/isEqual.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-prop-types/es/utils/makeRequirable.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-prop-types/es/utils/children.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-prop-types/es/utils/childrenOrValue.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-prop-types/es/utils/controllable.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-prop-types/es/utils/cursor.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-prop-types/es/utils/element.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-prop-types/es/utils/xor.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-prop-types/es/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/uid/es/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-forms/lib/components/TextInput/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/actions/flickr.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-tabs/lib/components/TabList/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-tabs/lib/components/TabList/Tab/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-layout/lib/components/View/index.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/common/indicate.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/dom/getClassList.js","webpack:///./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/normalizeLocale.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/collection.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/plugins/lists/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/common/mimeClass.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/NavigationPanel.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/ui.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/Flex/FlexItem/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-motion/lib/components/Transition/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-layout/lib/components/Grid/GridRow/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-tabs/lib/components/TabList/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-decorator/es/decorator.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-forms/lib/components/FormField/FormFieldMessage/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/FlickrSearch.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/plugins/autoresize/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/dom/isActiveElement.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Solid/IconArrowOpenDown.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/actions/session.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/isEmpty.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/es/registry.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-buttons/lib/components/Button/theme.js","webpack:///./ui/shared/rce/canvas-rce-old-and-a11y-checker.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_external_tools/dispatchInitEvent.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/editorAccessibility.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/lib/utils/color.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/dom/ownerDocument.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/ms.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/react/deprecated.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/fast-deep-equal/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/common/components/FileTree/File.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-alerts/lib/components/Alert/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/Grid/GridRow/theme.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/dom/isActiveElement.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-form-field/lib/components/FormFieldLayout/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-prop-types/es/utils/makeRequirable.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-prop-types/es/utils/children.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-prop-types/es/utils/childrenOrValue.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-prop-types/es/utils/controllable.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-prop-types/es/utils/cursor.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-prop-types/es/utils/element.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-prop-types/es/utils/xor.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-prop-types/es/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/ImagesPanel.js","webpack:///./node_modules/@instructure/ui-core/lib/components/TabList/Tab/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/dom/findDOMNode.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-form-field/lib/components/FormFieldLayout/theme.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/parseUnit.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/convertCase.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-form-field/lib/components/FormFieldMessages/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Line/IconCheck.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/createChainedFunction.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/react/safeCloneElement.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/plugins/autolink/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-forms/lib/components/TextInput/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/RCEWrapper.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/Flex/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Solid/IconCheckMark.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-layout/lib/components/Grid/GridCol/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/bridge/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-tabs/lib/components/TabList/Tab/theme.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/react/getElementType.js","webpack:///./node_modules/@babel/runtime/helpers/get.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/mergeDeep.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-form-field/lib/components/FormFieldMessages/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/themeable.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-svg-images/lib/components/SVGIcon/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/upload.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/Sidebar.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-tabs/lib/components/TabList/TabPanel/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-i18n/lib/TextDirectionContextTypes.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/sanitizeEditorOptions.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-motion/lib/components/Transition/BaseTransition.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/console/es/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/applyCustomMediaToCss.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/dom/findDOMNode.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/tinyRCE.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/plugins/directionality/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/store/initialState.js","webpack:///./node_modules/react-tinymce/lib/main.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/dragHtml.js","webpack:///./node_modules/@instructure/ui-core/node_modules/fast-deep-equal/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/containers/sidebarHandlers.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-forms/lib/components/FormField/FormFieldLabel/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/ThemeablePropTypes.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-layout/lib/components/Grid/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-motion/lib/components/Transition/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/shallowEqual.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/plugins/table/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/plugins/paste/plugin.js","webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/components/ApplyTheme/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/flickr.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/color.js","webpack:///./node_modules/@babel/runtime/helpers/superPropBase.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_equella/clickCallback.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-forms/lib/components/Checkbox/ToggleFacade/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/react/deprecated.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-form-field/lib/components/FormFieldLabel/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-stylesheet/es/index.js","webpack:///./node_modules/react-transition-group/node_modules/warning/browser.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/registry.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/transformCss.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/reducers/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/locales lazy ^\\.\\/.*$ namespace object","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/root.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/dom/getClassList.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/IframesTableFix.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Solid/IconAdd.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/store/initialActions.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/getCssText.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/createChainedFunction.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/containers/Sidebar.js","webpack:///./node_modules/bowser/src/bowser.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-buttons/lib/components/Button/index.js","webpack:///./node_modules/dom-helpers/util/requestAnimationFrame.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-motion/lib/components/Transition/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/LinksPanel.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-tabs/lib/components/TabList/TabPanel/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-form-field/lib/components/FormField/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_equation/clickCallback.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/getShorthandPropValue.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/tinymce/plugins/textcolor/plugin.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/UploadForm.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/common/scroll.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-form-field/lib/utils/FormPropTypes.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-tabs/lib/components/TabList/TabPanel/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/LinkSet.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/scopeStylesToNode.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-a11y/lib/utils/hasVisibleChildren.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/components/FilesPanel.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/root.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/actions/images.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_record/plugin.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-a11y/lib/components/ScreenReaderContent/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Solid/IconX.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-tabs/lib/components/TabList/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/dom/ownerWindow.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Solid/IconNo.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/StyleSheet.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/dom/getActiveElement.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/View/theme.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/facade.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/capitalizeFirstLetter.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-buttons/lib/components/CloseButton/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-toggle-details/lib/components/ToggleDetails/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-svg-images/lib/components/InlineSVG/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-icons/lib/Line/IconMiniArrowEnd.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-i18n/lib/bidirectional.js","webpack:///./node_modules/lodash/clone.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-utils/lib/mergeDeep.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/normalizeProps.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-decorator/es/decorator.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-form-field/lib/components/FormFieldMessage/index.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/Browser.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-motion/lib/components/Transition/BaseTransition.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-svg-images/lib/components/SVGIcon/index.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-utils/lib/react/getDisplayName.js","webpack:///./node_modules/dom-helpers/transition/properties.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/uid/es/uid.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/sidebar/actions/files.js","webpack:///./node_modules/react-transition-group/utils/PropTypes.js","webpack:///./node_modules/@instructure/canvas-rce-old/lib/rce/plugins/instructure_equation/plugin.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-tabs/lib/components/TabList/Tab/index.js","webpack:///./node_modules/dom-helpers/class/hasClass.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/View/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-themeable/lib/utils/formatVariableName.js","webpack:///./node_modules/dom-helpers/class/addClass.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-layout/lib/components/Grid/GridRow/theme.js","webpack:///./node_modules/react-transition-group/CSSTransitionGroupChild.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/Grid/GridCol/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-form-field/lib/components/FormFieldLayout/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-layout/lib/components/Flex/FlexItem/index.js","webpack:///./node_modules/@instructure/canvas-rce-old/node_modules/@instructure/ui-buttons/lib/components/CloseButton/theme.js","webpack:///./node_modules/@instructure/ui-core/node_modules/@instructure/ui-themeable/lib/utils/mirrorShorthand.js"],"names":["Object","defineProperty","exports","value","default","generator","sizeXSmall","sizeSmall","sizeMedium","sizeLarge","sizeXLarge","_interopRequireDefault","matchComponentTypes","_getDisplayName","componentInstance","types","arguments","length","type","displayNames","map","indexOf","setTextDirection","_canUseDOM","hasRan","dir","document","documentElement","getAttribute","setAttribute","_interopRequireWildcard","enumerable","get","_GridRow","_GridCol","_defineProperty2","_objectSpread2","_classCallCheck2","_createClass2","_possibleConstructorReturn2","_getPrototypeOf2","_inherits2","_react","_propTypes","_classnames","_uiThemeable","_uiPropTypes","_capitalizeFirstLetter","_safeCloneElement","_matchComponentTypes","_passthroughProps","_ScreenReaderContent","_theme","_dec","_class","_class2","_temp","styles","componentId","template","theme","Grid","_Component","this","apply","key","props","startAt","concat","_this","children","Children","toArray","child","index","pickProps","propTypes","isLastRow","_classes","classes","root","startAtClass","visualDebug","omitProps","createElement","assign","className","renderChildren","displayName","Component","oneOf","colSpacing","rowSpacing","hAlign","vAlign","bool","defaultProps","makeThemeContext","getThemeContext","ThemeContextTypes","CONTEXT_KEY","object","immutable","context","__esModule","_extends","target","i","source","prototype","hasOwnProperty","call","_react2","_propTypes2","_TransitionGroup","_TransitionGroup2","_CSSTransitionGroupChild","_CSSTransitionGroupChild2","_PropTypes","obj","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","constructor","writable","configurable","setPrototypeOf","__proto__","nameShape","isRequired","transitionTimeout","transitionAppear","transitionEnter","transitionLeave","CSSTransitionGroup","_React$Component","_ret","_len","args","Array","_key","_wrapChild","name","transitionName","appear","enter","leave","appearTimeout","transitionAppearTimeout","enterTimeout","transitionEnterTimeout","leaveTimeout","transitionLeaveTimeout","render","childFactory","module","getComputedStyle","_findDOMNode","_ownerWindow","el","style","node","_View","_uiTestable","_ThemeablePropTypes","_Transition","_dec2","background","borderColor","borderStyle","borderWidth","color","TabPanel","content","overflow","maxHeight","as","padding","textAlign","_classes2","variant","isHidden","selected","disabled","role","id","labelledBy","in","unmountOnExit","transitionExit","renderContent","title","string","spacing","tabRef","func","formatVariableNames","_formatVariableName","variables","prefix","formatted","keys","forEach","wrapInitCb","_IframesTableFix","mirroredAttrs","editorOptions","MutationObserver","undefined","window","oldInitInstCb","init_instance_callback","ed","attrs","getElement","attr","dataset","rich_text","ifr","hookAddVisual","_default","_ref","media","spacingSmall","small","spacingMedium","medium","spacingLarge","large","downloadToWrap","_url","url","parsed","parse","search","query","download_frd","wrap","format","colors","breakpoints","minimalBackground","backgroundLightest","_links","state","action","TOGGLE_NEWPAGE_FORM","typography","colorHint","textDarkest","colorError","textDanger","colorSuccess","textSuccess","fontFamily","fontWeight","fontWeightNormal","fontSize","fontSizeSmall","lineHeight","canvas","borders","textLightest","widthSmall","borderDark","borderRadius","radiusMedium","marginRight","xSmall","xxxSmall","checkedBackground","backgroundDarkest","checkedBorderColor","borderDarkest","hoverBorderColor","focusBorderColor","borderBrand","focusBorderWidth","widthMedium","focusBorderStyle","labelColor","checkedLabelColor","labelFontFamily","labelFontWeight","labelLineHeight","lineHeightCondensed","facadeSizeSmall","facadeSizeMedium","facadeSizeLarge","labelFontSizeSmall","labelFontSizeMedium","fontSizeMedium","labelFontSizeLarge","fontSizeLarge","iconSizeSmall","iconSizeMedium","iconSizeLarge","cssText","cleaned","clean","parseLexed","lex","ruleTypes","keyframes","text","replace","rootNode","start","end","chars","split","char","rules","parent","previous","push","parseSelector","selector","substring","lastIndexOf","trim","parseRuleType","match","rule","transformCss","transform","transformNode","toCssText","isKeyframesSelector","toRules","filter","filterUnusedVendorRule","_cssText","transformed","result","join","suffix","ms","moz","webkit","blink","includes","_ref2","gecko","_ref3","msedge","_ref4","msie","_ref5","scopeStylesToNode","domNode","scope","styleNode","querySelector","toLowerCase","shouldInsertNode","scopedCSS","scoped","addScopeToDomNode","scopeCssText","insertBefore","firstChild","textContent","styleSheet","removeScopeFromDomNode","removeChild","isScoped","scopeRule","childNodes","removeAttribute","isRootSelector","isClassSelector","scopeSimpleSelector","parts","scopeCompoundSelector","combinator","scopedSelector","scopeComplexSelector","offset","part","formatVariableName","variableName","pickOverrides","defaultTheme","overrides","cachedReturnVal","customPropertiesSupported","CSS","supports","replaceValuesWithVariableNames","applyCustomMediaToCss","matches","getMatches","vars","matcher","RegExp","str","regex","lastIndex","exec","getCssText","getCssTextWithVariables","getCssTextWithPolyfill","customMedia","variableNames","cssVariablesString","variablesToCSSText","applyVariablesToNode","applyVariablesToNodeStyle","applyVariablesPolyfillToNode","defaults","clearCustomProperties","setCustomProperties","prop","removeProperty","properties","propertyName","setProperty","emptyObj","themeable","ComposedComponent","uid","contextKey","Symbol","getContext","themeContext","getThemeFromContext","_getContext","generateThemeForContextKey","themeKey","ThemeableComponent","_ComposedComponent","_themeCache","_instanceId","mounted","mount","applyTheme","nextProps","nextState","nextContext","themeContextWillChange","prevProps","prevState","prevContext","DOMNode","_getContext2","contextTypes","generateTheme","ApplyTheme","parentThemeContext","childContextTypes","makeThemeVars","_convertCase","themeVars","variable","camelize","DEFAULT_THEME_KEY","GLOBAL_THEME_REGISTRY","makeRegistry","defaultThemeKey","components","themes","registered","validateRegistry","registry","defaultRegistry","global","getRegistry","getDefaultThemeKey","_getRegistry","getRegisteredTheme","getVariablesWithOverrides","overridesIsEmpty","JSON","stringify","variablesIsEmpty","mergeWithDefaultThemeVariables","defaultOverrides","defaultOverridesIsEmpty","makeComponentTheme","componentThemeFunction","defaultComponentTheme","registerComponentTheme","componentKey","_getRegistry2","getRegisteredComponents","_getRegistry3","t","getRegisteredComponent","_getRegistry4","getOwnPropertySymbols","generateComponentTheme","componentTheme","cachedComponentTheme","forms","shadows","stacking","transitions","e","toString","_escapeHtml","_formatMessage","_clickCallback","tinymce","init","addCommand","bind","addButton","description","cmd","icon","onPostRender","btn","on","event","active","nodeName","getInfo","longname","author","authorurl","infourl","version","PluginManager","add","plugins","InstructureImagePlugin","util","Tools","resolve","global$1","getNonEditableClass","editor","getParam","getEditableClass","getNonEditableRegExps","nonEditableRegExps","Settings","hasClass","checkClassName","replaceMatchWithSpan","cls","prevChar","charAt","findStartTagIndex","tagHtml","dom","encode","convertRegExpsToNonEditable","setup","editClass","nonEditClass","contentEditableAttrName","hasEditClass","hasNonEditClass","parser","addAttributeFilter","nodes","serializer","raw","FilterContent","selectedNode","selection","getNode","getAttrib","ev","createEvent","initCustomEvent","dispatchEvent","marginTop","contentPadding","contentFontSize","contentFontFamily","contentFontWeight","contentLineHeight","closeButtonMarginTop","closeButtonMarginRight","xxSmall","iconColor","iconBackground","successBorderColor","borderSuccess","successIconBackground","backgroundSuccess","infoBorderColor","borderInfo","infoIconBackground","backgroundInfo","warningBorderColor","borderWarning","warningIconBackground","backgroundWarning","dangerBorderColor","borderDanger","dangerIconBackground","backgroundDanger","boxShadow","depth2","_fastDeepEqual","_typeof","_getRequireWildcardCache","WeakMap","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","backgroundLight","borderMedium","marginEnd","uncheckedIconColor","textDark","checkedIconColor","focusOutlineColor","toggleBackground","toggleShadow","depth1","baseSizeSmall","inputHeightSmall","baseSizeMedium","inputHeightMedium","baseSizeLarge","inputHeightLarge","count","_SVGIcon","fillRule","stroke","strokeWidth","d","IconWarningBorderless","viewBox","glyphName","getDisplayName","IconDocument","bidirectional","_makeThemeVars","oxford","white","tiara","colorInverse","backgroundInverse","borderColorInverse","debugOutlineColor","borderDebug","porcelain","arrowSize","xSmallMaxWidth","smallMaxWidth","mediumMaxWidth","largeMaxWidth","_Grid","_getElementType","_uid","_hasVisibleChildren","_FormFieldLabel","_FormFieldMessages","_FormPropTypes","FormFieldLayout","_messagesId","messagesId","width","inline","layout","hasVisibleLabel","GridCol","labelAlign","inlineContainerAndLabel","elementType","label","hasMessages","messages","GridRow","ElementType","renderLegend","renderLabel","renderVisibleMessages","arrayOf","message","_data","_collection","_redux","boundCollectionReducer","REQUEST_PAGE","RECEIVE_PAGE","FAIL_PAGE","combineReducers","announcements","assignments","discussions","modules","quizzes","wikiPages","FormFieldMessage","_LoadMore","_UploadedImage","ImageUploadsList","fetchImages","calledFromRender","images","records","image","onImageEmbed","clear","focusSelector","hasMore","isLoading","loadMore","renderImages","shape","array","omit","originalObject","newObject","exclude","combined","pick","res","len","idx","include","renderIntoDiv","_root2","_normalizeLocale","_root","editorEl","cb","language","then","simpleColor","textBrand","simpleSelectedBackground","simpleSelectedBorderColor","simpleSelectedColor","minimalColor","minimalHoverBorderColor","minimalSelectedBorderColor","locator","attribute","TestableComponent","_get2","appendLocatorAttribute","_get3","_len2","_key2","_testableUnmounted","_get4","_len3","_key3","clearTimeout","locatorTimeout","setTimeout","values","insertContent","insertImage","existingContentToLink","existingContentToLinkIsImg","insertLink","_contentRendering","_contentInsertionUtils","_scroll","replaceTextareaSelection","element","before","substr","selectionStart","after","selectionEnd","focus","createRange","scrollIntoViewWDelay","iframeElement","getEnd","isElemImg","elem","isElemAnchor","shouldPreserveImgAnchor","selectedRange","getRng","startContainer","endContainer","renderLinkedImage","renderImage","currentLink","link","cursor","selectionDetails","getParent","hasSelection","getContent","decode","selectedContent","selectionIsImg","$","is","insertUndecoratedLink","setRng","range","execCommand","renderLink","decorateLinkWithEmbed","instructure_file_link","instructure_scribd_file","embed","instructure_image_thumbnail","instructure_video_link","instructure_audio_link","href","cleanUrl","_FormFieldMessage","topMargin","FormFieldMessages","msg","_FormFieldLayout","_deprecated","changedPackageWarning","_getPrototypeOf3","_Checkbox","_TextInput","AltTextForm","handleAltTextChange","altText","setState","altResolved","isAltResolved","handleDecorativeCheckbox","decorativeSelected","checked","altTextField","_this2","altScreenreaderMessage","altLabelText","alt_label","decorativeScreenreaderMessage","decorativeLabelText","decorative_label","ref","input","onChange","margin","display","ScreenReaderContent","_fileUrl","headerFor","jwt","Authorization","checkStatus","response","status","error","Error","statusText","parseResponse","json","err","console","warn","defaultRefreshTokenHandler","normalizeFileData","file","display_name","throwConnectionError","RceApiSource","options","host","refreshToken","headers","uri","baseUri","apiFetch","catch","endpoint","links","bookmark","uriFor","loading","uploading","folders","formExpanded","requested","searchResults","searching","fetchPage","files","fileProps","apiProps","body","contextId","contextType","no_redirect","apiPost","fileDomObject","preflightProps","data","FormData","upload_params","uploadProp","append","fetchOptions","method","credentials","fetch","upload_url","uploadResults","finalizeUpload","success_url","location","_parse","pathname","matchData","fileId","getFile","Promise","usageRights","term","base","encodeURIComponent","normalizeUriProtocol","buildRetryHeaders","newHeaders","_this3","newOptions","windowOverride","windowHandle","protocol","_this4","freshToken","freshHeader","mergedHeaders","ucFirst","toUpperCase","primaryInverseColor","primaryColor","secondaryColor","secondaryInverseColor","textLight","warningColor","textWarning","brandColor","errorColor","successColor","capitalizeFirstLetter","slice","_Select","_Alert","usageRightsValues","own_copyright","used_by_permission","public_domain","fair_use","creative_commons","creativeCommonsLicenses","cc_by_nc_nd","cc_by_nc_sa","cc_by_nc","cc_by_nd","cc_by_sa","cc_by","UsageRightsForm","handleUsageRight","usageRight","handleCCLicense","ccLicense","handleCopyrightHolder","copyrightHolder","isNotSelected","isCreativeCommons","placeholder","_objectWithoutPropertiesLoose","excluded","sourceKeys","getChildMapping","mergeChildMappings","prev","next","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","requestPage","receivePage","failPage","fetchNextPage","fetchInitialPage","page","dispatch","getState","_getState","collections","collection","React","getRenderStack","renderStack","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactDebugCurrentFrame","getStackAddendum","logWithRenderStack","level","condition","_console","info","_console2","assert","_console3","debug","_console4","log","_console5","noop","_i","compose","fa","fb","constant","identity","x","curry","fn","initialArgs","restArgs","all","not","f","die","never","always","never$1","always$1","none","NONE","eq","o","isNone","call$$1","thunk","n","noop$$1","nul","undef","me","fold","s","isSome","getOr","getOrThunk","getOrDie","getOrNull","getOrUndefined","or","orThunk","ap","each","flatten","exists","forall","equals","equals_","freeze","some","a","constant_a","v","optfab","fab","elementEq","b","from","Option","typeOf","isPrototypeOf","String","isType","isString","isObject","isArray","isNull","isBoolean","isFunction","isNumber","rawIndexOf","pIndexOf","fastIndex","xs","slowIndex","slowIndexOf","r","contains","pred","findIndex","eachr","partition","pass","fail","arr","foldr","acc","foldl","find","output","reverse","difference","a1","a2","mapToObject","sort","comparator","copy","head","last","from$1","Global","Function","path","p","unsafe","actual","Global$1","createObjectURL","blob","revokeObjectURL","u","URL","nav","navigator","userAgent","opera","ie","ie11","ie12","mac","iDevice","android","fileApi","phone","tablet","windowsPhone","matchMediaQuery","matchMedia","test","appName","contentEditable","parseInt","Env","iOS","transparentSrc","caretAfter","getSelection","documentMode","ceFalse","cacheSuffix","container","overrideViewPort","experimentalShadowDom","canHaveCSP","desktop","promise","thisArg","_state","_value","_deferreds","doResolve","reject","asap","immediateFn","setImmediate","handle","deferred","onFulfilled","onRejected","ret","newValue","finale","Handler","done","reason","ex","remaining","val","race","promiseObj","requestAnimationFramePromise","requestAnimationFrame$$1","callback","requestAnimationFrameFunc","requestAnimationFrame","vendors","featurefill","wrappedSetTimeout","time","wrappedSetInterval","setInterval","wrappedClearTimeout","wrappedClearInterval","clearInterval","debounce","timer","stop","Delay","setEditorTimeout","removed","setEditorInterval","throttle","eventExpandoPrefix","mouseEventRe","deprecated","keyLocation","layerX","layerY","returnValue","webkitMovementX","webkitMovementY","keyIdentifier","hasIsDefaultPrevented","event$$1","isDefaultPrevented","returnTrue","returnFalse","addEvent","name$$1","capture","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","getTargetFromShadowDom","defaultTarget","composedPath","fix","originalEvent","srcElement","pageX","clientX","eventDoc","ownerDocument","doc","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","preventDefault","stopPropagation","isPropagationStopped","cancelBubble","stopImmediatePropagation","isImmediatePropagationStopped","metaKey","bindOnReady","win","eventUtils","domLoaded","isDocReady","readyState","readyHandler","waitForDomLoaded","tryScroll","doScroll","top","EventUtils","self$$1","expando","hasFocusIn","hasMouseEnterLeave","mouseEnterLeave","events","Date","mouseenter","mouseleave","executeHandlers","evt","callbackList","l","names","fakeName","nativeHandler","defaultNativeHandler","nodeType","current","related","currentTarget","relatedTarget","parentNode","unbind","ci","eventMap","fire","defaultView","parentWindow","getElementsByTagName","destroy","cancel","Event","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document$1","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains$1","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","strundefined","MAX_NEGATIVE","hasOwn","pop","push_native","push$1","slice$1","indexOf$1","booleans","whitespace","identifier","attributes","pseudos","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","els","j","Sizzle","results","seed","m","groups","old","nid","newContext","newSelector","getElementById","getElementsByClassName","qsa","toSelector","testContext","querySelectorAll","qsaError","cacheLength","shift","markFunction","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","hasCompare","parent$$1","getTop","getById","attrId","tag","tmp","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","bp","unshift","expr","elements","matchesSelector","attrHandle","getAttributeNode","specified","uniqueSort","duplicates","detectDuplicates","sortStable","splice","nodeValue","selectors","createPseudo","relative","first","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","outerCache","nodeIndex","useCache","lastChild","pseudo","setFilters","matched","unmatched","innerText","lang","elemLang","hash","activeElement","hasFocus","tabIndex","enabled","selectedIndex","empty","header","button","length$$1","even","odd","lt","gt","nth","radio","checkbox","password","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","isArray$1","each$1","map$1","out","item","filter$1","indexOf$2","reduce","iteratee","accumulator","findIndex$1","predicate","find$1","last$1","ArrUtils","whiteSpaceRegExp","makeMap","items","delim","sp","ns","cn","scn","c","de","createNS","onCreate","extend","static","ext","walk","resolve$1","explode","_addCacheSuffix","grep","inArray","push$2","slice$2","rquickExpr$1","Event$$1","skipUniques","isDefined","isString$1","isWindow","createFragment","html","fragDoc","frag","createDocumentFragment","innerHTML","appendChild","domManipulate","targetNodes","sourceItem","getElementDocument","DomQuery","makeArray","wrapper","lastParent","newWrapper","cloneNode","numericCssMap","booleanMap","propFix","for","class","readonly","cssFix","float","attrHooks","cssHooks","whiteSpaceRegExp$1","trim$1","each$2","unique","hook","removeAttr","css","elm","camel","dashed","currentStyle","getPropertyValue","remove","prepend","appendTo","prependTo","replaceWith","wrapAll","wrapInner","contents","unwrap","clone","addClass","toggleClass","removeClass","existingClassName","classState","off","trigger","show","hide","closest","docElm","pos","y","getBoundingClientRect","left","until","sibling","siblingName","firstSibling","parents","contentDocument","contentWindow","parentsUntil","nextUntil","prevUntil","overrideDefaults","sub","appendHooks","targetHooks","hooks","maxlength","maxLength","size","opacity","zoom","called","firstMatch","regexes","find$2","agent","major","minor","group","Number","nu","detect","versionRegexes","cleanedAgent","unknown","Version","edge","chrome","ie$1","opera$1","firefox","safari","isBrowser","unknown$1","nu$1","isEdge","isChrome","isIE","isOpera","isFirefox","isSafari","Browser","windows","ios","android$1","linux","osx","solaris","freebsd","isOS","unknown$2","nu$2","isWindows","isiOS","isAndroid","isOSX","isLinux","isSolaris","isFreeBSD","OperatingSystem","DeviceType","os","browser","isiPad","isiPhone","isAndroid3","isAndroid4","isTablet","isTouch","isPhone","iOSwebview","isWebView","detect$1","candidates","candidate","detectBrowser","browsers","detectOs","oses","UaString","contains$2","trim$2","lTrim","rTrim","normalVersionRegex","checkContains","uastring","monstrosity","PlatformInfo","detect$2","deviceType","PlatformDetection","detect$3","PlatformDetection$1","fromHtml","div","hasChildNodes","fromDom","fromTag","fromText","createTextNode","fromPoint","elementFromPoint","Element$$1","Node","ATTRIBUTE_NODE","CDATA_SECTION_NODE","COMMENT_NODE","DOCUMENT","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","ELEMENT","ELEMENT_NODE","TEXT","TEXT_NODE","PROCESSING_INSTRUCTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","NOTATION_NODE","isType$1","isElement","isText","hasOwnProperty$1","each$3","k","map$2","tupleMap","tuple","bifilter","branch","rawSet","value$$1","setAll","get$1","has$1","hasAttribute","inBody","isSupported","internalSet","property","setAll$1","get$2","getUnsafeProperty","getRaw","Immutable","fields","struct","toArray$1","recurse","Recurse","documentPositionPreceding","DOCUMENT_POSITION_PRECEDING","documentPositionContainedBy","DOCUMENT_POSITION_CONTAINED_BY","Node$1","ELEMENT$1","DOCUMENT$1","is$1","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","bypassSelector","childElementCount","one","e1","e2","regularContains","d1","d2","ieContains","contains$3","owner","isRoot","rawParent","prevSibling","previousSibling","prevSiblings","nextSiblings","childNodesCount","browser$1","firstElement","getTableCaptionDeltaY","caption","bodyTop","offsetTop","captionTop","captionHeight","offsetHeight","getPos","rootElm","offsetParent$$1","offsetLeft","offsetParent","Position","nu$3","baseFn","callbacks","map$$1","nCallback","isReady","run","cbs","pure$1","LazyValue","pure","bounce","nu$4","aFutureB","anonBind","futureB","toLazy","toCached","pure$2","Future","par","asyncValues","asyncValue","par$1","futures","value$1","opt","mapError","onValue","toOption","isValue","isError","onError","Result","StyleSheetLoader","document$$1","settings","idCount","loadedStates","maxLoadTime","appendToHead","load","loadedCallback","errorCallback","startTime","passed","failed","isOldWebKit","webKitChunks","wait","testCallback","waitCallback","getTime","waitForWebKitLinkLoaded","styleSheets","ownerNode","owningElement","waitForGeckoLinkLoaded","cssRules","sheet","rel","async","defer","contentCssCors","crossOrigin","onload","onerror","loadF","unbox","loadAll","urls","success","failure","TreeWalker","startNode","findSibling","startName","shallow","findPreviousNode","prev2","blocks","voids","tableCells","tableSections","textBlocks","headings","listItems","lists","wsElements","lazyLookup","lookup","isHeading","isBlock","isInline","isBr","isTextBlock","isList","isListItem","isVoid","isTableSection","isTableCell","isWsPreserveElement","isNodeType","isElement$1","matchNodeNames","matchStyleValues","cssValue","computed","hasPropValue","propName","propValue","attrName","attrValue","hasAttributeValue","isBogus","isBogusAll","isTable","tagName","hasContentEditableState","isText$1","isComment$1","isDocument$1","isBr$1","isContentEditableTrue","isContentEditableFalse","NodeType","isComment","isDocument","surroundedBySpans","previousIsSpan","nextIsSpan","isBookmarkNode","trimNode","trimmedLength","TrimNode","makeMap$1","namedEntities","baseEntities","reverseEntities","attrsCharsRegExp","textCharsRegExp","rawCharsRegExp","entityRegExp","asciiMap","128","130","131","132","133","134","135","136","137","138","139","140","142","145","146","147","148","149","150","151","152","153","154","155","156","158","159","'","nativeDecode","buildEntitiesLookup","radix","chr","entity","encodeRaw","encodeAllRaw","encodeNumeric","charCodeAt","encodeNamed","entities","getEncodeFunc","entitiesMap","encodeNamedAndNumeric","encodeCustomNamed","nameMap","named","numeric","Entities","mapCache","dummyObj","makeMap$2","each$4","extend$1","explode$1","inArray$1","compileSchema","schema","globalAttributes","blockContent","phrasingContent","flowContent","html4BlockContent","html4PhrasingContent","ni","attributesOrder","arrayToMap","addAttrs","schemaItem","table","script","compileElementMap","mode","Schema","patternElements","validStyles","invalidStyles","schemaItems","whiteSpaceElementsMap","selfClosingElementsMap","shortEndedElementsMap","boolAttrMap","validClasses","blockElementsMap","nonEmptyElementsMap","moveCaretBeforeOnEnterElementsMap","textBlockElementsMap","textInlineElementsMap","customElementsMap","specialElements","createLookupTable","option","defaultValue","extendWith","verify_html","valid_elements","valid_styles","invalid_styles","valid_classes","special","patternToRegExp","addValidElements","validElements","ei","ai","al","attrData","elementName","attrType","outputName","globalAttributesOrder","elementRuleRegExp","attrRuleRegExp","hasPatternsRegExp","paddEmpty","removeEmpty","removeEmptyAttrs","attributesRequired","required","attributesDefault","attributesForced","forcedValue","validValues","attributePatterns","setValidElements","addCustomElements","customElements","customElementRegExp","text_block_elements","block_elements","cloneName","customRule","elmName","addValidChildren","validChildren","childRuleRegExp","getElementRule","custom_elements","valid_children","extended_valid_elements","dd","dt","li","td","th","tr","tbody","thead","tfoot","legend","area","param","parentsRequired","invalid_elements","getValidStyles","getInvalidStyles","getValidClasses","getBoolAttrs","getBlockElements","getTextBlockElements","getTextInlineElements","getShortEndedElements","getSelfClosingElements","getNonEmptyElements","getMoveCaretBeforeOnEnterElements","getWhiteSpaceElements","getSpecialElements","isValidChild","isValid","attrPatterns","getCustomElements","toHex","g","hex","Styles","rgbRegExp","urlOrStrRegExp","styleRegExp","trimRightRegExp","encodingLookup","encodingItems","invisibleChar","isEncoded","urlConverter","url_converter","urlConverterScope","url_converter_scope","compress","noJoin","right","bottom","box","canCompress","compress2","keepSlashes","decodeSingleHexSequence","escSeq","decodeHexSequences","processUrl","url2","url3","str2","allow_script_urls","scriptUrl","allow_svg_data_urls","border","serialize","serializeStyles","styleList","styleMap","each$5","grep$1","simpleSelectorRe","whiteSpaceRegExp$2","setupAttrHooks","keepValues","keep_values","keepUrlHook","$elm","src","updateInternalStyleAttr","rawValue","findNodeIndex","normalized","lastNodeType","DOMUtils","addedStyles","counter","stdMode","boxModel","styleSheetLoader","boundEvents","ownEvents","proxy","getRoot","getElementsByName","$$","defaultVal","getAttribs","setAttrib","originalValue","onSetAttrib","attrElm","deep","clone_1","root_element","getViewPort","argWin","actWin","pageXOffset","pageYOffset","w","innerWidth","clientWidth","h","innerHeight","clientHeight","setStyle","update_styles","setStyles","stylesArg","getStyle","getSize","offsetWidth","getRect","elms","getParents","collect","selectorVal","_findSib","getNext","getPrev","setAttribs","setHTML","canHaveHTML","parentElm","newElm","createHTML","outHtml","keepChildren","$node","removeAllAttribs","removeAttributeNode","parseStyle","serializeStyle","addStyle","styleElm","DOM","loadCSS","uniqueId","getOuterHTML","outerHTML","setOuterHTML","insertAfter","reference","referenceNode","oldElm","replaceChild","rename","attrNode","findCommonAncestor","pe","ps","rgbVal","isEmpty","walker","brCount","bogusVal","createRng","splitElm","replacementElm","bef","aft","pa","setStart","setEnd","extractContents","getContentEditable","getContentEditableParent","isChildOf","dumpRng","startOffset","endOffset","DOMUtils$1","each$6","grep$2","isFunction$1","ScriptLoader","QUEUED","LOADING","LOADED","FAILED","states","queue","scriptLoadedCallbacks","queueLoadedCallbacks","loadScript","onreadystatechange","isDone","markDone","loadQueue","loadScripts","scripts","failures","execCallbacks","loadingScripts","notifyCallbacks","each$7","AddOnManager","_listeners","dependencies","requireLangPack","languages","languageLoad","addOn","listener","createUrl","baseUrl","dep","resource","addComponents","pluginName","pluginUrl","loadDependencies","addOnUrl","deps","newUrl","urlString","baseURL","waitFor","ThemeManager","marker","firstChild$$1","wrap$1","before$1","append$1","rogue","remove$2","children$$1","first$1","rate","last$3","Cell","initial","read","remove$3","classList","get$3","add$1","clazz","remove$4","add$2","cleanClass","remove$5","has$2","descendants","descendants$1","ClosestOrAncestor","ancestor","ancestor$1","descendant$1","closest$1","annotation","dataAnnotation","dataAnnotationId","identify","annotationName","rng","getBody","an","newStart","getAttr","findMarkers","isAnnotation","findAll","markers","directory","nodesAlready","changeCallbacks","initData","listeners","withCallbacks","updateCallbacks","callbackMap","outputData","fireCallbacks","fireNoAnnotation","onNodeChange","annotations","_a","addListener","setup$1","identifyParserNode","span","optAnnotation","addNodeFilter","spans","persistent","create$1","register","__rest","generate","date","floor","add$3","clone$1","original","fromHtml$1","get$5","set$2","owner$$1","docDom","fragment","contentElements","ZWSP","isZwsp","trim$3","Zwsp","isElement$2","isText$2","isCaretContainerBlock","isCaretContainerInline","isCaretContainer","hasContent","insertInline","textNode","endsWithCaretContainer","splitText","startsWithCaretContainer","isBeforeInline","isAfterInline","createBogusBr","br","insertBlock","blockName","blockNode","trimBogusBr","brs","lastBr","showCaretContainerBlock","caretContainer","isRangeInCaretContainerBlock","isContentEditableTrue$1","isContentEditableFalse$1","isBr$2","isText$3","isInvalidTextElement","isAtomicInline","isTable$1","isCaretContainer$1","isCaretCandidate","isNonUiContentEditableFalse","isUnselectable","isInEditable","isAtomicContentEditableFalse","isAtomic","isEditableCaretCandidate","round","clone$2","rect","height","collapse","toStart","isEqual","rect1","rect2","isValidOverflow","overflowY","min","isAbove","isBelow","containsXY","overflowX","outer","inner","getOverflow","getSelectedNode","extendingChars","isExtendingChar","ch","liftN","slice$3","and","Predicate","isElement$3","isCaretCandidate$1","isBlock$1","isFloated","isValidElementCaretCandidate","isNotPre","isText$4","isBr$3","resolveIndex","isWhiteSpace","isRange","isHiddenWhiteSpaceRange","range$$1","getBrClientRect","brNode","nbsp","clientRect","getBoundingClientRectWebKitText","sc","ec","so","eo","newRng","cloneRange","setEndAfter","isZeroRect","clientRects","getClientRects","collapseAndInflateWidth","newClientRect","getCaretPositionClientRects","caretPosition","beforeNode","addUniqueAndValidRect","addCharacterOffset","isAtEnd","CaretPosition","isAtStart","toRange","isVisible","isEqual$$1","getNode$$1","fromRangeStart","fromRangeEnd","pos1","pos2","isTextPosition","isElementPosition","CaretPosition$1","isText$5","isBogus$1","nodeIndex$1","normalizedParent","getChildNodes","normalizedTextOffset","equal$1","normalizedNodeIndex","numTextFragments","createPathItem","create$2","outputOffset","resolvePathItem","findTextPosition","dataLen","targetOffset","resolve$2","isContentEditableFalse$2","getNormalizedTextOffset","trimmedOffset","getPoint","point","max","getLocation","isCollapsed","trimEmptyTextNode","findIndex$3","moveEndPoint","normalizeTableCellSelection","findAdjacentContentEditableFalseElm","getOffsetBookmark","getCaretBookmark","getRangeBookmark","createBookmarkSpan","filled","getPersistentBookmark","collapsed","rng2","endBookmarkNode","insertNode","startBookmarkNode","moveToBookmark","keep","getBookmark","GetBookmark","getUndoBookmark","CARET_ID","isCaretNode","getParentCaretContainer","isElement$4","isText$6","removeNode","getNodeValue","setNodeValue","trimCount","trimmedText","removeUnchanged","remove$7","removeTextAndReposition","removeElementAndReposition","newPosition","removeTextCaretContainer","removeElementCaretContainer","removeAndReposition","caretContainerNode","CaretContainerRemove","browser$2","isContentEditableFalse$3","isTableCell$1","getAbsoluteClientRect","scrollX","scrollY","rootRect","trimInlineCaretContainers","contentEditableFalseNodes","deleteData","FakeCaret","lastVisualCaret","cursorInterval","caret","caretState","startBlink","reposition","getCss","isFakeCaretTableBrowser","isFakeCaretTarget","is$3","expected","isNbsp","isWhiteSpace$1","isContent","isContentEditableFalse$4","isBlockLike","isCaretContainer$2","isCaretContainerBlock$1","isElement$5","isCaretCandidate$2","isForwards","direction","isBackwards","skipCaretContainers","findNode","predicateFn","getParentBlock","isInSameBlock","caretPosition1","caretPosition2","getChildNodeAtRelativeOffset","relativeOffset","beforeAfter","setStartBefore","setEndBefore","setStartAfter","isNodesInSameBlock","node1","node2","lean","before$2","after$2","normalizeRange","leanLeft","leanRight","isNextToContentEditableFalse","isNextToTable","getRelativeCefElm","getNormalizedRangeEndPoint","normalizedRange","isBeforeContentEditableFalse","isAfterContentEditableFalse","isBeforeTable","isAfterTable","isChar","delta","isBeforeSpace","isAfterSpace","getElementFromPosition","getElementFromPrevPosition","HDirection","isContentEditableFalse$5","isText$7","isElement$6","isBr$4","isCaretCandidate$3","isAtomic$1","isEditableCaretCandidate$1","nodeAtIndex","getCaretCandidatePosition","moveForwardFromBr","nextNode","findCaretPosition","Forwards","startPos","innerNode","rootContentEditableFalseElm","CaretWalker","Backwards","walkToPositionIn","position","fromPosition","afterElement","isBeforeOrStart","isAfterOrEnd","isBeforeAfterSameElement","to","isAtBr","shouldSkipPosition","navigate","positionIn","nextPosition","prevPosition","CaretFinder","firstPositionIn","lastPositionIn","isStringPathBookmark","isRangeBookmark","isIdBookmark","isIndexBookmark","isPathBookmark","addBogus","resolveCaretPositionBookmark","insertZwsp","tryFindRangePosition","padEmptyCaretContainer","setEndPoint","isValidTextNode","restoreEndPoint","appendData","alt","o1","o2","resolvePaths","resolveId","endPos","spos","epos","resolveIndex$1","selectNode","resolve$3","ResolveBookmark","getBookmark$1","isBookmarkNode$1","Bookmarks","isInlineBlock","moveStart","isWhiteSpaceNode","getNonWhiteSpaceSibling","inc","isTextBlock$1","replaceVars","isEq","str1","normalizeStyleValue","getTextDecoration","decoration","getParents$1","FormatUtils","isBookmarkNode$2","getParents$2","isWhiteSpaceNode$1","isTextBlock$2","findLeaf","excludeTrailingWhitespace","leaf","isBogusBr","findParentContentEditable","findSpace","findWordEndPoint","lastTextNode","findSelectorEndPoint","curFormat","findBlockEndPoint","block","scopeRoot","findParentContainer","block_expand","expandRng","endPoint","expand","ExpandRange","each$8","getEndChild","walk$1","startPoint","siblings","collectSiblings","endNode","findEndPoint","walkBoundary","RangeWalk","zeroWidth","NodeValue","getOption","getOptionIE10","getOptionSafe","api","get$6","isZeroWidth","wrapName","shouldApplyToTrailingSpaces","applyWordGrab","makeAnnotation","eDoc","decorate","_b","master","_c","_d","_e","annotate","newWrappers","getDoc","finishWrapper","getOrOpenWrapper","processElements","processElement","ctx","processNodes","annotateWithBookmark","undoManager","transact","initialRng","Annotator","changes","annotationChanged","getAll","hasOnlyOneChild","isPaddingNode","isPaddedEmptyBlock","blockElements","isEmptyFragmentElement","nonEmptyElements","isListFragment","cleanupDomFragment","domFragment","toDomFragment","listItems$1","isPadding","isListItemPadded","isEmptyOrPadded","trimListItems","getParentLi","parentBlock","isParentBlockLi","getSplit","beforeRng","afterRng","cloneContents","findFirstIn","caretPos","caretWalker","newCaretPos","findLastOf","insertMiddle","insertAtCaret","liTarget","liElms","BEGINNING","END","isAt","newPos","InsertList","each$9","ElementUtils","attribs","compareObjects","obj1","obj2","getLastChildren","rawNode","removeTrailingBr","allBrs","fillWithPaddingBr","isPaddingContents","isPaddedElement","trimBlockTrailingBr","lastChild$$1","lastChildPrevSibling","PaddingBr","makeMap$3","Writer","indent","indentBefore","indentAfter","htmlOutput","indent_before","indent_after","entity_encoding","element_format","cdata","comment","pi","doctype","Serializer","writer","validate","handlers","3","8","7","10","4","11","handler","sortedAttrs","elementRule","shortEnded","createRange$1","normalizeBlockSelectionRange","commonAncestorContainer","newEndPos","normalize","RangeNormalizer","isAfterNbsp","trimOrPadLeftRight","hasSiblingText","trimNbspAfterDeleteAndPadValue","isTableCell$2","selectionSetContent","insertData","setContent","validInsertion","trimBrsFromTableCell","reduceInlineTextElements","merge","textInlineElements","root_1","elementUtils_1","testNode","markFragmentElements","umarkFragmentElements","isPartOfFragment","canHaveChildren","moveSelectionToMarker","parentEditableFalseElm","nextRng","getContentEditableFalseParent","scrollIntoView","findNextCaretRng","insertHtmlAtCaret","details","bookmarkHtml","paste","caretElement","parentElement","parserArgs","insert","_selectionOverrides","showBlockCaretContainer","invalid","getStart","addVisual","processValue","insertAtCaret$1","InsertContent","sectionResult","detection","mobilePlugins","defaultMobileSettings","normalizePlugins","pluginNames","trimmedPlugins","filterMobilePlugins","extractSections","keys$$1","getSection","sections","sectionSettings","hasSection","getDefaultSettings","documentBaseUrl","delta_width","delta_height","popup_css","document_base_url","add_form_submit_trigger","submit_patch","add_unload_trigger","convert_urls","relative_urls","remove_script_host","object_resizing","visual","font_size_style_values","font_size_legacy_values","forced_root_block","hidden_input","render_ui","indentation","inline_styles","convert_fonts_to_spans","convertURL","ie7_compat","getExternalPlugins","overrideSettings","userDefinedExternalPlugins","external_plugins","combinePlugins","forcedPlugins","processPlugins","isTouchDevice","defaultOverrideSettings","forced_plugins","platformPlugins","combinedPlugins","isOnMobile","combineSettings","defaultSettings","extendedSettings","content_editable","getEditorSettings","getFiltered","getString","getParamObject","isArrayOf","strongRtl","hasStrongRtl","isInlineTarget","isRtl","findInlineParents","findRootInline","hasSameParentBlock","block1","block2","isAtZwsp","normalizePosition","normalizeForwards","normalizeBackwards","InlineUtils","isBeforeRoot","getParentBlock$1","placeCaretInEmptyBody","setCursorLocation","paddEmptyBody","willDeleteLastPositionInElement","fromPos","firstPos","lastPos","normalizedFirstPos","normalizedLastPos","normalizedFromPos","nextPos","prevPos","DeleteUtils","ancestor$2","hasWhitespacePreserveParent","rootElement","isWhitespace","isNamedAnchor","isContent$1","isBookmark","isBogus$2","isBogusAll$1","isEmptyNode","targetNode","isEmpty$1","Empty","BlockPosition","BlockBoundary","getBlockPosition","containerElm","isDifferentBlocks","blockBoundary","hasSameParent","parent1","parent2","isEditable","skipLastBr","blockPosition","lastPositionInBlock","readFromRange","fromBlockPos","toBlockPos","blockPos","read$1","BlockMergeBoundary","dropLast","parentsUntil$1","parents$1","parentsAndSelf","Parents","getChildrenUntilBlockBoundary","extractChildren","removeEmptyRoot","parents$$1","isEmptyBefore","nestedBlockMerge","fromBlock","toBlock","insertionPoint","child$$1","sidelongBlockMerge","findInsertionPoint","getInsertionPoint","trimBr","mergeBlockInto","mergeBlocks","MergeBlocks","backspaceDelete","BlockBoundaryDelete","deleteRangeMergeBlocks","deleteContents","isRawNodeInTable","isSelectionInTable","isEverythingSelected","noPrevious","noNext","emptyEditor","deleteRange","backspaceDelete$1","BlockRangeDelete","generate$1","cases","constructors","adt","acase","argLength","branches","branchKeys","allReqd","reqKey","params","Adt","isBr$5","findBr","parentBlocks","isBeforeBr","isAfterBr","findPreviousBr","findNextBr","isCompoundElement","DeleteAction","moveToElement","moveToPosition","isAtContentEditableBlockCaret","caretLocation","isDeleteFromCefDifferentBlocks","inSameBlock","deleteEmptyBlockOrMoveToCef","toCefElm","blockElm","findCefPosition","getContentEditableBlockAction","skipMoveToActionFromInlineCefToContent","deleteAction","getContentEditableAction","read$2","isCollapsibleWhitespace","normalizeContent","isStartOfContent","isEndOfContent","previousCharIsSpace","normalize$1","replaceData","normalizeWhitespaceAfter","whitespaceCount","normalizeWhitespaceBefore","mergeTextNodes","prevNode","normalizeWhitespace","whitespaceOffset","needsReposition","beforeOrStartOf","afterOrEndOf","getPreviousSiblingCaretPosition","getNextSiblingCaretPosition","findCaretPositionBackwardsFromElm","startPosition","findCaretPositionForwardsFromElm","findCaretPositionBackwards","findCaretPositionForward","findCaretPosition$1","findCaretPosOutsideElmAfterDelete","setSelection","eqRawNode","isBlock$2","paddEmptyBlock","deleteNormalized","afterDeletePosOpt","prevTextOpt","nextTextOpt","isInlineElement","deleteElement","moveCaret","afterDeletePos","normalizedAfterDeletePos","paddPos","DeleteElement","deleteElement$1","hideFakeCaret","backspaceDeleteCaret","deleteOffscreenSelection","backspaceDeleteRange","selectedElement","getContentEditableRoot","paddEmptyElement","ceRoot","backspaceDelete$2","CefDelete","isText$8","startsWithCaretContainer$1","endsWithCaretContainer$1","createZwsp","insertBefore$1","newNode","insertAfter$1","insertInline$1","insertInlineBefore","insertInlineAfter","insertInlinePos","isPosCaretContainer","caretNode","renderCaret","BoundaryCaret","evaluateUntil","fns","LazyEvaluator","Location","rescope","before$3","nPos","isNotInsideFormatCaretContainer","findInsideRootInline","after$3","isValidLocation","readLocation","getName","outside","inside","isEq$1","location1","location2","betweenInlines","fromInline","toInline","skipNoMovement","fromLocation","toLocation","findLocationTraverse","findLocationSimple","findLocation","BoundaryLocation","prevLocation","nextLocation","hasSelectionModifyApi","getSel","modify","moveRel","moveByWord","WordSelection","setCaretPosition","isFeatureEnabled","inline_boundaries","setSelected","renderCaretLocation","findLocation$1","toggleInlines","selectedInlines","targetInlines","safeRemoveCaretContainer","composing","renderInsideInlineCaret","inlines","move","moveWord","setupSelectedState","moveNextWord","movePrevWord","BoundarySelection","isFeatureEnabled$1","rangeFromPositions","hasOnlyTwoOrLessPositionsLeft","setCaretLocation","location$$1","deleteFromTo","ignore","nodeChanged","rescope$1","backspaceDeleteCollapsed","toPosition","backspaceDelete$3","InlineBoundaryDelete","tableCellRng","tableSelection","removeTable","emptyCells","isRootFromElement","getClosestCell","getClosestTable","cell","isExpandedCellRng","cellRng","getTableFromCellRng","startParentTable","endParentTable","getTableCells","getCellRangeFromStartTable","endCell","partialSelection","startCell","isWithinSameTable","getCellRng","getTableSelectionFromCellRng","getTableSelectionFromRng","getCellIndex","cells","getSelectedCells","startIndex","endIndex","getAction","getActionFromCells","getActionFromRange","TableDeleteAction","getRanges","ranges","rangeCount","getRangeAt","getSelectedNodes","hasMultipleRanges","MultiRange","getCellsFromRanges","getCellsFromElement","selectedCells","getCellsFromElementOrRanges","rangeCells","getCellsFromEditor","TableCellSelection","deleteTableElement","deleteCellRange","deleteCaptionRange","emptyElement","deleteTableRange","startElm","getParentCaption","deleteRange$1","getParentCell","deleteBetweenCells","fromCell","toCell","isDeleteOfLastCharPos","fromCaption","last$$1","emptyCaretCaption","validateCaretCaption","toCaption","deleteCaretInsideCaption","deleteCaretCells","deleteCaretCaption","deleteCaret","backspaceDelete$4","TableDelete","nativeCommand","command","deleteCommand","forwardDeleteCommand","DeleteCommands","getBodySetting","bodyObj","getIframeAttrs","getDocType","getDocumentBaseUrl","getBodyId","getBodyClass","getContentSecurityPolicy","shouldPutBrInPre","getForcedRootBlock","getForcedRootBlockAttrs","getBrNewLineSelector","getNoNewLineSelector","shouldKeepStyles","shouldEndContainerOnEmptyBlock","getFontStyleValues","getFontSizeClasses","getImagesDataImgFilter","isAutomaticUploadsEnabled","shouldReuseFileName","shouldReplaceBlobUris","getImageUploadUrl","getImageUploadBasePath","getImagesUploadCredentials","getImagesUploadHandler","shouldUseContentCssCors","getSpecifiedFontProp","getProperty","round$1","number","precision","factor","pow","toPt","normalizeFontFamily","getComputedFontProp","getFontProp","FontInfo","getFontSize","getFontFamily","findFirstCaretElement","isRangeAtStartOfNode","getCaretElement","fromFontSizeNumber","fontSizeNumber","fontSizes","fontClasses","fontNameAction","formatter","toggle","fontNameQuery","fontSizeAction","fontSizeQuery","isEq$2","rng1","RangeCompare","findParent","hasParent","hasParentWithName","isTable$2","isTableCell$3","isCeFalseCaretContainer","hasBrBeforeAfter","isPrevNode","hasContentEditableFalseParent","findTextNodeRelative","isAfterNode","lastInlineElement","parentBlockContainer","normalizeEndPoint","directionLeft","normalize$2","normRng","NormalizeRange","hasRightSideContent","scrollToBr","brElm","moveSelectionToBr","extraBr","insertBrAtCaret","isAfterLastNodeInContainer","containerBlock","containerBlockName","isControlKey","ctrlKey","insertBrBefore","insertBrAfter","hasBrAfter","isBeforeBr$1","isAnchorLink","isInsideAnchor","readInlineAnchorLocation","insertBrOutsideAnchor","anchorLocation","InsertBr","type$1","domRange","exact","range$1","browser$3","clamp","normalizeRng","soffset","finish","foffset","isOrContains","isRngInRoot","shouldStore","nativeRangeToSelectionRange","readRange","getBookmark$2","bookmarkToNativeRng","store","newBookmark","storeNative","restore","SelectionBookmark","indentElement","useMargin","unit","indentStyleName","styleValue","isListComponent","parentIsListComponent","getBlocksToIndent","getSelectedBlocks","indentUnit","indentValue","queryCommandState","each$a","extend$2","map$3","inArray$2","EditorCommands","commands","ui","customCommand","skip_focus","quirks","queryCommandValue","addCommands","commandList","queryCommandSupported","addQueryStateHandler","addQueryValueHandler","hasCustomCommand","execNativeCommand","isFormatMatch","toggleFormat","storeSelection","restoreSelection","queryCommandEnabled","translate","notificationManager","open","align","listElm","listParent","hasVisual","anchor","editingHost","selectNodeContents","alignStates","matchNode","paddingLeft","list","Undo","undo","Redo","redo","nativeEvents","Dispatcher","toggleEvent","bindings","beforeFire","once","extra","bindingName","hi","isNative","getEventDispatcher","_eventDispatcher","toggleNativeEvent","Observable","bubble","hasEventListeners","firePreProcess","firePostProcess","fireRemove","fireSwitchMode","fireObjectResizeStart","fireObjectResized","Events","setEditorCommandState","toggleReadOnly","controlSelection","hideResizeRect","setMode","getMode","initialized","isReadOnly","DOM$1","customEventRootDelegates","getEventTarget","eventName","event_root","eventRoot","isListening","hidden","fireEvent","bindEventDelegate","eventRootElm","delegate","delegates","editorManager","activeEditor","editors","EditorObservable","bindPendingEventDelegates","_pendingNativeEvents","unbindAllNativeEvents","getWin","getContainer","EditorObservable$1","each$b","explode$2","keyCodeLookup","f9","f10","f11","modifierNames","Shortcuts","shortcuts","pendingPatterns","parseShortcut","shortcut","keyCode","charCode","access","ctrl","meta","createShortcut","cmdFunc","subpatterns","hasModifier","altKey","isFunctionKey","matchShortcut","shiftKey","executeShortcutAction","_doc","getContentEditableHost","getCollapsedNode","getFocusInElement","normalizeSelection","focusBody","setActive","hasElementFocus","hasIframeFocus","hasInlineFocus","rawBody","hasFocus$1","focusEditor","refreshContentEditable","contentEditableHost","activateEditor","bookmarkRng","focus$1","skipFocus","EditorFocus","getProp","rawElm","getComputedSizeProp","getClientWidth","getClientHeight","getMarginTop","getMarginLeft","getBoundingClientRect$1","isInsideElementContentArea","bodyElm","transpose","deltaX","deltaY","isXYInContentArea","targetElm","transposedPoint","fromDomSafe","isEditorAttachedToDom","rawContainer","getContentAreaContainer","EditorView","NotificationManagerImpl","unimplemented","close","getArgs","NotificationManager","notifications","getImplementation","getNotificationManagerImpl","getTopNotification","progressBar","timeout","addNotification","notification","closeNotification","otherNotification","getNotifications","registerEvents","serviceMessage","service_message","WindowManagerImpl","alert","confirm","getParams","setParams","WindowManager","getWindowManagerImpl","funcBind","fireOpenEvent","fireCloseEvent","addWindow","closeWindow","otherWindow","getTopWindow","getWindows","resolvePluginName","targetUrl","matchUrl","pluginUrlToMessage","plugin","displayNotification","displayError","_skinLoaded","uploadError","pluginLoadError","initError","console$$1","ErrorReporter","PluginManager$1","XMLHttpRequest","Uploader","uploadStatus","pendingPromises","pathJoin","path1","path2","defaultHandler","blobInfo","progress","xhr","formData","withCredentials","upload","onprogress","loaded","total","responseText","basePath","filename","send","noUpload","handlerSuccess","handlerFailure","resolvePending","blobUri","uploadBlobInfo","openNotification","markPending","closeNotification_1","markUploaded","removeFailed","percent","isDefaultHandler","pendingUploadBlobInfo","uploadBlobs","blobInfos","isUploaded","isPending","FileReader","Uint8Array","requestAnimationFrame$1","atob","base64","Window","blobUriToBlob","rejectWithError","responseType","parseDataUri","uriParts","decodeURIComponent","dataUriToBlob","Blob","uriToBlob","blobToDataUri","reader","onloadend","readAsDataURL","Conversions","imageToBlobInfo","blobCache","img","getByUri","dataUri","findFirst","cachedBlobInfo","getAllImages","ImageScanner","cachedPromises","promises","imageInfo","newPromise","count$1","rnd","now","uuid","Uuid","BlobCache","mimeToExt","mime","mimes","toBlobInfo","removeByUri","UploadStatus","PENDING","UPLOADED","blobUriStatuses","createStatus","resultUri","hasBlobUri","getResultUri","EditorUpload","uploader","imageScanner","urlFilters","aliveGuard","cacheInvalidator","replaceString","replaceImageUrl","replacementUrl","replaceUrlInUndoStack","fragments","replaceImageUri","uploadImages","scanForImages","imageInfos","filteredResult","uploadInfo","uploadImagesAuto","isValidDataUriImage","imgElm","filter$$1","dataImgFilter","addFilter","resultItem","replaceBlobUris","editorUpload","source_view","isBlockElement","isValidTarget","hasBlockParent","shouldRemoveTextNode","addRootBlocks","rootBlockNode","tempNode","wrapped","rootNodeName","forcedRootBlock","forced_root_block_attrs","setup$2","ForceBlocks","getStartNode","getEndNode","getFirstChildren","getLastChildren$1","hasAllContentsSelected","moveEndPoint$1","hasAnyRanges","sel","NodeChange","lastRng","lastPath","isSameElementPath","currentPath","nativeRng","fakeRng","selectionChange","disable_nodechange","getAbsolutePosition","getBodyPosition","getScrollPosition","getBodyScroll","inlineScroll","iframeScroll","getMousePosition","iframePosition","scrollPosition","calculatePosition","bodyPosition","mousePosition","calc","MousePosition","isContentEditableFalse$6","isContentEditableTrue$3","isDraggable","isValidDropTarget","targetElement","dragElement","cloneElement","cloneElm","createGhost","clonedElm","ghostElm","boxSizing","appendGhostToBody","moveGhost","maxX","maxY","removeElement","isLeftMouseButtonPressed","hasDraggableElement","applyRelPos","relX","start$1","ceElm","elmPos","screenX","screenY","scrollWidth","scrollHeight","relY","ghost","move$1","throttledPlaceCaretAt","placeCaretAt","movement","abs","dragging","targetPos","getRawTarget","drop","targetClone_1","targetClone","removeDragState","stop$$1","bindFakeDragEvents","pageDom","dragStartHandler","dragHandler","dropHandler","dragEndHandler","rootDocument","blockIeDrop","realTarget","DragDropOverrides","getNodeClientRects","toArrayWithNode","VDirection","findUntil","walkUntil","isAboveFn","isBeflowFn","line","targetClientRect","aboveLineNumber","lineNumber","isLineNumber","upUntil","Up","downUntil","Down","positionsUntil","walkFn","isBelowFn","getClientRect","isAboveLine","isLine","isContentEditableFalse$7","findNode$1","distanceToRectLeft","distanceToRectRight","isInside","findClosestClientRect","oldClientRect","oldDistance","newDistance","walkUntil$1","findLineNodeRects","targetNodeRect","checkPosFn","lineRects","getFakeCaretTargets","caretInfo","closestCaret","closestNodeRect","contentEditableFalseNodeRects","targetNodeRects","isXYWithinRange","RangePoint","isContentEditableTrue$4","isContentEditableFalse$8","showCaret","getNodeRange","renderCaretAtRange","caretPositionNode","caretPositionBeforeNode","renderRangeCaret","caretRange","setup$3","renderFocusCaret","CefFocus","VK","BACKSPACE","DELETE","DOWN","ENTER","LEFT","RIGHT","SPACEBAR","TAB","UP","modifierPressed","metaKeyPressed","isContentEditableTrue$5","isContentEditableFalse$9","isAfterContentEditableFalse$1","isBeforeContentEditableFalse$1","getContentEditableRoot$1","SelectionOverrides","fakeCaret","realSelectionId","selectedContentEditableNode","isFakeSelectionElement","getRealSelectionElement","setRange","getRange","showCaret$$1","getNormalizedRangeEndPoint$$1","blockCaretContainer","contentEditableRoot","removeContentEditableSelection","handleTouchSelect","moved","setContentEditableSelection","hasNormalCaretPosition","isInSameBlock$$1","hasBetterMouseTarget","targetBlock","caretBlock","isPasteBin","isRangeInCaretContainer","clipboardData","realSelectionElement","clearData","setData","outerText","addCss","contentStyles","rootClass","isWithinCaretContainer","$realSelectionContainer","origTargetClone","removeAllRanges","addRange","isValidPrefixAttrName","trimComments","isInvalidUri","allow_html_data_urls","findEndTagIndex","tokenRegExp","shortEndedElements","SaxParser","fix_self_closing","endRegExp","stack","attrList","textData","isInternalElement","removeInternalElements","fillAttrsMap","isShortEnded","isValidElement","attribsValue","validAttributesMap","validAttributePatterns","processHtml","anyAttributesRequired","selfClosing","attrRegExp","fixSelfClosing","filteredUrlAttrs","scriptUriRegExp","processEndTag","valid","parseAttribute","val2","val3","attrRule","trimRegExp","unescape","self_closing_elements","remove_internals","allow_conditional_comments","findEndTag","SaxParser$1","trimHtml","tempAttrs","trimContentRegExp","trimInternal","bogusAllRegExp","endTagIndex","matchLength","getTempAttrs","trimExternal","TrimHtml","KEEP","INSERT","vDown","vUp","snake","diag","buildScript","start1","end1","start2","end2","middle","getMiddleSnake","i2","buildSnake","sum","Diff","getOuterHtml","createFragment$1","insertAt","removeAt","applyDiff","read$3","write","currentFragments","Fragments","undoLevelDocument","lazyTempDocument","implementation","createHTMLDocument","hasIframes","createFragmentedLevel","beforeBookmark","createCompleteLevel","createFromEditor","trimmedFragments","trimmed","applyToEditor","getLevelContent","getCleanLevelContent","hasEqualContent","level1","level2","hasEqualCleanedContent","isEq$3","Levels","UndoManager","isFirstTypedCharacter","locks","isUnlocked","setTyping","typing","setDirty","addNonTypingUndoLevel","endTyping","beforeChange","isDirty","lastLevel","modKey","isInsertReplacementText","inputType","isInsertTextDataNull","addShortcut","currentLevel","custom_undo_redo_levels","hasUndo","hasRedo","callback1","callback2","isEq$4","matchesUnInheritedFormatSelector","formatList","inherit","matchParents","matchName","matchItems","itemName","similar","onmatch","matchAll","startElement","matchedFormatNames","checkedMap","canApply","defaultBlock","MatchFormat","split$1","SplitRange","ZWSP$1","CARET_ID$1","importNode","getEmptyCaretContainers","isCaretContainerEmpty","findFirstTextNode","createCaretContainer","fill","trimZwspFromCaretContainer","removeCaretContainerNode","removeCaretContainer","insertCaretContainerNode","formatNode","appendNode","insertFormatNodesIntoCaretContainer","formatNodes","innerMostFormatNode","applyCaretFormat","wordcharRegex","removeCaretFormat","hasContentAfter","expandedRng","newCaretContainer","disableCaretContainer","setup$4","replaceWithCaretFormat","innerMost","isFormatElement","inlineElements","isEmptyCaretFormatElement","postProcessHooks","filter$2","each$c","addPostProcessHook","postProcess","isPre","hasPreSibling","pre","joinPre","pre1","pre2","Hooks","MCE_ATTR_RE","each$d","isEq$5","isTableCell$4","isChildOfInlineParent","lastIdx","wrap$2","wrapWithSiblings","siblings$$1","matchName$1","isColorFormatAndAnchor","find$4","removeNode$1","rootBlockElm","list_block","removeFormat","compareNode","stylesModified","remove_similar","valueOut","findFormatRoot","formatRoot","wrapAndSplit","lastClone","firstClone","formatRootParent","mixed","remove$8","splitToFormatRoot","isRemoveBookmarkNode","process","lastContentEditable","removeRngStyle","textDecoration","ceFalseOverride","RemoveFormat","each$e","isElementNode","findElementSibling","mergeSiblingsNodes","tmpSibling","elementUtils","processChildElements","hasStyle","applyStyle","unwrapEmptySpan","processUnderlineAndColor","mergeUnderlineAndColor","mergeBackgroundColorAndFontSize","backgroundColor","mergeSubSup","mergeSiblings","merge_siblings","clearChildStyles","clear_child_styles","mergeWithChildren","mergeWithParents","merge_with_parents","MergeFormats","each$f","isElementNode$1","applyFormat","setElementFormat","fmt","onformat","styleVal","applyNodeStyle","found","applyRngStyle","nodeSpecific","wrapElm","currentWrapElm","parentName","childCount","getChildCount","getChildElementNode","mergeStyles","curSelNode","ApplyFormat","each$g","setup$5","formatChangeData","currentFormats","matchedFormats","addListeners","formats","formatChangeItems","formatChanged","formatChangeState","FormatChanged","get$8","valigntop","verticalAlign","valignmiddle","valignbottom","alignleft","preview","aligncenter","marginLeft","alignright","alignjustify","bold","italic","fontStyle","underline","strikethrough","forecolor","hilitecolor","fontname","fontsize","fontsize_class","blockquote","subscript","superscript","code","removeformat","DefaultFormats","FormatRegistry","unregister","each$h","parsedSelectorToHtml","ancestry","sItem","getRequiredParent","elmRule","wrapInHtml","parentCandidate","parentRequired","ancestorName","siblingElm","selectorToHtml","parseSelectorItem","$0","$1","$2","$3","$4","previewFrag","previewElm","parentFontSize","previewStyles","previewCss","preview_styles","removeVars","numValue","parseFloat","Preview","toggle$3","ToggleFormat","setup$6","FormatShortcuts","Formatter","hasOwnProperty$2","shallow$1","baseMerge","merger","objects","curObject","htmlParser","internalName","cleanup","trimTrailingBr","brNode1","brNode2","DomSerializerFilters","preProcess","impl","oldDoc","shouldFireEvent","no_events","DomSerializerPreProcess","removeAttrs","addFontToSpansFilter","domParser","face","addStrikeToSpanFilter","addFilters","register$1","LegacyFilter","whiteSpaceRegExp$3","typeLookup","walk$2","Node$2","selfAttrs","selfAttr","cloneAttrs","refNode","paddEmptyNode","brPreferred","padd_empty_with_br","isPaddedWithNbsp","hasOnlyChild","isPadded","isEmpty$2","whitespaceElements","isLineBreakNode","register$2","remove_trailing_brs","prevName","whiteSpaceElements","appendRel","addNoOpener","newRel","allow_unsafe_link_target","allow_html_in_named_anchor","fix_list_elements","classValue","validClassesMap","makeMap$4","each$i","explode$3","extend$3","DomParser","nodeFilters","attributeFilters","matchedNodes","matchedAttributes","root_name","fixInvalidChildren","newParent","currentNode","childNode","nonSplitableElements","textBlockElements","fixed","filterNode","getNodeFilters","getAttributeFilters","fi","fl","invalidChildren","isInWhiteSpacePreservedElement","rootBlockName","startWhiteSpaceRegExp","endWhiteSpaceRegExp","allWhiteSpaceRegExp","isAllWhiteSpaceRegExp","createNode","removeWhitespaceBefore","textNodeNext","textVal","cloneAndExcludeBlocks","attrFiltersLen","isRootContent","addTempAttr","postProcess$1","outArgs","getHtmlFromNode","getInner","parseHtml","serializeNode","htmlSerializer","toHtml","DomSerializer","addRules","setRules","Serializer$1","domSerializer","BookmarkManager","BookmarkManager$1","isContentEditableFalse$a","isContentEditableTrue$6","getContentEditableRoot$2","ControlSelection","selectedElm","selectedElmGhost","resizeHelper","resizeHandles","selectedHandle","startX","startY","selectedElmX","selectedElmY","startW","startH","ratio","resizeStarted","editableDoc","startScrollWidth","startScrollHeight","nw","ne","se","sw","isImage","isEventOnImageOutsideRange","contextMenuSelectImage","getResizeTarget","isResizable","resizeGhostElement","proportional","resizeHelperX","resizeHelperY","resize_img_proportional","endGhostResize","setSizeProp","showResizeRect","targetWidth","targetHeight","unbindResizeHandleEvents","handleElm","startDrag","unSelectabe","updateResizeRect","controlElm","isChildOrEqual","disableGeckoResize","isWithinContentEditableFalse","delayedSelect","throttledUpdateResizeRect","getPos$1","fireScrollIntoViewEvent","alignToTop","scrollEvent","scrollElementIntoView","viewPort","viewPortY","viewPortH","offsetY","scrollContainer","getScrollContainer","scrollTo","getViewPortRect","scrollBy","dx","dy","scrollRangeIntoView","rngRect","bodyRect","ScrollIntoView","hasCeProperty","findParent$1","findClosestIeRange","rects","createTextRange","moveToElementText","moveToPoint","moveOutOfContentEditableFalse","fromPoint$1","pointDoc","caretPositionFromPoint","offsetNode","caretRangeFromPoint","CaretRangeFromPoint","processRanges","EventProcessRanges","fromElements","tableModel","tableRow","cellPosition","getSpan","isNaN","fillout","rowspan","colspan","rows","y2","x2","cellExists","skipCellsX","getWidth","row","findElementPos","extractRows","sx","sy","ey","newRows","subTable","createDomTable","tableElement","tableBody","modelRowsToDomRows","fromDom$2","tableElm","toDom","subsection","endElement","SimpleTableModel","findParentListContainer","getFullySelectedListWrappers","listCont","wrap$3","innerElm","directListWrappers","commonAnchorContainer","getWrapElements","wrapElements","listWrappers","allWrappers","emptyFragment","getFragmentFromRange","getParentTable","getTableFragment","selectedTableCells","firstCell","lastCell","fullTableModel","sectionedTableModel","getSelectionFragment","read$4","FragmentReader","getTextContent","getHtmlContent","tmpElm","contextual","GetSelectionContent","createContextualFragment","pasteHTML","SetSelectionContent","getEndpointElement","real","getStart$2","skipEmptyTextNodes","forwards","orig","getNode$1","endElm","selectedBlocks","select$1","each$j","isNativeIeSelection","isAttachedToDom","isValidRange","Selection","bookmarkManager","explicitRange","selectorChangedData","getEnd$$1","compareEndPoints","tryCompareBoundaryPoints","how","sourceRange","destinationRange","compareBoundaryPoints","START_TO_START","END_TO_END","ieRange","setBaseAndExtent","anchorNode","focusNode","setNode","getSelectedBlocks$$1","isForward","anchorRange","focusRange","anchorOffset","focusOffset","selectorChanged","currentSelectors","matchedSelectors","isContentEditableFalse$b","getSelectedNode$1","isAfterContentEditableFalse$2","isBeforeContentEditableFalse$2","getVisualCaretPosition","isMoveInsideSameBlock","moveToCeFalseHorizontally","getNextPosFn","peekCaretPosition","rangeIsInContainerBlock","isBeforeContentEditableFalseFn","moveToCeFalseVertically","walkerFn","linePositions","nextLinePositions","closestNextLineRect","caretClientRect","dist1","dist2","contentEditableFalseNode","caretPositions","createTextBlock","textBlock","exitPreBlock","newBlock","getNextVisualCaretPosition","getPrevVisualCaretPosition","getHorizontalRange","newRange","getVerticalRange","down","moveH","moveV","BreakType","flip","positions","walk$3","getBreakType","currentPos","Br","Block","Wrap","getPositionsUntil","breakType","breakAt","Eol","getAdjacentLinePositions","getPositionsUntilBreak","findClosestHorizontalPositionFromPoint","lastRect","newRect","lastDist","newDist","findClosestHorizontalPosition","targetRect","getPositionsUntilPreviousLine","getPositionsUntilNextLine","isAtFirstLine","isAtLastLine","getPositionsAbove","getPositionsBelow","getFirstLinePositions","getLastLinePositions","deflate","getCorners","getYAxisValue","tds","findClosestCorner","corners","newCorner","oldCorner","oldDist","sqrt","getClosestCell$1","isTargetCorner","corner","getBottomValue","getTopValue","isAbove$1","isBelow$1","getClosestCellAbove","getClosestCellBelow","findClosestPositionInAboveCell","findClosestPositionInBelowCell","moveToRange","hasNextBreak","lineInfo","breakPos","startsWithWrapBreak","startsWithBrBreak","isAtTableCellLine","isAtFirstTableCellLine","isAtLastTableCellLine","isCaretAtStartOrEndOfTable","navigateHorizontally","getClosestAbovePosition","getClosestBelowPosition","getTable","renderBlock","navigateVertically","moveH$1","moveV$1","isTarget","rangeBefore","insertElement","insertBr","insertBlock$1","insertEmptyLine","getClosestTargetBlock","isAtFirstOrLastLine","moveCaretToNewEmptyLine","rootBlock","rootBlockAttrs","moveV$2","defaultPatterns","patterns","matchesEvent","match$1","execute","MatchKeys","executeKeydownOverride","setup$7","ArrowKeys","getParentInlines","hasOnlyOneChild$1","deleteLastPosition","parentInlines","isFormatElement$$1","deleteCaret$1","backspaceDelete$5","InlineFormatDelete","executeKeydownOverride$1","executeKeyupOverride","setup$8","DeleteBackspaceKeys","firstNonWhiteSpaceNodeSibling","moveToCaretPosition","tempElm","lastNode","getEditableRoot","editableRoot","getParentBlock$2","getParentBlockName","isListItemParentBlock","NewLineUtils","hasFirstChild","hasParent$1","isListBlock","isNestedList","getContainerBlock","containerBlockParent","isFirstOrLastLi","insert$1","createNewBlock","newBlockName","tmpRng","InsertLi","trimZwsp","isEmptyAnchor","isTableCell$5","emptyBlock","containerAndSiblingName","canSplitBlock","trimInlineElementsOnLeftSideOfBlock","firstChilds","normalizeZwspOffset","includeZwspInRange","trimLeadingLineBreaks","getEditableRoot$1","setForcedBlockAttrs","forcedRootBlockName","wrapSelfAndSiblingsInDefaultBlock","addBrToBlockIfNeeded","insert$2","parentBlockName","clonedNode","isCaretAtStartOrEndOfBlock","normalizedOffset","insertNewBlockAfter","InsertBlock","shouldInsertBr","shouldBlockNewLine","ContextSelectors","newLineAction","shouldBlockNewLine$1","isBrMode","requiredState","brMode","inListBlock","inBlock","inPreBlock","inSummaryBlock","shouldPutBrInPre$1","inBrContext","hasShiftKey","canInsertIntoEditableRoot","rootEditable","match$2","predicates","isMatch","getAction$1","NewLineAction","insert$3","InsertNewLine","endTypingLevel","handleEnterKeyEvent","setup$9","EnterKey","insertTextAtPosition","insertNbspAtPosition","insertSpaceAtPosition","isAtBlockBoundary","isAtStartOfBlock","isAtEndOfBlock","isInMiddleOfText","getClosestBlock","hasSpaceBefore","hasSpaceAfter","isPreValue","isInPre","isAtBeginningOfBody","isAtEndOfBody","isAtLineBoundary","needsToHaveNbsp","needsToBeNbspLeft","needsToBeNbspRight","isNbspAt","hasNbsp","normalizeNbspAtStart","normalizeNbspMiddle","normalizeNbspAtEnd","normalizeNbsps","newText","normalizeNbspsInEditor","locationToCaretPosition","insertInlineBoundarySpaceOrNbsp","checkPos","setSelection$1","insertSpaceOrNbspAtSelection","executeKeydownOverride$2","setup$a","SpaceKey","findBlockCaretContainer","removeIeControlRect","handleBlockContainer","setup$b","CaretContainerInput","browser$4","setupIeInput","keypressThrotter","setup$c","isComposing","setup$d","KeyboardOverrides","Quirks","isGecko","isWebKit","mceInternalUrlPrefix","mceInternalDataType","setMceInternalContent","selectionHtml","internalContent","dataTransfer","escape","getMceInternalContent","getData","insertClipboardContents","internal","emptyEditorWhenDeleting","serializeRng","allContentsSelected","allRng","allSelection","selectAll","inputMethodFocus","removeHrOnBackspace","Range","body_1","blur","selectControlElements","removeStylesWhenDeletingAcrossBlockElements","getAttributeApplyFunction","setAttributeNode","isSelectionAcrossElements","applyAttributes","disableBackspaceIntoATable","removeBlockQuoteOnBackSpace","setGeckoEditingOptions","setOpts","addBrAfterLastLinks","fixLinks","setDefaultBlockType","showBrokenImageIcon","restoreFocusOnKeyDown","bodyHeight","blockCmdArrowNavigation","disableAutoUrlDetect","tapLinksAndImages","blockFormSubmitInsideEditor","removeAppleInterchangeBrs","ieInternalDragAndDrop","isTextBlockNode","normalizeSelection$1","setup$e","detail","preventSummaryToggle","filterDetails","setup$f","DOM$2","appendStyle","createParser","autoFocus","auto_focus","destroyed","initEditor","execCallback","getStyleSheetLoader","initContentBody","skipWrite","contentCssText","visibility","orgVisibility","iframeHTML","bodyEl","content_document","content_window","bodyElement","hex_colors","force_hex_style_colors","class_filter","annotator","_nodeChangeDispatcher","browser_spellcheck","gecko_spellcheck","spellcheck","directionality","nowrap","whiteSpace","protect","startContent","contentCSS","content_style","InitContentBody","DOM$3","relaxDomain","domain","hostname","bodyUuid","domainRelaxUrl","normalizeHeight","normalizedHeight","createIframeElement","customAttrs","iframe","frameBorder","allowTransparency","getIframeHtml","bodyId","bodyClass","documentBaseURI","getURI","createIframe","isDomainRelaxed","contentAreaContainer","iframeContainer","init$1","boxInfo","editorContainer","orgDisplay","InitIframe","DOM$4","initPlugin","initializedPlugins","Plugin","pluginInstance","trimLegacyPrefix","initPlugins","initTheme","Theme","renderFromLoadedTheme","minHeight","re","min_height","renderUI","deltaWidth","deltaHeight","iframeHeight","renderFromThemeFunc","createThemeFalseResult","renderThemeFalseIframe","renderThemeFalse","renderThemeUi","init$2","rtl","rtl_ui","i18n","setCode","aria_label","getLang","content_css","toAbsolute","Init","DOM$5","hasSkipLoadPrefix","loadLanguage","scriptLoader","language_url","loadTheme","themeUrl","theme_url","loadPlugins","form","formElement","hasHiddenInput","formEventDelegate","_mceOldSubmit","triggerSave","windowManager","encoding","save","_beforeUnload","set_dirty","Render","add$4","sidebars","Sidebar","each$k","trim$4","queryParts","DEFAULT_PORTS","ftp","http","https","mailto","URI","base_uri","isProtocolRelative","toAbsPath","userInfo","port","setPath","toRelative","tu","uu","toRelPath","noHost","isSameOrigin","defaultPort","breakPoint","outPath","nb","noProtoHost","loc","defaultFormat","trimEmptyContents","emptyRegExp","getContentFromBody","getContent$1","traverse","findMatchingNodes","nodeMatches","attrMatches","filter$3","defaultFormat$1","isTreeNode","moveSelection","setEditorHtml","setContentString","padd","setContentTree","setContent$1","DOM$6","restoreOriginalStyles","safeDestroy","clearDomReferences","restoreForm","remove$9","is_removing","automatic","DOM$7","extend$4","each$l","resolve$4","ie$2","Editor","documentBaseURL","baseURI","language_load","loadedCSS","editorCommands","buttons","menuItems","cache_suffix","override_viewport","callbackLookup","lang_1","i18n_1","onclick","stateSelector","tooltip","addSidebar","addMenuItem","addContextToolbar","contextToolbars","focusedEditor","setProgressState","isNotDirty","oldState","urlconverter_callback","visual_table_class","visual_anchor_class","_scanForImages","isEditorUIElement","FocusManager","isManualNodeChange","registerPageMouseUp","throttledStore","mouseUpPage","registerFocusOut","registerMouseUp","registerEditorEvents","register$3","SelectionRestore","documentFocusInHandler","DOM$8","isEditorUIElement$1","isUIElement","customSelector","custom_ui_selector","getActiveElement","blurredEditor","unregisterDocumentEvents","setup$g","FocusController","I18n","newCode","_dir","getCode","langData","getLangData","values_1","DOM$9","explode$4","each$m","extend$5","beforeUnloadDelegate","EditorManager","instanceCounter","boundGlobalEvents","legacyEditors","isValidLegacyKey","globalEventDelegate","toggleGlobalEvents","removeEditorFromList","targetEditor","oldEditors","purgeDestroyedEditor","majorVersion","minorVersion","releaseDate","preInit","tinyMCEPreInit","srcScript","currentScript","base_url","pluginBaseUrls","plugin_base_urls","invalidInlineTargets","isInvalidInlineTarget","createId","findTargets","targets","editor_deselector","editor_selector","provideResults","initEditors","initCount","createEditor","existingEditor","addI18n","EditorManager$1","RangeUtils","normalizedRng","compareRanges","getCaretRangeFromPoint","RangeUtils$1","round$2","relativePosition","targetW","targetH","create$3","findBestRelativePosition","constrainRect","rels","inflate","intersect","cropRect","x1","y1","clamp$1","clampRect","fixedSize","underflowX1","underflowY1","overflowX2","overflowY2","cx2","cy2","fromClientRect","Rect","Factory","typeClass","lctype","controlType","ControlType","each$n","extend$6","extendClass","initializing","Class","_super","member","mixins","mixin","Mixins","dummy","createMethod","name_1","Methods","Properties","fieldName","Statics","Defaults","min$1","max$1","round$3","Color","rgb2hsv","minRGB","maxRGB","hsvToRgb","hue","saturation","brightness","side","chroma","toRgb","toHsv","quote","JSON$1","JSONP","XHR","ready","success_scope","error_scope","overrideMimeType","content_type","crossDomain","setRequestHeader","requestheaders","extend$7","JSONRequest","sendRPC","ecb","scb","ty","create$4","storage","getItem","setItem","removeItem","localStorage$$1","localStorage","LocalStorage","publicApi","geom","EventDispatcher","isMac","Tinymce","exportToModuleLoaders","exportToWindowGlobal","tinyMCE","namespace","addLocale","translations","_nonIterableSpread","IconArrowOpenEnd","_getComputedStyle","observer","htmlEl","htmlElDir","observe","_keycode","_isActiveElement","_IconArrowOpenDown","_FormField","arrowColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","errorBorderColor","errorOutlineColor","smallArrowWidth","smallFontSize","smallHeight","mediumArrowWidth","mediumFontSize","mediumHeight","largeArrowWidth","largeFontSize","largeHeight","Select","handleChange","_this$props","handleKeyDown","_this$props2","onKeyDown","keycodes","codes","space","up","_defaultId","_select","_this$props3","selectRef","onBlur","arrow","controllable","IconMiniArrowDown","_ownerDocument","_isEmpty","_scopeStylesToNode","_formatVariableNames","_pickOverrides","_customPropertiesSupported","_getCssText","duration","timing","_iterableToArray","iter","iterator","IconMinimize","fontWeightBold","lineHeightFit","_Browser","IconFolder","global$2","getScripts","getAudioTemplateCallback","getVideoTemplateCallback","hasLiveEmbeds","shouldFilterHtml","getUrlResolver","hasAltSource","hasPoster","hasDimensions","global$3","global$4","getVideoScriptMatch","prefixes","VideoScript","trimPx","addPx","setSize","Size","getMaxWidth","getMaxHeight","setMaxWidth","setMaxHeight","getEphoxEmbedIri","isEphoxEmbed","htmlToDataSax","source1","movie","videoScript","source2","poster","ephoxEmbedHtmlToData","htmlToData","HtmlToData","global$5","guess","mp3","wav","mp4","webm","ogg","swf","fileEnd","Mime","global$6","global$7","setAttributes","updatedAttrs","normalizeHtml","updateHtmlSax","updateAll","sourceCount","hasImage","imgAttrs","isEphoxEmbed$1","updateEphoxEmbed","updateHtml","UpdateHtml","urlPatterns","allowFullscreen","getUrl","_loop_1","matchPattern","getFlashHtml","getAudioHtml","audioTemplateCallback","source2mime","getVideoHtml","videoTemplateCallback","source1mime","getScriptHtml","dataToHtml","dataIn","DataToHtml","embedPromise","rej","wrappedResolve","defaultPromise","loadedData","getEmbedHtml","embedHandler","isCached","Service","doSyncSize","widthCtrl","heightCtrl","doSizeControls","constrained","doUpdateSize","isContrained","oldWidth","oldHeight","newWidth","newHeight","syncSize","updateSize","createUi","recalcSize","onchange","ariaLabel","SizeManager","embedChange","handleError","errorMessage","dataEmbed","getSource","addEmbedHtml","fromJSON","selectPlaceholder","beforeObjects","afterObjects","handleInsert","submitForm","toJSON","populateMeta","showDialog","generalFormItems","filetype","autofocus","onpaste","onbeforecall","advancedFormItems","reserialise","update","control","embedTextBox","flex","multiline","updateValueOnChange","forId","bodyType","onSubmit","Dialog","Api","Commands","global$8","sanitize","blocked","Sanitize","createPlaceholderNode","placeHolder","retainAttributesAndInnerHtml","createPreviewIframeNode","previewWrapper","previewNode","shimNode","allowfullscreen","frameborder","sourceNode","innerHtml","isWithinEphoxEmbed","placeHolderConverter","Nodes","boolAttrs","realElm","realElmName","ResolveName","objectType","prependToContext","Buttons","indicatorRegion","_bloodyOffset","editorIframe","offsetFn","outerShape","innerShape","_createChainedFunction","toggleExpanded","expanded","Expandable","handleToggle","isControlled","onToggle","defaultExpanded","_contentId","_this$props$render","getToggleProps","onClick","getDetailsProps","setFromTinymce","env","isBrandingEnabled","hasMenubar","getMenubar","hasStatusbar","getToolbarSize","getFixedToolbarContainer","getInlineToolbarPositionHandler","getMenu","getRemovedMenuItems","getMinWidth","getMinHeight","isSkinDisabled","skin","getResize","resize","getSkinUrl","skinUrl","skin_url","skinName","getIndexedToolbars","defaultToolbar","toolbars","toolbar","mainToolbar","getToolbars","fireSkinLoaded","fireResizeEditor","fireBeforeRenderUI","panel","addKeys","A11y","getUiContainerDelta","uiContainer","getUiContainer","containerPos","setUiContainer","ui_container","inheritUiContainer","fromCtrl","toCtrl","UiContainer","createToolbar","toolbarItems","buttonGroup","bindSelectorChanged","disabledStateSelector","createToolbars","addToolbar","ariaRoot","ariaRemember","Toolbar","toClientRect","geomRect","hideAllFloatingPanels","movePanelTo","moveTo","togglePositionClass","relPos","userConstrain","elementRect","contentAreaRect","panelRect","addContextualToolbars","getContextToolbars","getElementRect","shouldShow","relRect","testPositions","smallElementWidthThreshold","getEl","repositionHandler","findFrontMostMatch","bindScrollEvent","reposition_1","uiContainer_1","showContextToolbar","autohide","autofix","oncancel","renderTo","reflow","hideAllContextToolbars","ContextToolbars","defaultMenus","edit","view","tools","help","delimiterMenuNamePair","createMenuNameItemPair","menuItem","hasItemName","namedMenuItems","namedMenuItem","isSeparator","cleanupMenu","removedMenuItems","menuItemsPass1","menuItemsPass2","createMenu","editorMenuItems","menus","menuButton","menu","isUserDefined","separator","getDefaultMenubar","defaultMenuBar","createMenuButtons","menuButtons","menubar","enabledMenuNames","Menubar","resizeTo","iframeElm","containerSize","iframeSize","resizeBy","dw","dh","Resize","sidebar","callbackName","hidePanels","visible","deactivateButtons","findSidebar","showPanel","btnCtrl","isModernBrowser","hasSidebar","createSidebar","fireSkinLoaded$1","SkinLoaded","switchMode","editArea","editAreaContainer","resizeHandleCtrl","startSize","skinUiCss","onResizeStart","onResize","linkHtml","brandingLabel","renderBefore","Iframe","global$9","funcs","getWindowSize","getRuntimeStyle","isStatic","isFixed","calculateRelativePosition","ctrlElm","selfW","selfH","viewport","getWindowViewPort","getUiContainerViewPort","customUiContainer","Movable","testMoveRel","viewPortRect","moveBy","layoutRect","constrain","constrainToViewport","repaint","global$a","global$b","BoxUtils","parseBox","measureBox","computedStyle","getSide","noop$1","ClassList","_map","_change","curState","clsValue","uniqueItems","__checked","expression","chunker","Collection","Selector","compileNameFilter","compileIdFilter","_name","compileClassesFilter","compileAttrFilter","cmp","compilePsuedoFilter","notSelectors","parseChunks","direct","_selectors","si","sl","Collection$1","proto","Collection$2","Binding","model","otherModel","otherName","fromSelfToOther","fromOtherToSelf","_bindings","global$c","isNode","ObservableObject","oldValue","animationFrameRequested","dirtyCtrls","ReflowQueue","_layout","_id","hasMouseWheelEventSupport","hasWheelEventSupport","classPrefix","Control","idCounter","proto$1","defaultClasses","applyClasses","_aria","_elmCache","borderBox","paddingBox","marginBox","getContainerElm","getParentCtrl","controlIdLookup","initLayoutRect","minWidth","autoResize","startMinWidth","startMinHeight","initialSize","deltaW","deltaH","maxW","maxWidth","maxH","_layoutRect","contentW","contentH","innerW","innerH","minW","minH","scrollW","_lastLayoutRect","lastLayoutRect","repaintControls","curRect","bodyStyle","borderW","borderH","lastRepaintRect","_lastRepaintRect","_hasBody","updateLayoutRect","_lastRect","resolveCallbackName","parentControls","$el","aria","ariaTarget","newItems","controls","_eventsRoot","renderHtml","postRender","preRender","parentEventsRoot","_nativeEvents","bindPendingEvents","bindStates","parentCtrl","getOffset","parentWidth","parentHeight","rootControl","eventCtrl","eventRootCtrl","mouseLeaveHandler","_lastHoverCtrl","mouseEnterHandler","lastParents","lastCtrl","fixWheelEvent","wheelDelta","wheelDeltaX","eventRootDelegates","_delegates","_hasMouseEnter","Control$1","hasTabstopData","KeyboardNavigation","focusedElement","focusedControl","getRole","getParentRole","getAriaProp","isTextInputElement","canFocus","getFocusElements","getNavigationRoot","targetControl","navigationRoot","focusFirst","focusElements","moveFocusToIndex","lastAriaIndex","moveFocus","parentRole","submenu","tab","handleNonTabOrEscEvent","selectorCache","Container","_items","bodyClasses","containerCls","keyboard","focusCtrl","keyboardNav","statusbar","oldItem","newItem","ctrlItems","defaultType","renderNew","curItems","beforeItems","afterItems","recalc","getDocumentSize","updateWithTouchData","changedTouches","DragHelper","$eventOverlay","downButton","drag","handleElement","docSize","runtimeStyle","zIndex","Scrollable","renderScroll","repaintScroll","hasScrollH","hasScrollV","repaintAxis","axisName","posName","sizeName","contentSizeName","hasScroll","ax","scrollBarElm","scrollThumbElm","scrollSize","posNameLower","sizeNameLower","addScroll","addScrollAxis","deltaPosName","scrollStart","axisId","draghelper","autoScroll","_hasScroll","Panel","_preBodyHtml","Resizable","resizeToContent","documentClickHandler","documentScrollHandler","windowResizeHandler","visiblePanels","zOrder","hasModal","skipOrHidePanels","clickCtrl","bindDocumentClickHandler","bindDocumentScrollHandler","repositionPanel","bindWindowResizeHandler","docElm_1","clientWidth_1","clientHeight_1","FloatPanel","hideAll","scrollY$$1","toggleFixedChildPanels","_autoFixY","addRemove","topModal","modal","modalBlockEl","currentZIndex","$modalBlockEl_1","prefix_1","popover","describedBy","removeVisiblePanel","bodyRole","isFixed$1","inlineToolbarContainer","render$1","fixedToolbarContainer","_fixed","bodyPos","scrollContainerPos","Inline","Throbber","throbber","ProgressState","Tooltip","Widget","tooltips","_tooltip","disable","Progress","setValue","updateLiveRegion","Notification","closeButton","notificationStyle","getEditorContainer","getContainerWidth","prePositionNotifications","positionNotifications","firstItem","closeCallback","extendedArgs","notif","oldMetaValue","toggleFullScreenState","noScaleMetaValue","contentValue","toggleBodyFullScreenClasses","checkFullscreenWindows","_fullscreen","handleWindowResize","lastSize_1","Window$$1","pack","closeClass","statusbar$$1","needsRecalc","headerW","headEl","headerH","headerHtml","footerHtml","fullscreen","slowRendering","_timer","_initial","dragHelper","getContentWindow","MessageBox","OK","OK_CANCEL","YES_NO","YES_NO_CANCEL","msgBox","createButton","status$$1","primary","subtype","onClose","onCancel","open$$1","features","alert$$1","choiceCallback","confirm$$1","close$$1","window$$1","ThemeApi","Layout","firstControlClass","lastControlClass","containerClass","firstClass","lastClass","lastItem","controlClass","AbsoluteLayout","Button","btnElm","btnStyle","textHtml","ariaPressed","textCls","setButtonText","$span","iconElm","BrowseButton","multiple","accept","click","ButtonGroup","Checkbox","global$d","ComboBox","subinput","showMenu","statusLevel","statusMessage","openElm","innerPadding","inputElm","openBtnHtml","extraAttrs","statusHtml","showAutoComplete","hideMenu","previewUrl","statusIconElm","focusIdx","ColorBox","onaction","repaintColor","PanelButton","panelSettings","hidePanel","rtlRels","ltrRels","popoverAlign","isTop","ColorButton","_color","resetColor","onClickHandler","global$e","ColorPicker","hsv","hueRootElm","huePointElm","svRootElm","svPointElm","updateColor","hueUpdate","updateSaturationAndValue","updateHue","_repaint","_svdraghelper","_hdraghelper","rgb","_rendered","hueHtml","stops","getOldIeFallbackHtml","gradientPrefix","stopsList","gradientCssText","DropZone","cfg","hidefocus","toggleDragClass","Path","delimiter","_getDataPathHtml","ElementPath","elementpath","outParents","FormItem","Form","labelGap","formItemDefaults","formItem","recalcLabels","maxLabelWidth","labels","labelGapCalc","labelCtrl","labelWidth","FieldSet","unique$1","windows$1","attach","isChildOfContentEditableTrue","getElementText","getOrGenerateId","isAnchor","isValidAnchor","isHeader","isValidHeader","getLevel","headerTarget","headerId","anchorTarget","anchorId","anchorText","getHeaderTargets","getAnchorTargets","getTargetElements","hasTitle","find$3","LinkTargets","getActiveEditor","history","HISTORY_LENGTH","clearHistory","toMenuItem","toMenuItems","staticMenuItem","isUniqueUrl","foundTarget","getSetting","editorSettings","createMenuItems","fileType","fromHistoryMenuItems","historyItems","uniqueHistory","fromMenuItems","filteredTargets","anchorMenuItems","topAnchor","bottomAchor","bothEmpty","typeahead_urls","filterByQuery","addToHistory","lowerCaseTerm","getTitle","linkDetails","setupAutoCompleteHandler","autocomplete","linkTargets","statusToUiState","setupLinkValidatorHandler","validatorHandler","filepicker_validator_handler","validateUrl_1","uiState","FilePicker","actionCallback","fileBrowserCallback","fileBrowserCallbackTypes","file_picker_types","file_browser_callback_types","file_picker_callback","file_browser_callback","FitLayout","contLayoutRect","FlexLayout","contPaddingBox","contSettings","totalFlex","availableSpace","ctrlLayoutRect","ctrlSettings","maxSizeItems","maxSize","maxAlignEndPos","minSizeName","maxSizeName","beforeName","innerSizeName","deltaSizeName","alignAxisName","alignInnerSizeName","alignSizeName","alignMinSizeName","alignBeforeName","alignAfterName","alignDeltaSizeName","alignContentSizeName","maxFlexSize","FlowLayout","endClass","addFormatChangedListener","changed","postRenderFormatToggle","alignFormats","defaultAlign","alignMenuItems","onShowMenu","formatName","alignnone","Align","getFirstFont","findMatchingValue","font","createFontNameListBoxChangeHandler","createFormats","getFontItems","defaultFontsFormats","fonts","font_formats","textStyle","registerButtons","fixedWidth","onselect","FontSelect","findMatchingValue$1","pt","px","createFontSizeListBoxChangeHandler","getFontSizeItems","defaultFontsizeFormats","fontsizeFormats","fontsize_formats","registerButtons$1","FontSizeSelect","hideMenuObjects","hideFormatMenuItems","createFormatMenu","newFormats","defaultStyleFormats","createStylesMenu","style_formats_merge","style_formats","itemDefaults","registerMenuItems","formatMenu","registerButtons$2","style_formats_autohide","Formats","defaultBlocks","createFormats$1","createListBoxChangeHandler","lazyFormatSelectBoxItems","buildMenuItems","register$4","block_formats","FormatSelect","createCustomMenuItems","nameList","isSeparator$1","trimMenuItems","menuItems2","createContextMenuItems","outputMenuItems","createInsertMenu","insertButtonItems","insert_button_items","registerButtons$3","oncreatemenu","register$5","InsertButton","registerFormatButtons","registerCommandButtons","outdent","cut","selectall","visualaid","newdocument","registerCommandToggleButtons","registerButtons$4","registerMenuItems$1","register$6","SimpleControls","toggleUndoRedoState","checkState","typeFn","registerMenuItems$2","registerButtons$5","register$7","UndoRedo","toggleVisualAidState","registerMenuItems$3","selectable","register$8","VisualAid","setupEnvironment","setupUiContainer","setupRtlMode","setupHideFloatPanels","FormatControls","GridLayout","cols","posX","posY","spacingH","spacingV","alignH","alignV","colWidths","rowHeights","ctrlMinWidth","ctrlMinHeight","availableWidth","availableHeight","reverseRows","columns","ceil","flexV","packV","flexWidths","Iframe$1","InfoBox","severity","Label","strong","startMinH","targetCtrl","forName","Toolbar$1","MenuBar","isChildOf$1","MenuButton","_renderOpen","animate","activeMenu","menuLayoutRect","selfBottom","overCtrl","hasVisibleSiblingMenu","Menu","itemsFactory","factory","hideThrobber","requestTime","_hasIcons","ListBox","selectedText","lastItemCtrl","menuValues","_values","lastControl","valueExists","activateMenuItemsByValue","hasMenus","getSelectedItem","selectedItem","toggleTextStyle","_textStyle","textElm","MenuItem","ariaHideMenu","_parentMenu","_lastRel","iconHtml","convertShortcut","escapeRegExp","markMatches","boldMatches","hover","Radio","ResizeHandle","resizeDragHelper","createOptions","strOptions","SelectBox","_options","minVal","maxVal","setAriaProp","updateSliderHandle","maxHandlePos","shortSizeName","stylePosName","handleEl","orientation","_minValue","_maxValue","previewFilter","Slider","minValue","maxValue","_initValue","screenCordName","toFraction","fromFraction","handleKeyboard","alter","handleDrag","startHandlePos","handlePos","_dragHelper","Spacer","SplitButton","mainButtonElm","menuButtonElm","_menuBtnText","StackLayout","activateTab","activeTabElm","activeTabId","tabsHtml","activeTab","targetParent","headH","TextBox","getApi","registerToFactory","_CheckboxFacade","_ToggleFacade","readOnly","return","_input","handleFocus","focused","handleBlur","handleMouseOver","hovered","handleMouseOut","defaultChecked","indeterminate","_this$state","onFocus","onMouseOver","onMouseOut","htmlFor","renderFacade","oneOfType","_objectWithoutProperties2","isLastCol","lastRow","rowSpacingClass","colSpacingClass","InstructureEquella","_bridge","onLinkClick","embedImage","arrayLikeToArray","_arrayWithoutHoles","_File","_Loading","_aphrodite","_styles","_IconMiniArrowDown","_IconMiniArrowEnd","_IconFolder","Folder","folder","fileIds","folderIds","onSelect","toggleIcon","subFolders","folderPropType","objectOf","getShorthandPropValue","componentName","shortHandValue","themeVariableName","themeVariableValue","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_slicedToArray","ensureSingleChild","_dragHtml","UploadedImage","handleImageClick","onDrag","imageName","draggable","onDragStart","thumbnail_url","imgTitle","imgLinkStyles","renderImg","wordBreak","preview_url","_FlexItem","Flex","justifyItems","wrapItems","alignItems","_reactDom","_createReactClass","_createReactClass2","_lodashIsEqual","_lodashIsEqual2","_lodashClone","_lodashClone2","_helpersUuid","_helpersUuid2","_helpersUcFirst","_helpersUcFirst2","EVENTS","HANDLER_NAMES","TinyMCE","config","getDefaultProps","componentWillMount","componentDidMount","_init","componentWillReceiveProps","shouldComponentUpdate","componentWillUnmount","_remove","dangerouslySetInnerHTML","__html","_isInit","findDOMNode","setupCallback","hasSetupCallback","eventType","_IconCheckMark","CheckboxFacade","facade","renderIcon","_reducers","_initialState","_reduxThunk","_reduxBatchMiddleware","_initialActions","createStore","batching","applyMiddleware","batch","mapping","ar","bg","cs","cy","da","en","es","fr","he","ht","hu","hy","it","ja","ko","mi","nl","nn","pl","ro","ru","sq","sr","sv","vi","editorLanguage","locale","regExps","aletter","midnumlet","midletter","midnum","cr","lf","newline","katakana","extendnumlet","punctuation","characterIndices","ALETTER","MIDNUMLET","MIDLETTER","MIDNUM","NUMERIC","CR","LF","NEWLINE","EXTEND","FORMAT","KATAKANA","EXTENDNUMLET","AT","OTHER","SETS","EMPTY_STRING","PUNCTUATION","WHITESPACE","UnicodeData","SETS$1","getType","setsLength","memoize","classify","memoized","StringMapper","isWordBoundary","prevType","nextType","nextNextType","WordBoundary","EMPTY_STRING$1","WHITESPACE$1","PUNCTUATION$1","isProtocol","word","findWordEnd","extractUrl","peakedWord","doGetWords","words","includePunctuation","includeWhitespace","ignoreCase","getWords","WordGetter","txt","treeWalker","getCount","WordCount","wordsToText","debouncedUpdate","Statusbar","StyleSheet","marginBottom","borderLeft","listStyle","transition","outline","folderReducer","actions","defaultState","loadingCount","filesUrl","foldersUrl","parentId","ADD_FOLDER","RECEIVE_FILES","INSERT_FILE","RECEIVE_SUBFOLDERS","REQUEST_FILES","REQUEST_SUBFOLDERS","TOGGLE","IconSearch","_CSSTransitionGroup","_Button","_IconAdd","LinkToNewPage","handleLinkClick","scrolled","newPageLinkExpanded","pageInput","formElem","validTarget","validScrollTarget","toggleNewPageForm","isGroup","newPageTitle","newPageHref","getContextHref","handleSubmit","updateNewPageTitle","toggleForm","slideDownEnter","enterActive","slideDownEnterActive","slideDownLeave","leaveActive","slideDownLeaveActive","renderForm","_objectSpread","ownKeys","sym","sessionReducer","_session","RECEIVE_SESSION","_TextDirectionContextTypes","DIRECTION","_uiDecorator","_getTextDirection","BidirectionalComponent","_defaultDirection","getTextDirectionContext","ltr","TextDirectionContextTypes","_getPrototypeOf","getPrototypeOf","startLoading","stopLoading","receiveFolder","failFoldersLoad","startUpload","failUpload","quotaExceeded","completeUpload","openOrCloseUploadForm","processedFolderBatch","allUploadCompleteActions","embedUploadResult","fetchFolders","setUsageRights","getFileUrlIfMissing","generateThumbnailUrl","setAltText","handleFailures","uploadPreflight","STOP_LOADING","START_LOADING","QUOTA_EXCEEDED_UPLOAD","PROCESSED_FOLDER_BATCH","TOGGLE_UPLOAD_FORM","COMPLETE_FILE_UPLOAD","FAIL_FILE_UPLOAD","START_FILE_UPLOAD","FAIL_FOLDERS_LOAD","RECEIVE_FOLDER","_mimeClass","fileMetaProps","contentType","fileEmbed","createAddFile","createInsertFile","parentFolderId","createAddImage","selectedTabType","embedData","_getState2","readUploadedFileAsDataURL","abort","DOMException","fileDOMObject","alt_text","resp","tabContext","_getState3","fileReader","preflightUpload","uploadFRD","domObject","foldersReducer","_folder","_assertThisInitialized","assumeExternalTargets","link_assume_external_targets","hasContextToolbar","link_context_toolbar","getLinkList","link_list","hasDefaultLinkTarget","default_link_target","getDefaultLinkTarget","getTargetList","target_list","setTargetList","shouldShowTargetList","getRelList","rel_list","hasRelList","getLinkClassList","link_class_list","hasLinkClassList","shouldShowLinkTitle","link_title","allowUnsafeLinkTarget","appendClickRemove","initMouseEvent","opener","OpenUrl","toggleTargetRules","isUnsafe","addTargetRules","removeTargetRules","trimCaretContainers","getAnchorElement","isImageFigure","getAnchorText","anchorElm","isLink","hasLinks","isOnlyTextSelected","attachState","linkAttrs","linkImageFigure","unlink","unlinkImageFigure","fig","Utils","createLinkList","linkList","buildListItems","inputList","itemCallback","startItems","appendItems","delayedConfirm","initialText","onlyText","textListCtrl","linkListCtrl","relListCtrl","targetListCtrl","classListCtrl","linkTitleCtrl","linkListChangeHandler","textCtrl","buildAnchorListControl","anchorList","updateText","urlChange","inp","onBeforeCall","onkeyup","removeLink","resultData","open$1","getLink","getSelectedLink","getHref","isContextMenuVisible","contextmenu","hasOnlyAltModifier","gotoLink","targetEl","openDialog","gotoSelectedLink","leftClickedOnAHref","setupGotoLinks","toggleActiveState","toggleViewLinkState","toggleVisibility","Actions","Keyboard","setupButtons","onpostrender","setupMenuItems","setupContextToolbars","Controls","IconInfoBorderless","objectWithoutPropertiesLoose","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","safeCloneElement","cloneRef","originalRef","mergedProps","component","ENV","DEBUG","DISABLE_SPEEDY_STYLESHEET","Boolean","STYLES","THEMEABLE_STYLESHEET","flush","canUseDOM","inject","inserted","createSheet","speedy","_dispatchInitEvent","InstructureExternalTools","constructJSXImageElement","_server","previewAlt","renderToStaticMarkup","linkElem","linkHref","doNotLink","opts","arrayWithoutHoles","iterableToArray","nonIterableSpread","_toConsumableArray","imagesReducer","_images","ADD_IMAGE","REQUEST_IMAGES","RECEIVE_IMAGES","receivedImages","imageRecords","mirrorShorthandEdges","mirrorShorthandCorners","valuesArr","makeTextDirectionContext","textColor","smallIconSize","mediumIconSize","largeIconSize","iconMargin","togglePadding","toggleBorderRadius","toggleBorderWidth","toggleBorderStyle","toggleFocusBorderColor","filledBackgroundColor","filledBorderWidth","filledBorderStyle","filledBorderColor","filledBorderRadius","filledPadding","_setPrototypeOf","_bowser","alpha","rootFolderIdReducer","_files","SET_ROOT","shallowEqual","objA","objB","keysA","keysB","changeTab","changeAccordion","resetUI","hideSidebar","showSidebar","SHOW_SIDEBAR","HIDE_SIDEBAR","RESET_UI","CHANGE_ACCORDION","CHANGE_TAB","filesReducer","ADD_FILE","getDefault","InstructureLinks","shorthandPropType","SPACING","SIZES","BACKGROUNDS","BORDER_RADII","BORDER_WIDTHS","STACKING_TYPES","SHADOW_TYPES","resting","above","topmost","deepest","below","inverse","transparent","xLarge","auto","xxLarge","shadow","propValueType","propValues","valuesLength","valueIndex","Loading","dot","dot0","dot1","dot2","opacityKeyframes","justifyContent","animationName","animationDuration","animationIterationCount","animationDirection","animationDelay","dictionary","dictionaryLengthMinus1","_random","_ignored","idLength","bytes","_slicedToArray2","_parseUnit3","_parseUnit","_parseUnit2","num","IconArrowOpenDown","parseUnit","hasVisibleChildren","_chainFunction","_chainFunction2","_warning","_ChildMapping","any","TransitionGroup","performAppear","currentlyTransitioningKeys","componentWillAppear","_handleDoneAppearing","componentDidAppear","currentChildMapping","performLeave","performEnter","componentWillEnter","_handleDoneEntering","componentDidEnter","componentWillLeave","_handleDoneLeaving","componentDidLeave","keysToEnter","newChildren","childRefs","keysToLeave","initialChildMapping","nextChildMapping","prevChildMapping","hasPrev","hasNext","componentDidUpdate","childrenToRender","_loop","isCallbackRef","factoryChild","_classnames2","InlineSVG","titleId","descId","prepareSrc","focusable","parseAttributes","renderTitle","renderDesc","ids","SVGAttributesRegExp","namesAndValuesRegExp","attributesMatches","attributesString","excludes","replaceClassName","origClass","classToRemove","baseVal","LoadMore","nextFocus","focusableElements","Infinity","refs","hasChildren","fluidWidth","loader","paddingRight","installedModules","__webpack_require__","moduleId","getter","mediaQuery","alreadyImportedModules","stylesInDom","memo","isOldIE","getHeadElement","singletonElement","singletonCounter","styleElementsInsertedAtTop","singleton","listToStyles","addStylesToDom","newList","mayRemove","domStyle","newStyles","sourceMap","insertStyleElement","styleElement","lastStyleElementInsertedAtTop","removeStyleElement","createStyleElement","createLinkElement","linkElement","styleIndex","applyToSingletonTag","btoa","updateLink","applyToTag","replaceText","textStore","replacement","cssNode","oldSrc","dispose","use","locals","unuse","unref","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0__canvas_css__","__WEBPACK_IMPORTED_MODULE_0__canvas_css___default","__WEBPACK_IMPORTED_MODULE_1__vendor_light_skin_min_css__","__WEBPACK_IMPORTED_MODULE_1__vendor_light_skin_min_css___default","__WEBPACK_IMPORTED_MODULE_2__vendor_light_content_min_css__","__WEBPACK_IMPORTED_MODULE_2__vendor_light_content_min_css___default","__WEBPACK_IMPORTED_MODULE_3__vendor_light_content_inline_min_css__","__WEBPACK_IMPORTED_MODULE_3__vendor_light_content_inline_min_css___default","useCanvas","unuseCanvas","useInline","unuseInline","contentStyle","_defineProperties","descriptor","_createClass","protoProps","staticProps","openOrCloseNewPageForm","_arrayLikeToArray","arr2","FormFieldLabel","FormField","pascalize","_Folder","DOWN_KEY","UP_KEY","J_KEY","K_KEY","FileTree","containerNode","navigableNodes","inlineStyles","IconX","baseIsEqual","other","makeRequirable","validator","rest","validTypes","validTypeNames","childName","oneOfEach","instanceCount","typeName","errors","enforceOrder","validTypeGroups","validateTypes","childNames","typeNames","formatGroupTypes","typeGroups","formatTypes","childrenOrValue","propType","handlerName","defaultPropName","instanceOf","Element","xor","otherPropNames","otherProps","focusOutlineWidth","focusOutlineStyle","placeholderColor","startFlickrSearch","receiveFlickrResults","failFlickrSearch","openOrCloseFlickrForm","searchFlickr","TOGGLE_FLICKR_FORM","FAIL_FLICKR_SEARCH","RECEIVE_FLICKR_RESULTS","START_FLICKR_SEARCH","flickr","_Tab","_TabPanel","TabList","handleClick","getTab","handleEnter","getIndex","defaultSelectedIndex","_tabs","_panels","_srTabs","nextSelectedIndex","isValidIndex","step","tabs","change","_this5","_this6","tabIds","createScreenReaderTab","createTab","clonePanel","_tabIds","Tab","syncNodeAttributes","_getShorthandPropValue","_mirrorShorthand","_bidirectional","stackingTopmost","stackingAbove","stackingBelow","stackingDeepest","shadowTopmost","shadowResting","shadowAbove","View","handleElementRef","elementRef","_element","hasBorder","spacingStyle","styleProps","_this$props4","whitelisted","ComposedView","omitViewProps","_unsupportedIterableToArray","minLen","indicate","MARGIN","region","indicator","leaveFast","getClassList","_toConsumableArray2","classListShimmed","apiForEmptyNode","classListApi","shimClassListForIE","createElementNS","descr","HTMLElement","SVGElement","assertThisInitialized","normalizeLocale","recognized","isTextNode","isListNode","isOlUlNode","isListItemNode","isDlItemNode","isTableCellNode","isFirstChild","isLastChild","keepBookmarks","isChildOfBody","getNormalizedPoint","outRng","rangeStart","rangeEnd","createBookmark","setupEndPoint","resolveBookmark","Bookmark","groupBy","wasType","htmlElement","getParentList","getClosestListRootElm","isParentListSelected","parentList","findSubLists","getSelectedSubLists","findParentListItemsNodes","listItemsElms","parentLi","getSelectedListItems","getSelectedDlItems","parentTableCell","findLastParentListNode","parentLists","getSelectedLists","firstList","subsequentLists","getSelectedListRoots","selectedLists","getUniqueListRoots","listRoots","remove$1","shallowAs","mutate","createNewTextBlock","contentNode","hasContentNode","TextBlock","splitList","ul","bookmarks","removeAndKeepBookmarks","SplitList","set$1","createSection","listType","section","joinSections","appendor","createJoinedSections","newSection","lastSection","normalizeSection","entry","listAttributes","createItem","writeShallow","newOutline","depth","itemAttributes","populateSections","writeDeep","newSections","composeList","entries","isIndented","isSelected","indentEntry","assimilateEntry","adherent","normalizeShallow","matchingEntryDepth","matchingEntry","normalizeDeep","normalizeEntries","ListType","getListType","OL","UL","DL","isList$1","hasFirstChildList","hasLastChildList","getItemContent","contentLength","createEntry","parseItem","itemSelection","selectionState","curriedParseList","parseList","updateSelectionState","itemRange","fromCurrentItem","fromChildList","newDepth","parseLists","initialDepth","sourceList","outdentedComposer","indentedComposer","composeEntries","groupIsIndented","indentSelectedEntries","getItemSelection","selectedListItems","listsIndentation","parsedLists","entrySet","outdentDlItem","dl","indentDlItem","dlIndentation","dlItems","selectionIndentation","indentListSelection","outdentListSelection","flattenListSelection","updateListStyle","updateListAttrs","updateListWithDetails","removeStyles","getEndPointNode","getSelectedTextBlocks","hasCompatibleStyle","sib","sibStyle","detailStyle","applyList","listName","listItemName","listBlock","mergeWithAdjacentLists","isValidLists","list1","list2","hasSameListStyle","targetStyle","hasSameClasses","elm1","elm2","shouldMerge","updateList","toggleMultipleLists","hasListStyleDetail","toggleSingleList","toggleList","selectedSubLists","ToggleList","normalizeList","normalizeLists","NormalizeLists","findNextCaretContainer","nonEmptyBlocks","hasOnlyOneBlockChild","unwrapSingleBlockChild","moveChildren","fromElm","toElm","mergeLiElements","listNode","mergeIntoEmptyLi","fromLi","toLi","mergeForward","mergeBackward","resolvedBookmark","backspaceDeleteFromListToListCaret","selectionStartElm","otherLi","removeBlock","backspaceDeleteIntoListCaret","otherLi_1","startListParent","Delete","queryListCommandState","shouldIndentOnTab","setupTabKey","findIndex$2","listState","tableCellIndex","hasPlugin","mimeClass","fileMimeClass","fileMediaEntryId","mediaEntryId","media_entry_id","mime_class","getContentType","_LinkSet","NavigationPanel","_ui","selectedTabIndex","selectedAccordionIndex","_ms","_BaseTransition","Transition","handleExited","onExited","handleEntered","onEntered","classNames","enterDelay","exitDelay","transitionClassName","exitedClassName","exited","exitingClassName","exiting","enteredClassName","entering","enteringClassName","entered","transitionOnMount","onTransition","onEnter","onEntering","onExit","onExiting","toState","fromState","decorator","DecoratedComponent","_IconSearch","_IconMinimize","FlickrSearch","toggleFlickrForm","searchTerm","flickrSearch","flickrResultClick","flickrResultDrag","renderFlickrResult","searchButtonContainer","titlebar","updateSearchTerm","renderSubmitButton","flickrSearchResults","flickrLink","getAutoResizeMinHeight","getAutoResizeMaxHeight","getAutoResizeOverflowPadding","getAutoResizeBottomMargin","shouldAutoResizeOnInit","isFullscreen","oldSize","times","interval","toggleScrolling","deltaSize","resizeHeight","myHeight","paddingTop","paddingBottom","borderTop","borderBottom","overflowPadding","bottomMargin","isActiveElement","_getActiveElement","receiveSession","getSession","activeShadow","focusShadow","focusOutline","buttonVariant","mainColor","darken","textTransform","letterSpacing","hoverTransform","smallPadding","mediumPadding","largePadding","focusBorder","lightBackground","lightBorderColor","borderLight","lightBorderStyle","lightColor","lightHoverBackground","lightActiveBackground","lightActiveBoxShadow","borderLightest","ghostBackground","ghostBorderColor","ghostBorderStyle","ghostColor","ghostHoverBackground","backgroundBrand","ghostActiveBackground","ghostActiveBoxShadow","ghostInverseBackground","ghostInverseBorderColor","ghostInverseBorderStyle","ghostInverseColor","ghostInverseHoverBackground","ghostInverseActiveBackground","ghostInverseActiveBoxShadow","linkColor","textLink","linkBorderColor","linkFocusBorderColor","linkHoverColor","linkTextDecoration","linkInverseColor","inverseFocusBorder","iconBorderColor","iconPadding","iconHoverColor","iconActiveColor","iconFocusBoxShadow","iconPlusTextFontSize","iconPlusTextMargin","iconInverseColor","iconInverseHoverColor","iconInverseFocusBoxShadow","fluidWidthLineHeight","defaultBorderColor","circleDefaultBorderColor","accessibleEditor","docContext","fontBtn","formatBtn","fgColorBtn","bgColorBtn","recordBtn","editorElement","selectorName","applyLabelToSelector","subElement","addLabels","accessibilizeMenubar","firstMenu","removeStatusbarFromTabindex","lighten","contrast","_tinycolor","setAlpha","toRgbString","color1","color2","readability","warnDeprecatedComponent","deprecatePropValues","oldProps","DeprecatedComponent","isDeprecatedValue","prevPackage","newPackage","keyList","hasProp","equal","arrA","arrB","dateA","dateB","regexpA","regexpB","_IconDocument","File","handleSelect","_CloseButton","_IconInfoBorderless","_IconWarningBorderless","_IconNo","Alert","dismissable","transitionType","isOpen","_timeouts","handleTimeout","onExitTransition","onDismiss","clearTimeouts","removeScreenreaderAlert","handleKeyUp","closeButtonLabel","esc","Icon","warning","lr","liveRegion","isDOMNode","liveRegionPoliteness","getLiveRegion","srid","createScreenreaderContentNode","unmountComponentAtNode","initLiveRegion","createScreenreaderAlert","updateScreenreaderAlert","_this$variantUI","variantUI","alertIcon","_this$variantUI2","onKeyUp","renderCloseButton","screenReaderOnly","renderAlert","_UploadForm","_ImageUploadsList","_FlickrSearch","ImagesPanel","withUploadForm","toggleUploadForm","usageRightsRequired","expandScreenreader","collapseScreenreader","showAltTextForm","instructions","renderFlickrSearchForm","renderUploadForm","renderImageUploadsList","_TabList","IconCheck","createChainedFunction","indexes","getAllIndexes","getAutoLinkPattern","rangeEqualsDelimiterOrSpace","rangeString","handleEclipse","parseCurrentLine","handleSpacebar","scopeIndex","rngText","autoLinkPattern","defaultLinkTarget","autoUrlDetectState","Keys","TextInput","handleInputRef","inputRef","hasIcon","descriptionIds","_reactTinymce","_editorAccessibility","contentInsertion","_indicatorRegion","_indicate","editorWrappers","RCEWrapper","handleTextareaChange","textareaValue","get_code","set_code","insert_code","insertCode","mceInstance","newContent","indicateEditor","checkImageLoadError","complete","naturalWidth","contentInserted","textareaId","_destroyCalled","onTinyMCEInstance","unhandleTextareaChange","handleUnmount","rce","detachEditor","onRemove","getTextarea","cleanInitialContent","_cleanInitialContent","defaultContent","methodName","rceWrapper","_textareaEl","registerTextareaChange","textareaClassName","onPreInit","annotateEditor","onInit","accessibilizeEditor","onKeypress","onActivate","wrapOptions","IconCheckMark","COL_WIDTHS","breakpoint","enabledBreakpoints","breakpointIsEnabled","lastCol","breakpointClass","breakpointIsEnabledForWidth","breakpointOffsetClass","breakpointIsEnabledForOffset","resolveEditorRendered","Bridge","getEditor","renderEditor","editorRendered","_focusedEditor$props$","superPropBase","_get","receiver","Reflect","mergeDeep","arg","mergeSourceIntoTarget","merged","Set","_shallowEqual","_deepEqual","_ThemeContextTypes","_applyVariablesToNode","_setTextDirection","_registry","_StyleSheet","_transformCss","_InlineSVG","_dec3","SVGIcon","rotate","_upload","rootFolderId","folderTree","tree","folderId","localeCompare","loadingFolders","_ApplyTheme","_LinksPanel","_FilesPanel","_ImagesPanel","linksTitle","filesTitle","imagesTitle","panels","onChangeAccordion","canCreatePages","session","filesTabDisabled","disableFilesPanel","canUploadFiles","toggleFolder","onChangeTab","useHighContrast","sanitizePlugins","cleanPlugins","extPluginsToRemove","sanitizeExternalPlugins","cleanExternalPlugins","sanitizeEditorOptions","_assertThisInitialized2","_getClassList","_ensureSingleChild","STATES","EXITED","EXITING","ENTERING","ENTERED","BaseTransition","transitioning","startTransition","transitionIn","transitionOnStart","exit","transitionCallback","transitionDuration","_unmounted","getTransitionClassName","prevTransitionClassName","baseTransitionClassName","transitionEnabled","initialState","_assertThisInitialize","_assertThisInitialize2","clearTransition","transitionState","_tinymce","originalScriptAdd","setDir","curDir","Direction","generateSelector","_api","normalizeContextType","_props","initializeCollection","initializeUpload","initializeFlickr","initializeImages","propsFromDispatch","_flickr","_defineProperty","sort$1","reqMessage","unsuppMessage","unsupported","validateStrArr","invalidTypeMessage","incorrect","checkDupes","everything","sorted","dupe","MixedBag","optional","req","dimensions","grid","address","coords","detailnew","extended","rowdata","elementnew","rowdatanew","rowcells","rowdetails","bounds","Structs","COMMENT","checkRange","endsWith","firstLayer","filterFirstLayer","LayerSelector","ancestors","children$1","ancestors$1","children$2","child$1","descendant","descend","child$2","tags","_isRoot","isRootOrUpperTable","notCell","neighbours","neighbourCells","neighbourRows","grid$1","rowProp","colProp","TableLookup","fromTable","parentSection","fromPastedRows","example","DetailsList","column","getAt","warehouse","findItem","filtered","filterItems","maxRows","maxColumns","currentRow","cc","newpos","justCells","Warehouse","internalRemove","sourceDom","targetDom","after$1","stats","findSelectedStats","house","totalColumns","totalRows","minRow","minCol","maxRow","maxCol","startRow","endRow","startCol","endCol","makeCell","seenSelected","rowIndex","fillInGaps","needCell","emptyRows","extract","selectedSelector","unselectedCells","CopySelected","copy$1","cloneChildren","NBSP","isTextNodeWithCursorPosition","elementsWithCursorPosition","isCursorPosition","hasCursorPosition","first$3","last$2","descendantRtl","cell$1","replica","pasteReplace","cellContent","newRow","cloneFormats","oldCell","newCell","firstText","formatSelector","clonedFormat","cellOperations","mutate$$1","formatsToClone","gap","TableFill","TagBoundaries","DomUniverse","clone$$1","isBoundary","isEmptyTag","comparePosition","copyAttributesTo","destination","copyTo","afterAll","appendAll","setText","leftRight","bisect","universe","ind","breakToRight","second","breakToLeft","prior","breakPath","breaker","splits","fallback","breakage","nextChild","Breaker","all$3","look","head$$1","tail","oneAll","unsafeOne","commonElement","Shared","eq$1","unsafeSubset","common","ps1","ps2","finder","topDown","sIndex","eIndex","ancestors$2","prune","pruned1","pruned2","shared","firstpath","secondpath","subset","ancs","Subset","sharedOne","subset$1","ancestors$3","breakToLeft$1","breakToRight$1","breakPath$1","Parent","sharedOne$1","subset$2","ancestors$4","breakToLeft$2","breakToRight$2","breakPath$2","DomParent","inSelection","leftEdge","rightEdge","topEdge","bottomEdge","finishCol","finishRow","isWithin","isRectangular","isRect","detailIsWithin","CellBounds","getBounds","detailA","detailB","getAnyBox","finishCell","startCoords","finishCoords","fc","getBox","CellGroup","dest","intercepts","parentCell","innerCell","isContainedBy","c1","c2","CellFinder","moveBy$1","deltaRow","deltaColumn","getWarehouse","intercepts$1","nestedIntercepts","firstTable","lastTable","getBox$1","TablePositions","lookupTable","identified","getIsRoot","rootTable","boxes","startTable","finishTable","ancestorCells","lca","lcaTable","finishAncestorCells","startAncestorCells","retrieve","sels","getLast","lastSelectedSelector","getEdges","firstSelectedSelector","tbl","expandTo","shiftSelection","CellSelection","retrieve$1","retrieveBox","edges","firstAncestor","lastAncestor","fA","lA","TableSelection","attributeSelector","firstSelected","lastSelected","Ephemera","single","cata","subject","onNone","onMultiple","onSingle","SelectionTypes","selections","unmergable","hasSpan","mergable","_env","CellOperations","noMenu","forMenu","notCell$1","paste$1","pasteRows","clipboard","generators","TableTargets","extractSelected","serializeElements","cellSelection","multiCellContext","cellOpt","domCell","pasteCells","Clipboard","Dimension","getOuter","aggregate","cumulativeInclusions","absoluteMax","api$1","get$4","api$2","getOuter$1","platform","needManualCalc","toNumber","getCalculatedHeight","getHeight","RuntimeSize","genericSizeRegex","percentageBasedSizeRegex","pixelBasedSizeRegex","setPixelWidth","amount","setPercentageWidth","setHeight","getHeightValue","convert","setter","newSize","normalizePixelSize","getTotalHeight","type$$1","getRawWidth","cssWidth","normalizePercentageWidth","cellWidth","tableSize","pixelWidth","choosePercentageSize","percentMatch","intWidth","getPercentageWidth","normalizePixelWidth","choosePixelSize","pixelMatch","floatWidth","getPixelWidth","getHeight$1","getGenericWidth","setGenericWidth","Sizes","halve","main","CellMutations","attached","windowOf","boxPosition","firstDefinedOrZero","absolute","rowInfo","colInfo","rtlEdge","ltrEdge","getLeftEdge","getRightEdge","getTopEdge","getBottomEdge","findPositions","getInnerEdge","getOuterEdge","lines","cellOption","lastLine","negate","_table","BarPositions","ResizeDirection","TableDirection","directionAt","getGridSize","TableGridSize","handleUnsupported","baseWith","invalidKeys","handleExact","exactly","elementToData","modification","_toData","contract","toData","nuFrom","recent","getOrInit","find$$1","makeNew","replaceOrInit","merging","combine","Generators","blockList","isFormatting","isContainer","isFrame","Structure","universe$1","isFormatting$1","isHeading$1","isContainer$1","isEmptyTag$1","isFrame$1","isInline$1","DomStructure","advancedBr","siblingIsBlock","rightSibling","markCell","rightSiblingIsBlock","markContent","TableContent","merge$1","cat","findMap","addCell","gridRow","newCells","setCells","mutateCell","mapCells","getCell","getCellElement","cellLength","getColumn","getRow","findDiff","comp","subgrid","restOfRow","endColIndex","restOfColumn","endRowIndex","TableGrid","toDetails","seen","ri","col","updateSeen","isNew","toGrid","rowCells","Transitions","setIfNot","renderSection","gridSection","sectionName","tb","removeSection","renderOrRemoveSection","headSection","bodySection","footSection","copy$2","clonedCell","Redraw","repeat","repititions","deduce","aa","extras","Util","getBlock","isSingle","getFallback","decide","singleInBlock","detailOption","rows$1","Blocks","blocker","row$1","Bar","dashNamespace","get$7","resizeBar","resizeRowBar","resizeColBar","BAR_THICKNESS","wire","drawBar","origin","cpOption","cp","bar","refreshCol","colPositions","tableHeight","colBar","refreshRow","rowPositions","tableWidth","rowBar","refreshGrid","hdirection","vdirection","refresh","bars","isRowBar","isColBar","Bars","fromWarehouse","deriveRows","rendered","findRow","rowOfCells","toDetailList","findInWarehouse","operation","adjustment","postAction","genWrappers","newElements","onCell","onPaste","onPasteRows","lc","onMergable","onUnmergable","onCells","RunOperation","measure","startAddress","gridA","gridB","rowRemainder","colRemainder","colRequired","rowRequired","rowDelta","colDelta","measureWidth","colLengthA","colLengthB","rowFill","_row","colFill","tailor","fillCols","fillRows","modifiedCols","tailoredGrid","Fitment","merge$2","substitution","unmerge","isToReplace","uniqueCells","currentCell","splitRows","rowPrevCells","MergingOperations","isSpanning","matching","mergeTables","mergeHeight","mergeWidth","merge$3","fittedGrid","fittedNewGrid","secondDelta","fittedOldGrid","TableMerge","insertRowAt","between","withinSpan","insertColumnAt","splitCellIntoColumns","exampleRow","exampleCol","isTargetCell","splitCellIntoRows","deleteColumnsAt","deleteRowsAt","ModificationOperations","replaceIn","notStartRow","colIndex","notStartColumn","replaceColumn","alreadyAdded","replaceRow","targetRow","TransformOperations","none$1","only","ColumnContext","neighbours$1","determine","zero","onOnly","singleColumnWidth","newNext","minCellWidth","newThis","diffx","onLeft","onMiddle","onRight","Deltas","getSpan$1","hasColspan","hasRowspan","getInt","CellUtils","getRaw$1","getRawW","getRawH","getWidthFrom","backups","columnCell","deduced","getDeduced","getRawWidths","getPercentageWidths","getPixelWidths","getHeightFrom","rowCell","getPixelHeights","getRawHeights","ColumnSizes","measures","recalculateWidth","widths","recalculateHeight","heights","matchRowHeight","Recalculations","percentageSize","getCellDelta","_delta","setTableWidth","_newWidths","getWidths","setElementWidth","pixelSize","newWidths","chooseSize","fallbackWidth","getTableSize","TableSize","getWarehouse$1","sumUp","getTableWarehouse","adjustWidth","deltas","newSizes","adjustHeight","newHeights","newCellSizes","newRowSizes","adjustWidthTo","Adjustments","outcome","elementFromGrid","findIn","bundle","uniqueRows","currentDetail","uniqueColumns","insertRowBefore","targetIndex","newGrid","insertRowsBefore","insertRowAfter","insertRowsAfter","insertColumnBefore","insertColumnsBefore","insertColumnAfter","insertColumnsAfter","makeRowHeader","makeColumnHeader","unmakeRowHeader","unmakeColumnHeader","splitCellIntoColumns$1","splitCellIntoRows$1","eraseColumns","_genWrappers","eraseRows","mergeCells","unmergeCells","pasteDetails","gridify","wh","mergedGrid","nuGrid","gridifyRows","pasteRowsBefore","pasteRowsAfter","TableOperations","getBody$1","getPixelWidth$1","getPixelHeight","removePxSuffix","addSizeSuffix","removeDataStyle","dataStyleCells","getDirection","ltr$1","rtl$1","defaultTableToolbar","defaultStyles","defaultAttributes","getDefaultAttributes","getDefaultStyles","hasTableResizeBars","hasTabNavigation","hasAdvancedCellTab","hasAdvancedRowTab","hasAdvancedTableTab","hasAppearanceOptions","hasTableGrid","shouldStyleWithCss","getCellClassList","getRowClassList","getTableClassList","getColorPickerCallback","isPixelsForced","getCloneElements","cloneElements","hasObjectResizing","objectResizing","getToolbar","fireNewRow","fireNewCell","TableActions","lazyWire","isTableBody","lastRowGuard","lastColumnGuard","guard","deleteRow","deleteColumn","copyRows","slicedGrid","slicedDetails","CopyRows","getTDTHOverallStyle","firstChildStyle","checkChildren","applyAlign","applyVAlign","unApplyAlign","unApplyVAlign","Styles$1","styleFieldHasFocus","isEqualNode","syncAdvancedStyleFields","updateAdvancedFields","updateStyleField","extractAdvancedStyles","createStyleForm","createColorPickAction","colorPickerCallback","Helpers","updateStyles","mceStyle","extractDataFromElement","valign","onSubmitCellForm","cellElm","generalCellForm","onsubmit","CellDialog","extractDataFromElement$1","switchRowType","rowElm","toType","oldParentElm","onSubmitRowForm","oldData","generalRowForm","RowDialog","DefaultRenderOptions","percentages","makeTable","tableHeaderCell","tableCell","rowHeaders","columnHeaders","renderOpts","trs","getOuter$2","placeCaretInCell","selectFirstCellInTable","fireEvents","isPercentage","InsertTable","styleTDTH","extractDataFromElement$2","cellspacing","cellpadding","applyDataToElement","onSubmitTableForm","captionElm","open$2","isProps","colsCtrl","rowsCtrl","generalTableForm","TableDialog","registerCommands","clipboardRows","eraseTable","getSelectionStartCell","getTableFromCell","resizeChange","actOnSelection","beforeSize","copyRowSelection","pasteOnSelection","clonedRows","mceTableSplitCells","mceTableMergeCells","mceTableInsertRowBefore","mceTableInsertRowAfter","mceTableInsertColBefore","mceTableInsertColAfter","mceTableDeleteCol","mceTableDeleteRow","mceTableCutRow","mceTableCopyRow","mceTablePasteRowBefore","mceTablePasteRowAfter","mceTableDelete","mceInsertTable","mceTableProps","mceTableRowProps","mceTableCellProps","only$1","detached","editable","body$1","ResizeWire","bind$$1","typeDefs","sink","api$3","DragApis","styles$1","Styles$2","Blocker","layerClass","mkEvent","prevent","kill","rawEvent","binder","useCapture","bind$1","bind$2","extract$1","mutate$1","mutation","sink$1","dragApi","mdown","forceDrop","mup","mmove","mout","delayDrop","MouseDrag","InDrag","onEvent","dataOption","NoDrag","Movement","noDragState","inDragState","dragState","isOn","throttledDrop","go","mousemove","runIfActive","Dragging","transform$1","Dragger","Mutation","BarMutation","xDelta","yDelta","closest$2","resizeBarDragging","BarManager","resizing","hoverTable","getResizer","_dataRow","_dataCol","currentCol","getDelta","newX","oldX","startAdjust","mousedown","mouseover","hideBars","showBars","TableResize","manager","beforeResize","afterResize","createContainer","get$9","remove$6","TableWire","ResizeHandler","selectionRng","startRawW","lazyResize","sz","rawWire","rawTable","percentW","targetPercentW","newCellSizes_1","newCellSize","none$2","folder$1","first$5","middle$1","last$4","CellLocation","detect$4","CellNavigation","cata$1","onBefore","onOn","onAfter","situ","Situ","type$2","range$2","getStart$1","startSitu","finishSitu","relative$1","makeRange","same","selectNodeContentsUsing","setFinish","relativeToNative","exactToNative","toRect","getFirstRect","adt$1","fromRange","doDiagnose","reversed","rev","diagnose","asLtrRange","diagnosis","searchForPoint","rectForOffset","curDeltaX","inRect","locateOffset","textnode","rangeForOffset","locate","foundRect","searchInChildren","locateNode","locate$1","boundedX","boundedY","COLLAPSE_TO_LEFT","COLLAPSE_TO_RIGHT","getCollapseDirection","createCollapsedNode","collapseDirection","locateInElement","cursorRange","locateInEmpty","searchTextNodes","searchFromPoint","availableSearch","beforeSpecial","preprocessRelative","preprocessExact","preprocess","doSetNativeRange","doSetRange","setLegacyRtlRange","setRangeFromRelative","setExact","setRelative","toNative","getDomRange","firstRng","doGetExact","setToElement","getExact","get$a","getFirstRect$1","getAtPoint","clear$1","backward","getCellFirstCursorPosition","getNewRowCursorPosition","rootElements","handle$1","isRoot_1","navigation","TabContext","Responses","isKey","keycode","isUp","isDown","isNavigation","SelectionKeys","isBackward","convertToRange","makeSitus","Util$1","get$b","by","WindowBridge","getRangedRect","structRect","exactAdt","fromSitus","situs","situsFromPoint","exact$$1","clearSelection","selectContents","setRelativeSelection","getInnerHeight","getScrollY","sync","selectRange","detect$5","cellSel","updateSelection","newSels","KeySelection","moveDown","moveUp","moveBottomTo","moveTopTo","getTop$1","getBottom","toString$1","Carets","getPartialBox","bridge","toCaret","getElemBox","getBoxAt","getEntireBox","Rectangles","backtrack","_transition","sidestep","advance","successors","go$1","ruleOpt","succ","Walker","left$1","right$1","Walkers","hone","left$2","right$2","Seeker","isLeaf","seekLeft","after$4","seekRight","walkers","_rules","Gather","universe$2","gather","before$4","after$5","seekLeft$1","seekRight$1","walkers$1","DomGather","JUMP_SIZE","NUM_RETRIES","adt$2","isOutside","inOutsideBlock","adjustDown","guessBox","lowerCaret","retry","adjustUp","higherCaret","upMovement","adjuster","downMovement","isAtTable","adjustForTable","numRetries","adjustTil","newCaret","ieTryDown","ieTryUp","checkScroll","adjusted","Retries","tryUp","tryDown","getJumpSize","adt$3","isOverlapping","beforeBounds","afterBounds","verify","beforeOffset","afterOffset","afterCell","beforeCell","isRow","sharedRow","cata$2","onSuccess","onFailedUp","onFailedDown","BeforeAfter","range$3","points","Spot","inParent","indexInParent","gatherer","cand","handleBr","handleParent","adjacent","tryBr","tgt","analysis","BrTags","MAX_RETRIES","platform$1","findSpot","brNeighbour","scan","tryCursor","tryAgain","tryAt","otherRetry","ieRetry","handle$2","spot","TableKeys","ancestor$3","inSameTable","simulate","precheck","firstUpCheck","lastOffset","lastDownCheck","VerticalMovement","findCell","MouseSelection","clearState","mouseup","KeyDirection","failedDown","failedUp","rc","mouse","clearToNavigate","keydown","which","attempts","keyup","InputHandlers","removeClasses","byClass","ephemera","addSelectionClass","removeSelectionClasses","byAttr","removeSelectionAttributes","addSelectionAttribute","SelectionAnnotation","hasInternalTarget","CellSelection$1","handlerStruct","syncSelection","mouseHandlers","keyHandlers","handleResponse","wrappedEvent","wrapEvent","isMouseEvent","isLeftMouse","isLeftButtonPressed","mouseDown","mouseOver","mouseUp","Selections","addButtons","addToolbars","selectorMatched","addMenuItems","tableCtrls","cellCtrls","mergeCtrls","unmergeCtrls","noTargetDisable","ctrlEnable","pushTable","pushCell","pushMerge","pushUnmerge","setDisabledCtrls","mergeCtrl","unmergeCtrl","cellDom","generateTableGrid","selectGrid","tx","focusCell","insertTable","onshow","onhide","lastX","lastY","onmousemove","tableProperties","deleteTable","MenuItems","getClipboardRows","setClipboardRows","sugarRows","resizeHandler","hasProPlugin","DetectProPlugin","firePastePreProcess","isWordHtml","wordContent","firePastePostProcess","firePastePlainTextToggle","firePaste","ieFake","shouldPlainTextInform","shouldBlockDrop","shouldPasteDataImages","shouldFilterDrop","getPreProcess","getPostProcess","getWebkitStyles","shouldRemoveWebKitStyles","shouldMergeFormats","isSmartPasteEnabled","isPasteAsTextEnabled","getRetainStyleProps","getWordValidElements","defaultValidElements","shouldConvertWordFakeLists","shouldUseDefaultFilters","shouldInformUserAboutPlainText","userIsInformedState","togglePlainTextPaste","pasteFormat","pasteHtml","pasteText","internalMimeType","internalMark","mark","unmark","isMarked","InternalHtml","internalHtmlMime","isPlainText","toBRs","openContainer","rootTag","rootAttrs","toBlockElements","tagOpen","tagClose","paragraphs","stitch","Newlines","ignoreElements","trimSpaces","s1","s2","createIdGenerator","isMsEdge","isWordContent","isNumericList","isBulletList","convertFakeListsToProperLists","currentListNode","prevListNode","trimListStart","regExp","removeIgnoredNodes","_listIgnore","convertParagraphToLi","paragraphNode","_listLevel","nodeText","filterStyles","outputStyles","filterWordContent","retainStyleProperties","spaces","WordFilter","processResult","cancelled","postProcessFilter","tempBody","postProcessArgs","filterContent","preProcessArgs","ProcessFilters","removeMeta","isAbsoluteUrl","isImageUrl","createImage","pasteHtmlFn","createLink","linkSelection","smartInsertContent","SmartPaste","mapM","pasteHtml$1","internalFlag","getDataTransferItems","legacyText","getClipboardContent","clipboardEvent","hasContentType","clipboardContent","mimeType","hasHtmlOrText","getBase64FromUri","images_dataimg_filter","extractFilename","pasteImage","imageItem","images_reuse_filename","Image","existingBlobInfo","isClipboardEvent","readBlobsAsDataUris","getAsFile","getImagesFromDataTransfer","pasteImageData","paste_data_images","blobResults","isBrokenAndroidClipboardEvent","isKeyboardPasteEvent","registerEventHandlers","pasteBin","keyboardPasteTimeStamp","keyboardPastePlainTextState","removePasteBinOnKeyUp","insertClipboardContent","isKeyBoardPaste","plainTextMode","isPlainTextHtml","getHtml","isDefaultContent","getLastRng","clipboardTimer","clipboardDelay","registerEventsAndFilters","isPasteInsert","isWebKitFakeUrl","isDataUri","getPasteBinParent","isExternalPasteBin","delegatePasteEvents","pasteBinElm","pasteBinDefaultContent","isDefault","lastRngCell","pasteBinClone","pasteBinClones","dirtyWrappers","cleanWrapper","copyAndRemove","PasteBin","hasWorkingClipboardApi","setHtml5Clipboard","setClipboardData","markedHtml","contenteditable","offscreenRange","isTableSelection","hasSelectedContent","CutCopy","getCaretRangeFromEvent","isPlainTextFileUrl","plainTextContent","setFocusedRange","draggingInternallyState","dropContent","content_1","DragDrop","PrePostProcess","addPreProcessFilter","filterFunc","addPostProcessFilter","removeExplorerBrElementsAfterBlocks","explorerBlocksRegExp","removeWebKitStyles","webKitStylesSetting","webKitStyles","dom_1","node_1","inputStyles","inputValue","currentValue","removeUnderlineAndFontInAnchor","stateChange","_iterableToArrayLimit","_arr","_n","_s","_mergeDeep","_themeable","_superPropBase","_IconCheck","_IconX","ToggleFacade","iconSVG","iconToggle","clearRegistry","getRegisteredThemes","getTheme","registerTheme","makeTheme","setDefaultTheme","setRegistry","a11y","accessible","registeredTheme","_parseCss","_noop","_collections","_folders","_rootFolderId","_newPageLinkExpanded","webpackAsyncContext","_reactRedux","_Sidebar","_configureStore","_facade","_normalizeProps","renderCallback","Provider","IframesTableFix","hackedTables","getHackedTables","tables","setHackedTables","cleanHackedTables","brokenTds","spanChildren","isTableHacked","mo","fixIframes","childList","subtree","addHackedTable","addMutationObserverToTables","IconAdd","initialActions","_replaceValuesWithVariableNames","_applyCustomMediaToCss","_sidebarHandlers","propsFromState","lastError","connect","definition","ua","getFirstMatch","getSecondMatch","iosdevice","likeAndroid","nexusMobile","nexusTablet","chromeos","silk","sailfish","tizen","webos","windowsphone","edgeVersion","versionIdentifier","mobile","xbox","samsungBrowser","whale","mzbrowser","coast","yandexbrowser","ucbrowser","maxthon","epiphany","puffin","sleipnir","kMeleon","osname","chromeBook","vivaldi","seamonkey","firefoxos","phantom","slimer","blackberry","touchpad","bada","qupzilla","chromium","googlebot","getWindowsVersion","osVersion","osversion","osMajorVersion","compareVersions","bowser","browserList","browserItem","getVersionPrecision","versions","chunks","chunk","isUnsupportedBrowser","minVersions","strictMode","_detect","_Flex","defaultBackground","defaultColor","defaultHoverBackground","defaultActiveBackground","defaultActiveBoxShadow","primaryBackground","primaryBorderColor","primaryHoverBackground","primaryActiveBackground","primaryActiveBoxShadow","successBackground","successHoverBackground","successActiveBackground","successActiveBoxShadow","dangerBackground","dangerColor","dangerHoverBackground","dangerActiveBackground","dangerActiveBoxShadow","circleDefaultBackground","circleDefaultColor","circleDefaultHoverBackground","circleDefaultActiveBackground","circleDefaultActiveBoxShadow","circlePrimaryBackground","circlePrimaryBorderColor","circlePrimaryColor","circlePrimaryHoverBackground","circlePrimaryActiveBackground","circlePrimaryActiveBoxShadow","circleDangerBackground","circleDangerBorderColor","circleDangerColor","circleDangerHoverBackground","circleDangerActiveBackground","circleDangerActiveBoxShadow","circleVariants","squareVariants","_button","hasOnlyIcon","buttonRef","IHaveVisibleChildren","hasTextAndIcon","passthroughProps","buttonWidth","buttonBorderRadius","FlexItem","grow","shrink","_inDOM","raf","compatRaf","getKey","vendor","rafKey","curr","_ToggleDetails","_NavigationPanel","_LinkToNewPage","AccordionSection","summary","CollectionPanel","suppressRenderEmpty","renderNewPageLink","LinksPanel","isCourse","navigationSummary","getCurrentColor","mapColors","colorMap","TextColor","defaultColorMap","getTextColorMap","getForeColorMap","getBackColorMap","getTextColorRows","getTextColorCols","getForeColorRows","getBackColorRows","getForeColorCols","getBackColorCols","hasColorPicker","getColorCellHtml","isNoColor","ColorPickerHtml","setDivColor","onButtonClick","onPanelClick","buttonCtrl","currentColor","selectColor","customColorCells","lastId","renderColorPicker","foreColor","_UsageRightsForm","_AltTextForm","UploadForm","setAltResolved","resolved","accum","sfId","flattenFolderTreeDepthFirst","stateId","firstKey","firstFolder","_usageRights","_altText","fileStateUpdate","screenreaderMessage","showForm","labelText","flattenedFolders","handleFolderChange","renderFolderOption","uploadButtonContainer","shouldDisableUpload","handleUpload","uploadForm","encType","uploadLimit","uploadedData","handleFileChange","handleFileClick","isImageSelected","renderFolderSelect","renderFormSubmit","uploadLink","_scrollIntoView","INTERIM_DELAY","nextId","LinkSet","handleDragStart","handleLoadMoreClick","describedByID","renderLinks","renderLoadingError","renderEmptyIndicator","backgroundPosition","backgroundRepeat","_FileTree","FilesPanel","_RCEWrapper","_tinyRCE","_tinymceLightSkin","generateId","missingTranslation","renderedComponent","requestImages","receiveImages","failImagesLoad","FAIL_IMAGES_LOAD","fetchEvent","imageBody","InstructureRecord","IconNo","_uiStylesheet","SidebarFacade","offsetXSmall","offsetSmall","offsetMedium","CloseButton","placement","_classnames6","_IconArrowOpenEnd","_Expandable","ToggleDetails","shouldAnimateContent","getButtonRef","iconPosition","summaryText","toggleProps","renderSummary","_classnames3","iconExpanded","iconStart","iconEnd","detailsProps","_classnames4","hiddenDetails","expandedDetails","indentDetails","positionIconAtEnd","renderToggle","renderDetails","IconMiniArrowEnd","baseClone","CLONE_SYMBOLS_FLAG","_sanitizeEditorOptions","_wrapInitCb","_editorLanguage","initialEditorOptions","sanitizedEditorOptions","branding","_arrayWithHoles","_nonIterableRest","animationEnd","animationTiming","transitionEnd","transitionDelay","transitionTiming","transitionProperty","_getTransitionPropert","getTransitionProperties","delay","vendorMap","O","Moz","Webkit","createToggle","createRequestFiles","createReceiveFiles","requestFiles","createAddFolder","createRequestSubfolders","createReceiveSubfolders","requestSubfolders","createSetRoot","fetchFiles","fetchRootFolder","timeoutPropName","enabledPropName","appearActive","InstructureEquation","_hasClass","_addClass","_addClass2","_removeClass","_removeClass2","_requestAnimationFrame","_requestAnimationFrame2","_properties","addEndListener","CSSTransitionGroupChild","classNameAndNodeQueue","transitionTimeouts","unmounted","animationType","finishCallback","activeClassName","removeListeners","queueClassAndNode","rafHandle","flushClassNameAndNodeQueue","dirColumn","flexBasis"],"mappings":"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tD,GAIX,IAAIqtD,GAAS,CACX,UACA,QACA,UACA,MACA,KACA,aACA,SACA,OACA,WACA,SACA,SACA,OACA,OACA,MACA,UACA,UACA,OACA,IACA,KACA,WACA,KACA,SACA,UACA,SACA,aACA,KACA,KACA,KACA,KACA,KACA,KACA,UACA,MACA,MACA,YACA,OACA,MACA,KACA,KACA,KACA,KACA,QACA,QACA,QACA,QACA,KACA,KACA,KACA;AAEF,IAAIC,GAAQ,CACV,OACA,OACA,WACA,KACA,MACA,QACA,KACA,MACA,QACA,UACA,OACA,OACA,QACA,QACA,SACA,MACA;AAEF,IAAIC,GAAa,CACf,KACA;AAEF,IAAIC,GAAgB,CAClB,QACA,QACA;AAEF,IAAIC,GAAa,CACf,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MACA,UACA,MACA,OACA,aACA,SACA,MACA,WACA,SACA,SACA,UACA,UACA,SACA,QACA,MACA;AAEF,IAAIC,GAAW,CACb,KACA,KACA,KACA,KACA,KACA;AAEF,IAAIC,GAAY,CACd,KACA,KACA;AAEF,IAAIC,GAAQ,CACV,KACA,KACA;AAEF,IAAIC,GAAa,CACf,MACA,SACA,WACA;AAEF,IAAIC,GAAa,SAAUhY,GACzB,IAAIiY;AACJ,OAAO,SAAU/tD,GACf+tD,EAASA,GAAkB7yB,EAAY4a,EAAOtgB,EAAS;AACvD,OAAOu4B,EAAO1xD,eAAewC,GAAKmB;AAGtC,IAAIguD,GAAYF,GAAWJ;AAC3B,IAAIO,GAAUH,GAAWT;AACzB,IAAIa,GAAW,SAAUluD,GACvB,OAAO2jD,GAAU3jD,KAAUiuD,GAAQjuD;AAErC,IAAImuD,GAAO,SAAUnuD,GACnB,OAAO2jD,GAAU3jD,IAAwB,OAAfnB,GAAKmB;AAEjC,IAAIouD,GAAcN,GAAWL;AAC7B,IAAIY,GAASP,GAAWF;AACxB,IAAIU,GAAaR,GAAWH;AAC5B,IAAIY,GAAST,GAAWR;AACxB,IAAIkB,GAAiBV,GAAWN;AAChC,IAAIiB,GAAcX,GAAWP;AAC7B,IAAImB,GAAsBZ,GAAWD;AAErC,IAA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,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,aAAc,CACb,OACA,KAED,gBAAiB,CAChB,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,aAAc,CACb,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,aAAc,CACb,OACA,KAED,gBAAiB,CAChB,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,OAAQ,CACP,OACA,KAED,UAAW,CACV,OACA,KAED,YAAa,CACZ,OACA,KAED,eAAgB,CACf,OACA,KAED,YAAa,CACZ,OACA,KAED,eAAgB,CACf,OACA;AAGF,SAASgnS,EAAoB95C,GAC5B,IAAI7xB,EAAoBt7L,EAAE//B,EAAKktP,GAC9B,OAAO70N,QAAQhY,UAAUwM,MAAK,WAC7B,I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","file":"canvas-rce-old-async-chunk-c-e20844e2cf.js","sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = generator;\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 */\nfunction generator() {\n return {\n sizeXSmall: '1.125rem',\n sizeSmall: '2rem',\n sizeMedium: '3rem',\n sizeLarge: '5rem',\n sizeXLarge: '10rem'\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = matchComponentTypes;\n\nvar _getDisplayName = _interopRequireDefault(require(\"./getDisplayName\"));\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 * category: utilities/react\n * ---\n * Check if a React component instance (React element) matches one of the\n * specified types.\n *\n * @param {ReactComponent} componentInstance\n * @param {Array} types an array of React components\n * @returns {Boolean} true if the component matches at least one of the types\n */\nfunction matchComponentTypes(componentInstance) {\n var types = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];\n\n if (componentInstance && componentInstance.type) {\n var displayNames = types.map(function (type) {\n return (0, _getDisplayName.default)(type);\n });\n return displayNames.indexOf((0, _getDisplayName.default)(componentInstance.type)) >= 0;\n } else {\n return false;\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = setTextDirection;\n\nvar _console = require(\"@instructure/console\");\n\nvar _canUseDOM = _interopRequireDefault(require(\"@instructure/ui-utils/lib/dom/canUseDOM\"));\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 */\nvar hasRan = false;\n/**\n* ---\n* category: utilities/themes\n* ---\n* Sets the document text direction as it's required for themeable component\n* bidirectional styles.\n*/\n\nfunction setTextDirection() {\n if (hasRan) return;\n hasRan = true;\n\n if (_canUseDOM.default) {\n var dir = document.documentElement.getAttribute('dir');\n\n if (!dir) {\n /*#__PURE__*/\n (\n /*#__PURE__*/\n 0, _console.warn)(dir, \"[themeable] component styles require setting a 'dir' attribute on the HTML element.\\n To prevent breaking changes, we'll set it to a default value: 'ltr'.\");\n document.documentElement.setAttribute('dir', 'ltr');\n }\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GridRow\", {\n enumerable: true,\n get: function get() {\n return _GridRow.default;\n }\n});\nObject.defineProperty(exports, \"GridCol\", {\n enumerable: true,\n get: function get() {\n return _GridCol.default;\n }\n});\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _uiThemeable = _interopRequireDefault(require(\"@instructure/ui-themeable\"));\n\nvar _uiPropTypes = require(\"@instructure/ui-prop-types\");\n\nvar _capitalizeFirstLetter = _interopRequireDefault(require(\"@instructure/ui-utils/lib/capitalizeFirstLetter\"));\n\nvar _safeCloneElement = _interopRequireDefault(require(\"@instructure/ui-utils/lib/react/safeCloneElement\"));\n\nvar _matchComponentTypes = _interopRequireDefault(require(\"@instructure/ui-utils/lib/react/matchComponentTypes\"));\n\nvar _passthroughProps = require(\"@instructure/ui-utils/lib/react/passthroughProps\");\n\nvar _ScreenReaderContent = _interopRequireDefault(require(\"@instructure/ui-a11y/lib/components/ScreenReaderContent\"));\n\nvar _GridRow = _interopRequireDefault(require(\"./GridRow\"));\n\nvar _theme = _interopRequireDefault(require(\"./theme\"));\n\nvar _GridCol = _interopRequireDefault(require(\"./GridCol\"));\n\nvar _dec, _class, _class2, _temp;\n\nvar styles = {\n componentId: 'cMIPy',\n template: function template(theme) {\n return \"\\n\\n.cMIPy_bGBk{display:block}\\n\\n.cMIPy_fFVr{outline:0.0625rem dashed red}\\n\\n.cMIPy_dTOw{box-sizing:border-box}\\n\\n@media screen and (--mediumMin){.cMIPy_crIs{box-sizing:border-box}}\\n\\n@media screen and (--largeMin){.cMIPy_cpbQ{box-sizing:border-box}}\\n\\n@media screen and (--xLargeMin){.cMIPy_dsuu{box-sizing:border-box}}\";\n },\n 'root': 'cMIPy_bGBk',\n 'visualDebug': 'cMIPy_fFVr',\n 'startAtSmall': 'cMIPy_dTOw',\n 'startAtMedium': 'cMIPy_crIs',\n 'startAtLarge': 'cMIPy_cpbQ',\n 'startAtXLarge': 'cMIPy_dsuu'\n};\nvar Grid = (\n/**\n---\ncategory: components\n---\n**/\n_dec = (0, _uiThemeable.default)(_theme.default, styles), _dec(_class = (_temp = _class2 =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(Grid, _Component);\n\n function Grid() {\n (0, _classCallCheck2.default)(this, Grid);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Grid).apply(this, arguments));\n }\n\n (0, _createClass2.default)(Grid, [{\n key: \"startAtClass\",\n value: function startAtClass() {\n return !!this.props.startAt && \"startAt\".concat((0, _capitalizeFirstLetter.default)(this.props.startAt));\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var _this = this;\n\n var children = _react.Children.toArray(this.props.children);\n\n return children.map(function (child, index) {\n if ((0, _matchComponentTypes.default)(child, [_GridRow.default])) {\n return (0, _safeCloneElement.default)(child, (0, _objectSpread2.default)({}, (0, _passthroughProps.pickProps)(_this.props, Grid.propTypes), child.props, {\n /* child props should override parent */\n isLastRow: index + 1 === children.length\n }));\n } else {\n return child; // PropType validation should handle errors\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classes;\n\n var classes = (_classes = {}, (0, _defineProperty2.default)(_classes, styles.root, true), (0, _defineProperty2.default)(_classes, styles[this.startAtClass()], !!this.props.startAt), (0, _defineProperty2.default)(_classes, styles.visualDebug, this.props.visualDebug), _classes);\n var props = (0, _passthroughProps.omitProps)(this.props, Grid.propTypes);\n return _react.default.createElement(\"span\", Object.assign({}, props, {\n className: (0, _classnames.default)(classes)\n }), this.renderChildren());\n }\n }]);\n Grid.displayName = \"Grid\";\n return Grid;\n}(_react.Component), _class2.propTypes = {\n children: _uiPropTypes.Children.oneOf([_GridRow.default, _ScreenReaderContent.default]),\n colSpacing: _propTypes.default.oneOf(['none', 'small', 'medium', 'large']),\n rowSpacing: _propTypes.default.oneOf(['none', 'small', 'medium', 'large']),\n hAlign: _propTypes.default.oneOf(['start', 'center', 'end', 'space-around', 'space-between']),\n vAlign: _propTypes.default.oneOf(['top', 'middle', 'bottom']),\n startAt: _propTypes.default.oneOf(['small', 'medium', 'large', 'x-large', null]),\n visualDebug: _propTypes.default.bool\n}, _class2.defaultProps = {\n colSpacing: 'medium',\n rowSpacing: 'medium',\n hAlign: 'start',\n startAt: 'small',\n vAlign: 'top',\n visualDebug: false,\n children: null\n}, _temp)) || _class);\nexports.default = Grid;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeThemeContext = makeThemeContext;\nexports.getThemeContext = getThemeContext;\nexports.ThemeContextTypes = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\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 * category: utilities/themes\n * ---\n * @module ThemeContextTypes\n */\nvar CONTEXT_KEY = '@@themeable';\n/**\n * React context types for [themeable](#themeable) components and\n * the [ApplyTheme](#ApplyTheme) component.\n */\n\nvar ThemeContextTypes = (0, _defineProperty2.default)({}, CONTEXT_KEY, _propTypes.default.object);\n/**\n * create theme context\n * @param {Object} theme an object containing [themeable](#themeable) component themes\n * @param {Boolean} immutable prevent theme overrides?\n */\n\nexports.ThemeContextTypes = ThemeContextTypes;\n\nfunction makeThemeContext(theme, immutable) {\n return (0, _defineProperty2.default)({}, CONTEXT_KEY, {\n theme: theme,\n immutable: immutable\n });\n}\n/**\n * get a theme context\n * @param {ReactContext} context React context object\n */\n\n\nfunction getThemeContext(context) {\n if (context) {\n return context[CONTEXT_KEY];\n }\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _TransitionGroup = require('./TransitionGroup');\n\nvar _TransitionGroup2 = _interopRequireDefault(_TransitionGroup);\n\nvar _CSSTransitionGroupChild = require('./CSSTransitionGroupChild');\n\nvar _CSSTransitionGroupChild2 = _interopRequireDefault(_CSSTransitionGroupChild);\n\nvar _PropTypes = require('./utils/PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n transitionName: _PropTypes.nameShape.isRequired,\n\n transitionAppear: _propTypes2.default.bool,\n transitionEnter: _propTypes2.default.bool,\n transitionLeave: _propTypes2.default.bool,\n transitionAppearTimeout: (0, _PropTypes.transitionTimeout)('Appear'),\n transitionEnterTimeout: (0, _PropTypes.transitionTimeout)('Enter'),\n transitionLeaveTimeout: (0, _PropTypes.transitionTimeout)('Leave')\n};\n\nvar defaultProps = {\n transitionAppear: false,\n transitionEnter: true,\n transitionLeave: true\n};\n\nvar CSSTransitionGroup = function (_React$Component) {\n _inherits(CSSTransitionGroup, _React$Component);\n\n function CSSTransitionGroup() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, CSSTransitionGroup);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this._wrapChild = function (child) {\n return _react2.default.createElement(_CSSTransitionGroupChild2.default, {\n name: _this.props.transitionName,\n appear: _this.props.transitionAppear,\n enter: _this.props.transitionEnter,\n leave: _this.props.transitionLeave,\n appearTimeout: _this.props.transitionAppearTimeout,\n enterTimeout: _this.props.transitionEnterTimeout,\n leaveTimeout: _this.props.transitionLeaveTimeout\n }, child);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n // We need to provide this childFactory so that\n // ReactCSSTransitionGroupChild can receive updates to name, enter, and\n // leave while it is leaving.\n\n\n CSSTransitionGroup.prototype.render = function render() {\n return _react2.default.createElement(_TransitionGroup2.default, _extends({}, this.props, { childFactory: this._wrapChild }));\n };\n\n return CSSTransitionGroup;\n}(_react2.default.Component);\n\nCSSTransitionGroup.displayName = 'CSSTransitionGroup';\n\n\nCSSTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\nCSSTransitionGroup.defaultProps = defaultProps;\n\nexports.default = CSSTransitionGroup;\nmodule.exports = exports['default'];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getComputedStyle;\n\nvar _findDOMNode = _interopRequireDefault(require(\"./findDOMNode\"));\n\nvar _ownerWindow = _interopRequireDefault(require(\"./ownerWindow\"));\n\nvar _canUseDOM = _interopRequireDefault(require(\"./canUseDOM\"));\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 * category: utilities/DOM\n * ---\n *\n * Get the associated CSS properties and values for a\n * specified element\n *\n * @param {ReactComponent|DomNode} el - component or DOM node\n * @returns {Object} object containing css properties and values for the element\n */\nfunction getComputedStyle(el) {\n var style = {};\n\n if (_canUseDOM.default) {\n var node = el && (0, _findDOMNode.default)(el);\n style = node ? (0, _ownerWindow.default)(el).getComputedStyle(node) : {};\n }\n\n return style;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _View = _interopRequireDefault(require(\"@instructure/ui-layout/lib/components/View\"));\n\nvar _uiTestable = _interopRequireDefault(require(\"@instructure/ui-testable\"));\n\nvar _uiThemeable = _interopRequireDefault(require(\"@instructure/ui-themeable\"));\n\nvar _ThemeablePropTypes = _interopRequireDefault(require(\"@instructure/ui-themeable/lib/utils/ThemeablePropTypes\"));\n\nvar _Transition = _interopRequireDefault(require(\"@instructure/ui-motion/lib/components/Transition\"));\n\nvar _theme = _interopRequireDefault(require(\"./theme\"));\n\nvar _dec, _dec2, _class, _class2, _temp;\n\nvar styles = {\n componentId: 'cDwzl',\n template: function template(theme) {\n return \"\\n\\n.cDwzl_caGd,.cDwzl_bGBk{box-sizing:border-box}\\n\\n.cDwzl_caGd{background:\".concat(theme.background || 'inherit', \";border-color:\").concat(theme.borderColor || 'inherit', \";border-style:\").concat(theme.borderStyle || 'inherit', \";border-width:\").concat(theme.borderWidth || 'inherit', \";color:\").concat(theme.color || 'inherit', \";width:100%}\\n\\n.cDwzl_cLQw{overflow:auto}\\n\\n.cDwzl_GKUc,.cDwzl_cAug{flex-basis:100%;min-width:1px}\\n\\n.cDwzl_GKUc .cDwzl_caGd,.cDwzl_cAug .cDwzl_caGd{border-bottom:none;border-left:none;border-right:none}\");\n },\n 'content': 'cDwzl_caGd',\n 'root': 'cDwzl_bGBk',\n 'overflow': 'cDwzl_cLQw',\n 'minimal': 'cDwzl_GKUc',\n 'simple': 'cDwzl_cAug'\n};\nvar TabPanel = (\n/**\n---\nparent: TabList\n---\n**/\n_dec = (0, _uiTestable.default)(), _dec2 = (0, _uiThemeable.default)(_theme.default, styles), _dec(_class = _dec2(_class = (_temp = _class2 =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(TabPanel, _Component);\n\n function TabPanel() {\n (0, _classCallCheck2.default)(this, TabPanel);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(TabPanel).apply(this, arguments));\n }\n\n (0, _createClass2.default)(TabPanel, [{\n key: \"renderContent\",\n value: function renderContent() {\n var _classes;\n\n var classes = (_classes = {}, (0, _defineProperty2.default)(_classes, styles.content, true), (0, _defineProperty2.default)(_classes, styles.overflow, this.props.maxHeight), _classes);\n return _react.default.createElement(_View.default, {\n className: (0, _classnames.default)(classes),\n maxHeight: this.props.maxHeight,\n as: \"div\",\n padding: this.props.padding,\n textAlign: this.props.textAlign\n }, this.props.children);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classes2;\n\n var classes = (_classes2 = {}, (0, _defineProperty2.default)(_classes2, styles.root, true), (0, _defineProperty2.default)(_classes2, styles[this.props.variant], true), _classes2);\n var isHidden = !this.props.selected || !!this.props.disabled;\n return _react.default.createElement(\"div\", {\n className: (0, _classnames.default)(classes),\n role: \"tabpanel\",\n id: this.props.id,\n \"aria-labelledby\": this.props.labelledBy,\n \"aria-hidden\": isHidden ? 'true' : null\n }, _react.default.createElement(_Transition.default, {\n type: \"fade\",\n in: !isHidden,\n unmountOnExit: true,\n transitionExit: false\n }, this.renderContent()));\n }\n }]);\n TabPanel.displayName = \"TabPanel\";\n return TabPanel;\n}(_react.Component), _class2.propTypes = {\n /**\n * The content that will be rendered in the corresponding and will label\n * this `` for screen readers\n */\n title: _propTypes.default.node.isRequired,\n children: _propTypes.default.node,\n variant: _propTypes.default.oneOf(['simple', 'minimal']),\n maxHeight: _propTypes.default.string,\n id: _propTypes.default.string,\n labelledBy: _propTypes.default.string,\n selected: _propTypes.default.bool,\n disabled: _propTypes.default.bool,\n padding: _ThemeablePropTypes.default.spacing,\n textAlign: _propTypes.default.oneOf(['start', 'center', 'end']),\n\n /**\n * A ref to this `` component instance\n */\n tabRef: _propTypes.default.func\n}, _class2.defaultProps = {\n children: null,\n maxHeight: void 0,\n disabled: false,\n textAlign: void 0,\n id: null,\n variant: 'simple',\n labelledBy: null,\n selected: false,\n padding: 'small',\n tabRef: function tabRef(el) {}\n}, _temp)) || _class) || _class);\nexports.default = TabPanel;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = formatVariableNames;\n\nvar _formatVariableName = _interopRequireDefault(require(\"./formatVariableName\"));\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 * category: utilities/themes\n * ---\n * Formats object keys as a CSS variable (prefixed with `--`)\n * @param {Object} variables\n * @param {String} prefix an optional prefix to add to the variable names\n * @returns {Object} variables object with the keys formatted as CSS variables\n */\nfunction formatVariableNames(variables, prefix) {\n var formatted = {};\n Object.keys(variables || {}).forEach(function (key) {\n formatted[(0, _formatVariableName.default)(key, prefix)] = variables[key];\n });\n return formatted;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = wrapInitCb;\n\nvar _IframesTableFix = _interopRequireDefault(require(\"./IframesTableFix\"));\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 .\n */\n// mirror attributes onto tinymce editor (if this can be done\n// via tiny api, it is preferable, but I dont see a way)\nfunction wrapInitCb(mirroredAttrs, editorOptions, MutationObserver) {\n MutationObserver = MutationObserver === undefined ? window.MutationObserver : MutationObserver;\n var oldInitInstCb = editorOptions.init_instance_callback;\n\n editorOptions.init_instance_callback = function (ed) {\n var attrs = mirroredAttrs || {};\n var el = ed.getElement();\n\n if (el) {\n Object.keys(attrs).forEach(function (attr) {\n el.setAttribute(attr, attrs[attr]);\n }); // add data to textarea so it can be found by canvas\n // (which unfortunately relies on this a lot)\n\n el.dataset.rich_text = true;\n } // hookAddVisual for hacky ') !== -1;\n };\n var createFragmentedLevel = function (fragments) {\n return {\n type: 'fragmented',\n fragments: fragments,\n content: '',\n bookmark: null,\n beforeBookmark: null\n };\n };\n var createCompleteLevel = function (content) {\n return {\n type: 'complete',\n fragments: null,\n content: content,\n bookmark: null,\n beforeBookmark: null\n };\n };\n var createFromEditor = function (editor) {\n var fragments, content, trimmedFragments;\n fragments = Fragments.read(editor.getBody());\n trimmedFragments = bind(fragments, function (html) {\n var trimmed = TrimHtml.trimInternal(editor.serializer, html);\n return trimmed.length > 0 ? [trimmed] : [];\n });\n content = trimmedFragments.join('');\n return hasIframes(content) ? createFragmentedLevel(trimmedFragments) : createCompleteLevel(content);\n };\n var applyToEditor = function (editor, level, before) {\n if (level.type === 'fragmented') {\n Fragments.write(level.fragments, editor.getBody());\n } else {\n editor.setContent(level.content, { format: 'raw' });\n }\n editor.selection.moveToBookmark(before ? level.beforeBookmark : level.bookmark);\n };\n var getLevelContent = function (level) {\n return level.type === 'fragmented' ? level.fragments.join('') : level.content;\n };\n var getCleanLevelContent = function (level) {\n var elm = Element$$1.fromTag('body', lazyTempDocument());\n set$2(elm, getLevelContent(level));\n each(descendants$1(elm, '*[data-mce-bogus]'), unwrap);\n return get$5(elm);\n };\n var hasEqualContent = function (level1, level2) {\n return getLevelContent(level1) === getLevelContent(level2);\n };\n var hasEqualCleanedContent = function (level1, level2) {\n return getCleanLevelContent(level1) === getCleanLevelContent(level2);\n };\n var isEq$3 = function (level1, level2) {\n if (!level1 || !level2) {\n return false;\n } else if (hasEqualContent(level1, level2)) {\n return true;\n } else {\n return hasEqualCleanedContent(level1, level2);\n }\n };\n var Levels = {\n createFragmentedLevel: createFragmentedLevel,\n createCompleteLevel: createCompleteLevel,\n createFromEditor: createFromEditor,\n applyToEditor: applyToEditor,\n isEq: isEq$3\n };\n\n function UndoManager (editor) {\n var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0;\n var isUnlocked = function () {\n return locks === 0;\n };\n var setTyping = function (typing) {\n if (isUnlocked()) {\n self.typing = typing;\n }\n };\n var setDirty = function (state) {\n editor.setDirty(state);\n };\n var addNonTypingUndoLevel = function (e) {\n setTyping(false);\n self.add({}, e);\n };\n var endTyping = function () {\n if (self.typing) {\n setTyping(false);\n self.add();\n }\n };\n editor.on('init', function () {\n self.add();\n });\n editor.on('BeforeExecCommand', function (e) {\n var cmd = e.command;\n if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {\n endTyping();\n self.beforeChange();\n }\n });\n editor.on('ExecCommand', function (e) {\n var cmd = e.command;\n if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {\n addNonTypingUndoLevel(e);\n }\n });\n editor.on('ObjectResizeStart Cut', function () {\n self.beforeChange();\n });\n editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel);\n editor.on('DragEnd', addNonTypingUndoLevel);\n editor.on('KeyUp', function (e) {\n var keyCode = e.keyCode;\n if (e.isDefaultPrevented()) {\n return;\n }\n if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey) {\n addNonTypingUndoLevel();\n editor.nodeChanged();\n }\n if (keyCode === 46 || keyCode === 8) {\n editor.nodeChanged();\n }\n if (isFirstTypedCharacter && self.typing && Levels.isEq(Levels.createFromEditor(editor), data[0]) === false) {\n if (editor.isDirty() === false) {\n setDirty(true);\n editor.fire('change', {\n level: data[0],\n lastLevel: null\n });\n }\n editor.fire('TypingUndo');\n isFirstTypedCharacter = false;\n editor.nodeChanged();\n }\n });\n editor.on('KeyDown', function (e) {\n var keyCode = e.keyCode;\n if (e.isDefaultPrevented()) {\n return;\n }\n if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) {\n if (self.typing) {\n addNonTypingUndoLevel(e);\n }\n return;\n }\n var modKey = e.ctrlKey && !e.altKey || e.metaKey;\n if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !self.typing && !modKey) {\n self.beforeChange();\n setTyping(true);\n self.add({}, e);\n isFirstTypedCharacter = true;\n }\n });\n editor.on('MouseDown', function (e) {\n if (self.typing) {\n addNonTypingUndoLevel(e);\n }\n });\n var isInsertReplacementText = function (event) {\n return event.inputType === 'insertReplacementText';\n };\n var isInsertTextDataNull = function (event) {\n return event.inputType === 'insertText' && event.data === null;\n };\n editor.on('input', function (e) {\n if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e))) {\n addNonTypingUndoLevel(e);\n }\n });\n editor.addShortcut('meta+z', '', 'Undo');\n editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');\n editor.on('AddUndo Undo Redo ClearUndos', function (e) {\n if (!e.isDefaultPrevented()) {\n editor.nodeChanged();\n }\n });\n self = {\n data: data,\n typing: false,\n beforeChange: function () {\n if (isUnlocked()) {\n beforeBookmark = GetBookmark.getUndoBookmark(editor.selection);\n }\n },\n add: function (level, event) {\n var i;\n var settings = editor.settings;\n var lastLevel, currentLevel;\n currentLevel = Levels.createFromEditor(editor);\n level = level || {};\n level = Tools.extend(level, currentLevel);\n if (isUnlocked() === false || editor.removed) {\n return null;\n }\n lastLevel = data[index];\n if (editor.fire('BeforeAddUndo', {\n level: level,\n lastLevel: lastLevel,\n originalEvent: event\n }).isDefaultPrevented()) {\n return null;\n }\n if (lastLevel && Levels.isEq(lastLevel, level)) {\n return null;\n }\n if (data[index]) {\n data[index].beforeBookmark = beforeBookmark;\n }\n if (settings.custom_undo_redo_levels) {\n if (data.length > settings.custom_undo_redo_levels) {\n for (i = 0; i < data.length - 1; i++) {\n data[i] = data[i + 1];\n }\n data.length--;\n index = data.length;\n }\n }\n level.bookmark = GetBookmark.getUndoBookmark(editor.selection);\n if (index < data.length - 1) {\n data.length = index + 1;\n }\n data.push(level);\n index = data.length - 1;\n var args = {\n level: level,\n lastLevel: lastLevel,\n originalEvent: event\n };\n editor.fire('AddUndo', args);\n if (index > 0) {\n setDirty(true);\n editor.fire('change', args);\n }\n return level;\n },\n undo: function () {\n var level;\n if (self.typing) {\n self.add();\n self.typing = false;\n setTyping(false);\n }\n if (index > 0) {\n level = data[--index];\n Levels.applyToEditor(editor, level, true);\n setDirty(true);\n editor.fire('undo', { level: level });\n }\n return level;\n },\n redo: function () {\n var level;\n if (index < data.length - 1) {\n level = data[++index];\n Levels.applyToEditor(editor, level, false);\n setDirty(true);\n editor.fire('redo', { level: level });\n }\n return level;\n },\n clear: function () {\n data = [];\n index = 0;\n self.typing = false;\n self.data = data;\n editor.fire('ClearUndos');\n },\n hasUndo: function () {\n return index > 0 || self.typing && data[0] && !Levels.isEq(Levels.createFromEditor(editor), data[0]);\n },\n hasRedo: function () {\n return index < data.length - 1 && !self.typing;\n },\n transact: function (callback) {\n endTyping();\n self.beforeChange();\n self.ignore(callback);\n return self.add();\n },\n ignore: function (callback) {\n try {\n locks++;\n callback();\n } finally {\n locks--;\n }\n },\n extra: function (callback1, callback2) {\n var lastLevel, bookmark;\n if (self.transact(callback1)) {\n bookmark = data[index].bookmark;\n lastLevel = data[index - 1];\n Levels.applyToEditor(editor, lastLevel, true);\n if (self.transact(callback2)) {\n data[index - 1].beforeBookmark = bookmark;\n }\n }\n }\n };\n return self;\n }\n\n var isEq$4 = FormatUtils.isEq;\n var matchesUnInheritedFormatSelector = function (ed, node, name) {\n var formatList = ed.formatter.get(name);\n if (formatList) {\n for (var i = 0; i < formatList.length; i++) {\n if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) {\n return true;\n }\n }\n }\n return false;\n };\n var matchParents = function (editor, node, name, vars) {\n var root = editor.dom.getRoot();\n if (node === root) {\n return false;\n }\n node = editor.dom.getParent(node, function (node) {\n if (matchesUnInheritedFormatSelector(editor, node, name)) {\n return true;\n }\n return node.parentNode === root || !!matchNode(editor, node, name, vars, true);\n });\n return matchNode(editor, node, name, vars);\n };\n var matchName = function (dom, node, format) {\n if (isEq$4(node, format.inline)) {\n return true;\n }\n if (isEq$4(node, format.block)) {\n return true;\n }\n if (format.selector) {\n return node.nodeType === 1 && dom.is(node, format.selector);\n }\n };\n var matchItems = function (dom, node, format, itemName, similar, vars) {\n var key, value;\n var items = format[itemName];\n var i;\n if (format.onmatch) {\n return format.onmatch(node, format, itemName);\n }\n if (items) {\n if (typeof items.length === 'undefined') {\n for (key in items) {\n if (items.hasOwnProperty(key)) {\n if (itemName === 'attributes') {\n value = dom.getAttrib(node, key);\n } else {\n value = FormatUtils.getStyle(dom, node, key);\n }\n if (similar && !value && !format.exact) {\n return;\n }\n if ((!similar || format.exact) && !isEq$4(value, FormatUtils.normalizeStyleValue(dom, FormatUtils.replaceVars(items[key], vars), key))) {\n return;\n }\n }\n }\n } else {\n for (i = 0; i < items.length; i++) {\n if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : FormatUtils.getStyle(dom, node, items[i])) {\n return format;\n }\n }\n }\n }\n return format;\n };\n var matchNode = function (ed, node, name, vars, similar) {\n var formatList = ed.formatter.get(name);\n var format, i, x, classes;\n var dom = ed.dom;\n if (formatList && node) {\n for (i = 0; i < formatList.length; i++) {\n format = formatList[i];\n if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) {\n if (classes = format.classes) {\n for (x = 0; x < classes.length; x++) {\n if (!ed.dom.hasClass(node, classes[x])) {\n return;\n }\n }\n }\n return format;\n }\n }\n }\n };\n var match = function (editor, name, vars, node) {\n var startNode;\n if (node) {\n return matchParents(editor, node, name, vars);\n }\n node = editor.selection.getNode();\n if (matchParents(editor, node, name, vars)) {\n return true;\n }\n startNode = editor.selection.getStart();\n if (startNode !== node) {\n if (matchParents(editor, startNode, name, vars)) {\n return true;\n }\n }\n return false;\n };\n var matchAll = function (editor, names, vars) {\n var startElement;\n var matchedFormatNames = [];\n var checkedMap = {};\n startElement = editor.selection.getStart();\n editor.dom.getParent(startElement, function (node) {\n var i, name;\n for (i = 0; i < names.length; i++) {\n name = names[i];\n if (!checkedMap[name] && matchNode(editor, node, name, vars)) {\n checkedMap[name] = true;\n matchedFormatNames.push(name);\n }\n }\n }, editor.dom.getRoot());\n return matchedFormatNames;\n };\n var canApply = function (editor, name) {\n var formatList = editor.formatter.get(name);\n var startNode, parents, i, x, selector;\n var dom = editor.dom;\n if (formatList) {\n startNode = editor.selection.getStart();\n parents = FormatUtils.getParents(dom, startNode);\n for (x = formatList.length - 1; x >= 0; x--) {\n selector = formatList[x].selector;\n if (!selector || formatList[x].defaultBlock) {\n return true;\n }\n for (i = parents.length - 1; i >= 0; i--) {\n if (dom.is(parents[i], selector)) {\n return true;\n }\n }\n }\n }\n return false;\n };\n var MatchFormat = {\n matchNode: matchNode,\n matchName: matchName,\n match: match,\n matchAll: matchAll,\n canApply: canApply,\n matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector\n };\n\n var splitText = function (node, offset) {\n return node.splitText(offset);\n };\n var split$1 = function (rng) {\n var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;\n if (startContainer === endContainer && NodeType.isText(startContainer)) {\n if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {\n endContainer = splitText(startContainer, startOffset);\n startContainer = endContainer.previousSibling;\n if (endOffset > startOffset) {\n endOffset = endOffset - startOffset;\n startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;\n endOffset = endContainer.nodeValue.length;\n startOffset = 0;\n } else {\n endOffset = 0;\n }\n }\n } else {\n if (NodeType.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) {\n startContainer = splitText(startContainer, startOffset);\n startOffset = 0;\n }\n if (NodeType.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) {\n endContainer = splitText(endContainer, endOffset).previousSibling;\n endOffset = endContainer.nodeValue.length;\n }\n }\n return {\n startContainer: startContainer,\n startOffset: startOffset,\n endContainer: endContainer,\n endOffset: endOffset\n };\n };\n var SplitRange = { split: split$1 };\n\n var ZWSP$1 = Zwsp.ZWSP, CARET_ID$1 = '_mce_caret';\n var importNode = function (ownerDocument, node) {\n return ownerDocument.importNode(node, true);\n };\n var getEmptyCaretContainers = function (node) {\n var nodes = [];\n while (node) {\n if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) {\n return [];\n }\n if (node.nodeType === 1) {\n nodes.push(node);\n }\n node = node.firstChild;\n }\n return nodes;\n };\n var isCaretContainerEmpty = function (node) {\n return getEmptyCaretContainers(node).length > 0;\n };\n var findFirstTextNode = function (node) {\n var walker;\n if (node) {\n walker = new TreeWalker(node, node);\n for (node = walker.current(); node; node = walker.next()) {\n if (node.nodeType === 3) {\n return node;\n }\n }\n }\n return null;\n };\n var createCaretContainer = function (fill) {\n var caretContainer = Element$$1.fromTag('span');\n setAll(caretContainer, {\n 'id': CARET_ID$1,\n 'data-mce-bogus': '1',\n 'data-mce-type': 'format-caret'\n });\n if (fill) {\n append(caretContainer, Element$$1.fromText(ZWSP$1));\n }\n return caretContainer;\n };\n var trimZwspFromCaretContainer = function (caretContainerNode) {\n var textNode = findFirstTextNode(caretContainerNode);\n if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) {\n textNode.deleteData(0, 1);\n }\n return textNode;\n };\n var removeCaretContainerNode = function (editor, node, moveCaret) {\n if (moveCaret === void 0) {\n moveCaret = true;\n }\n var dom = editor.dom, selection = editor.selection;\n if (isCaretContainerEmpty(node)) {\n DeleteElement.deleteElement(editor, false, Element$$1.fromDom(node), moveCaret);\n } else {\n var rng = selection.getRng();\n var block = dom.getParent(node, dom.isBlock);\n var textNode = trimZwspFromCaretContainer(node);\n if (rng.startContainer === textNode && rng.startOffset > 0) {\n rng.setStart(textNode, rng.startOffset - 1);\n }\n if (rng.endContainer === textNode && rng.endOffset > 0) {\n rng.setEnd(textNode, rng.endOffset - 1);\n }\n dom.remove(node, true);\n if (block && dom.isEmpty(block)) {\n PaddingBr.fillWithPaddingBr(Element$$1.fromDom(block));\n }\n selection.setRng(rng);\n }\n };\n var removeCaretContainer = function (editor, node, moveCaret) {\n if (moveCaret === void 0) {\n moveCaret = true;\n }\n var dom = editor.dom, selection = editor.selection;\n if (!node) {\n node = getParentCaretContainer(editor.getBody(), selection.getStart());\n if (!node) {\n while (node = dom.get(CARET_ID$1)) {\n removeCaretContainerNode(editor, node, false);\n }\n }\n } else {\n removeCaretContainerNode(editor, node, moveCaret);\n }\n };\n var insertCaretContainerNode = function (editor, caretContainer, formatNode) {\n var dom = editor.dom, block = dom.getParent(formatNode, curry(FormatUtils.isTextBlock, editor));\n if (block && dom.isEmpty(block)) {\n formatNode.parentNode.replaceChild(caretContainer, formatNode);\n } else {\n PaddingBr.removeTrailingBr(Element$$1.fromDom(formatNode));\n if (dom.isEmpty(formatNode)) {\n formatNode.parentNode.replaceChild(caretContainer, formatNode);\n } else {\n dom.insertAfter(caretContainer, formatNode);\n }\n }\n };\n var appendNode = function (parentNode, node) {\n parentNode.appendChild(node);\n return node;\n };\n var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) {\n var innerMostFormatNode = foldr(formatNodes, function (parentNode, formatNode) {\n return appendNode(parentNode, formatNode.cloneNode(false));\n }, caretContainer);\n return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1));\n };\n var applyCaretFormat = function (editor, name$$1, vars) {\n var rng, caretContainer, textNode, offset, bookmark, container, text;\n var selection = editor.selection;\n rng = selection.getRng(true);\n offset = rng.startOffset;\n container = rng.startContainer;\n text = container.nodeValue;\n caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart());\n if (caretContainer) {\n textNode = findFirstTextNode(caretContainer);\n }\n var wordcharRegex = /[^\\s\\u00a0\\u00ad\\u200b\\ufeff]/;\n if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) {\n bookmark = selection.getBookmark();\n rng.collapse(true);\n rng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name$$1));\n rng = SplitRange.split(rng);\n editor.formatter.apply(name$$1, vars, rng);\n selection.moveToBookmark(bookmark);\n } else {\n if (!caretContainer || textNode.nodeValue !== ZWSP$1) {\n caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom());\n textNode = caretContainer.firstChild;\n rng.insertNode(caretContainer);\n offset = 1;\n editor.formatter.apply(name$$1, vars, caretContainer);\n } else {\n editor.formatter.apply(name$$1, vars, caretContainer);\n }\n selection.setCursorLocation(textNode, offset);\n }\n };\n var removeCaretFormat = function (editor, name$$1, vars, similar) {\n var dom = editor.dom, selection = editor.selection;\n var container, offset, bookmark;\n var hasContentAfter, node, formatNode;\n var parents = [], rng = selection.getRng();\n var caretContainer;\n container = rng.startContainer;\n offset = rng.startOffset;\n node = container;\n if (container.nodeType === 3) {\n if (offset !== container.nodeValue.length) {\n hasContentAfter = true;\n }\n node = node.parentNode;\n }\n while (node) {\n if (MatchFormat.matchNode(editor, node, name$$1, vars, similar)) {\n formatNode = node;\n break;\n }\n if (node.nextSibling) {\n hasContentAfter = true;\n }\n parents.push(node);\n node = node.parentNode;\n }\n if (!formatNode) {\n return;\n }\n if (hasContentAfter) {\n bookmark = selection.getBookmark();\n rng.collapse(true);\n var expandedRng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name$$1), true);\n expandedRng = SplitRange.split(expandedRng);\n editor.formatter.remove(name$$1, vars, expandedRng);\n selection.moveToBookmark(bookmark);\n } else {\n caretContainer = getParentCaretContainer(editor.getBody(), formatNode);\n var newCaretContainer = createCaretContainer(false).dom();\n var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer);\n if (caretContainer) {\n insertCaretContainerNode(editor, newCaretContainer, caretContainer);\n } else {\n insertCaretContainerNode(editor, newCaretContainer, formatNode);\n }\n removeCaretContainerNode(editor, caretContainer, false);\n selection.setCursorLocation(caretNode, 1);\n if (dom.isEmpty(formatNode)) {\n dom.remove(formatNode);\n }\n }\n };\n var disableCaretContainer = function (editor, keyCode) {\n var selection = editor.selection, body = editor.getBody();\n removeCaretContainer(editor, null, false);\n if ((keyCode === 8 || keyCode === 46) && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) {\n removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()));\n }\n if (keyCode === 37 || keyCode === 39) {\n removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()));\n }\n };\n var setup$4 = function (editor) {\n editor.on('mouseup keydown', function (e) {\n disableCaretContainer(editor, e.keyCode);\n });\n };\n var replaceWithCaretFormat = function (targetNode, formatNodes) {\n var caretContainer = createCaretContainer(false);\n var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom());\n before(Element$$1.fromDom(targetNode), caretContainer);\n remove$2(Element$$1.fromDom(targetNode));\n return CaretPosition$1(innerMost, 0);\n };\n var isFormatElement = function (editor, element) {\n var inlineElements = editor.schema.getTextInlineElements();\n return inlineElements.hasOwnProperty(name(element)) && !isCaretNode(element.dom()) && !NodeType.isBogus(element.dom());\n };\n var isEmptyCaretFormatElement = function (element) {\n return isCaretNode(element.dom()) && isCaretContainerEmpty(element.dom());\n };\n\n var postProcessHooks = {}, filter$2 = ArrUtils.filter, each$c = ArrUtils.each;\n var addPostProcessHook = function (name, hook) {\n var hooks = postProcessHooks[name];\n if (!hooks) {\n postProcessHooks[name] = hooks = [];\n }\n postProcessHooks[name].push(hook);\n };\n var postProcess = function (name, editor) {\n each$c(postProcessHooks[name], function (hook) {\n hook(editor);\n });\n };\n addPostProcessHook('pre', function (editor) {\n var rng = editor.selection.getRng();\n var isPre, blocks;\n var hasPreSibling = function (pre) {\n return isPre(pre.previousSibling) && ArrUtils.indexOf(blocks, pre.previousSibling) !== -1;\n };\n var joinPre = function (pre1, pre2) {\n DomQuery(pre2).remove();\n DomQuery(pre1).append('

').append(pre2.childNodes);\n };\n isPre = NodeType.matchNodeNames('pre');\n if (!rng.collapsed) {\n blocks = editor.selection.getSelectedBlocks();\n each$c(filter$2(filter$2(blocks, isPre), hasPreSibling), function (pre) {\n joinPre(pre.previousSibling, pre);\n });\n }\n });\n var Hooks = { postProcess: postProcess };\n\n var MCE_ATTR_RE = /^(src|href|style)$/;\n var each$d = Tools.each;\n var isEq$5 = FormatUtils.isEq;\n var isTableCell$4 = function (node) {\n return /^(TH|TD)$/.test(node.nodeName);\n };\n var isChildOfInlineParent = function (dom, node, parent$$1) {\n return dom.isChildOf(node, parent$$1) && node !== parent$$1 && !dom.isBlock(parent$$1);\n };\n var getContainer = function (ed, rng, start) {\n var container, offset, lastIdx;\n container = rng[start ? 'startContainer' : 'endContainer'];\n offset = rng[start ? 'startOffset' : 'endOffset'];\n if (NodeType.isElement(container)) {\n lastIdx = container.childNodes.length - 1;\n if (!start && offset) {\n offset--;\n }\n container = container.childNodes[offset > lastIdx ? lastIdx : offset];\n }\n if (NodeType.isText(container) && start && offset >= container.nodeValue.length) {\n container = new TreeWalker(container, ed.getBody()).next() || container;\n }\n if (NodeType.isText(container) && !start && offset === 0) {\n container = new TreeWalker(container, ed.getBody()).prev() || container;\n }\n return container;\n };\n var wrap$2 = function (dom, node, name, attrs) {\n var wrapper = dom.create(name, attrs);\n node.parentNode.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n return wrapper;\n };\n var wrapWithSiblings = function (dom, node, next, name, attrs) {\n var start = Element$$1.fromDom(node);\n var wrapper = Element$$1.fromDom(dom.create(name, attrs));\n var siblings$$1 = next ? nextSiblings(start) : prevSiblings(start);\n append$1(wrapper, siblings$$1);\n if (next) {\n before(start, wrapper);\n prepend(wrapper, start);\n } else {\n after(start, wrapper);\n append(wrapper, start);\n }\n return wrapper.dom();\n };\n var matchName$1 = function (dom, node, format) {\n if (isEq$5(node, format.inline)) {\n return true;\n }\n if (isEq$5(node, format.block)) {\n return true;\n }\n if (format.selector) {\n return NodeType.isElement(node) && dom.is(node, format.selector);\n }\n };\n var isColorFormatAndAnchor = function (node, format) {\n return format.links && node.tagName === 'A';\n };\n var find$4 = function (dom, node, next, inc) {\n node = FormatUtils.getNonWhiteSpaceSibling(node, next, inc);\n return !node || (node.nodeName === 'BR' || dom.isBlock(node));\n };\n var removeNode$1 = function (ed, node, format) {\n var parentNode = node.parentNode;\n var rootBlockElm;\n var dom = ed.dom, forcedRootBlock = ed.settings.forced_root_block;\n if (format.block) {\n if (!forcedRootBlock) {\n if (dom.isBlock(node) && !dom.isBlock(parentNode)) {\n if (!find$4(dom, node, false) && !find$4(dom, node.firstChild, true, 1)) {\n node.insertBefore(dom.create('br'), node.firstChild);\n }\n if (!find$4(dom, node, true) && !find$4(dom, node.lastChild, false, 1)) {\n node.appendChild(dom.create('br'));\n }\n }\n } else {\n if (parentNode === dom.getRoot()) {\n if (!format.list_block || !isEq$5(node, format.list_block)) {\n each$d(Tools.grep(node.childNodes), function (node) {\n if (FormatUtils.isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) {\n if (!rootBlockElm) {\n rootBlockElm = wrap$2(dom, node, forcedRootBlock);\n dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs);\n } else {\n rootBlockElm.appendChild(node);\n }\n } else {\n rootBlockElm = 0;\n }\n });\n }\n }\n }\n }\n if (format.selector && format.inline && !isEq$5(format.inline, node)) {\n return;\n }\n dom.remove(node, 1);\n };\n var removeFormat = function (ed, format, vars, node, compareNode) {\n var i, attrs, stylesModified;\n var dom = ed.dom;\n if (!matchName$1(dom, node, format) && !isColorFormatAndAnchor(node, format)) {\n return false;\n }\n if (format.remove !== 'all') {\n each$d(format.styles, function (value, name) {\n value = FormatUtils.normalizeStyleValue(dom, FormatUtils.replaceVars(value, vars), name);\n if (typeof name === 'number') {\n name = value;\n compareNode = 0;\n }\n if (format.remove_similar || (!compareNode || isEq$5(FormatUtils.getStyle(dom, compareNode, name), value))) {\n dom.setStyle(node, name, '');\n }\n stylesModified = 1;\n });\n if (stylesModified && dom.getAttrib(node, 'style') === '') {\n node.removeAttribute('style');\n node.removeAttribute('data-mce-style');\n }\n each$d(format.attributes, function (value, name) {\n var valueOut;\n value = FormatUtils.replaceVars(value, vars);\n if (typeof name === 'number') {\n name = value;\n compareNode = 0;\n }\n if (!compareNode || isEq$5(dom.getAttrib(compareNode, name), value)) {\n if (name === 'class') {\n value = dom.getAttrib(node, name);\n if (value) {\n valueOut = '';\n each$d(value.split(/\\s+/), function (cls) {\n if (/mce\\-\\w+/.test(cls)) {\n valueOut += (valueOut ? ' ' : '') + cls;\n }\n });\n if (valueOut) {\n dom.setAttrib(node, name, valueOut);\n return;\n }\n }\n }\n if (name === 'class') {\n node.removeAttribute('className');\n }\n if (MCE_ATTR_RE.test(name)) {\n node.removeAttribute('data-mce-' + name);\n }\n node.removeAttribute(name);\n }\n });\n each$d(format.classes, function (value) {\n value = FormatUtils.replaceVars(value, vars);\n if (!compareNode || dom.hasClass(compareNode, value)) {\n dom.removeClass(node, value);\n }\n });\n attrs = dom.getAttribs(node);\n for (i = 0; i < attrs.length; i++) {\n var attrName = attrs[i].nodeName;\n if (attrName.indexOf('_') !== 0 && attrName.indexOf('data-') !== 0) {\n return false;\n }\n }\n }\n if (format.remove !== 'none') {\n removeNode$1(ed, node, format);\n return true;\n }\n };\n var findFormatRoot = function (editor, container, name, vars, similar) {\n var formatRoot;\n each$d(FormatUtils.getParents(editor.dom, container.parentNode).reverse(), function (parent$$1) {\n var format;\n if (!formatRoot && parent$$1.id !== '_start' && parent$$1.id !== '_end') {\n format = MatchFormat.matchNode(editor, parent$$1, name, vars, similar);\n if (format && format.split !== false) {\n formatRoot = parent$$1;\n }\n }\n });\n return formatRoot;\n };\n var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) {\n var parent$$1, clone, lastClone, firstClone, i, formatRootParent;\n var dom = editor.dom;\n if (formatRoot) {\n formatRootParent = formatRoot.parentNode;\n for (parent$$1 = container.parentNode; parent$$1 && parent$$1 !== formatRootParent; parent$$1 = parent$$1.parentNode) {\n clone = dom.clone(parent$$1, false);\n for (i = 0; i < formatList.length; i++) {\n if (removeFormat(editor, formatList[i], vars, clone, clone)) {\n clone = 0;\n break;\n }\n }\n if (clone) {\n if (lastClone) {\n clone.appendChild(lastClone);\n }\n if (!firstClone) {\n firstClone = clone;\n }\n lastClone = clone;\n }\n }\n if (split && (!format.mixed || !dom.isBlock(formatRoot))) {\n container = dom.split(formatRoot, container);\n }\n if (lastClone) {\n target.parentNode.insertBefore(lastClone, target);\n firstClone.appendChild(target);\n }\n }\n return container;\n };\n var remove$8 = function (ed, name, vars, node, similar) {\n var formatList = ed.formatter.get(name), format = formatList[0];\n var bookmark, rng, contentEditable = true;\n var dom = ed.dom;\n var selection = ed.selection;\n var splitToFormatRoot = function (container) {\n var formatRoot = findFormatRoot(ed, container, name, vars, similar);\n return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars);\n };\n var isRemoveBookmarkNode = function (node) {\n return Bookmarks.isBookmarkNode(node) && NodeType.isElement(node) && (node.id === '_start' || node.id === '_end');\n };\n var process = function (node) {\n var children$$1, i, l, lastContentEditable, hasContentEditableState;\n if (NodeType.isElement(node) && dom.getContentEditable(node)) {\n lastContentEditable = contentEditable;\n contentEditable = dom.getContentEditable(node) === 'true';\n hasContentEditableState = true;\n }\n children$$1 = Tools.grep(node.childNodes);\n if (contentEditable && !hasContentEditableState) {\n for (i = 0, l = formatList.length; i < l; i++) {\n if (removeFormat(ed, formatList[i], vars, node, node)) {\n break;\n }\n }\n }\n if (format.deep) {\n if (children$$1.length) {\n for (i = 0, l = children$$1.length; i < l; i++) {\n process(children$$1[i]);\n }\n if (hasContentEditableState) {\n contentEditable = lastContentEditable;\n }\n }\n }\n };\n var unwrap = function (start) {\n var node = dom.get(start ? '_start' : '_end');\n var out = node[start ? 'firstChild' : 'lastChild'];\n if (isRemoveBookmarkNode(out)) {\n out = out[start ? 'firstChild' : 'lastChild'];\n }\n if (NodeType.isText(out) && out.data.length === 0) {\n out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;\n }\n dom.remove(node, true);\n return out;\n };\n var removeRngStyle = function (rng) {\n var startContainer, endContainer;\n var commonAncestorContainer = rng.commonAncestorContainer;\n rng = ExpandRange.expandRng(ed, rng, formatList, true);\n if (format.split) {\n rng = SplitRange.split(rng);\n startContainer = getContainer(ed, rng, true);\n endContainer = getContainer(ed, rng);\n if (startContainer !== endContainer) {\n if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {\n if (startContainer.nodeName === 'TR') {\n startContainer = startContainer.firstChild.firstChild || startContainer;\n } else {\n startContainer = startContainer.firstChild || startContainer;\n }\n }\n if (commonAncestorContainer && /^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) && isTableCell$4(endContainer) && endContainer.firstChild) {\n endContainer = endContainer.firstChild || endContainer;\n }\n if (isChildOfInlineParent(dom, startContainer, endContainer)) {\n var marker = Option.from(startContainer.firstChild).getOr(startContainer);\n splitToFormatRoot(wrapWithSiblings(dom, marker, true, 'span', {\n 'id': '_start',\n 'data-mce-type': 'bookmark'\n }));\n unwrap(true);\n return;\n }\n if (isChildOfInlineParent(dom, endContainer, startContainer)) {\n var marker = Option.from(endContainer.lastChild).getOr(endContainer);\n splitToFormatRoot(wrapWithSiblings(dom, marker, false, 'span', {\n 'id': '_end',\n 'data-mce-type': 'bookmark'\n }));\n unwrap(false);\n return;\n }\n startContainer = wrap$2(dom, startContainer, 'span', {\n 'id': '_start',\n 'data-mce-type': 'bookmark'\n });\n endContainer = wrap$2(dom, endContainer, 'span', {\n 'id': '_end',\n 'data-mce-type': 'bookmark'\n });\n splitToFormatRoot(startContainer);\n splitToFormatRoot(endContainer);\n startContainer = unwrap(true);\n endContainer = unwrap();\n } else {\n startContainer = endContainer = splitToFormatRoot(startContainer);\n }\n rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;\n rng.startOffset = dom.nodeIndex(startContainer);\n rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;\n rng.endOffset = dom.nodeIndex(endContainer) + 1;\n }\n RangeWalk.walk(dom, rng, function (nodes) {\n each$d(nodes, function (node) {\n process(node);\n if (NodeType.isElement(node) && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && FormatUtils.getTextDecoration(dom, node.parentNode) === 'underline') {\n removeFormat(ed, {\n deep: false,\n exact: true,\n inline: 'span',\n styles: { textDecoration: 'underline' }\n }, null, node);\n }\n });\n });\n };\n if (node) {\n if (node.nodeType) {\n rng = dom.createRng();\n rng.setStartBefore(node);\n rng.setEndAfter(node);\n removeRngStyle(rng);\n } else {\n removeRngStyle(node);\n }\n return;\n }\n if (dom.getContentEditable(selection.getNode()) === 'false') {\n node = selection.getNode();\n for (var i = 0, l = formatList.length; i < l; i++) {\n if (formatList[i].ceFalseOverride) {\n if (removeFormat(ed, formatList[i], vars, node, node)) {\n break;\n }\n }\n }\n return;\n }\n if (!selection.isCollapsed() || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {\n bookmark = GetBookmark.getPersistentBookmark(ed.selection, true);\n removeRngStyle(selection.getRng());\n selection.moveToBookmark(bookmark);\n if (format.inline && MatchFormat.match(ed, name, vars, selection.getStart())) {\n FormatUtils.moveStart(dom, selection, selection.getRng());\n }\n ed.nodeChanged();\n } else {\n removeCaretFormat(ed, name, vars, similar);\n }\n };\n var RemoveFormat = {\n removeFormat: removeFormat,\n remove: remove$8\n };\n\n var each$e = Tools.each;\n var isElementNode = function (node) {\n return node && node.nodeType === 1 && !Bookmarks.isBookmarkNode(node) && !isCaretNode(node) && !NodeType.isBogus(node);\n };\n var findElementSibling = function (node, siblingName) {\n var sibling;\n for (sibling = node; sibling; sibling = sibling[siblingName]) {\n if (sibling.nodeType === 3 && sibling.nodeValue.length !== 0) {\n return node;\n }\n if (sibling.nodeType === 1 && !Bookmarks.isBookmarkNode(sibling)) {\n return sibling;\n }\n }\n return node;\n };\n var mergeSiblingsNodes = function (dom, prev, next) {\n var sibling, tmpSibling;\n var elementUtils = new ElementUtils(dom);\n if (prev && next) {\n prev = findElementSibling(prev, 'previousSibling');\n next = findElementSibling(next, 'nextSibling');\n if (elementUtils.compare(prev, next)) {\n for (sibling = prev.nextSibling; sibling && sibling !== next;) {\n tmpSibling = sibling;\n sibling = sibling.nextSibling;\n prev.appendChild(tmpSibling);\n }\n dom.remove(next);\n Tools.each(Tools.grep(next.childNodes), function (node) {\n prev.appendChild(node);\n });\n return prev;\n }\n }\n return next;\n };\n var processChildElements = function (node, filter, process) {\n each$e(node.childNodes, function (node) {\n if (isElementNode(node)) {\n if (filter(node)) {\n process(node);\n }\n if (node.hasChildNodes()) {\n processChildElements(node, filter, process);\n }\n }\n });\n };\n var hasStyle = function (dom, name) {\n return curry(function (name, node) {\n return !!(node && FormatUtils.getStyle(dom, node, name));\n }, name);\n };\n var applyStyle = function (dom, name, value) {\n return curry(function (name, value, node) {\n dom.setStyle(node, name, value);\n if (node.getAttribute('style') === '') {\n node.removeAttribute('style');\n }\n unwrapEmptySpan(dom, node);\n }, name, value);\n };\n var unwrapEmptySpan = function (dom, node) {\n if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) {\n dom.remove(node, true);\n }\n };\n var processUnderlineAndColor = function (dom, node) {\n var textDecoration;\n if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {\n textDecoration = FormatUtils.getTextDecoration(dom, node.parentNode);\n if (dom.getStyle(node, 'color') && textDecoration) {\n dom.setStyle(node, 'text-decoration', textDecoration);\n } else if (dom.getStyle(node, 'text-decoration') === textDecoration) {\n dom.setStyle(node, 'text-decoration', null);\n }\n }\n };\n var mergeUnderlineAndColor = function (dom, format, vars, node) {\n if (format.styles.color || format.styles.textDecoration) {\n Tools.walk(node, curry(processUnderlineAndColor, dom), 'childNodes');\n processUnderlineAndColor(dom, node);\n }\n };\n var mergeBackgroundColorAndFontSize = function (dom, format, vars, node) {\n if (format.styles && format.styles.backgroundColor) {\n processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'backgroundColor', FormatUtils.replaceVars(format.styles.backgroundColor, vars)));\n }\n };\n var mergeSubSup = function (dom, format, vars, node) {\n if (format.inline === 'sub' || format.inline === 'sup') {\n processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'fontSize', ''));\n dom.remove(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), true);\n }\n };\n var mergeSiblings = function (dom, format, vars, node) {\n if (node && format.merge_siblings !== false) {\n node = mergeSiblingsNodes(dom, FormatUtils.getNonWhiteSpaceSibling(node), node);\n node = mergeSiblingsNodes(dom, node, FormatUtils.getNonWhiteSpaceSibling(node, true));\n }\n };\n var clearChildStyles = function (dom, format, node) {\n if (format.clear_child_styles) {\n var selector = format.links ? '*:not(a)' : '*';\n each$e(dom.select(selector, node), function (node) {\n if (isElementNode(node)) {\n each$e(format.styles, function (value, name) {\n dom.setStyle(node, name, '');\n });\n }\n });\n }\n };\n var mergeWithChildren = function (editor, formatList, vars, node) {\n each$e(formatList, function (format) {\n each$e(editor.dom.select(format.inline, node), function (child) {\n if (!isElementNode(child)) {\n return;\n }\n RemoveFormat.removeFormat(editor, format, vars, child, format.exact ? child : null);\n });\n clearChildStyles(editor.dom, format, node);\n });\n };\n var mergeWithParents = function (editor, format, name, vars, node) {\n if (MatchFormat.matchNode(editor, node.parentNode, name, vars)) {\n if (RemoveFormat.removeFormat(editor, format, vars, node)) {\n return;\n }\n }\n if (format.merge_with_parents) {\n editor.dom.getParent(node.parentNode, function (parent) {\n if (MatchFormat.matchNode(editor, parent, name, vars)) {\n RemoveFormat.removeFormat(editor, format, vars, node);\n return true;\n }\n });\n }\n };\n var MergeFormats = {\n mergeWithChildren: mergeWithChildren,\n mergeUnderlineAndColor: mergeUnderlineAndColor,\n mergeBackgroundColorAndFontSize: mergeBackgroundColorAndFontSize,\n mergeSubSup: mergeSubSup,\n mergeSiblings: mergeSiblings,\n mergeWithParents: mergeWithParents\n };\n\n var each$f = Tools.each;\n var isElementNode$1 = function (node) {\n return node && node.nodeType === 1 && !Bookmarks.isBookmarkNode(node) && !isCaretNode(node) && !NodeType.isBogus(node);\n };\n var applyFormat = function (ed, name, vars, node) {\n var formatList = ed.formatter.get(name);\n var format = formatList[0];\n var bookmark, rng;\n var isCollapsed = !node && ed.selection.isCollapsed();\n var dom = ed.dom, selection = ed.selection;\n var setElementFormat = function (elm, fmt) {\n fmt = fmt || format;\n if (elm) {\n if (fmt.onformat) {\n fmt.onformat(elm, fmt, vars, node);\n }\n each$f(fmt.styles, function (value, name) {\n dom.setStyle(elm, name, FormatUtils.replaceVars(value, vars));\n });\n if (fmt.styles) {\n var styleVal = dom.getAttrib(elm, 'style');\n if (styleVal) {\n elm.setAttribute('data-mce-style', styleVal);\n }\n }\n each$f(fmt.attributes, function (value, name) {\n dom.setAttrib(elm, name, FormatUtils.replaceVars(value, vars));\n });\n each$f(fmt.classes, function (value) {\n value = FormatUtils.replaceVars(value, vars);\n if (!dom.hasClass(elm, value)) {\n dom.addClass(elm, value);\n }\n });\n }\n };\n var applyNodeStyle = function (formatList, node) {\n var found = false;\n if (!format.selector) {\n return false;\n }\n each$f(formatList, function (format) {\n if ('collapsed' in format && format.collapsed !== isCollapsed) {\n return;\n }\n if (dom.is(node, format.selector) && !isCaretNode(node)) {\n setElementFormat(node, format);\n found = true;\n return false;\n }\n });\n return found;\n };\n var applyRngStyle = function (dom, rng, bookmark, nodeSpecific) {\n var newWrappers = [];\n var wrapName, wrapElm, contentEditable = true;\n wrapName = format.inline || format.block;\n wrapElm = dom.create(wrapName);\n setElementFormat(wrapElm);\n RangeWalk.walk(dom, rng, function (nodes) {\n var currentWrapElm;\n var process = function (node) {\n var nodeName, parentName, hasContentEditableState, lastContentEditable;\n lastContentEditable = contentEditable;\n nodeName = node.nodeName.toLowerCase();\n parentName = node.parentNode.nodeName.toLowerCase();\n if (node.nodeType === 1 && dom.getContentEditable(node)) {\n lastContentEditable = contentEditable;\n contentEditable = dom.getContentEditable(node) === 'true';\n hasContentEditableState = true;\n }\n if (FormatUtils.isEq(nodeName, 'br')) {\n currentWrapElm = 0;\n if (format.block) {\n dom.remove(node);\n }\n return;\n }\n if (format.wrapper && MatchFormat.matchNode(ed, node, name, vars)) {\n currentWrapElm = 0;\n return;\n }\n if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && FormatUtils.isTextBlock(ed, nodeName) && FormatUtils.isValid(ed, parentName, wrapName)) {\n node = dom.rename(node, wrapName);\n setElementFormat(node);\n newWrappers.push(node);\n currentWrapElm = 0;\n return;\n }\n if (format.selector) {\n var found = applyNodeStyle(formatList, node);\n if (!format.inline || found) {\n currentWrapElm = 0;\n return;\n }\n }\n if (contentEditable && !hasContentEditableState && FormatUtils.isValid(ed, wrapName, nodeName) && FormatUtils.isValid(ed, parentName, wrapName) && !(!nodeSpecific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node) && (!format.inline || !dom.isBlock(node))) {\n if (!currentWrapElm) {\n currentWrapElm = dom.clone(wrapElm, false);\n node.parentNode.insertBefore(currentWrapElm, node);\n newWrappers.push(currentWrapElm);\n }\n currentWrapElm.appendChild(node);\n } else {\n currentWrapElm = 0;\n each$f(Tools.grep(node.childNodes), process);\n if (hasContentEditableState) {\n contentEditable = lastContentEditable;\n }\n currentWrapElm = 0;\n }\n };\n each$f(nodes, process);\n });\n if (format.links === true) {\n each$f(newWrappers, function (node) {\n var process = function (node) {\n if (node.nodeName === 'A') {\n setElementFormat(node, format);\n }\n each$f(Tools.grep(node.childNodes), process);\n };\n process(node);\n });\n }\n each$f(newWrappers, function (node) {\n var childCount;\n var getChildCount = function (node) {\n var count = 0;\n each$f(node.childNodes, function (node) {\n if (!FormatUtils.isWhiteSpaceNode(node) && !Bookmarks.isBookmarkNode(node)) {\n count++;\n }\n });\n return count;\n };\n var getChildElementNode = function (root) {\n var child = false;\n each$f(root.childNodes, function (node) {\n if (isElementNode$1(node)) {\n child = node;\n return false;\n }\n });\n return child;\n };\n var mergeStyles = function (node) {\n var child, clone;\n child = getChildElementNode(node);\n if (child && !Bookmarks.isBookmarkNode(child) && MatchFormat.matchName(dom, child, format)) {\n clone = dom.clone(child, false);\n setElementFormat(clone);\n dom.replace(clone, node, true);\n dom.remove(child, 1);\n }\n return clone || node;\n };\n childCount = getChildCount(node);\n if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) {\n dom.remove(node, 1);\n return;\n }\n if (format.inline || format.wrapper) {\n if (!format.exact && childCount === 1) {\n node = mergeStyles(node);\n }\n MergeFormats.mergeWithChildren(ed, formatList, vars, node);\n MergeFormats.mergeWithParents(ed, format, name, vars, node);\n MergeFormats.mergeBackgroundColorAndFontSize(dom, format, vars, node);\n MergeFormats.mergeSubSup(dom, format, vars, node);\n MergeFormats.mergeSiblings(dom, format, vars, node);\n }\n });\n };\n if (dom.getContentEditable(selection.getNode()) === 'false') {\n node = selection.getNode();\n for (var i = 0, l = formatList.length; i < l; i++) {\n if (formatList[i].ceFalseOverride && dom.is(node, formatList[i].selector)) {\n setElementFormat(node, formatList[i]);\n return;\n }\n }\n return;\n }\n if (format) {\n if (node) {\n if (node.nodeType) {\n if (!applyNodeStyle(formatList, node)) {\n rng = dom.createRng();\n rng.setStartBefore(node);\n rng.setEndAfter(node);\n applyRngStyle(dom, ExpandRange.expandRng(ed, rng, formatList), null, true);\n }\n } else {\n applyRngStyle(dom, node, null, true);\n }\n } else {\n if (!isCollapsed || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {\n var curSelNode = ed.selection.getNode();\n if (!ed.settings.forced_root_block && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {\n applyFormat(ed, formatList[0].defaultBlock);\n }\n ed.selection.setRng(RangeNormalizer.normalize(ed.selection.getRng()));\n bookmark = GetBookmark.getPersistentBookmark(ed.selection, true);\n applyRngStyle(dom, ExpandRange.expandRng(ed, selection.getRng(), formatList), bookmark);\n if (format.styles) {\n MergeFormats.mergeUnderlineAndColor(dom, format, vars, curSelNode);\n }\n selection.moveToBookmark(bookmark);\n FormatUtils.moveStart(dom, selection, selection.getRng());\n ed.nodeChanged();\n } else {\n applyCaretFormat(ed, name, vars);\n }\n }\n Hooks.postProcess(name, ed);\n }\n };\n var ApplyFormat = { applyFormat: applyFormat };\n\n var each$g = Tools.each;\n var setup$5 = function (formatChangeData, editor) {\n var currentFormats = {};\n formatChangeData.set({});\n editor.on('NodeChange', function (e) {\n var parents = FormatUtils.getParents(editor.dom, e.element);\n var matchedFormats = {};\n parents = Tools.grep(parents, function (node) {\n return node.nodeType === 1 && !node.getAttribute('data-mce-bogus');\n });\n each$g(formatChangeData.get(), function (callbacks, format) {\n each$g(parents, function (node) {\n if (editor.formatter.matchNode(node, format, {}, callbacks.similar)) {\n if (!currentFormats[format]) {\n each$g(callbacks, function (callback) {\n callback(true, {\n node: node,\n format: format,\n parents: parents\n });\n });\n currentFormats[format] = callbacks;\n }\n matchedFormats[format] = callbacks;\n return false;\n }\n if (MatchFormat.matchesUnInheritedFormatSelector(editor, node, format)) {\n return false;\n }\n });\n });\n each$g(currentFormats, function (callbacks, format) {\n if (!matchedFormats[format]) {\n delete currentFormats[format];\n each$g(callbacks, function (callback) {\n callback(false, {\n node: e.element,\n format: format,\n parents: parents\n });\n });\n }\n });\n });\n };\n var addListeners = function (formatChangeData, formats, callback, similar) {\n var formatChangeItems = formatChangeData.get();\n each$g(formats.split(','), function (format) {\n if (!formatChangeItems[format]) {\n formatChangeItems[format] = [];\n formatChangeItems[format].similar = similar;\n }\n formatChangeItems[format].push(callback);\n });\n formatChangeData.set(formatChangeItems);\n };\n var formatChanged = function (editor, formatChangeState, formats, callback, similar) {\n if (formatChangeState.get() === null) {\n setup$5(formatChangeState, editor);\n }\n addListeners(formatChangeState, formats, callback, similar);\n };\n var FormatChanged = { formatChanged: formatChanged };\n\n var get$8 = function (dom) {\n var formats = {\n valigntop: [{\n selector: 'td,th',\n styles: { verticalAlign: 'top' }\n }],\n valignmiddle: [{\n selector: 'td,th',\n styles: { verticalAlign: 'middle' }\n }],\n valignbottom: [{\n selector: 'td,th',\n styles: { verticalAlign: 'bottom' }\n }],\n alignleft: [\n {\n selector: 'figure.image',\n collapsed: false,\n classes: 'align-left',\n ceFalseOverride: true,\n preview: 'font-family font-size'\n },\n {\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'left' },\n inherit: false,\n preview: false,\n defaultBlock: 'div'\n },\n {\n selector: 'img,table',\n collapsed: false,\n styles: { float: 'left' },\n preview: 'font-family font-size'\n }\n ],\n aligncenter: [\n {\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'center' },\n inherit: false,\n preview: 'font-family font-size',\n defaultBlock: 'div'\n },\n {\n selector: 'figure.image',\n collapsed: false,\n classes: 'align-center',\n ceFalseOverride: true,\n preview: 'font-family font-size'\n },\n {\n selector: 'img',\n collapsed: false,\n styles: {\n display: 'block',\n marginLeft: 'auto',\n marginRight: 'auto'\n },\n preview: false\n },\n {\n selector: 'table',\n collapsed: false,\n styles: {\n marginLeft: 'auto',\n marginRight: 'auto'\n },\n preview: 'font-family font-size'\n }\n ],\n alignright: [\n {\n selector: 'figure.image',\n collapsed: false,\n classes: 'align-right',\n ceFalseOverride: true,\n preview: 'font-family font-size'\n },\n {\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'right' },\n inherit: false,\n preview: 'font-family font-size',\n defaultBlock: 'div'\n },\n {\n selector: 'img,table',\n collapsed: false,\n styles: { float: 'right' },\n preview: 'font-family font-size'\n }\n ],\n alignjustify: [{\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'justify' },\n inherit: false,\n defaultBlock: 'div',\n preview: 'font-family font-size'\n }],\n bold: [\n {\n inline: 'strong',\n remove: 'all'\n },\n {\n inline: 'span',\n styles: { fontWeight: 'bold' }\n },\n {\n inline: 'b',\n remove: 'all'\n }\n ],\n italic: [\n {\n inline: 'em',\n remove: 'all'\n },\n {\n inline: 'span',\n styles: { fontStyle: 'italic' }\n },\n {\n inline: 'i',\n remove: 'all'\n }\n ],\n underline: [\n {\n inline: 'span',\n styles: { textDecoration: 'underline' },\n exact: true\n },\n {\n inline: 'u',\n remove: 'all'\n }\n ],\n strikethrough: [\n {\n inline: 'span',\n styles: { textDecoration: 'line-through' },\n exact: true\n },\n {\n inline: 'strike',\n remove: 'all'\n }\n ],\n forecolor: {\n inline: 'span',\n styles: { color: '%value' },\n links: true,\n remove_similar: true,\n clear_child_styles: true\n },\n hilitecolor: {\n inline: 'span',\n styles: { backgroundColor: '%value' },\n links: true,\n remove_similar: true,\n clear_child_styles: true\n },\n fontname: {\n inline: 'span',\n toggle: false,\n styles: { fontFamily: '%value' },\n clear_child_styles: true\n },\n fontsize: {\n inline: 'span',\n toggle: false,\n styles: { fontSize: '%value' },\n clear_child_styles: true\n },\n fontsize_class: {\n inline: 'span',\n attributes: { class: '%value' }\n },\n blockquote: {\n block: 'blockquote',\n wrapper: 1,\n remove: 'all'\n },\n subscript: { inline: 'sub' },\n superscript: { inline: 'sup' },\n code: { inline: 'code' },\n link: {\n inline: 'a',\n selector: 'a',\n remove: 'all',\n split: true,\n deep: true,\n onmatch: function () {\n return true;\n },\n onformat: function (elm, fmt, vars) {\n Tools.each(vars, function (value, key) {\n dom.setAttrib(elm, key, value);\n });\n }\n },\n removeformat: [\n {\n selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',\n remove: 'all',\n split: true,\n expand: false,\n block_expand: true,\n deep: true\n },\n {\n selector: 'span',\n attributes: [\n 'style',\n 'class'\n ],\n remove: 'empty',\n split: true,\n expand: false,\n deep: true\n },\n {\n selector: '*',\n attributes: [\n 'style',\n 'class'\n ],\n split: false,\n expand: false,\n deep: true\n }\n ]\n };\n Tools.each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\\s/), function (name) {\n formats[name] = {\n block: name,\n remove: 'all'\n };\n });\n return formats;\n };\n var DefaultFormats = { get: get$8 };\n\n function FormatRegistry (editor) {\n var formats = {};\n var get = function (name) {\n return name ? formats[name] : formats;\n };\n var register = function (name, format) {\n if (name) {\n if (typeof name !== 'string') {\n Tools.each(name, function (format, name) {\n register(name, format);\n });\n } else {\n format = format.length ? format : [format];\n Tools.each(format, function (format) {\n if (typeof format.deep === 'undefined') {\n format.deep = !format.selector;\n }\n if (typeof format.split === 'undefined') {\n format.split = !format.selector || format.inline;\n }\n if (typeof format.remove === 'undefined' && format.selector && !format.inline) {\n format.remove = 'none';\n }\n if (format.selector && format.inline) {\n format.mixed = true;\n format.block_expand = true;\n }\n if (typeof format.classes === 'string') {\n format.classes = format.classes.split(/\\s+/);\n }\n });\n formats[name] = format;\n }\n }\n };\n var unregister = function (name) {\n if (name && formats[name]) {\n delete formats[name];\n }\n return formats;\n };\n register(DefaultFormats.get(editor.dom));\n register(editor.settings.formats);\n return {\n get: get,\n register: register,\n unregister: unregister\n };\n }\n\n var each$h = Tools.each;\n var dom = DOMUtils$1.DOM;\n var parsedSelectorToHtml = function (ancestry, editor) {\n var elm, item, fragment;\n var schema = editor && editor.schema || Schema({});\n var decorate = function (elm, item) {\n if (item.classes.length) {\n dom.addClass(elm, item.classes.join(' '));\n }\n dom.setAttribs(elm, item.attrs);\n };\n var createElement = function (sItem) {\n var elm;\n item = typeof sItem === 'string' ? {\n name: sItem,\n classes: [],\n attrs: {}\n } : sItem;\n elm = dom.create(item.name);\n decorate(elm, item);\n return elm;\n };\n var getRequiredParent = function (elm, candidate) {\n var name = typeof elm !== 'string' ? elm.nodeName.toLowerCase() : elm;\n var elmRule = schema.getElementRule(name);\n var parentsRequired = elmRule && elmRule.parentsRequired;\n if (parentsRequired && parentsRequired.length) {\n return candidate && Tools.inArray(parentsRequired, candidate) !== -1 ? candidate : parentsRequired[0];\n } else {\n return false;\n }\n };\n var wrapInHtml = function (elm, ancestry, siblings) {\n var parent, parentCandidate, parentRequired;\n var ancestor = ancestry.length > 0 && ancestry[0];\n var ancestorName = ancestor && ancestor.name;\n parentRequired = getRequiredParent(elm, ancestorName);\n if (parentRequired) {\n if (ancestorName === parentRequired) {\n parentCandidate = ancestry[0];\n ancestry = ancestry.slice(1);\n } else {\n parentCandidate = parentRequired;\n }\n } else if (ancestor) {\n parentCandidate = ancestry[0];\n ancestry = ancestry.slice(1);\n } else if (!siblings) {\n return elm;\n }\n if (parentCandidate) {\n parent = createElement(parentCandidate);\n parent.appendChild(elm);\n }\n if (siblings) {\n if (!parent) {\n parent = dom.create('div');\n parent.appendChild(elm);\n }\n Tools.each(siblings, function (sibling) {\n var siblingElm = createElement(sibling);\n parent.insertBefore(siblingElm, elm);\n });\n }\n return wrapInHtml(parent, ancestry, parentCandidate && parentCandidate.siblings);\n };\n if (ancestry && ancestry.length) {\n item = ancestry[0];\n elm = createElement(item);\n fragment = dom.create('div');\n fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), item.siblings));\n return fragment;\n } else {\n return '';\n }\n };\n var selectorToHtml = function (selector, editor) {\n return parsedSelectorToHtml(parseSelector(selector), editor);\n };\n var parseSelectorItem = function (item) {\n var tagName;\n var obj = {\n classes: [],\n attrs: {}\n };\n item = obj.selector = Tools.trim(item);\n if (item !== '*') {\n tagName = item.replace(/(?:([#\\.]|::?)([\\w\\-]+)|(\\[)([^\\]]+)\\]?)/g, function ($0, $1, $2, $3, $4) {\n switch ($1) {\n case '#':\n obj.attrs.id = $2;\n break;\n case '.':\n obj.classes.push($2);\n break;\n case ':':\n if (Tools.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) {\n obj.attrs[$2] = $2;\n }\n break;\n }\n if ($3 === '[') {\n var m = $4.match(/([\\w\\-]+)(?:\\=\\\"([^\\\"]+))?/);\n if (m) {\n obj.attrs[m[1]] = m[2];\n }\n }\n return '';\n });\n }\n obj.name = tagName || 'div';\n return obj;\n };\n var parseSelector = function (selector) {\n if (!selector || typeof selector !== 'string') {\n return [];\n }\n selector = selector.split(/\\s*,\\s*/)[0];\n selector = selector.replace(/\\s*(~\\+|~|\\+|>)\\s*/g, '$1');\n return Tools.map(selector.split(/(?:>|\\s+(?![^\\[\\]]+\\]))/), function (item) {\n var siblings = Tools.map(item.split(/(?:~\\+|~|\\+)/), parseSelectorItem);\n var obj = siblings.pop();\n if (siblings.length) {\n obj.siblings = siblings;\n }\n return obj;\n }).reverse();\n };\n var getCssText = function (editor, format) {\n var name, previewFrag, previewElm, items;\n var previewCss = '', parentFontSize, previewStyles;\n previewStyles = editor.settings.preview_styles;\n if (previewStyles === false) {\n return '';\n }\n if (typeof previewStyles !== 'string') {\n previewStyles = 'font-family font-size font-weight font-style text-decoration ' + 'text-transform color background-color border border-radius outline text-shadow';\n }\n var removeVars = function (val) {\n return val.replace(/%(\\w+)/g, '');\n };\n if (typeof format === 'string') {\n format = editor.formatter.get(format);\n if (!format) {\n return;\n }\n format = format[0];\n }\n if ('preview' in format) {\n previewStyles = format.preview;\n if (previewStyles === false) {\n return '';\n }\n }\n name = format.block || format.inline || 'span';\n items = parseSelector(format.selector);\n if (items.length) {\n if (!items[0].name) {\n items[0].name = name;\n }\n name = format.selector;\n previewFrag = parsedSelectorToHtml(items, editor);\n } else {\n previewFrag = parsedSelectorToHtml([name], editor);\n }\n previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild;\n each$h(format.styles, function (value, name) {\n value = removeVars(value);\n if (value) {\n dom.setStyle(previewElm, name, value);\n }\n });\n each$h(format.attributes, function (value, name) {\n value = removeVars(value);\n if (value) {\n dom.setAttrib(previewElm, name, value);\n }\n });\n each$h(format.classes, function (value) {\n value = removeVars(value);\n if (!dom.hasClass(previewElm, value)) {\n dom.addClass(previewElm, value);\n }\n });\n editor.fire('PreviewFormats');\n dom.setStyles(previewFrag, {\n position: 'absolute',\n left: -65535\n });\n editor.getBody().appendChild(previewFrag);\n parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true);\n parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;\n each$h(previewStyles.split(' '), function (name) {\n var value = dom.getStyle(previewElm, name, true);\n if (name === 'background-color' && /transparent|rgba\\s*\\([^)]+,\\s*0\\)/.test(value)) {\n value = dom.getStyle(editor.getBody(), name, true);\n if (dom.toHex(value).toLowerCase() === '#ffffff') {\n return;\n }\n }\n if (name === 'color') {\n if (dom.toHex(value).toLowerCase() === '#000000') {\n return;\n }\n }\n if (name === 'font-size') {\n if (/em|%$/.test(value)) {\n if (parentFontSize === 0) {\n return;\n }\n var numValue = parseFloat(value) / (/%$/.test(value) ? 100 : 1);\n value = numValue * parentFontSize + 'px';\n }\n }\n if (name === 'border' && value) {\n previewCss += 'padding:0 2px;';\n }\n previewCss += name + ':' + value + ';';\n });\n editor.fire('AfterPreviewFormats');\n dom.remove(previewFrag);\n return previewCss;\n };\n var Preview = {\n getCssText: getCssText,\n parseSelector: parseSelector,\n selectorToHtml: selectorToHtml\n };\n\n var toggle$3 = function (editor, formats, name, vars, node) {\n var fmt = formats.get(name);\n if (MatchFormat.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {\n RemoveFormat.remove(editor, name, vars, node);\n } else {\n ApplyFormat.applyFormat(editor, name, vars, node);\n }\n };\n var ToggleFormat = { toggle: toggle$3 };\n\n var setup$6 = function (editor) {\n editor.addShortcut('meta+b', '', 'Bold');\n editor.addShortcut('meta+i', '', 'Italic');\n editor.addShortcut('meta+u', '', 'Underline');\n for (var i = 1; i <= 6; i++) {\n editor.addShortcut('access+' + i, '', [\n 'FormatBlock',\n false,\n 'h' + i\n ]);\n }\n editor.addShortcut('access+7', '', [\n 'FormatBlock',\n false,\n 'p'\n ]);\n editor.addShortcut('access+8', '', [\n 'FormatBlock',\n false,\n 'div'\n ]);\n editor.addShortcut('access+9', '', [\n 'FormatBlock',\n false,\n 'address'\n ]);\n };\n var FormatShortcuts = { setup: setup$6 };\n\n function Formatter (editor) {\n var formats = FormatRegistry(editor);\n var formatChangeState = Cell(null);\n FormatShortcuts.setup(editor);\n setup$4(editor);\n return {\n get: formats.get,\n register: formats.register,\n unregister: formats.unregister,\n apply: curry(ApplyFormat.applyFormat, editor),\n remove: curry(RemoveFormat.remove, editor),\n toggle: curry(ToggleFormat.toggle, editor, formats),\n match: curry(MatchFormat.match, editor),\n matchAll: curry(MatchFormat.matchAll, editor),\n matchNode: curry(MatchFormat.matchNode, editor),\n canApply: curry(MatchFormat.canApply, editor),\n formatChanged: curry(FormatChanged.formatChanged, editor, formatChangeState),\n getCssText: curry(Preview.getCssText, editor)\n };\n }\n\n var hasOwnProperty$2 = Object.prototype.hasOwnProperty;\n var shallow$1 = function (old, nu) {\n return nu;\n };\n var baseMerge = function (merger) {\n return function () {\n var objects = new Array(arguments.length);\n for (var i = 0; i < objects.length; i++)\n objects[i] = arguments[i];\n if (objects.length === 0)\n throw new Error('Can\\'t merge zero objects');\n var ret = {};\n for (var j = 0; j < objects.length; j++) {\n var curObject = objects[j];\n for (var key in curObject)\n if (hasOwnProperty$2.call(curObject, key)) {\n ret[key] = merger(ret[key], curObject[key]);\n }\n }\n return ret;\n };\n };\n var merge = baseMerge(shallow$1);\n\n var register = function (htmlParser, settings, dom) {\n htmlParser.addAttributeFilter('data-mce-tabindex', function (nodes, name) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n node.attr('tabindex', node.attributes.map['data-mce-tabindex']);\n node.attr(name, null);\n }\n });\n htmlParser.addAttributeFilter('src,href,style', function (nodes, name) {\n var i = nodes.length, node, value;\n var internalName = 'data-mce-' + name;\n var urlConverter = settings.url_converter;\n var urlConverterScope = settings.url_converter_scope;\n while (i--) {\n node = nodes[i];\n value = node.attributes.map[internalName];\n if (value !== undefined) {\n node.attr(name, value.length > 0 ? value : null);\n node.attr(internalName, null);\n } else {\n value = node.attributes.map[name];\n if (name === 'style') {\n value = dom.serializeStyle(dom.parseStyle(value), node.name);\n } else if (urlConverter) {\n value = urlConverter.call(urlConverterScope, value, name, node.name);\n }\n node.attr(name, value.length > 0 ? value : null);\n }\n }\n });\n htmlParser.addAttributeFilter('class', function (nodes) {\n var i = nodes.length, node, value;\n while (i--) {\n node = nodes[i];\n value = node.attr('class');\n if (value) {\n value = node.attr('class').replace(/(?:^|\\s)mce-item-\\w+(?!\\S)/g, '');\n node.attr('class', value.length > 0 ? value : null);\n }\n }\n });\n htmlParser.addAttributeFilter('data-mce-type', function (nodes, name, args) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) {\n node.remove();\n }\n }\n });\n htmlParser.addNodeFilter('noscript', function (nodes) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i].firstChild;\n if (node) {\n node.value = Entities.decode(node.value);\n }\n }\n });\n htmlParser.addNodeFilter('script,style', function (nodes, name) {\n var i = nodes.length, node, value, type;\n var trim = function (value) {\n return value.replace(/()/g, '\\n').replace(/^[\\r\\n]*|[\\r\\n]*$/g, '').replace(/^\\s*(()?|\\s*\\/\\/\\s*\\]\\]>(-->)?|\\/\\/\\s*(-->)?|\\]\\]>|\\/\\*\\s*-->\\s*\\*\\/|\\s*-->\\s*)\\s*$/g, '');\n };\n while (i--) {\n node = nodes[i];\n value = node.firstChild ? node.firstChild.value : '';\n if (name === 'script') {\n type = node.attr('type');\n if (type) {\n node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\\-/, ''));\n }\n if (settings.element_format === 'xhtml' && value.length > 0) {\n node.firstChild.value = '// ';\n }\n } else {\n if (settings.element_format === 'xhtml' && value.length > 0) {\n node.firstChild.value = '';\n }\n }\n }\n });\n htmlParser.addNodeFilter('#comment', function (nodes) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n if (node.value.indexOf('[CDATA[') === 0) {\n node.name = '#cdata';\n node.type = 4;\n node.value = node.value.replace(/^\\[CDATA\\[|\\]\\]$/g, '');\n } else if (node.value.indexOf('mce:protected ') === 0) {\n node.name = '#text';\n node.type = 3;\n node.raw = true;\n node.value = unescape(node.value).substr(14);\n }\n }\n });\n htmlParser.addNodeFilter('xml:namespace,input', function (nodes, name) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n if (node.type === 7) {\n node.remove();\n } else if (node.type === 1) {\n if (name === 'input' && !('type' in node.attributes.map)) {\n node.attr('type', 'text');\n }\n }\n }\n });\n htmlParser.addAttributeFilter('data-mce-type', function (nodes) {\n each(nodes, function (node) {\n if (node.attr('data-mce-type') === 'format-caret') {\n if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) {\n node.remove();\n } else {\n node.unwrap();\n }\n }\n });\n });\n htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,' + 'data-mce-type,data-mce-resize', function (nodes, name) {\n var i = nodes.length;\n while (i--) {\n nodes[i].attr(name, null);\n }\n });\n };\n var trimTrailingBr = function (rootNode) {\n var brNode1, brNode2;\n var isBr = function (node) {\n return node && node.name === 'br';\n };\n brNode1 = rootNode.lastChild;\n if (isBr(brNode1)) {\n brNode2 = brNode1.prev;\n if (isBr(brNode2)) {\n brNode1.remove();\n brNode2.remove();\n }\n }\n };\n var DomSerializerFilters = {\n register: register,\n trimTrailingBr: trimTrailingBr\n };\n\n var preProcess = function (editor, node, args) {\n var impl, doc, oldDoc;\n var dom = editor.dom;\n node = node.cloneNode(true);\n impl = document.implementation;\n if (impl.createHTMLDocument) {\n doc = impl.createHTMLDocument('');\n Tools.each(node.nodeName === 'BODY' ? node.childNodes : [node], function (node) {\n doc.body.appendChild(doc.importNode(node, true));\n });\n if (node.nodeName !== 'BODY') {\n node = doc.body.firstChild;\n } else {\n node = doc.body;\n }\n oldDoc = dom.doc;\n dom.doc = doc;\n }\n Events.firePreProcess(editor, merge(args, { node: node }));\n if (oldDoc) {\n dom.doc = oldDoc;\n }\n return node;\n };\n var shouldFireEvent = function (editor, args) {\n return editor && editor.hasEventListeners('PreProcess') && !args.no_events;\n };\n var process = function (editor, node, args) {\n return shouldFireEvent(editor, args) ? preProcess(editor, node, args) : node;\n };\n var DomSerializerPreProcess = { process: process };\n\n var removeAttrs = function (node, names) {\n each(names, function (name) {\n node.attr(name, null);\n });\n };\n var addFontToSpansFilter = function (domParser, styles, fontSizes) {\n domParser.addNodeFilter('font', function (nodes) {\n each(nodes, function (node) {\n var props = styles.parse(node.attr('style'));\n var color = node.attr('color');\n var face = node.attr('face');\n var size = node.attr('size');\n if (color) {\n props.color = color;\n }\n if (face) {\n props['font-family'] = face;\n }\n if (size) {\n props['font-size'] = fontSizes[parseInt(node.attr('size'), 10) - 1];\n }\n node.name = 'span';\n node.attr('style', styles.serialize(props));\n removeAttrs(node, [\n 'color',\n 'face',\n 'size'\n ]);\n });\n });\n };\n var addStrikeToSpanFilter = function (domParser, styles) {\n domParser.addNodeFilter('strike', function (nodes) {\n each(nodes, function (node) {\n var props = styles.parse(node.attr('style'));\n props['text-decoration'] = 'line-through';\n node.name = 'span';\n node.attr('style', styles.serialize(props));\n });\n });\n };\n var addFilters = function (domParser, settings) {\n var styles = Styles();\n if (settings.convert_fonts_to_spans) {\n addFontToSpansFilter(domParser, styles, Tools.explode(settings.font_size_legacy_values));\n }\n addStrikeToSpanFilter(domParser, styles);\n };\n var register$1 = function (domParser, settings) {\n if (settings.inline_styles) {\n addFilters(domParser, settings);\n }\n };\n var LegacyFilter = { register: register$1 };\n\n var whiteSpaceRegExp$3 = /^[ \\t\\r\\n]*$/;\n var typeLookup = {\n '#text': 3,\n '#comment': 8,\n '#cdata': 4,\n '#pi': 7,\n '#doctype': 10,\n '#document-fragment': 11\n };\n var walk$2 = function (node, root, prev) {\n var sibling;\n var parent;\n var startName = prev ? 'lastChild' : 'firstChild';\n var siblingName = prev ? 'prev' : 'next';\n if (node[startName]) {\n return node[startName];\n }\n if (node !== root) {\n sibling = node[siblingName];\n if (sibling) {\n return sibling;\n }\n for (parent = node.parent; parent && parent !== root; parent = parent.parent) {\n sibling = parent[siblingName];\n if (sibling) {\n return sibling;\n }\n }\n }\n };\n var Node$2 = function () {\n function Node(name, type) {\n this.name = name;\n this.type = type;\n if (type === 1) {\n this.attributes = [];\n this.attributes.map = {};\n }\n }\n Node.create = function (name, attrs) {\n var node, attrName;\n node = new Node(name, typeLookup[name] || 1);\n if (attrs) {\n for (attrName in attrs) {\n node.attr(attrName, attrs[attrName]);\n }\n }\n return node;\n };\n Node.prototype.replace = function (node) {\n var self = this;\n if (node.parent) {\n node.remove();\n }\n self.insert(node, self);\n self.remove();\n return self;\n };\n Node.prototype.attr = function (name, value) {\n var self = this;\n var attrs, i;\n if (typeof name !== 'string') {\n for (i in name) {\n self.attr(i, name[i]);\n }\n return self;\n }\n if (attrs = self.attributes) {\n if (value !== undefined) {\n if (value === null) {\n if (name in attrs.map) {\n delete attrs.map[name];\n i = attrs.length;\n while (i--) {\n if (attrs[i].name === name) {\n attrs = attrs.splice(i, 1);\n return self;\n }\n }\n }\n return self;\n }\n if (name in attrs.map) {\n i = attrs.length;\n while (i--) {\n if (attrs[i].name === name) {\n attrs[i].value = value;\n break;\n }\n }\n } else {\n attrs.push({\n name: name,\n value: value\n });\n }\n attrs.map[name] = value;\n return self;\n }\n return attrs.map[name];\n }\n };\n Node.prototype.clone = function () {\n var self = this;\n var clone = new Node(self.name, self.type);\n var i, l, selfAttrs, selfAttr, cloneAttrs;\n if (selfAttrs = self.attributes) {\n cloneAttrs = [];\n cloneAttrs.map = {};\n for (i = 0, l = selfAttrs.length; i < l; i++) {\n selfAttr = selfAttrs[i];\n if (selfAttr.name !== 'id') {\n cloneAttrs[cloneAttrs.length] = {\n name: selfAttr.name,\n value: selfAttr.value\n };\n cloneAttrs.map[selfAttr.name] = selfAttr.value;\n }\n }\n clone.attributes = cloneAttrs;\n }\n clone.value = self.value;\n clone.shortEnded = self.shortEnded;\n return clone;\n };\n Node.prototype.wrap = function (wrapper) {\n var self = this;\n self.parent.insert(wrapper, self);\n wrapper.append(self);\n return self;\n };\n Node.prototype.unwrap = function () {\n var self = this;\n var node, next;\n for (node = self.firstChild; node;) {\n next = node.next;\n self.insert(node, self, true);\n node = next;\n }\n self.remove();\n };\n Node.prototype.remove = function () {\n var self = this, parent = self.parent, next = self.next, prev = self.prev;\n if (parent) {\n if (parent.firstChild === self) {\n parent.firstChild = next;\n if (next) {\n next.prev = null;\n }\n } else {\n prev.next = next;\n }\n if (parent.lastChild === self) {\n parent.lastChild = prev;\n if (prev) {\n prev.next = null;\n }\n } else {\n next.prev = prev;\n }\n self.parent = self.next = self.prev = null;\n }\n return self;\n };\n Node.prototype.append = function (node) {\n var self = this;\n var last;\n if (node.parent) {\n node.remove();\n }\n last = self.lastChild;\n if (last) {\n last.next = node;\n node.prev = last;\n self.lastChild = node;\n } else {\n self.lastChild = self.firstChild = node;\n }\n node.parent = self;\n return node;\n };\n Node.prototype.insert = function (node, refNode, before) {\n var parent;\n if (node.parent) {\n node.remove();\n }\n parent = refNode.parent || this;\n if (before) {\n if (refNode === parent.firstChild) {\n parent.firstChild = node;\n } else {\n refNode.prev.next = node;\n }\n node.prev = refNode.prev;\n node.next = refNode;\n refNode.prev = node;\n } else {\n if (refNode === parent.lastChild) {\n parent.lastChild = node;\n } else {\n refNode.next.prev = node;\n }\n node.next = refNode.next;\n node.prev = refNode;\n refNode.next = node;\n }\n node.parent = parent;\n return node;\n };\n Node.prototype.getAll = function (name) {\n var self = this;\n var node;\n var collection = [];\n for (node = self.firstChild; node; node = walk$2(node, self)) {\n if (node.name === name) {\n collection.push(node);\n }\n }\n return collection;\n };\n Node.prototype.empty = function () {\n var self = this;\n var nodes, i, node;\n if (self.firstChild) {\n nodes = [];\n for (node = self.firstChild; node; node = walk$2(node, self)) {\n nodes.push(node);\n }\n i = nodes.length;\n while (i--) {\n node = nodes[i];\n node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;\n }\n }\n self.firstChild = self.lastChild = null;\n return self;\n };\n Node.prototype.isEmpty = function (elements, whitespace, predicate) {\n var self = this;\n var node = self.firstChild, i, name;\n whitespace = whitespace || {};\n if (node) {\n do {\n if (node.type === 1) {\n if (node.attributes.map['data-mce-bogus']) {\n continue;\n }\n if (elements[node.name]) {\n return false;\n }\n i = node.attributes.length;\n while (i--) {\n name = node.attributes[i].name;\n if (name === 'name' || name.indexOf('data-mce-bookmark') === 0) {\n return false;\n }\n }\n }\n if (node.type === 8) {\n return false;\n }\n if (node.type === 3 && !whiteSpaceRegExp$3.test(node.value)) {\n return false;\n }\n if (node.type === 3 && node.parent && whitespace[node.parent.name] && whiteSpaceRegExp$3.test(node.value)) {\n return false;\n }\n if (predicate && predicate(node)) {\n return false;\n }\n } while (node = walk$2(node, self));\n }\n return true;\n };\n Node.prototype.walk = function (prev) {\n return walk$2(this, null, prev);\n };\n return Node;\n }();\n\n var paddEmptyNode = function (settings, args, blockElements, node) {\n var brPreferred = settings.padd_empty_with_br || args.insert;\n if (brPreferred && blockElements[node.name]) {\n node.empty().append(new Node$2('br', 1)).shortEnded = true;\n } else {\n node.empty().append(new Node$2('#text', 3)).value = '\\xA0';\n }\n };\n var isPaddedWithNbsp = function (node) {\n return hasOnlyChild(node, '#text') && node.firstChild.value === '\\xA0';\n };\n var hasOnlyChild = function (node, name) {\n return node && node.firstChild && node.firstChild === node.lastChild && node.firstChild.name === name;\n };\n var isPadded = function (schema, node) {\n var rule = schema.getElementRule(node.name);\n return rule && rule.paddEmpty;\n };\n var isEmpty$2 = function (schema, nonEmptyElements, whitespaceElements, node) {\n return node.isEmpty(nonEmptyElements, whitespaceElements, function (node) {\n return isPadded(schema, node);\n });\n };\n var isLineBreakNode = function (node, blockElements) {\n return node && (blockElements[node.name] || node.name === 'br');\n };\n\n var register$2 = function (parser, settings) {\n var schema = parser.schema;\n if (settings.remove_trailing_brs) {\n parser.addNodeFilter('br', function (nodes, _, args) {\n var i;\n var l = nodes.length;\n var node;\n var blockElements = Tools.extend({}, schema.getBlockElements());\n var nonEmptyElements = schema.getNonEmptyElements();\n var parent, lastParent, prev, prevName;\n var whiteSpaceElements = schema.getNonEmptyElements();\n var elementRule, textNode;\n blockElements.body = 1;\n for (i = 0; i < l; i++) {\n node = nodes[i];\n parent = node.parent;\n if (blockElements[node.parent.name] && node === parent.lastChild) {\n prev = node.prev;\n while (prev) {\n prevName = prev.name;\n if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') {\n if (prevName !== 'br') {\n break;\n }\n if (prevName === 'br') {\n node = null;\n break;\n }\n }\n prev = prev.prev;\n }\n if (node) {\n node.remove();\n if (isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, parent)) {\n elementRule = schema.getElementRule(parent.name);\n if (elementRule) {\n if (elementRule.removeEmpty) {\n parent.remove();\n } else if (elementRule.paddEmpty) {\n paddEmptyNode(settings, args, blockElements, parent);\n }\n }\n }\n }\n } else {\n lastParent = node;\n while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) {\n lastParent = parent;\n if (blockElements[parent.name]) {\n break;\n }\n parent = parent.parent;\n }\n if (lastParent === parent && settings.padd_empty_with_br !== true) {\n textNode = new Node$2('#text', 3);\n textNode.value = '\\xA0';\n node.replace(textNode);\n }\n }\n }\n });\n }\n parser.addAttributeFilter('href', function (nodes) {\n var i = nodes.length, node;\n var appendRel = function (rel) {\n var parts = rel.split(' ').filter(function (p) {\n return p.length > 0;\n });\n return parts.concat(['noopener']).sort().join(' ');\n };\n var addNoOpener = function (rel) {\n var newRel = rel ? Tools.trim(rel) : '';\n if (!/\\b(noopener)\\b/g.test(newRel)) {\n return appendRel(newRel);\n } else {\n return newRel;\n }\n };\n if (!settings.allow_unsafe_link_target) {\n while (i--) {\n node = nodes[i];\n if (node.name === 'a' && node.attr('target') === '_blank') {\n node.attr('rel', addNoOpener(node.attr('rel')));\n }\n }\n }\n });\n if (!settings.allow_html_in_named_anchor) {\n parser.addAttributeFilter('id,name', function (nodes) {\n var i = nodes.length, sibling, prevSibling, parent, node;\n while (i--) {\n node = nodes[i];\n if (node.name === 'a' && node.firstChild && !node.attr('href')) {\n parent = node.parent;\n sibling = node.lastChild;\n do {\n prevSibling = sibling.prev;\n parent.insert(sibling, node);\n sibling = prevSibling;\n } while (sibling);\n }\n }\n });\n }\n if (settings.fix_list_elements) {\n parser.addNodeFilter('ul,ol', function (nodes) {\n var i = nodes.length, node, parentNode;\n while (i--) {\n node = nodes[i];\n parentNode = node.parent;\n if (parentNode.name === 'ul' || parentNode.name === 'ol') {\n if (node.prev && node.prev.name === 'li') {\n node.prev.append(node);\n } else {\n var li = new Node$2('li', 1);\n li.attr('style', 'list-style-type: none');\n node.wrap(li);\n }\n }\n }\n });\n }\n if (settings.validate && schema.getValidClasses()) {\n parser.addAttributeFilter('class', function (nodes) {\n var i = nodes.length, node, classList, ci, className, classValue;\n var validClasses = schema.getValidClasses();\n var validClassesMap, valid;\n while (i--) {\n node = nodes[i];\n classList = node.attr('class').split(' ');\n classValue = '';\n for (ci = 0; ci < classList.length; ci++) {\n className = classList[ci];\n valid = false;\n validClassesMap = validClasses['*'];\n if (validClassesMap && validClassesMap[className]) {\n valid = true;\n }\n validClassesMap = validClasses[node.name];\n if (!valid && validClassesMap && validClassesMap[className]) {\n valid = true;\n }\n if (valid) {\n if (classValue) {\n classValue += ' ';\n }\n classValue += className;\n }\n }\n if (!classValue.length) {\n classValue = null;\n }\n node.attr('class', classValue);\n }\n });\n }\n };\n\n var makeMap$4 = Tools.makeMap, each$i = Tools.each, explode$3 = Tools.explode, extend$3 = Tools.extend;\n function DomParser (settings, schema) {\n if (schema === void 0) {\n schema = Schema();\n }\n var nodeFilters = {};\n var attributeFilters = [];\n var matchedNodes = {};\n var matchedAttributes = {};\n settings = settings || {};\n settings.validate = 'validate' in settings ? settings.validate : true;\n settings.root_name = settings.root_name || 'body';\n var fixInvalidChildren = function (nodes) {\n var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i;\n var nonEmptyElements, whitespaceElements, nonSplitableElements, textBlockElements, specialElements, sibling, nextNode;\n nonSplitableElements = makeMap$4('tr,td,th,tbody,thead,tfoot,table');\n nonEmptyElements = schema.getNonEmptyElements();\n whitespaceElements = schema.getWhiteSpaceElements();\n textBlockElements = schema.getTextBlockElements();\n specialElements = schema.getSpecialElements();\n for (ni = 0; ni < nodes.length; ni++) {\n node = nodes[ni];\n if (!node.parent || node.fixed) {\n continue;\n }\n if (textBlockElements[node.name] && node.parent.name === 'li') {\n sibling = node.next;\n while (sibling) {\n if (textBlockElements[sibling.name]) {\n sibling.name = 'li';\n sibling.fixed = true;\n node.parent.insert(sibling, node.parent);\n } else {\n break;\n }\n sibling = sibling.next;\n }\n node.unwrap(node);\n continue;\n }\n parents = [node];\n for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent) {\n parents.push(parent);\n }\n if (parent && parents.length > 1) {\n parents.reverse();\n newParent = currentNode = filterNode(parents[0].clone());\n for (i = 0; i < parents.length - 1; i++) {\n if (schema.isValidChild(currentNode.name, parents[i].name)) {\n tempNode = filterNode(parents[i].clone());\n currentNode.append(tempNode);\n } else {\n tempNode = currentNode;\n }\n for (childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) {\n nextNode = childNode.next;\n tempNode.append(childNode);\n childNode = nextNode;\n }\n currentNode = tempNode;\n }\n if (!isEmpty$2(schema, nonEmptyElements, whitespaceElements, newParent)) {\n parent.insert(newParent, parents[0], true);\n parent.insert(node, newParent);\n } else {\n parent.insert(node, parents[0], true);\n }\n parent = parents[0];\n if (isEmpty$2(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) {\n parent.empty().remove();\n }\n } else if (node.parent) {\n if (node.name === 'li') {\n sibling = node.prev;\n if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\n sibling.append(node);\n continue;\n }\n sibling = node.next;\n if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\n sibling.insert(node, sibling.firstChild, true);\n continue;\n }\n node.wrap(filterNode(new Node$2('ul', 1)));\n continue;\n }\n if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {\n node.wrap(filterNode(new Node$2('div', 1)));\n } else {\n if (specialElements[node.name]) {\n node.empty().remove();\n } else {\n node.unwrap();\n }\n }\n }\n }\n };\n var filterNode = function (node) {\n var i, name, list;\n name = node.name;\n if (name in nodeFilters) {\n list = matchedNodes[name];\n if (list) {\n list.push(node);\n } else {\n matchedNodes[name] = [node];\n }\n }\n i = attributeFilters.length;\n while (i--) {\n name = attributeFilters[i].name;\n if (name in node.attributes.map) {\n list = matchedAttributes[name];\n if (list) {\n list.push(node);\n } else {\n matchedAttributes[name] = [node];\n }\n }\n }\n return node;\n };\n var addNodeFilter = function (name, callback) {\n each$i(explode$3(name), function (name) {\n var list = nodeFilters[name];\n if (!list) {\n nodeFilters[name] = list = [];\n }\n list.push(callback);\n });\n };\n var getNodeFilters = function () {\n var out = [];\n for (var name in nodeFilters) {\n if (nodeFilters.hasOwnProperty(name)) {\n out.push({\n name: name,\n callbacks: nodeFilters[name]\n });\n }\n }\n return out;\n };\n var addAttributeFilter = function (name, callback) {\n each$i(explode$3(name), function (name) {\n var i;\n for (i = 0; i < attributeFilters.length; i++) {\n if (attributeFilters[i].name === name) {\n attributeFilters[i].callbacks.push(callback);\n return;\n }\n }\n attributeFilters.push({\n name: name,\n callbacks: [callback]\n });\n });\n };\n var getAttributeFilters = function () {\n return [].concat(attributeFilters);\n };\n var parse = function (html, args) {\n var parser, nodes, i, l, fi, fl, list, name;\n var blockElements;\n var invalidChildren = [];\n var isInWhiteSpacePreservedElement;\n var node;\n args = args || {};\n matchedNodes = {};\n matchedAttributes = {};\n blockElements = extend$3(makeMap$4('script,style,head,html,body,title,meta,param'), schema.getBlockElements());\n var nonEmptyElements = schema.getNonEmptyElements();\n var children = schema.children;\n var validate = settings.validate;\n var rootBlockName = 'forced_root_block' in args ? args.forced_root_block : settings.forced_root_block;\n var whiteSpaceElements = schema.getWhiteSpaceElements();\n var startWhiteSpaceRegExp = /^[ \\t\\r\\n]+/;\n var endWhiteSpaceRegExp = /[ \\t\\r\\n]+$/;\n var allWhiteSpaceRegExp = /[ \\t\\r\\n]+/g;\n var isAllWhiteSpaceRegExp = /^[ \\t\\r\\n]+$/;\n isInWhiteSpacePreservedElement = whiteSpaceElements.hasOwnProperty(args.context) || whiteSpaceElements.hasOwnProperty(settings.root_name);\n var addRootBlocks = function () {\n var node = rootNode.firstChild, next, rootBlockNode;\n var trim = function (rootBlockNode) {\n if (rootBlockNode) {\n node = rootBlockNode.firstChild;\n if (node && node.type === 3) {\n node.value = node.value.replace(startWhiteSpaceRegExp, '');\n }\n node = rootBlockNode.lastChild;\n if (node && node.type === 3) {\n node.value = node.value.replace(endWhiteSpaceRegExp, '');\n }\n }\n };\n if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) {\n return;\n }\n while (node) {\n next = node.next;\n if (node.type === 3 || node.type === 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type')) {\n if (!rootBlockNode) {\n rootBlockNode = createNode(rootBlockName, 1);\n rootBlockNode.attr(settings.forced_root_block_attrs);\n rootNode.insert(rootBlockNode, node);\n rootBlockNode.append(node);\n } else {\n rootBlockNode.append(node);\n }\n } else {\n trim(rootBlockNode);\n rootBlockNode = null;\n }\n node = next;\n }\n trim(rootBlockNode);\n };\n var createNode = function (name, type) {\n var node = new Node$2(name, type);\n var list;\n if (name in nodeFilters) {\n list = matchedNodes[name];\n if (list) {\n list.push(node);\n } else {\n matchedNodes[name] = [node];\n }\n }\n return node;\n };\n var removeWhitespaceBefore = function (node) {\n var textNode, textNodeNext, textVal, sibling;\n var blockElements = schema.getBlockElements();\n for (textNode = node.prev; textNode && textNode.type === 3;) {\n textVal = textNode.value.replace(endWhiteSpaceRegExp, '');\n if (textVal.length > 0) {\n textNode.value = textVal;\n return;\n }\n textNodeNext = textNode.next;\n if (textNodeNext) {\n if (textNodeNext.type === 3 && textNodeNext.value.length) {\n textNode = textNode.prev;\n continue;\n }\n if (!blockElements[textNodeNext.name] && textNodeNext.name !== 'script' && textNodeNext.name !== 'style') {\n textNode = textNode.prev;\n continue;\n }\n }\n sibling = textNode.prev;\n textNode.remove();\n textNode = sibling;\n }\n };\n var cloneAndExcludeBlocks = function (input) {\n var name;\n var output = {};\n for (name in input) {\n if (name !== 'li' && name !== 'p') {\n output[name] = input[name];\n }\n }\n return output;\n };\n parser = SaxParser$1({\n validate: validate,\n allow_script_urls: settings.allow_script_urls,\n allow_conditional_comments: settings.allow_conditional_comments,\n self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()),\n cdata: function (text) {\n node.append(createNode('#cdata', 4)).value = text;\n },\n text: function (text, raw) {\n var textNode;\n if (!isInWhiteSpacePreservedElement) {\n text = text.replace(allWhiteSpaceRegExp, ' ');\n if (isLineBreakNode(node.lastChild, blockElements)) {\n text = text.replace(startWhiteSpaceRegExp, '');\n }\n }\n if (text.length !== 0) {\n textNode = createNode('#text', 3);\n textNode.raw = !!raw;\n node.append(textNode).value = text;\n }\n },\n comment: function (text) {\n node.append(createNode('#comment', 8)).value = text;\n },\n pi: function (name, text) {\n node.append(createNode(name, 7)).value = text;\n removeWhitespaceBefore(node);\n },\n doctype: function (text) {\n var newNode;\n newNode = node.append(createNode('#doctype', 10));\n newNode.value = text;\n removeWhitespaceBefore(node);\n },\n start: function (name, attrs, empty) {\n var newNode, attrFiltersLen, elementRule, attrName, parent;\n elementRule = validate ? schema.getElementRule(name) : {};\n if (elementRule) {\n newNode = createNode(elementRule.outputName || name, 1);\n newNode.attributes = attrs;\n newNode.shortEnded = empty;\n node.append(newNode);\n parent = children[node.name];\n if (parent && children[newNode.name] && !parent[newNode.name]) {\n invalidChildren.push(newNode);\n }\n attrFiltersLen = attributeFilters.length;\n while (attrFiltersLen--) {\n attrName = attributeFilters[attrFiltersLen].name;\n if (attrName in attrs.map) {\n list = matchedAttributes[attrName];\n if (list) {\n list.push(newNode);\n } else {\n matchedAttributes[attrName] = [newNode];\n }\n }\n }\n if (blockElements[name]) {\n removeWhitespaceBefore(newNode);\n }\n if (!empty) {\n node = newNode;\n }\n if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\n isInWhiteSpacePreservedElement = true;\n }\n }\n },\n end: function (name) {\n var textNode, elementRule, text, sibling, tempNode;\n elementRule = validate ? schema.getElementRule(name) : {};\n if (elementRule) {\n if (blockElements[name]) {\n if (!isInWhiteSpacePreservedElement) {\n textNode = node.firstChild;\n if (textNode && textNode.type === 3) {\n text = textNode.value.replace(startWhiteSpaceRegExp, '');\n if (text.length > 0) {\n textNode.value = text;\n textNode = textNode.next;\n } else {\n sibling = textNode.next;\n textNode.remove();\n textNode = sibling;\n while (textNode && textNode.type === 3) {\n text = textNode.value;\n sibling = textNode.next;\n if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\n textNode.remove();\n textNode = sibling;\n }\n textNode = sibling;\n }\n }\n }\n textNode = node.lastChild;\n if (textNode && textNode.type === 3) {\n text = textNode.value.replace(endWhiteSpaceRegExp, '');\n if (text.length > 0) {\n textNode.value = text;\n textNode = textNode.prev;\n } else {\n sibling = textNode.prev;\n textNode.remove();\n textNode = sibling;\n while (textNode && textNode.type === 3) {\n text = textNode.value;\n sibling = textNode.prev;\n if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\n textNode.remove();\n textNode = sibling;\n }\n textNode = sibling;\n }\n }\n }\n }\n }\n if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\n isInWhiteSpacePreservedElement = false;\n }\n if (elementRule.removeEmpty && isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node)) {\n if (!node.attributes.map.name && !node.attr('id')) {\n tempNode = node.parent;\n if (blockElements[node.name]) {\n node.empty().remove();\n } else {\n node.unwrap();\n }\n node = tempNode;\n return;\n }\n }\n if (elementRule.paddEmpty && (isPaddedWithNbsp(node) || isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node))) {\n paddEmptyNode(settings, args, blockElements, node);\n }\n node = node.parent;\n }\n }\n }, schema);\n var rootNode = node = new Node$2(args.context || settings.root_name, 11);\n parser.parse(html);\n if (validate && invalidChildren.length) {\n if (!args.context) {\n fixInvalidChildren(invalidChildren);\n } else {\n args.invalid = true;\n }\n }\n if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) {\n addRootBlocks();\n }\n if (!args.invalid) {\n for (name in matchedNodes) {\n list = nodeFilters[name];\n nodes = matchedNodes[name];\n fi = nodes.length;\n while (fi--) {\n if (!nodes[fi].parent) {\n nodes.splice(fi, 1);\n }\n }\n for (i = 0, l = list.length; i < l; i++) {\n list[i](nodes, name, args);\n }\n }\n for (i = 0, l = attributeFilters.length; i < l; i++) {\n list = attributeFilters[i];\n if (list.name in matchedAttributes) {\n nodes = matchedAttributes[list.name];\n fi = nodes.length;\n while (fi--) {\n if (!nodes[fi].parent) {\n nodes.splice(fi, 1);\n }\n }\n for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) {\n list.callbacks[fi](nodes, list.name, args);\n }\n }\n }\n }\n return rootNode;\n };\n var exports = {\n schema: schema,\n addAttributeFilter: addAttributeFilter,\n getAttributeFilters: getAttributeFilters,\n addNodeFilter: addNodeFilter,\n getNodeFilters: getNodeFilters,\n filterNode: filterNode,\n parse: parse\n };\n register$2(exports, settings);\n LegacyFilter.register(exports, settings);\n return exports;\n }\n\n var addTempAttr = function (htmlParser, tempAttrs, name) {\n if (Tools.inArray(tempAttrs, name) === -1) {\n htmlParser.addAttributeFilter(name, function (nodes, name) {\n var i = nodes.length;\n while (i--) {\n nodes[i].attr(name, null);\n }\n });\n tempAttrs.push(name);\n }\n };\n var postProcess$1 = function (editor, args, content) {\n if (!args.no_events && editor) {\n var outArgs = Events.firePostProcess(editor, merge(args, { content: content }));\n return outArgs.content;\n } else {\n return content;\n }\n };\n var getHtmlFromNode = function (dom, node, args) {\n var html = Zwsp.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node));\n return args.selection || isWsPreserveElement(Element$$1.fromDom(node)) ? html : Tools.trim(html);\n };\n var parseHtml = function (htmlParser, html, args) {\n var parserArgs = args.selection ? merge({ forced_root_block: false }, args) : args;\n var rootNode = htmlParser.parse(html, parserArgs);\n DomSerializerFilters.trimTrailingBr(rootNode);\n return rootNode;\n };\n var serializeNode = function (settings, schema, node) {\n var htmlSerializer = Serializer(settings, schema);\n return htmlSerializer.serialize(node);\n };\n var toHtml = function (editor, settings, schema, rootNode, args) {\n var content = serializeNode(settings, schema, rootNode);\n return postProcess$1(editor, args, content);\n };\n function DomSerializer (settings, editor) {\n var dom, schema, htmlParser;\n var tempAttrs = ['data-mce-selected'];\n dom = editor && editor.dom ? editor.dom : DOMUtils$1.DOM;\n schema = editor && editor.schema ? editor.schema : Schema(settings);\n settings.entity_encoding = settings.entity_encoding || 'named';\n settings.remove_trailing_brs = 'remove_trailing_brs' in settings ? settings.remove_trailing_brs : true;\n htmlParser = DomParser(settings, schema);\n DomSerializerFilters.register(htmlParser, settings, dom);\n var serialize = function (node, parserArgs) {\n var args = merge({ format: 'html' }, parserArgs ? parserArgs : {});\n var targetNode = DomSerializerPreProcess.process(editor, node, args);\n var html = getHtmlFromNode(dom, targetNode, args);\n var rootNode = parseHtml(htmlParser, html, args);\n return args.format === 'tree' ? rootNode : toHtml(editor, settings, schema, rootNode, args);\n };\n return {\n schema: schema,\n addNodeFilter: htmlParser.addNodeFilter,\n addAttributeFilter: htmlParser.addAttributeFilter,\n serialize: serialize,\n addRules: function (rules) {\n schema.addValidElements(rules);\n },\n setRules: function (rules) {\n schema.setValidElements(rules);\n },\n addTempAttr: curry(addTempAttr, htmlParser, tempAttrs),\n getTempAttrs: function () {\n return tempAttrs;\n }\n };\n }\n\n function Serializer$1 (settings, editor) {\n var domSerializer = DomSerializer(settings, editor);\n return {\n schema: domSerializer.schema,\n addNodeFilter: domSerializer.addNodeFilter,\n addAttributeFilter: domSerializer.addAttributeFilter,\n serialize: domSerializer.serialize,\n addRules: domSerializer.addRules,\n setRules: domSerializer.setRules,\n addTempAttr: domSerializer.addTempAttr,\n getTempAttrs: domSerializer.getTempAttrs\n };\n }\n\n function BookmarkManager(selection) {\n return {\n getBookmark: curry(Bookmarks.getBookmark, selection),\n moveToBookmark: curry(Bookmarks.moveToBookmark, selection)\n };\n }\n (function (BookmarkManager) {\n BookmarkManager.isBookmarkNode = Bookmarks.isBookmarkNode;\n }(BookmarkManager || (BookmarkManager = {})));\n var BookmarkManager$1 = BookmarkManager;\n\n var isContentEditableFalse$a = NodeType.isContentEditableFalse;\n var isContentEditableTrue$6 = NodeType.isContentEditableTrue;\n var getContentEditableRoot$2 = function (root, node) {\n while (node && node !== root) {\n if (isContentEditableTrue$6(node) || isContentEditableFalse$a(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var ControlSelection = function (selection, editor) {\n var dom = editor.dom, each = Tools.each;\n var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle;\n var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;\n var width, height;\n var editableDoc = editor.getDoc(), rootDocument = document;\n var abs = Math.abs, round = Math.round, rootElement = editor.getBody();\n var startScrollWidth, startScrollHeight;\n resizeHandles = {\n nw: [\n 0,\n 0,\n -1,\n -1\n ],\n ne: [\n 1,\n 0,\n 1,\n -1\n ],\n se: [\n 1,\n 1,\n 1,\n 1\n ],\n sw: [\n 0,\n 1,\n -1,\n 1\n ]\n };\n var rootClass = '.mce-content-body';\n editor.contentStyles.push(rootClass + ' div.mce-resizehandle {' + 'position: absolute;' + 'border: 1px solid black;' + 'box-sizing: content-box;' + 'background: #FFF;' + 'width: 7px;' + 'height: 7px;' + 'z-index: 10000' + '}' + rootClass + ' .mce-resizehandle:hover {' + 'background: #000' + '}' + rootClass + ' img[data-mce-selected],' + rootClass + ' hr[data-mce-selected] {' + 'outline: 1px solid black;' + 'resize: none' + '}' + rootClass + ' .mce-clonedresizable {' + 'position: absolute;' + (Env.gecko ? '' : 'outline: 1px dashed black;') + 'opacity: .5;' + 'filter: alpha(opacity=50);' + 'z-index: 10000' + '}' + rootClass + ' .mce-resize-helper {' + 'background: #555;' + 'background: rgba(0,0,0,0.75);' + 'border-radius: 3px;' + 'border: 1px;' + 'color: white;' + 'display: none;' + 'font-family: sans-serif;' + 'font-size: 12px;' + 'white-space: nowrap;' + 'line-height: 14px;' + 'margin: 5px 10px;' + 'padding: 5px;' + 'position: absolute;' + 'z-index: 10001' + '}');\n var isImage = function (elm) {\n return elm && (elm.nodeName === 'IMG' || editor.dom.is(elm, 'figure.image'));\n };\n var isEventOnImageOutsideRange = function (evt, range) {\n return isImage(evt.target) && !RangePoint.isXYWithinRange(evt.clientX, evt.clientY, range);\n };\n var contextMenuSelectImage = function (evt) {\n var target = evt.target;\n if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) {\n evt.preventDefault();\n editor.selection.select(target);\n }\n };\n var getResizeTarget = function (elm) {\n return editor.dom.is(elm, 'figure.image') ? elm.querySelector('img') : elm;\n };\n var isResizable = function (elm) {\n var selector = editor.settings.object_resizing;\n if (selector === false || Env.iOS) {\n return false;\n }\n if (typeof selector !== 'string') {\n selector = 'table,img,figure.image,div';\n }\n if (elm.getAttribute('data-mce-resize') === 'false') {\n return false;\n }\n if (elm === editor.getBody()) {\n return false;\n }\n return is$1(Element$$1.fromDom(elm), selector);\n };\n var resizeGhostElement = function (e) {\n var deltaX, deltaY, proportional;\n var resizeHelperX, resizeHelperY;\n deltaX = e.screenX - startX;\n deltaY = e.screenY - startY;\n width = deltaX * selectedHandle[2] + startW;\n height = deltaY * selectedHandle[3] + startH;\n width = width < 5 ? 5 : width;\n height = height < 5 ? 5 : height;\n if (isImage(selectedElm) && editor.settings.resize_img_proportional !== false) {\n proportional = !VK.modifierPressed(e);\n } else {\n proportional = VK.modifierPressed(e) || isImage(selectedElm) && selectedHandle[2] * selectedHandle[3] !== 0;\n }\n if (proportional) {\n if (abs(deltaX) > abs(deltaY)) {\n height = round(width * ratio);\n width = round(height / ratio);\n } else {\n width = round(height / ratio);\n height = round(width * ratio);\n }\n }\n dom.setStyles(getResizeTarget(selectedElmGhost), {\n width: width,\n height: height\n });\n resizeHelperX = selectedHandle.startPos.x + deltaX;\n resizeHelperY = selectedHandle.startPos.y + deltaY;\n resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0;\n resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0;\n dom.setStyles(resizeHelper, {\n left: resizeHelperX,\n top: resizeHelperY,\n display: 'block'\n });\n resizeHelper.innerHTML = width + ' × ' + height;\n if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {\n dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));\n }\n if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {\n dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));\n }\n deltaX = rootElement.scrollWidth - startScrollWidth;\n deltaY = rootElement.scrollHeight - startScrollHeight;\n if (deltaX + deltaY !== 0) {\n dom.setStyles(resizeHelper, {\n left: resizeHelperX - deltaX,\n top: resizeHelperY - deltaY\n });\n }\n if (!resizeStarted) {\n Events.fireObjectResizeStart(editor, selectedElm, startW, startH);\n resizeStarted = true;\n }\n };\n var endGhostResize = function () {\n resizeStarted = false;\n var setSizeProp = function (name$$1, value) {\n if (value) {\n if (selectedElm.style[name$$1] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name$$1)) {\n dom.setStyle(getResizeTarget(selectedElm), name$$1, value);\n } else {\n dom.setAttrib(getResizeTarget(selectedElm), name$$1, value);\n }\n }\n };\n setSizeProp('width', width);\n setSizeProp('height', height);\n dom.unbind(editableDoc, 'mousemove', resizeGhostElement);\n dom.unbind(editableDoc, 'mouseup', endGhostResize);\n if (rootDocument !== editableDoc) {\n dom.unbind(rootDocument, 'mousemove', resizeGhostElement);\n dom.unbind(rootDocument, 'mouseup', endGhostResize);\n }\n dom.remove(selectedElmGhost);\n dom.remove(resizeHelper);\n showResizeRect(selectedElm);\n Events.fireObjectResized(editor, selectedElm, width, height);\n dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style'));\n editor.nodeChanged();\n };\n var showResizeRect = function (targetElm) {\n var position, targetWidth, targetHeight, e, rect;\n hideResizeRect();\n unbindResizeHandleEvents();\n position = dom.getPos(targetElm, rootElement);\n selectedElmX = position.x;\n selectedElmY = position.y;\n rect = targetElm.getBoundingClientRect();\n targetWidth = rect.width || rect.right - rect.left;\n targetHeight = rect.height || rect.bottom - rect.top;\n if (selectedElm !== targetElm) {\n selectedElm = targetElm;\n width = height = 0;\n }\n e = editor.fire('ObjectSelected', { target: targetElm });\n if (isResizable(targetElm) && !e.isDefaultPrevented()) {\n each(resizeHandles, function (handle, name$$1) {\n var handleElm;\n var startDrag = function (e) {\n startX = e.screenX;\n startY = e.screenY;\n startW = getResizeTarget(selectedElm).clientWidth;\n startH = getResizeTarget(selectedElm).clientHeight;\n ratio = startH / startW;\n selectedHandle = handle;\n handle.startPos = {\n x: targetWidth * handle[0] + selectedElmX,\n y: targetHeight * handle[1] + selectedElmY\n };\n startScrollWidth = rootElement.scrollWidth;\n startScrollHeight = rootElement.scrollHeight;\n selectedElmGhost = selectedElm.cloneNode(true);\n dom.addClass(selectedElmGhost, 'mce-clonedresizable');\n dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all');\n selectedElmGhost.contentEditable = false;\n selectedElmGhost.unSelectabe = true;\n dom.setStyles(selectedElmGhost, {\n left: selectedElmX,\n top: selectedElmY,\n margin: 0\n });\n selectedElmGhost.removeAttribute('data-mce-selected');\n rootElement.appendChild(selectedElmGhost);\n dom.bind(editableDoc, 'mousemove', resizeGhostElement);\n dom.bind(editableDoc, 'mouseup', endGhostResize);\n if (rootDocument !== editableDoc) {\n dom.bind(rootDocument, 'mousemove', resizeGhostElement);\n dom.bind(rootDocument, 'mouseup', endGhostResize);\n }\n resizeHelper = dom.add(rootElement, 'div', {\n 'class': 'mce-resize-helper',\n 'data-mce-bogus': 'all'\n }, startW + ' × ' + startH);\n };\n handleElm = dom.get('mceResizeHandle' + name$$1);\n if (handleElm) {\n dom.remove(handleElm);\n }\n handleElm = dom.add(rootElement, 'div', {\n 'id': 'mceResizeHandle' + name$$1,\n 'data-mce-bogus': 'all',\n 'class': 'mce-resizehandle',\n 'unselectable': true,\n 'style': 'cursor:' + name$$1 + '-resize; margin:0; padding:0'\n });\n if (Env.ie === 11) {\n handleElm.contentEditable = false;\n }\n dom.bind(handleElm, 'mousedown', function (e) {\n e.stopImmediatePropagation();\n e.preventDefault();\n startDrag(e);\n });\n handle.elm = handleElm;\n dom.setStyles(handleElm, {\n left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2,\n top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2\n });\n });\n } else {\n hideResizeRect();\n }\n selectedElm.setAttribute('data-mce-selected', '1');\n };\n var hideResizeRect = function () {\n var name$$1, handleElm;\n unbindResizeHandleEvents();\n if (selectedElm) {\n selectedElm.removeAttribute('data-mce-selected');\n }\n for (name$$1 in resizeHandles) {\n handleElm = dom.get('mceResizeHandle' + name$$1);\n if (handleElm) {\n dom.unbind(handleElm);\n dom.remove(handleElm);\n }\n }\n };\n var updateResizeRect = function (e) {\n var startElm, controlElm;\n var isChildOrEqual = function (node, parent$$1) {\n if (node) {\n do {\n if (node === parent$$1) {\n return true;\n }\n } while (node = node.parentNode);\n }\n };\n if (resizeStarted || editor.removed) {\n return;\n }\n each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function (img) {\n img.removeAttribute('data-mce-selected');\n });\n controlElm = e.type === 'mousedown' ? e.target : selection.getNode();\n controlElm = dom.$(controlElm).closest('table,img,figure.image,hr')[0];\n if (isChildOrEqual(controlElm, rootElement)) {\n disableGeckoResize();\n startElm = selection.getStart(true);\n if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) {\n showResizeRect(controlElm);\n return;\n }\n }\n hideResizeRect();\n };\n var isWithinContentEditableFalse = function (elm) {\n return isContentEditableFalse$a(getContentEditableRoot$2(editor.getBody(), elm));\n };\n var unbindResizeHandleEvents = function () {\n for (var name$$1 in resizeHandles) {\n var handle = resizeHandles[name$$1];\n if (handle.elm) {\n dom.unbind(handle.elm);\n delete handle.elm;\n }\n }\n };\n var disableGeckoResize = function () {\n try {\n editor.getDoc().execCommand('enableObjectResizing', false, false);\n } catch (ex) {\n }\n };\n editor.on('init', function () {\n disableGeckoResize();\n if (Env.ie && Env.ie >= 11) {\n editor.on('mousedown click', function (e) {\n var target = e.target, nodeName = target.nodeName;\n if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName) && !isWithinContentEditableFalse(target)) {\n if (e.button !== 2) {\n editor.selection.select(target, nodeName === 'TABLE');\n }\n if (e.type === 'mousedown') {\n editor.nodeChanged();\n }\n }\n });\n editor.dom.bind(rootElement, 'mscontrolselect', function (e) {\n var delayedSelect = function (node) {\n Delay.setEditorTimeout(editor, function () {\n editor.selection.select(node);\n });\n };\n if (isWithinContentEditableFalse(e.target)) {\n e.preventDefault();\n delayedSelect(e.target);\n return;\n }\n if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) {\n e.preventDefault();\n if (e.target.tagName === 'IMG') {\n delayedSelect(e.target);\n }\n }\n });\n }\n var throttledUpdateResizeRect = Delay.throttle(function (e) {\n if (!editor.composing) {\n updateResizeRect(e);\n }\n });\n editor.on('nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged', throttledUpdateResizeRect);\n editor.on('keyup compositionend', function (e) {\n if (selectedElm && selectedElm.nodeName === 'TABLE') {\n throttledUpdateResizeRect(e);\n }\n });\n editor.on('hide blur', hideResizeRect);\n editor.on('contextmenu', contextMenuSelectImage);\n });\n editor.on('remove', unbindResizeHandleEvents);\n var destroy = function () {\n selectedElm = selectedElmGhost = null;\n };\n return {\n isResizable: isResizable,\n showResizeRect: showResizeRect,\n hideResizeRect: hideResizeRect,\n updateResizeRect: updateResizeRect,\n destroy: destroy\n };\n };\n\n var getPos$1 = function (elm) {\n var x = 0, y = 0;\n var offsetParent = elm;\n while (offsetParent && offsetParent.nodeType) {\n x += offsetParent.offsetLeft || 0;\n y += offsetParent.offsetTop || 0;\n offsetParent = offsetParent.offsetParent;\n }\n return {\n x: x,\n y: y\n };\n };\n var fireScrollIntoViewEvent = function (editor, elm, alignToTop) {\n var scrollEvent = {\n elm: elm,\n alignToTop: alignToTop\n };\n editor.fire('scrollIntoView', scrollEvent);\n return scrollEvent.isDefaultPrevented();\n };\n var scrollElementIntoView = function (editor, elm, alignToTop) {\n var y, viewPort;\n var dom = editor.dom;\n var root = dom.getRoot();\n var viewPortY, viewPortH, offsetY = 0;\n if (fireScrollIntoViewEvent(editor, elm, alignToTop)) {\n return;\n }\n if (!NodeType.isElement(elm)) {\n return;\n }\n if (alignToTop === false) {\n offsetY = elm.offsetHeight;\n }\n if (root.nodeName !== 'BODY') {\n var scrollContainer = editor.selection.getScrollContainer();\n if (scrollContainer) {\n y = getPos$1(elm).y - getPos$1(scrollContainer).y + offsetY;\n viewPortH = scrollContainer.clientHeight;\n viewPortY = scrollContainer.scrollTop;\n if (y < viewPortY || y + 25 > viewPortY + viewPortH) {\n scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25;\n }\n return;\n }\n }\n viewPort = dom.getViewPort(editor.getWin());\n y = dom.getPos(elm).y + offsetY;\n viewPortY = viewPort.y;\n viewPortH = viewPort.h;\n if (y < viewPort.y || y + 25 > viewPortY + viewPortH) {\n editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25);\n }\n };\n var getViewPortRect = function (editor) {\n if (editor.inline) {\n return editor.getBody().getBoundingClientRect();\n } else {\n var win = editor.getWin();\n return {\n left: 0,\n right: win.innerWidth,\n top: 0,\n bottom: win.innerHeight,\n width: win.innerWidth,\n height: win.innerHeight\n };\n }\n };\n var scrollBy = function (editor, dx, dy) {\n if (editor.inline) {\n editor.getBody().scrollLeft += dx;\n editor.getBody().scrollTop += dy;\n } else {\n editor.getWin().scrollBy(dx, dy);\n }\n };\n var scrollRangeIntoView = function (editor, rng) {\n head(CaretPosition.fromRangeStart(rng).getClientRects()).each(function (rngRect) {\n var bodyRect = getViewPortRect(editor);\n var overflow = getOverflow(bodyRect, rngRect);\n var margin = 4;\n var dx = overflow.x > 0 ? overflow.x + margin : overflow.x - margin;\n var dy = overflow.y > 0 ? overflow.y + margin : overflow.y - margin;\n scrollBy(editor, overflow.x !== 0 ? dx : 0, overflow.y !== 0 ? dy : 0);\n });\n };\n var ScrollIntoView = {\n scrollElementIntoView: scrollElementIntoView,\n scrollRangeIntoView: scrollRangeIntoView\n };\n\n var hasCeProperty = function (node) {\n return NodeType.isContentEditableTrue(node) || NodeType.isContentEditableFalse(node);\n };\n var findParent$1 = function (node, rootNode, predicate) {\n while (node && node !== rootNode) {\n if (predicate(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var findClosestIeRange = function (clientX, clientY, doc) {\n var element, rng, rects;\n element = doc.elementFromPoint(clientX, clientY);\n rng = doc.body.createTextRange();\n if (!element || element.tagName === 'HTML') {\n element = doc.body;\n }\n rng.moveToElementText(element);\n rects = Tools.toArray(rng.getClientRects());\n rects = rects.sort(function (a, b) {\n a = Math.abs(Math.max(a.top - clientY, a.bottom - clientY));\n b = Math.abs(Math.max(b.top - clientY, b.bottom - clientY));\n return a - b;\n });\n if (rects.length > 0) {\n clientY = (rects[0].bottom + rects[0].top) / 2;\n try {\n rng.moveToPoint(clientX, clientY);\n rng.collapse(true);\n return rng;\n } catch (ex) {\n }\n }\n return null;\n };\n var moveOutOfContentEditableFalse = function (rng, rootNode) {\n var parentElement = rng && rng.parentElement ? rng.parentElement() : null;\n return NodeType.isContentEditableFalse(findParent$1(parentElement, rootNode, hasCeProperty)) ? null : rng;\n };\n var fromPoint$1 = function (clientX, clientY, doc) {\n var rng, point;\n var pointDoc = doc;\n if (pointDoc.caretPositionFromPoint) {\n point = pointDoc.caretPositionFromPoint(clientX, clientY);\n if (point) {\n rng = doc.createRange();\n rng.setStart(point.offsetNode, point.offset);\n rng.collapse(true);\n }\n } else if (doc.caretRangeFromPoint) {\n rng = doc.caretRangeFromPoint(clientX, clientY);\n } else if (pointDoc.body.createTextRange) {\n rng = pointDoc.body.createTextRange();\n try {\n rng.moveToPoint(clientX, clientY);\n rng.collapse(true);\n } catch (ex) {\n rng = findClosestIeRange(clientX, clientY, doc);\n }\n return moveOutOfContentEditableFalse(rng, doc.body);\n }\n return rng;\n };\n var CaretRangeFromPoint = { fromPoint: fromPoint$1 };\n\n var processRanges = function (editor, ranges) {\n return map(ranges, function (range$$1) {\n var evt = editor.fire('GetSelectionRange', { range: range$$1 });\n return evt.range !== range$$1 ? evt.range : range$$1;\n });\n };\n var EventProcessRanges = { processRanges: processRanges };\n\n var fromElements = function (elements, scope) {\n var doc = scope || document;\n var fragment = doc.createDocumentFragment();\n each(elements, function (element) {\n fragment.appendChild(element.dom());\n });\n return Element$$1.fromDom(fragment);\n };\n\n var tableModel = Immutable('element', 'width', 'rows');\n var tableRow = Immutable('element', 'cells');\n var cellPosition = Immutable('x', 'y');\n var getSpan = function (td, key) {\n var value = parseInt(get$1(td, key), 10);\n return isNaN(value) ? 1 : value;\n };\n var fillout = function (table, x, y, tr, td) {\n var rowspan = getSpan(td, 'rowspan');\n var colspan = getSpan(td, 'colspan');\n var rows = table.rows();\n for (var y2 = y; y2 < y + rowspan; y2++) {\n if (!rows[y2]) {\n rows[y2] = tableRow(deep(tr), []);\n }\n for (var x2 = x; x2 < x + colspan; x2++) {\n var cells = rows[y2].cells();\n cells[x2] = y2 === y && x2 === x ? td : shallow(td);\n }\n }\n };\n var cellExists = function (table, x, y) {\n var rows = table.rows();\n var cells = rows[y] ? rows[y].cells() : [];\n return !!cells[x];\n };\n var skipCellsX = function (table, x, y) {\n while (cellExists(table, x, y)) {\n x++;\n }\n return x;\n };\n var getWidth = function (rows) {\n return foldl(rows, function (acc, row) {\n return row.cells().length > acc ? row.cells().length : acc;\n }, 0);\n };\n var findElementPos = function (table, element) {\n var rows = table.rows();\n for (var y = 0; y < rows.length; y++) {\n var cells = rows[y].cells();\n for (var x = 0; x < cells.length; x++) {\n if (eq(cells[x], element)) {\n return Option.some(cellPosition(x, y));\n }\n }\n }\n return Option.none();\n };\n var extractRows = function (table, sx, sy, ex, ey) {\n var newRows = [];\n var rows = table.rows();\n for (var y = sy; y <= ey; y++) {\n var cells = rows[y].cells();\n var slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1);\n newRows.push(tableRow(rows[y].element(), slice));\n }\n return newRows;\n };\n var subTable = function (table, startPos, endPos) {\n var sx = startPos.x(), sy = startPos.y();\n var ex = endPos.x(), ey = endPos.y();\n var newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy);\n return tableModel(table.element(), getWidth(newRows), newRows);\n };\n var createDomTable = function (table, rows) {\n var tableElement = shallow(table.element());\n var tableBody = Element$$1.fromTag('tbody');\n append$1(tableBody, rows);\n append(tableElement, tableBody);\n return tableElement;\n };\n var modelRowsToDomRows = function (table) {\n return map(table.rows(), function (row) {\n var cells = map(row.cells(), function (cell) {\n var td = deep(cell);\n remove(td, 'colspan');\n remove(td, 'rowspan');\n return td;\n });\n var tr = shallow(row.element());\n append$1(tr, cells);\n return tr;\n });\n };\n var fromDom$2 = function (tableElm) {\n var table = tableModel(shallow(tableElm), 0, []);\n each(descendants$1(tableElm, 'tr'), function (tr, y) {\n each(descendants$1(tr, 'td,th'), function (td, x) {\n fillout(table, skipCellsX(table, x, y), y, tr, td);\n });\n });\n return tableModel(table.element(), getWidth(table.rows()), table.rows());\n };\n var toDom = function (table) {\n return createDomTable(table, modelRowsToDomRows(table));\n };\n var subsection = function (table, startElement, endElement) {\n return findElementPos(table, startElement).bind(function (startPos) {\n return findElementPos(table, endElement).map(function (endPos) {\n return subTable(table, startPos, endPos);\n });\n });\n };\n var SimpleTableModel = {\n fromDom: fromDom$2,\n toDom: toDom,\n subsection: subsection\n };\n\n var findParentListContainer = function (parents$$1) {\n return find(parents$$1, function (elm) {\n return name(elm) === 'ul' || name(elm) === 'ol';\n });\n };\n var getFullySelectedListWrappers = function (parents$$1, rng) {\n return find(parents$$1, function (elm) {\n return name(elm) === 'li' && hasAllContentsSelected(elm, rng);\n }).fold(constant([]), function (li) {\n return findParentListContainer(parents$$1).map(function (listCont) {\n return [\n Element$$1.fromTag('li'),\n Element$$1.fromTag(name(listCont))\n ];\n }).getOr([]);\n });\n };\n var wrap$3 = function (innerElm, elms) {\n var wrapped = foldl(elms, function (acc, elm) {\n append(elm, acc);\n return elm;\n }, innerElm);\n return elms.length > 0 ? fromElements([wrapped]) : wrapped;\n };\n var directListWrappers = function (commonAnchorContainer) {\n if (isListItem(commonAnchorContainer)) {\n return parent(commonAnchorContainer).filter(isList).fold(constant([]), function (listElm) {\n return [\n commonAnchorContainer,\n listElm\n ];\n });\n } else {\n return isList(commonAnchorContainer) ? [commonAnchorContainer] : [];\n }\n };\n var getWrapElements = function (rootNode, rng) {\n var commonAnchorContainer = Element$$1.fromDom(rng.commonAncestorContainer);\n var parents$$1 = Parents.parentsAndSelf(commonAnchorContainer, rootNode);\n var wrapElements = filter(parents$$1, function (elm) {\n return isInline(elm) || isHeading(elm);\n });\n var listWrappers = getFullySelectedListWrappers(parents$$1, rng);\n var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer));\n return map(allWrappers, shallow);\n };\n var emptyFragment = function () {\n return fromElements([]);\n };\n var getFragmentFromRange = function (rootNode, rng) {\n return wrap$3(Element$$1.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng));\n };\n var getParentTable = function (rootElm, cell) {\n return ancestor$1(cell, 'table', curry(eq, rootElm));\n };\n var getTableFragment = function (rootNode, selectedTableCells) {\n return getParentTable(rootNode, selectedTableCells[0]).bind(function (tableElm) {\n var firstCell = selectedTableCells[0];\n var lastCell = selectedTableCells[selectedTableCells.length - 1];\n var fullTableModel = SimpleTableModel.fromDom(tableElm);\n return SimpleTableModel.subsection(fullTableModel, firstCell, lastCell).map(function (sectionedTableModel) {\n return fromElements([SimpleTableModel.toDom(sectionedTableModel)]);\n });\n }).getOrThunk(emptyFragment);\n };\n var getSelectionFragment = function (rootNode, ranges) {\n return ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0]);\n };\n var read$4 = function (rootNode, ranges) {\n var selectedCells = TableCellSelection.getCellsFromElementOrRanges(ranges, rootNode);\n return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges);\n };\n var FragmentReader = { read: read$4 };\n\n var getTextContent = function (editor) {\n return Option.from(editor.selection.getRng()).map(function (r) {\n return Zwsp.trim(r.toString());\n }).getOr('');\n };\n var getHtmlContent = function (editor, args) {\n var rng = editor.selection.getRng(), tmpElm = editor.dom.create('body');\n var sel = editor.selection.getSel();\n var fragment;\n var ranges = EventProcessRanges.processRanges(editor, MultiRange.getRanges(sel));\n if (rng.cloneContents) {\n fragment = args.contextual ? FragmentReader.read(Element$$1.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents();\n if (fragment) {\n tmpElm.appendChild(fragment);\n }\n } else {\n tmpElm.innerHTML = rng.toString();\n }\n return editor.selection.serializer.serialize(tmpElm, args);\n };\n var getContent = function (editor, args) {\n if (args === void 0) {\n args = {};\n }\n args.get = true;\n args.format = args.format || 'html';\n args.selection = true;\n args = editor.fire('BeforeGetContent', args);\n if (args.isDefaultPrevented()) {\n editor.fire('GetContent', args);\n return args.content;\n }\n if (args.format === 'text') {\n return getTextContent(editor);\n } else {\n args.getInner = true;\n var content = getHtmlContent(editor, args);\n if (args.format === 'tree') {\n return content;\n } else {\n args.content = editor.selection.isCollapsed() ? '' : content;\n editor.fire('GetContent', args);\n return args.content;\n }\n }\n };\n var GetSelectionContent = { getContent: getContent };\n\n var setContent = function (editor, content, args) {\n var rng = editor.selection.getRng(), caretNode;\n var doc = editor.getDoc();\n var frag, temp;\n args = args || { format: 'html' };\n args.set = true;\n args.selection = true;\n args.content = content;\n if (!args.no_events) {\n args = editor.fire('BeforeSetContent', args);\n if (args.isDefaultPrevented()) {\n editor.fire('SetContent', args);\n return;\n }\n }\n content = args.content;\n if (rng.insertNode) {\n content += '_';\n if (rng.startContainer === doc && rng.endContainer === doc) {\n doc.body.innerHTML = content;\n } else {\n rng.deleteContents();\n if (doc.body.childNodes.length === 0) {\n doc.body.innerHTML = content;\n } else {\n if (rng.createContextualFragment) {\n rng.insertNode(rng.createContextualFragment(content));\n } else {\n frag = doc.createDocumentFragment();\n temp = doc.createElement('div');\n frag.appendChild(temp);\n temp.outerHTML = content;\n rng.insertNode(frag);\n }\n }\n }\n caretNode = editor.dom.get('__caret');\n rng = doc.createRange();\n rng.setStartBefore(caretNode);\n rng.setEndBefore(caretNode);\n editor.selection.setRng(rng);\n editor.dom.remove('__caret');\n try {\n editor.selection.setRng(rng);\n } catch (ex) {\n }\n } else {\n if (rng.item) {\n doc.execCommand('Delete', false, null);\n rng = editor.getRng();\n }\n if (/^\\s+/.test(content)) {\n rng.pasteHTML('_' + content);\n editor.dom.remove('__mce_tmp');\n } else {\n rng.pasteHTML(content);\n }\n }\n if (!args.no_events) {\n editor.fire('SetContent', args);\n }\n };\n var SetSelectionContent = { setContent: setContent };\n\n var getEndpointElement = function (root, rng, start, real, resolve) {\n var container = start ? rng.startContainer : rng.endContainer;\n var offset = start ? rng.startOffset : rng.endOffset;\n return Option.from(container).map(Element$$1.fromDom).map(function (elm) {\n return !real || !rng.collapsed ? child(elm, resolve(elm, offset)).getOr(elm) : elm;\n }).bind(function (elm) {\n return isElement(elm) ? Option.some(elm) : parent(elm);\n }).map(function (elm) {\n return elm.dom();\n }).getOr(root);\n };\n var getStart$2 = function (root, rng, real) {\n return getEndpointElement(root, rng, true, real, function (elm, offset) {\n return Math.min(childNodesCount(elm), offset);\n });\n };\n var getEnd = function (root, rng, real) {\n return getEndpointElement(root, rng, false, real, function (elm, offset) {\n return offset > 0 ? offset - 1 : offset;\n });\n };\n var skipEmptyTextNodes = function (node, forwards) {\n var orig = node;\n while (node && NodeType.isText(node) && node.length === 0) {\n node = forwards ? node.nextSibling : node.previousSibling;\n }\n return node || orig;\n };\n var getNode$1 = function (root, rng) {\n var elm, startContainer, endContainer, startOffset, endOffset;\n if (!rng) {\n return root;\n }\n startContainer = rng.startContainer;\n endContainer = rng.endContainer;\n startOffset = rng.startOffset;\n endOffset = rng.endOffset;\n elm = rng.commonAncestorContainer;\n if (!rng.collapsed) {\n if (startContainer === endContainer) {\n if (endOffset - startOffset < 2) {\n if (startContainer.hasChildNodes()) {\n elm = startContainer.childNodes[startOffset];\n }\n }\n }\n if (startContainer.nodeType === 3 && endContainer.nodeType === 3) {\n if (startContainer.length === startOffset) {\n startContainer = skipEmptyTextNodes(startContainer.nextSibling, true);\n } else {\n startContainer = startContainer.parentNode;\n }\n if (endOffset === 0) {\n endContainer = skipEmptyTextNodes(endContainer.previousSibling, false);\n } else {\n endContainer = endContainer.parentNode;\n }\n if (startContainer && startContainer === endContainer) {\n return startContainer;\n }\n }\n }\n if (elm && elm.nodeType === 3) {\n return elm.parentNode;\n }\n return elm;\n };\n var getSelectedBlocks = function (dom, rng, startElm, endElm) {\n var node, root;\n var selectedBlocks = [];\n root = dom.getRoot();\n startElm = dom.getParent(startElm || getStart$2(root, rng, rng.collapsed), dom.isBlock);\n endElm = dom.getParent(endElm || getEnd(root, rng, rng.collapsed), dom.isBlock);\n if (startElm && startElm !== root) {\n selectedBlocks.push(startElm);\n }\n if (startElm && endElm && startElm !== endElm) {\n node = startElm;\n var walker = new TreeWalker(startElm, root);\n while ((node = walker.next()) && node !== endElm) {\n if (dom.isBlock(node)) {\n selectedBlocks.push(node);\n }\n }\n }\n if (endElm && startElm !== endElm && endElm !== root) {\n selectedBlocks.push(endElm);\n }\n return selectedBlocks;\n };\n var select$1 = function (dom, node, content) {\n return Option.from(node).map(function (node) {\n var idx = dom.nodeIndex(node);\n var rng = dom.createRng();\n rng.setStart(node.parentNode, idx);\n rng.setEnd(node.parentNode, idx + 1);\n if (content) {\n moveEndPoint$1(dom, rng, node, true);\n moveEndPoint$1(dom, rng, node, false);\n }\n return rng;\n });\n };\n\n var each$j = Tools.each;\n var isNativeIeSelection = function (rng) {\n return !!rng.select;\n };\n var isAttachedToDom = function (node) {\n return !!(node && node.ownerDocument) && contains$3(Element$$1.fromDom(node.ownerDocument), Element$$1.fromDom(node));\n };\n var isValidRange = function (rng) {\n if (!rng) {\n return false;\n } else if (isNativeIeSelection(rng)) {\n return true;\n } else {\n return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer);\n }\n };\n var Selection = function (dom, win, serializer, editor) {\n var bookmarkManager, controlSelection;\n var selectedRange, explicitRange, selectorChangedData;\n var setCursorLocation = function (node, offset) {\n var rng = dom.createRng();\n if (!node) {\n moveEndPoint$1(dom, rng, editor.getBody(), true);\n setRng(rng);\n } else {\n rng.setStart(node, offset);\n rng.setEnd(node, offset);\n setRng(rng);\n collapse(false);\n }\n };\n var getContent = function (args) {\n return GetSelectionContent.getContent(editor, args);\n };\n var setContent = function (content, args) {\n return SetSelectionContent.setContent(editor, content, args);\n };\n var getStart = function (real) {\n return getStart$2(editor.getBody(), getRng(), real);\n };\n var getEnd$$1 = function (real) {\n return getEnd(editor.getBody(), getRng(), real);\n };\n var getBookmark = function (type, normalized) {\n return bookmarkManager.getBookmark(type, normalized);\n };\n var moveToBookmark = function (bookmark) {\n return bookmarkManager.moveToBookmark(bookmark);\n };\n var select = function (node, content) {\n select$1(dom, node, content).each(setRng);\n return node;\n };\n var isCollapsed = function () {\n var rng = getRng(), sel = getSel();\n if (!rng || rng.item) {\n return false;\n }\n if (rng.compareEndPoints) {\n return rng.compareEndPoints('StartToEnd', rng) === 0;\n }\n return !sel || rng.collapsed;\n };\n var collapse = function (toStart) {\n var rng = getRng();\n rng.collapse(!!toStart);\n setRng(rng);\n };\n var getSel = function () {\n return win.getSelection ? win.getSelection() : win.document.selection;\n };\n var getRng = function () {\n var selection, rng, elm, doc;\n var tryCompareBoundaryPoints = function (how, sourceRange, destinationRange) {\n try {\n return sourceRange.compareBoundaryPoints(how, destinationRange);\n } catch (ex) {\n return -1;\n }\n };\n if (!win) {\n return null;\n }\n doc = win.document;\n if (typeof doc === 'undefined' || doc === null) {\n return null;\n }\n if (editor.bookmark !== undefined && EditorFocus.hasFocus(editor) === false) {\n var bookmark = SelectionBookmark.getRng(editor);\n if (bookmark.isSome()) {\n return bookmark.map(function (r) {\n return EventProcessRanges.processRanges(editor, [r])[0];\n }).getOr(doc.createRange());\n }\n }\n try {\n if (selection = getSel()) {\n if (selection.rangeCount > 0) {\n rng = selection.getRangeAt(0);\n } else {\n rng = selection.createRange ? selection.createRange() : doc.createRange();\n }\n }\n } catch (ex) {\n }\n rng = EventProcessRanges.processRanges(editor, [rng])[0];\n if (!rng) {\n rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();\n }\n if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {\n elm = dom.getRoot();\n rng.setStart(elm, 0);\n rng.setEnd(elm, 0);\n }\n if (selectedRange && explicitRange) {\n if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) {\n rng = explicitRange;\n } else {\n selectedRange = null;\n explicitRange = null;\n }\n }\n return rng;\n };\n var setRng = function (rng, forward) {\n var sel, node, evt;\n if (!isValidRange(rng)) {\n return;\n }\n var ieRange = isNativeIeSelection(rng) ? rng : null;\n if (ieRange) {\n explicitRange = null;\n try {\n ieRange.select();\n } catch (ex) {\n }\n return;\n }\n sel = getSel();\n evt = editor.fire('SetSelectionRange', {\n range: rng,\n forward: forward\n });\n rng = evt.range;\n if (sel) {\n explicitRange = rng;\n try {\n sel.removeAllRanges();\n sel.addRange(rng);\n } catch (ex) {\n }\n if (forward === false && sel.extend) {\n sel.collapse(rng.endContainer, rng.endOffset);\n sel.extend(rng.startContainer, rng.startOffset);\n }\n selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null;\n }\n if (!rng.collapsed && rng.startContainer === rng.endContainer && sel.setBaseAndExtent && !Env.ie) {\n if (rng.endOffset - rng.startOffset < 2) {\n if (rng.startContainer.hasChildNodes()) {\n node = rng.startContainer.childNodes[rng.startOffset];\n if (node && node.tagName === 'IMG') {\n sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset);\n if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) {\n sel.setBaseAndExtent(node, 0, node, 1);\n }\n }\n }\n }\n }\n editor.fire('AfterSetSelectionRange', {\n range: rng,\n forward: forward\n });\n };\n var setNode = function (elm) {\n setContent(dom.getOuterHTML(elm));\n return elm;\n };\n var getNode = function () {\n return getNode$1(editor.getBody(), getRng());\n };\n var getSelectedBlocks$$1 = function (startElm, endElm) {\n return getSelectedBlocks(dom, getRng(), startElm, endElm);\n };\n var isForward = function () {\n var sel = getSel();\n var anchorRange, focusRange;\n if (!sel || !sel.anchorNode || !sel.focusNode) {\n return true;\n }\n anchorRange = dom.createRng();\n anchorRange.setStart(sel.anchorNode, sel.anchorOffset);\n anchorRange.collapse(true);\n focusRange = dom.createRng();\n focusRange.setStart(sel.focusNode, sel.focusOffset);\n focusRange.collapse(true);\n return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;\n };\n var normalize = function () {\n var rng = getRng();\n var sel = getSel();\n if (!MultiRange.hasMultipleRanges(sel) && hasAnyRanges(editor)) {\n var normRng = NormalizeRange.normalize(dom, rng);\n normRng.each(function (normRng) {\n setRng(normRng, isForward());\n });\n return normRng.getOr(rng);\n }\n return rng;\n };\n var selectorChanged = function (selector, callback) {\n var currentSelectors;\n if (!selectorChangedData) {\n selectorChangedData = {};\n currentSelectors = {};\n editor.on('NodeChange', function (e) {\n var node = e.element, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {};\n each$j(selectorChangedData, function (callbacks, selector) {\n each$j(parents, function (node) {\n if (dom.is(node, selector)) {\n if (!currentSelectors[selector]) {\n each$j(callbacks, function (callback) {\n callback(true, {\n node: node,\n selector: selector,\n parents: parents\n });\n });\n currentSelectors[selector] = callbacks;\n }\n matchedSelectors[selector] = callbacks;\n return false;\n }\n });\n });\n each$j(currentSelectors, function (callbacks, selector) {\n if (!matchedSelectors[selector]) {\n delete currentSelectors[selector];\n each$j(callbacks, function (callback) {\n callback(false, {\n node: node,\n selector: selector,\n parents: parents\n });\n });\n }\n });\n });\n }\n if (!selectorChangedData[selector]) {\n selectorChangedData[selector] = [];\n }\n selectorChangedData[selector].push(callback);\n return exports;\n };\n var getScrollContainer = function () {\n var scrollContainer;\n var node = dom.getRoot();\n while (node && node.nodeName !== 'BODY') {\n if (node.scrollHeight > node.clientHeight) {\n scrollContainer = node;\n break;\n }\n node = node.parentNode;\n }\n return scrollContainer;\n };\n var scrollIntoView = function (elm, alignToTop) {\n return ScrollIntoView.scrollElementIntoView(editor, elm, alignToTop);\n };\n var placeCaretAt = function (clientX, clientY) {\n return setRng(CaretRangeFromPoint.fromPoint(clientX, clientY, editor.getDoc()));\n };\n var getBoundingClientRect = function () {\n var rng = getRng();\n return rng.collapsed ? CaretPosition$1.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect();\n };\n var destroy = function () {\n win = selectedRange = explicitRange = null;\n controlSelection.destroy();\n };\n var exports = {\n bookmarkManager: null,\n controlSelection: null,\n dom: dom,\n win: win,\n serializer: serializer,\n editor: editor,\n collapse: collapse,\n setCursorLocation: setCursorLocation,\n getContent: getContent,\n setContent: setContent,\n getBookmark: getBookmark,\n moveToBookmark: moveToBookmark,\n select: select,\n isCollapsed: isCollapsed,\n isForward: isForward,\n setNode: setNode,\n getNode: getNode,\n getSel: getSel,\n setRng: setRng,\n getRng: getRng,\n getStart: getStart,\n getEnd: getEnd$$1,\n getSelectedBlocks: getSelectedBlocks$$1,\n normalize: normalize,\n selectorChanged: selectorChanged,\n getScrollContainer: getScrollContainer,\n scrollIntoView: scrollIntoView,\n placeCaretAt: placeCaretAt,\n getBoundingClientRect: getBoundingClientRect,\n destroy: destroy\n };\n bookmarkManager = BookmarkManager$1(exports);\n controlSelection = ControlSelection(exports, editor);\n exports.bookmarkManager = bookmarkManager;\n exports.controlSelection = controlSelection;\n return exports;\n };\n\n var isContentEditableFalse$b = NodeType.isContentEditableFalse;\n var getSelectedNode$1 = getSelectedNode;\n var isAfterContentEditableFalse$2 = isAfterContentEditableFalse;\n var isBeforeContentEditableFalse$2 = isBeforeContentEditableFalse;\n var getVisualCaretPosition = function (walkFn, caretPosition) {\n while (caretPosition = walkFn(caretPosition)) {\n if (caretPosition.isVisible()) {\n return caretPosition;\n }\n }\n return caretPosition;\n };\n var isMoveInsideSameBlock = function (from, to) {\n var inSameBlock = isInSameBlock(from, to);\n if (!inSameBlock && NodeType.isBr(from.getNode())) {\n return true;\n }\n return inSameBlock;\n };\n var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range$$1) {\n var node, caretPosition, peekCaretPosition, rangeIsInContainerBlock;\n var forwards = direction === HDirection.Forwards;\n var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse$2 : isAfterContentEditableFalse$2;\n if (!range$$1.collapsed) {\n node = getSelectedNode$1(range$$1);\n if (isContentEditableFalse$b(node)) {\n return showCaret(direction, editor, node, direction === HDirection.Backwards, true);\n }\n }\n rangeIsInContainerBlock = isRangeInCaretContainerBlock(range$$1);\n caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range$$1);\n if (isBeforeContentEditableFalseFn(caretPosition)) {\n return selectNode(editor, caretPosition.getNode(!forwards));\n }\n caretPosition = getNextPosFn(caretPosition);\n if (!caretPosition) {\n if (rangeIsInContainerBlock) {\n return range$$1;\n }\n return null;\n }\n if (isBeforeContentEditableFalseFn(caretPosition)) {\n return showCaret(direction, editor, caretPosition.getNode(!forwards), forwards, true);\n }\n peekCaretPosition = getNextPosFn(caretPosition);\n if (isBeforeContentEditableFalseFn(peekCaretPosition)) {\n if (isMoveInsideSameBlock(caretPosition, peekCaretPosition)) {\n return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, true);\n }\n }\n if (rangeIsInContainerBlock) {\n return renderRangeCaret(editor, caretPosition.toRange(), true);\n }\n return null;\n };\n var moveToCeFalseVertically = function (direction, editor, walkerFn, range$$1) {\n var caretPosition, linePositions, nextLinePositions;\n var closestNextLineRect, caretClientRect, clientX;\n var dist1, dist2, contentEditableFalseNode;\n contentEditableFalseNode = getSelectedNode$1(range$$1);\n caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range$$1);\n linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition);\n nextLinePositions = filter(linePositions, isLine(1));\n caretClientRect = ArrUtils.last(caretPosition.getClientRects());\n if (isBeforeContentEditableFalse$2(caretPosition) || isBeforeTable(caretPosition)) {\n contentEditableFalseNode = caretPosition.getNode();\n }\n if (isAfterContentEditableFalse$2(caretPosition) || isAfterTable(caretPosition)) {\n contentEditableFalseNode = caretPosition.getNode(true);\n }\n if (!caretClientRect) {\n return null;\n }\n clientX = caretClientRect.left;\n closestNextLineRect = findClosestClientRect(nextLinePositions, clientX);\n if (closestNextLineRect) {\n if (isContentEditableFalse$b(closestNextLineRect.node)) {\n dist1 = Math.abs(clientX - closestNextLineRect.left);\n dist2 = Math.abs(clientX - closestNextLineRect.right);\n return showCaret(direction, editor, closestNextLineRect.node, dist1 < dist2, true);\n }\n }\n if (contentEditableFalseNode) {\n var caretPositions = positionsUntil(direction, editor.getBody(), isAboveLine(1), contentEditableFalseNode);\n closestNextLineRect = findClosestClientRect(filter(caretPositions, isLine(1)), clientX);\n if (closestNextLineRect) {\n return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);\n }\n closestNextLineRect = ArrUtils.last(filter(caretPositions, isLine(0)));\n if (closestNextLineRect) {\n return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);\n }\n }\n };\n var createTextBlock = function (editor) {\n var textBlock = editor.dom.create(editor.settings.forced_root_block);\n if (!Env.ie || Env.ie >= 11) {\n textBlock.innerHTML = '
';\n }\n return textBlock;\n };\n var exitPreBlock = function (editor, direction, range$$1) {\n var pre, caretPos, newBlock;\n var caretWalker = CaretWalker(editor.getBody());\n var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next);\n var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev);\n if (range$$1.collapsed && editor.settings.forced_root_block) {\n pre = editor.dom.getParent(range$$1.startContainer, 'PRE');\n if (!pre) {\n return;\n }\n if (direction === 1) {\n caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range$$1));\n } else {\n caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range$$1));\n }\n if (!caretPos) {\n newBlock = createTextBlock(editor);\n if (direction === 1) {\n editor.$(pre).after(newBlock);\n } else {\n editor.$(pre).before(newBlock);\n }\n editor.selection.select(newBlock, true);\n editor.selection.collapse();\n }\n }\n };\n var getHorizontalRange = function (editor, forward) {\n var caretWalker = CaretWalker(editor.getBody());\n var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next);\n var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev);\n var newRange;\n var direction = forward ? HDirection.Forwards : HDirection.Backwards;\n var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition;\n var range$$1 = editor.selection.getRng();\n newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range$$1);\n if (newRange) {\n return newRange;\n }\n newRange = exitPreBlock(editor, direction, range$$1);\n if (newRange) {\n return newRange;\n }\n return null;\n };\n var getVerticalRange = function (editor, down) {\n var newRange;\n var direction = down ? 1 : -1;\n var walkerFn = down ? downUntil : upUntil;\n var range$$1 = editor.selection.getRng();\n newRange = moveToCeFalseVertically(direction, editor, walkerFn, range$$1);\n if (newRange) {\n return newRange;\n }\n newRange = exitPreBlock(editor, direction, range$$1);\n if (newRange) {\n return newRange;\n }\n return null;\n };\n var moveH = function (editor, forward) {\n return function () {\n var newRng = getHorizontalRange(editor, forward);\n if (newRng) {\n editor.selection.setRng(newRng);\n return true;\n } else {\n return false;\n }\n };\n };\n var moveV = function (editor, down) {\n return function () {\n var newRng = getVerticalRange(editor, down);\n if (newRng) {\n editor.selection.setRng(newRng);\n return true;\n } else {\n return false;\n }\n };\n };\n\n var BreakType;\n (function (BreakType) {\n BreakType[BreakType['Br'] = 0] = 'Br';\n BreakType[BreakType['Block'] = 1] = 'Block';\n BreakType[BreakType['Wrap'] = 2] = 'Wrap';\n BreakType[BreakType['Eol'] = 3] = 'Eol';\n }(BreakType || (BreakType = {})));\n var flip = function (direction, positions) {\n return direction === HDirection.Backwards ? positions.reverse() : positions;\n };\n var walk$3 = function (direction, caretWalker, pos) {\n return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);\n };\n var getBreakType = function (scope, direction, currentPos, nextPos) {\n if (NodeType.isBr(nextPos.getNode(direction === HDirection.Forwards))) {\n return BreakType.Br;\n } else if (isInSameBlock(currentPos, nextPos) === false) {\n return BreakType.Block;\n } else {\n return BreakType.Wrap;\n }\n };\n var getPositionsUntil = function (predicate, direction, scope, start) {\n var caretWalker = CaretWalker(scope);\n var currentPos = start, nextPos;\n var positions = [];\n while (currentPos) {\n nextPos = walk$3(direction, caretWalker, currentPos);\n if (!nextPos) {\n break;\n }\n if (NodeType.isBr(nextPos.getNode(false))) {\n if (direction === HDirection.Forwards) {\n return {\n positions: flip(direction, positions).concat([nextPos]),\n breakType: BreakType.Br,\n breakAt: Option.some(nextPos)\n };\n } else {\n return {\n positions: flip(direction, positions),\n breakType: BreakType.Br,\n breakAt: Option.some(nextPos)\n };\n }\n }\n if (!nextPos.isVisible()) {\n currentPos = nextPos;\n continue;\n }\n if (predicate(currentPos, nextPos)) {\n var breakType = getBreakType(scope, direction, currentPos, nextPos);\n return {\n positions: flip(direction, positions),\n breakType: breakType,\n breakAt: Option.some(nextPos)\n };\n }\n positions.push(nextPos);\n currentPos = nextPos;\n }\n return {\n positions: flip(direction, positions),\n breakType: BreakType.Eol,\n breakAt: Option.none()\n };\n };\n var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) {\n return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) {\n var positions = getPositionsUntilBreak(scope, pos).positions;\n return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);\n }).getOr([]);\n };\n var findClosestHorizontalPositionFromPoint = function (positions, x) {\n return foldl(positions, function (acc, newPos) {\n return acc.fold(function () {\n return Option.some(newPos);\n }, function (lastPos) {\n return liftN([\n head(lastPos.getClientRects()),\n head(newPos.getClientRects())\n ], function (lastRect, newRect) {\n var lastDist = Math.abs(x - lastRect.left);\n var newDist = Math.abs(x - newRect.left);\n return newDist <= lastDist ? newPos : lastPos;\n }).or(acc);\n });\n }, Option.none());\n };\n var findClosestHorizontalPosition = function (positions, pos) {\n return head(pos.getClientRects()).bind(function (targetRect) {\n return findClosestHorizontalPositionFromPoint(positions, targetRect.left);\n });\n };\n var getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);\n var getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);\n var isAtFirstLine = function (scope, pos) {\n return getPositionsUntilPreviousLine(scope, pos).breakAt.isNone();\n };\n var isAtLastLine = function (scope, pos) {\n return getPositionsUntilNextLine(scope, pos).breakAt.isNone();\n };\n var getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);\n var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);\n var getFirstLinePositions = function (scope) {\n return CaretFinder.firstPositionIn(scope).map(function (pos) {\n return [pos].concat(getPositionsUntilNextLine(scope, pos).positions);\n }).getOr([]);\n };\n var getLastLinePositions = function (scope) {\n return CaretFinder.lastPositionIn(scope).map(function (pos) {\n return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos);\n }).getOr([]);\n };\n\n var deflate = function (rect, delta) {\n return {\n left: rect.left - delta,\n top: rect.top - delta,\n right: rect.right + delta * 2,\n bottom: rect.bottom + delta * 2,\n width: rect.width + delta,\n height: rect.height + delta\n };\n };\n var getCorners = function (getYAxisValue, tds) {\n return bind(tds, function (td) {\n var rect = deflate(clone$2(td.getBoundingClientRect()), -1);\n return [\n {\n x: rect.left,\n y: getYAxisValue(rect),\n cell: td\n },\n {\n x: rect.right,\n y: getYAxisValue(rect),\n cell: td\n }\n ];\n });\n };\n var findClosestCorner = function (corners, x, y) {\n return foldl(corners, function (acc, newCorner) {\n return acc.fold(function () {\n return Option.some(newCorner);\n }, function (oldCorner) {\n var oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y));\n var newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y));\n return Option.some(newDist < oldDist ? newCorner : oldCorner);\n });\n }, Option.none());\n };\n var getClosestCell$1 = function (getYAxisValue, isTargetCorner, table, x, y) {\n var cells = descendants$1(Element$$1.fromDom(table), 'td,th,caption').map(function (e) {\n return e.dom();\n });\n var corners = filter(getCorners(getYAxisValue, cells), function (corner) {\n return isTargetCorner(corner, y);\n });\n return findClosestCorner(corners, x, y).map(function (corner) {\n return corner.cell;\n });\n };\n var getBottomValue = function (rect) {\n return rect.bottom;\n };\n var getTopValue = function (rect) {\n return rect.top;\n };\n var isAbove$1 = function (corner, y) {\n return corner.y < y;\n };\n var isBelow$1 = function (corner, y) {\n return corner.y > y;\n };\n var getClosestCellAbove = curry(getClosestCell$1, getBottomValue, isAbove$1);\n var getClosestCellBelow = curry(getClosestCell$1, getTopValue, isBelow$1);\n var findClosestPositionInAboveCell = function (table, pos) {\n return head(pos.getClientRects()).bind(function (rect) {\n return getClosestCellAbove(table, rect.left, rect.top);\n }).bind(function (cell) {\n return findClosestHorizontalPosition(getLastLinePositions(cell), pos);\n });\n };\n var findClosestPositionInBelowCell = function (table, pos) {\n return last(pos.getClientRects()).bind(function (rect) {\n return getClosestCellBelow(table, rect.left, rect.top);\n }).bind(function (cell) {\n return findClosestHorizontalPosition(getFirstLinePositions(cell), pos);\n });\n };\n\n var moveToRange = function (editor, rng) {\n editor.selection.setRng(rng);\n ScrollIntoView.scrollRangeIntoView(editor, rng);\n };\n var hasNextBreak = function (getPositionsUntil, scope, lineInfo) {\n return lineInfo.breakAt.map(function (breakPos) {\n return getPositionsUntil(scope, breakPos).breakAt.isSome();\n }).getOr(false);\n };\n var startsWithWrapBreak = function (lineInfo) {\n return lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0;\n };\n var startsWithBrBreak = function (lineInfo) {\n return lineInfo.breakType === BreakType.Br && lineInfo.positions.length === 1;\n };\n var isAtTableCellLine = function (getPositionsUntil, scope, pos) {\n var lineInfo = getPositionsUntil(scope, pos);\n if (startsWithWrapBreak(lineInfo) || !NodeType.isBr(pos.getNode()) && startsWithBrBreak(lineInfo)) {\n return !hasNextBreak(getPositionsUntil, scope, lineInfo);\n } else {\n return lineInfo.breakAt.isNone();\n }\n };\n var isAtFirstTableCellLine = curry(isAtTableCellLine, getPositionsUntilPreviousLine);\n var isAtLastTableCellLine = curry(isAtTableCellLine, getPositionsUntilNextLine);\n var isCaretAtStartOrEndOfTable = function (forward, rng, table) {\n var caretPos = CaretPosition$1.fromRangeStart(rng);\n return CaretFinder.positionIn(!forward, table).map(function (pos) {\n return pos.isEqual(caretPos);\n }).getOr(false);\n };\n var navigateHorizontally = function (editor, forward, table, td) {\n var rng = editor.selection.getRng();\n var direction = forward ? 1 : -1;\n if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) {\n var newRng = showCaret(direction, editor, table, !forward, true);\n moveToRange(editor, newRng);\n return true;\n }\n return false;\n };\n var getClosestAbovePosition = function (root, table, start) {\n return findClosestPositionInAboveCell(table, start).orThunk(function () {\n return head(start.getClientRects()).bind(function (rect) {\n return findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition$1.before(table)), rect.left);\n });\n }).getOr(CaretPosition$1.before(table));\n };\n var getClosestBelowPosition = function (root, table, start) {\n return findClosestPositionInBelowCell(table, start).orThunk(function () {\n return head(start.getClientRects()).bind(function (rect) {\n return findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition$1.after(table)), rect.left);\n });\n }).getOr(CaretPosition$1.after(table));\n };\n var getTable = function (previous, pos) {\n var node = pos.getNode(previous);\n return NodeType.isElement(node) && node.nodeName === 'TABLE' ? Option.some(node) : Option.none();\n };\n var renderBlock = function (down, editor, table, pos) {\n var forcedRootBlock = Settings.getForcedRootBlock(editor);\n if (forcedRootBlock) {\n editor.undoManager.transact(function () {\n var element = Element$$1.fromTag(forcedRootBlock);\n setAll(element, Settings.getForcedRootBlockAttrs(editor));\n append(element, Element$$1.fromTag('br'));\n if (down) {\n after(Element$$1.fromDom(table), element);\n } else {\n before(Element$$1.fromDom(table), element);\n }\n var rng = editor.dom.createRng();\n rng.setStart(element.dom(), 0);\n rng.setEnd(element.dom(), 0);\n moveToRange(editor, rng);\n });\n } else {\n moveToRange(editor, pos.toRange());\n }\n };\n var moveCaret = function (editor, down, pos) {\n var table = down ? getTable(true, pos) : getTable(false, pos);\n var last$$1 = down === false;\n table.fold(function () {\n return moveToRange(editor, pos.toRange());\n }, function (table) {\n return CaretFinder.positionIn(last$$1, editor.getBody()).filter(function (lastPos) {\n return lastPos.isEqual(pos);\n }).fold(function () {\n return moveToRange(editor, pos.toRange());\n }, function (_) {\n return renderBlock(down, editor, table, pos);\n });\n });\n };\n var navigateVertically = function (editor, down, table, td) {\n var rng = editor.selection.getRng();\n var pos = CaretPosition$1.fromRangeStart(rng);\n var root = editor.getBody();\n if (!down && isAtFirstTableCellLine(td, pos)) {\n var newPos = getClosestAbovePosition(root, table, pos);\n moveCaret(editor, down, newPos);\n return true;\n } else if (down && isAtLastTableCellLine(td, pos)) {\n var newPos = getClosestBelowPosition(root, table, pos);\n moveCaret(editor, down, newPos);\n return true;\n } else {\n return false;\n }\n };\n var moveH$1 = function (editor, forward) {\n return function () {\n return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {\n return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {\n return navigateHorizontally(editor, forward, table, td);\n });\n }).getOr(false);\n };\n };\n var moveV$1 = function (editor, forward) {\n return function () {\n return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {\n return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {\n return navigateVertically(editor, forward, table, td);\n });\n }).getOr(false);\n };\n };\n\n var isTarget = function (node) {\n return contains(['figcaption'], name(node));\n };\n var rangeBefore = function (target) {\n var rng = document.createRange();\n rng.setStartBefore(target.dom());\n rng.setEndBefore(target.dom());\n return rng;\n };\n var insertElement = function (root, elm, forward) {\n if (forward) {\n append(root, elm);\n } else {\n prepend(root, elm);\n }\n };\n var insertBr = function (root, forward) {\n var br = Element$$1.fromTag('br');\n insertElement(root, br, forward);\n return rangeBefore(br);\n };\n var insertBlock$1 = function (root, forward, blockName, attrs) {\n var block = Element$$1.fromTag(blockName);\n var br = Element$$1.fromTag('br');\n setAll(block, attrs);\n append(block, br);\n insertElement(root, block, forward);\n return rangeBefore(br);\n };\n var insertEmptyLine = function (root, rootBlockName, attrs, forward) {\n if (rootBlockName === '') {\n return insertBr(root, forward);\n } else {\n return insertBlock$1(root, forward, rootBlockName, attrs);\n }\n };\n var getClosestTargetBlock = function (pos, root) {\n var isRoot = curry(eq, root);\n return closest(Element$$1.fromDom(pos.container()), isBlock, isRoot).filter(isTarget);\n };\n var isAtFirstOrLastLine = function (root, forward, pos) {\n return forward ? isAtLastLine(root.dom(), pos) : isAtFirstLine(root.dom(), pos);\n };\n var moveCaretToNewEmptyLine = function (editor, forward) {\n var root = Element$$1.fromDom(editor.getBody());\n var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n var rootBlock = Settings.getForcedRootBlock(editor);\n var rootBlockAttrs = Settings.getForcedRootBlockAttrs(editor);\n return getClosestTargetBlock(pos, root).exists(function () {\n if (isAtFirstOrLastLine(root, forward, pos)) {\n var rng = insertEmptyLine(root, rootBlock, rootBlockAttrs, forward);\n editor.selection.setRng(rng);\n return true;\n } else {\n return false;\n }\n });\n };\n var moveV$2 = function (editor, forward) {\n return function () {\n if (editor.selection.isCollapsed()) {\n return moveCaretToNewEmptyLine(editor, forward);\n } else {\n return false;\n }\n };\n };\n\n var defaultPatterns = function (patterns) {\n return map(patterns, function (pattern) {\n return merge({\n shiftKey: false,\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n keyCode: 0,\n action: noop\n }, pattern);\n });\n };\n var matchesEvent = function (pattern, evt) {\n return evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey;\n };\n var match$1 = function (patterns, evt) {\n return bind(defaultPatterns(patterns), function (pattern) {\n return matchesEvent(pattern, evt) ? [pattern] : [];\n });\n };\n var action = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = Array.prototype.slice.call(arguments, 1);\n return function () {\n return f.apply(null, args);\n };\n };\n var execute = function (patterns, evt) {\n return find(match$1(patterns, evt), function (pattern) {\n return pattern.action();\n });\n };\n var MatchKeys = {\n match: match$1,\n action: action,\n execute: execute\n };\n\n var executeKeydownOverride = function (editor, caret, evt) {\n var os = PlatformDetection$1.detect().os;\n MatchKeys.execute([\n {\n keyCode: VK.RIGHT,\n action: moveH(editor, true)\n },\n {\n keyCode: VK.LEFT,\n action: moveH(editor, false)\n },\n {\n keyCode: VK.UP,\n action: moveV(editor, false)\n },\n {\n keyCode: VK.DOWN,\n action: moveV(editor, true)\n },\n {\n keyCode: VK.RIGHT,\n action: moveH$1(editor, true)\n },\n {\n keyCode: VK.LEFT,\n action: moveH$1(editor, false)\n },\n {\n keyCode: VK.UP,\n action: moveV$1(editor, false)\n },\n {\n keyCode: VK.DOWN,\n action: moveV$1(editor, true)\n },\n {\n keyCode: VK.RIGHT,\n action: BoundarySelection.move(editor, caret, true)\n },\n {\n keyCode: VK.LEFT,\n action: BoundarySelection.move(editor, caret, false)\n },\n {\n keyCode: VK.RIGHT,\n ctrlKey: !os.isOSX(),\n altKey: os.isOSX(),\n action: BoundarySelection.moveNextWord(editor, caret)\n },\n {\n keyCode: VK.LEFT,\n ctrlKey: !os.isOSX(),\n altKey: os.isOSX(),\n action: BoundarySelection.movePrevWord(editor, caret)\n },\n {\n keyCode: VK.UP,\n action: moveV$2(editor, false)\n },\n {\n keyCode: VK.DOWN,\n action: moveV$2(editor, true)\n }\n ], evt).each(function (_) {\n evt.preventDefault();\n });\n };\n var setup$7 = function (editor, caret) {\n editor.on('keydown', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeydownOverride(editor, caret, evt);\n }\n });\n };\n var ArrowKeys = { setup: setup$7 };\n\n var getParentInlines = function (rootElm, startElm) {\n var parents$$1 = Parents.parentsAndSelf(startElm, rootElm);\n return findIndex(parents$$1, isBlock).fold(constant(parents$$1), function (index) {\n return parents$$1.slice(0, index);\n });\n };\n var hasOnlyOneChild$1 = function (elm) {\n return children(elm).length === 1;\n };\n var deleteLastPosition = function (forward, editor, target, parentInlines) {\n var isFormatElement$$1 = curry(isFormatElement, editor);\n var formatNodes = map(filter(parentInlines, isFormatElement$$1), function (elm) {\n return elm.dom();\n });\n if (formatNodes.length === 0) {\n DeleteElement.deleteElement(editor, forward, target);\n } else {\n var pos = replaceWithCaretFormat(target.dom(), formatNodes);\n editor.selection.setRng(pos.toRange());\n }\n };\n var deleteCaret$1 = function (editor, forward) {\n var rootElm = Element$$1.fromDom(editor.getBody());\n var startElm = Element$$1.fromDom(editor.selection.getStart());\n var parentInlines = filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1);\n return last(parentInlines).map(function (target) {\n var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n if (DeleteUtils.willDeleteLastPositionInElement(forward, fromPos, target.dom()) && !isEmptyCaretFormatElement(target)) {\n deleteLastPosition(forward, editor, target, parentInlines);\n return true;\n } else {\n return false;\n }\n }).getOr(false);\n };\n var backspaceDelete$5 = function (editor, forward) {\n return editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : false;\n };\n var InlineFormatDelete = { backspaceDelete: backspaceDelete$5 };\n\n var executeKeydownOverride$1 = function (editor, caret, evt) {\n MatchKeys.execute([\n {\n keyCode: VK.BACKSPACE,\n action: MatchKeys.action(CefDelete.backspaceDelete, editor, false)\n },\n {\n keyCode: VK.DELETE,\n action: MatchKeys.action(CefDelete.backspaceDelete, editor, true)\n },\n {\n keyCode: VK.BACKSPACE,\n action: MatchKeys.action(InlineBoundaryDelete.backspaceDelete, editor, caret, false)\n },\n {\n keyCode: VK.DELETE,\n action: MatchKeys.action(InlineBoundaryDelete.backspaceDelete, editor, caret, true)\n },\n {\n keyCode: VK.BACKSPACE,\n action: MatchKeys.action(TableDelete.backspaceDelete, editor, false)\n },\n {\n keyCode: VK.DELETE,\n action: MatchKeys.action(TableDelete.backspaceDelete, editor, true)\n },\n {\n keyCode: VK.BACKSPACE,\n action: MatchKeys.action(BlockRangeDelete.backspaceDelete, editor, false)\n },\n {\n keyCode: VK.DELETE,\n action: MatchKeys.action(BlockRangeDelete.backspaceDelete, editor, true)\n },\n {\n keyCode: VK.BACKSPACE,\n action: MatchKeys.action(BlockBoundaryDelete.backspaceDelete, editor, false)\n },\n {\n keyCode: VK.DELETE,\n action: MatchKeys.action(BlockBoundaryDelete.backspaceDelete, editor, true)\n },\n {\n keyCode: VK.BACKSPACE,\n action: MatchKeys.action(InlineFormatDelete.backspaceDelete, editor, false)\n },\n {\n keyCode: VK.DELETE,\n action: MatchKeys.action(InlineFormatDelete.backspaceDelete, editor, true)\n }\n ], evt).each(function (_) {\n evt.preventDefault();\n });\n };\n var executeKeyupOverride = function (editor, evt) {\n MatchKeys.execute([\n {\n keyCode: VK.BACKSPACE,\n action: MatchKeys.action(CefDelete.paddEmptyElement, editor)\n },\n {\n keyCode: VK.DELETE,\n action: MatchKeys.action(CefDelete.paddEmptyElement, editor)\n }\n ], evt);\n };\n var setup$8 = function (editor, caret) {\n editor.on('keydown', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeydownOverride$1(editor, caret, evt);\n }\n });\n editor.on('keyup', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeyupOverride(editor, evt);\n }\n });\n };\n var DeleteBackspaceKeys = { setup: setup$8 };\n\n var firstNonWhiteSpaceNodeSibling = function (node) {\n while (node) {\n if (node.nodeType === 1 || node.nodeType === 3 && node.data && /[\\r\\n\\s]/.test(node.data)) {\n return node;\n }\n node = node.nextSibling;\n }\n };\n var moveToCaretPosition = function (editor, root) {\n var walker, node, rng, lastNode = root, tempElm;\n var dom = editor.dom;\n var moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements();\n if (!root) {\n return;\n }\n if (/^(LI|DT|DD)$/.test(root.nodeName)) {\n var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild);\n if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) {\n root.insertBefore(dom.doc.createTextNode('\\xA0'), root.firstChild);\n }\n }\n rng = dom.createRng();\n root.normalize();\n if (root.hasChildNodes()) {\n walker = new TreeWalker(root, root);\n while (node = walker.current()) {\n if (NodeType.isText(node)) {\n rng.setStart(node, 0);\n rng.setEnd(node, 0);\n break;\n }\n if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {\n rng.setStartBefore(node);\n rng.setEndBefore(node);\n break;\n }\n lastNode = node;\n node = walker.next();\n }\n if (!node) {\n rng.setStart(lastNode, 0);\n rng.setEnd(lastNode, 0);\n }\n } else {\n if (NodeType.isBr(root)) {\n if (root.nextSibling && dom.isBlock(root.nextSibling)) {\n rng.setStartBefore(root);\n rng.setEndBefore(root);\n } else {\n rng.setStartAfter(root);\n rng.setEndAfter(root);\n }\n } else {\n rng.setStart(root, 0);\n rng.setEnd(root, 0);\n }\n }\n editor.selection.setRng(rng);\n dom.remove(tempElm);\n editor.selection.scrollIntoView(root);\n };\n var getEditableRoot = function (dom, node) {\n var root = dom.getRoot();\n var parent, editableRoot;\n parent = node;\n while (parent !== root && dom.getContentEditable(parent) !== 'false') {\n if (dom.getContentEditable(parent) === 'true') {\n editableRoot = parent;\n }\n parent = parent.parentNode;\n }\n return parent !== root ? editableRoot : root;\n };\n var getParentBlock$2 = function (editor) {\n return Option.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock));\n };\n var getParentBlockName = function (editor) {\n return getParentBlock$2(editor).fold(constant(''), function (parentBlock) {\n return parentBlock.nodeName.toUpperCase();\n });\n };\n var isListItemParentBlock = function (editor) {\n return getParentBlock$2(editor).filter(function (elm) {\n return isListItem(Element$$1.fromDom(elm));\n }).isSome();\n };\n var NewLineUtils = {\n moveToCaretPosition: moveToCaretPosition,\n getEditableRoot: getEditableRoot,\n getParentBlock: getParentBlock$2,\n getParentBlockName: getParentBlockName,\n isListItemParentBlock: isListItemParentBlock\n };\n\n var hasFirstChild = function (elm, name) {\n return elm.firstChild && elm.firstChild.nodeName === name;\n };\n var hasParent$1 = function (elm, parentName) {\n return elm && elm.parentNode && elm.parentNode.nodeName === parentName;\n };\n var isListBlock = function (elm) {\n return elm && /^(OL|UL|LI)$/.test(elm.nodeName);\n };\n var isNestedList = function (elm) {\n return isListBlock(elm) && isListBlock(elm.parentNode);\n };\n var getContainerBlock = function (containerBlock) {\n var containerBlockParent = containerBlock.parentNode;\n if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) {\n return containerBlockParent;\n }\n return containerBlock;\n };\n var isFirstOrLastLi = function (containerBlock, parentBlock, first) {\n var node = containerBlock[first ? 'firstChild' : 'lastChild'];\n while (node) {\n if (NodeType.isElement(node)) {\n break;\n }\n node = node[first ? 'nextSibling' : 'previousSibling'];\n }\n return node === parentBlock;\n };\n var insert$1 = function (editor, createNewBlock, containerBlock, parentBlock, newBlockName) {\n var dom = editor.dom;\n var rng = editor.selection.getRng();\n if (containerBlock === editor.getBody()) {\n return;\n }\n if (isNestedList(containerBlock)) {\n newBlockName = 'LI';\n }\n var newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');\n if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) {\n if (hasParent$1(containerBlock, 'LI')) {\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n } else {\n dom.replace(newBlock, containerBlock);\n }\n } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) {\n if (hasParent$1(containerBlock, 'LI')) {\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n newBlock.appendChild(dom.doc.createTextNode(' '));\n newBlock.appendChild(containerBlock);\n } else {\n containerBlock.parentNode.insertBefore(newBlock, containerBlock);\n }\n } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) {\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n } else {\n containerBlock = getContainerBlock(containerBlock);\n var tmpRng = rng.cloneRange();\n tmpRng.setStartAfter(parentBlock);\n tmpRng.setEndAfter(containerBlock);\n var fragment = tmpRng.extractContents();\n if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) {\n newBlock = fragment.firstChild;\n dom.insertAfter(fragment, containerBlock);\n } else {\n dom.insertAfter(fragment, containerBlock);\n dom.insertAfter(newBlock, containerBlock);\n }\n }\n dom.remove(parentBlock);\n NewLineUtils.moveToCaretPosition(editor, newBlock);\n };\n var InsertLi = { insert: insert$1 };\n\n var trimZwsp = function (fragment) {\n each(descendants(Element$$1.fromDom(fragment), isText), function (text) {\n var rawNode = text.dom();\n rawNode.nodeValue = Zwsp.trim(rawNode.nodeValue);\n });\n };\n var isEmptyAnchor = function (dom, elm) {\n return elm && elm.nodeName === 'A' && dom.isEmpty(elm);\n };\n var isTableCell$5 = function (node) {\n return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);\n };\n var emptyBlock = function (elm) {\n elm.innerHTML = '
';\n };\n var containerAndSiblingName = function (container, nodeName) {\n return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName;\n };\n var canSplitBlock = function (dom, node) {\n return node && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.getContentEditable(node) !== 'true';\n };\n var trimInlineElementsOnLeftSideOfBlock = function (dom, nonEmptyElementsMap, block) {\n var node = block;\n var firstChilds = [];\n var i;\n if (!node) {\n return;\n }\n while (node = node.firstChild) {\n if (dom.isBlock(node)) {\n return;\n }\n if (NodeType.isElement(node) && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\n firstChilds.push(node);\n }\n }\n i = firstChilds.length;\n while (i--) {\n node = firstChilds[i];\n if (!node.hasChildNodes() || node.firstChild === node.lastChild && node.firstChild.nodeValue === '') {\n dom.remove(node);\n } else {\n if (isEmptyAnchor(dom, node)) {\n dom.remove(node);\n }\n }\n }\n };\n var normalizeZwspOffset = function (start, container, offset) {\n if (NodeType.isText(container) === false) {\n return offset;\n } else if (start) {\n return offset === 1 && container.data.charAt(offset - 1) === Zwsp.ZWSP ? 0 : offset;\n } else {\n return offset === container.data.length - 1 && container.data.charAt(offset) === Zwsp.ZWSP ? container.data.length : offset;\n }\n };\n var includeZwspInRange = function (rng) {\n var newRng = rng.cloneRange();\n newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset));\n newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset));\n return newRng;\n };\n var trimLeadingLineBreaks = function (node) {\n do {\n if (NodeType.isText(node)) {\n node.nodeValue = node.nodeValue.replace(/^[\\r\\n]+/, '');\n }\n node = node.firstChild;\n } while (node);\n };\n var getEditableRoot$1 = function (dom, node) {\n var root = dom.getRoot();\n var parent, editableRoot;\n parent = node;\n while (parent !== root && dom.getContentEditable(parent) !== 'false') {\n if (dom.getContentEditable(parent) === 'true') {\n editableRoot = parent;\n }\n parent = parent.parentNode;\n }\n return parent !== root ? editableRoot : root;\n };\n var setForcedBlockAttrs = function (editor, node) {\n var forcedRootBlockName = Settings.getForcedRootBlock(editor);\n if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {\n editor.dom.setAttribs(node, Settings.getForcedRootBlockAttrs(editor));\n }\n };\n var wrapSelfAndSiblingsInDefaultBlock = function (editor, newBlockName, rng, container, offset) {\n var newBlock, parentBlock, startNode, node, next, rootBlockName;\n var blockName = newBlockName || 'P';\n var dom = editor.dom, editableRoot = getEditableRoot$1(dom, container);\n parentBlock = dom.getParent(container, dom.isBlock);\n if (!parentBlock || !canSplitBlock(dom, parentBlock)) {\n parentBlock = parentBlock || editableRoot;\n if (parentBlock === editor.getBody() || isTableCell$5(parentBlock)) {\n rootBlockName = parentBlock.nodeName.toLowerCase();\n } else {\n rootBlockName = parentBlock.parentNode.nodeName.toLowerCase();\n }\n if (!parentBlock.hasChildNodes()) {\n newBlock = dom.create(blockName);\n setForcedBlockAttrs(editor, newBlock);\n parentBlock.appendChild(newBlock);\n rng.setStart(newBlock, 0);\n rng.setEnd(newBlock, 0);\n return newBlock;\n }\n node = container;\n while (node.parentNode !== parentBlock) {\n node = node.parentNode;\n }\n while (node && !dom.isBlock(node)) {\n startNode = node;\n node = node.previousSibling;\n }\n if (startNode && editor.schema.isValidChild(rootBlockName, blockName.toLowerCase())) {\n newBlock = dom.create(blockName);\n setForcedBlockAttrs(editor, newBlock);\n startNode.parentNode.insertBefore(newBlock, startNode);\n node = startNode;\n while (node && !dom.isBlock(node)) {\n next = node.nextSibling;\n newBlock.appendChild(node);\n node = next;\n }\n rng.setStart(container, offset);\n rng.setEnd(container, offset);\n }\n }\n return container;\n };\n var addBrToBlockIfNeeded = function (dom, block) {\n var lastChild;\n block.normalize();\n lastChild = block.lastChild;\n if (!lastChild || /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) {\n dom.add(block, 'br');\n }\n };\n var insert$2 = function (editor, evt) {\n var tmpRng, editableRoot, container, offset, parentBlock, shiftKey;\n var newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;\n var dom = editor.dom;\n var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements();\n var rng = editor.selection.getRng();\n var createNewBlock = function (name$$1) {\n var node = container, block, clonedNode, caretNode;\n var textInlineElements = schema.getTextInlineElements();\n if (name$$1 || parentBlockName === 'TABLE' || parentBlockName === 'HR') {\n block = dom.create(name$$1 || newBlockName);\n setForcedBlockAttrs(editor, block);\n } else {\n block = parentBlock.cloneNode(false);\n }\n caretNode = block;\n if (Settings.shouldKeepStyles(editor) === false) {\n dom.setAttrib(block, 'style', null);\n dom.setAttrib(block, 'class', null);\n } else {\n do {\n if (textInlineElements[node.nodeName]) {\n if (isCaretNode(node)) {\n continue;\n }\n clonedNode = node.cloneNode(false);\n dom.setAttrib(clonedNode, 'id', '');\n if (block.hasChildNodes()) {\n clonedNode.appendChild(block.firstChild);\n block.appendChild(clonedNode);\n } else {\n caretNode = clonedNode;\n block.appendChild(clonedNode);\n }\n }\n } while ((node = node.parentNode) && node !== editableRoot);\n }\n emptyBlock(caretNode);\n return block;\n };\n var isCaretAtStartOrEndOfBlock = function (start) {\n var walker, node, name$$1, normalizedOffset;\n normalizedOffset = normalizeZwspOffset(start, container, offset);\n if (NodeType.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) {\n return false;\n }\n if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) {\n return true;\n }\n if (start && NodeType.isElement(container) && container === parentBlock.firstChild) {\n return true;\n }\n if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) {\n return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start;\n }\n walker = new TreeWalker(container, parentBlock);\n if (NodeType.isText(container)) {\n if (start && normalizedOffset === 0) {\n walker.prev();\n } else if (!start && normalizedOffset === container.nodeValue.length) {\n walker.next();\n }\n }\n while (node = walker.current()) {\n if (NodeType.isElement(node)) {\n if (!node.getAttribute('data-mce-bogus')) {\n name$$1 = node.nodeName.toLowerCase();\n if (nonEmptyElementsMap[name$$1] && name$$1 !== 'br') {\n return false;\n }\n }\n } else if (NodeType.isText(node) && !/^[ \\t\\r\\n]*$/.test(node.nodeValue)) {\n return false;\n }\n if (start) {\n walker.prev();\n } else {\n walker.next();\n }\n }\n return true;\n };\n var insertNewBlockAfter = function () {\n if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') {\n newBlock = createNewBlock(newBlockName);\n } else {\n newBlock = createNewBlock();\n }\n if (Settings.shouldEndContainerOnEmptyBlock(editor) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock)) {\n newBlock = dom.split(containerBlock, parentBlock);\n } else {\n dom.insertAfter(newBlock, parentBlock);\n }\n NewLineUtils.moveToCaretPosition(editor, newBlock);\n };\n NormalizeRange.normalize(dom, rng).each(function (normRng) {\n rng.setStart(normRng.startContainer, normRng.startOffset);\n rng.setEnd(normRng.endContainer, normRng.endOffset);\n });\n container = rng.startContainer;\n offset = rng.startOffset;\n newBlockName = Settings.getForcedRootBlock(editor);\n shiftKey = evt.shiftKey;\n if (NodeType.isElement(container) && container.hasChildNodes()) {\n isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\n container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n if (isAfterLastNodeInContainer && NodeType.isText(container)) {\n offset = container.nodeValue.length;\n } else {\n offset = 0;\n }\n }\n editableRoot = getEditableRoot$1(dom, container);\n if (!editableRoot) {\n return;\n }\n if (newBlockName && !shiftKey || !newBlockName && shiftKey) {\n container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset);\n }\n parentBlock = dom.getParent(container, dom.isBlock);\n containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\n parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : '';\n containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\n if (containerBlockName === 'LI' && !evt.ctrlKey) {\n parentBlock = containerBlock;\n containerBlock = containerBlock.parentNode;\n parentBlockName = containerBlockName;\n }\n if (/^(LI|DT|DD)$/.test(parentBlockName)) {\n if (dom.isEmpty(parentBlock)) {\n InsertLi.insert(editor, createNewBlock, containerBlock, parentBlock, newBlockName);\n return;\n }\n }\n if (newBlockName && parentBlock === editor.getBody()) {\n return;\n }\n newBlockName = newBlockName || 'P';\n if (isCaretContainerBlock(parentBlock)) {\n newBlock = showCaretContainerBlock(parentBlock);\n if (dom.isEmpty(parentBlock)) {\n emptyBlock(parentBlock);\n }\n NewLineUtils.moveToCaretPosition(editor, newBlock);\n } else if (isCaretAtStartOrEndOfBlock()) {\n insertNewBlockAfter();\n } else if (isCaretAtStartOrEndOfBlock(true)) {\n newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);\n NewLineUtils.moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') ? newBlock : parentBlock);\n } else {\n tmpRng = includeZwspInRange(rng).cloneRange();\n tmpRng.setEndAfter(parentBlock);\n fragment = tmpRng.extractContents();\n trimZwsp(fragment);\n trimLeadingLineBreaks(fragment);\n newBlock = fragment.firstChild;\n dom.insertAfter(fragment, parentBlock);\n trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock);\n addBrToBlockIfNeeded(dom, parentBlock);\n if (dom.isEmpty(parentBlock)) {\n emptyBlock(parentBlock);\n }\n newBlock.normalize();\n if (dom.isEmpty(newBlock)) {\n dom.remove(newBlock);\n insertNewBlockAfter();\n } else {\n NewLineUtils.moveToCaretPosition(editor, newBlock);\n }\n }\n dom.setAttrib(newBlock, 'id', '');\n editor.fire('NewBlock', { newBlock: newBlock });\n };\n var InsertBlock = { insert: insert$2 };\n\n var matchesSelector = function (editor, selector) {\n return NewLineUtils.getParentBlock(editor).filter(function (parentBlock) {\n return selector.length > 0 && is$1(Element$$1.fromDom(parentBlock), selector);\n }).isSome();\n };\n var shouldInsertBr = function (editor) {\n return matchesSelector(editor, Settings.getBrNewLineSelector(editor));\n };\n var shouldBlockNewLine = function (editor) {\n return matchesSelector(editor, Settings.getNoNewLineSelector(editor));\n };\n var ContextSelectors = {\n shouldInsertBr: shouldInsertBr,\n shouldBlockNewLine: shouldBlockNewLine\n };\n\n var newLineAction = Adt.generate([\n { br: [] },\n { block: [] },\n { none: [] }\n ]);\n var shouldBlockNewLine$1 = function (editor, shiftKey) {\n return ContextSelectors.shouldBlockNewLine(editor);\n };\n var isBrMode = function (requiredState) {\n return function (editor, shiftKey) {\n var brMode = Settings.getForcedRootBlock(editor) === '';\n return brMode === requiredState;\n };\n };\n var inListBlock = function (requiredState) {\n return function (editor, shiftKey) {\n return NewLineUtils.isListItemParentBlock(editor) === requiredState;\n };\n };\n var inBlock = function (blockName, requiredState) {\n return function (editor, shiftKey) {\n var state = NewLineUtils.getParentBlockName(editor) === blockName.toUpperCase();\n return state === requiredState;\n };\n };\n var inPreBlock = function (requiredState) {\n return inBlock('pre', requiredState);\n };\n var inSummaryBlock = function () {\n return inBlock('summary', true);\n };\n var shouldPutBrInPre$1 = function (requiredState) {\n return function (editor, shiftKey) {\n return Settings.shouldPutBrInPre(editor) === requiredState;\n };\n };\n var inBrContext = function (editor, shiftKey) {\n return ContextSelectors.shouldInsertBr(editor);\n };\n var hasShiftKey = function (editor, shiftKey) {\n return shiftKey;\n };\n var canInsertIntoEditableRoot = function (editor) {\n var forcedRootBlock = Settings.getForcedRootBlock(editor);\n var rootEditable = NewLineUtils.getEditableRoot(editor.dom, editor.selection.getStart());\n return rootEditable && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock ? forcedRootBlock : 'P');\n };\n var match$2 = function (predicates, action) {\n return function (editor, shiftKey) {\n var isMatch = foldl(predicates, function (res, p) {\n return res && p(editor, shiftKey);\n }, true);\n return isMatch ? Option.some(action) : Option.none();\n };\n };\n var getAction$1 = function (editor, evt) {\n return LazyEvaluator.evaluateUntil([\n match$2([shouldBlockNewLine$1], newLineAction.none()),\n match$2([inSummaryBlock()], newLineAction.br()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(false),\n hasShiftKey\n ], newLineAction.br()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(false)\n ], newLineAction.block()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(true),\n hasShiftKey\n ], newLineAction.block()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(true)\n ], newLineAction.br()),\n match$2([\n inListBlock(true),\n hasShiftKey\n ], newLineAction.br()),\n match$2([inListBlock(true)], newLineAction.block()),\n match$2([\n isBrMode(true),\n hasShiftKey,\n canInsertIntoEditableRoot\n ], newLineAction.block()),\n match$2([isBrMode(true)], newLineAction.br()),\n match$2([inBrContext], newLineAction.br()),\n match$2([\n isBrMode(false),\n hasShiftKey\n ], newLineAction.br()),\n match$2([canInsertIntoEditableRoot], newLineAction.block())\n ], [\n editor,\n evt.shiftKey\n ]).getOr(newLineAction.none());\n };\n var NewLineAction = { getAction: getAction$1 };\n\n var insert$3 = function (editor, evt) {\n NewLineAction.getAction(editor, evt).fold(function () {\n InsertBr.insert(editor, evt);\n }, function () {\n InsertBlock.insert(editor, evt);\n }, noop);\n };\n var InsertNewLine = { insert: insert$3 };\n\n var endTypingLevel = function (undoManager) {\n if (undoManager.typing) {\n undoManager.typing = false;\n undoManager.add();\n }\n };\n var handleEnterKeyEvent = function (editor, event) {\n if (event.isDefaultPrevented()) {\n return;\n }\n event.preventDefault();\n endTypingLevel(editor.undoManager);\n editor.undoManager.transact(function () {\n if (editor.selection.isCollapsed() === false) {\n editor.execCommand('Delete');\n }\n InsertNewLine.insert(editor, event);\n });\n };\n var setup$9 = function (editor) {\n editor.on('keydown', function (event) {\n if (event.keyCode === VK.ENTER) {\n handleEnterKeyEvent(editor, event);\n }\n });\n };\n var EnterKey = { setup: setup$9 };\n\n var insertTextAtPosition = function (text, pos) {\n var container = pos.container();\n var offset = pos.offset();\n if (NodeType.isText(container)) {\n container.insertData(offset, text);\n return Option.some(CaretPosition(container, offset + text.length));\n } else {\n return getElementFromPosition(pos).map(function (elm) {\n var textNode = Element$$1.fromText(text);\n if (pos.isAtEnd()) {\n after(elm, textNode);\n } else {\n before(elm, textNode);\n }\n return CaretPosition(textNode.dom(), text.length);\n });\n }\n };\n var insertNbspAtPosition = curry(insertTextAtPosition, '\\xA0');\n var insertSpaceAtPosition = curry(insertTextAtPosition, ' ');\n\n var isAtBlockBoundary = function (forward, root, pos) {\n var parentBlocks = filter(Parents.parentsAndSelf(Element$$1.fromDom(pos.container()), root), isBlock);\n return head(parentBlocks).fold(function () {\n return CaretFinder.navigate(forward, root.dom(), pos).forall(function (newPos) {\n return isInSameBlock(newPos, pos, root.dom()) === false;\n });\n }, function (parent) {\n return CaretFinder.navigate(forward, parent.dom(), pos).isNone();\n });\n };\n var isAtStartOfBlock = curry(isAtBlockBoundary, false);\n var isAtEndOfBlock = curry(isAtBlockBoundary, true);\n\n var nbsp = '\\xA0';\n var isInMiddleOfText = function (pos) {\n return CaretPosition.isTextPosition(pos) && !pos.isAtStart() && !pos.isAtEnd();\n };\n var getClosestBlock = function (root, pos) {\n var parentBlocks = filter(Parents.parentsAndSelf(Element$$1.fromDom(pos.container()), root), isBlock);\n return head(parentBlocks).getOr(root);\n };\n var hasSpaceBefore = function (root, pos) {\n if (isInMiddleOfText(pos)) {\n return isAfterSpace(pos);\n } else {\n return isAfterSpace(pos) || CaretFinder.prevPosition(getClosestBlock(root, pos).dom(), pos).exists(isAfterSpace);\n }\n };\n var hasSpaceAfter = function (root, pos) {\n if (isInMiddleOfText(pos)) {\n return isBeforeSpace(pos);\n } else {\n return isBeforeSpace(pos) || CaretFinder.nextPosition(getClosestBlock(root, pos).dom(), pos).exists(isBeforeSpace);\n }\n };\n var isPreValue = function (value$$1) {\n return contains([\n 'pre',\n 'pre-line',\n 'pre-wrap'\n ], value$$1);\n };\n var isInPre = function (pos) {\n return getElementFromPosition(pos).bind(function (elm) {\n return closest(elm, isElement);\n }).exists(function (elm) {\n return isPreValue(get$2(elm, 'white-space'));\n });\n };\n var isAtBeginningOfBody = function (root, pos) {\n return CaretFinder.prevPosition(root.dom(), pos).isNone();\n };\n var isAtEndOfBody = function (root, pos) {\n return CaretFinder.nextPosition(root.dom(), pos).isNone();\n };\n var isAtLineBoundary = function (root, pos) {\n return isAtBeginningOfBody(root, pos) || isAtEndOfBody(root, pos) || isAtStartOfBlock(root, pos) || isAtEndOfBlock(root, pos) || isAfterBr(root, pos) || isBeforeBr(root, pos);\n };\n var needsToHaveNbsp = function (root, pos) {\n if (isInPre(pos)) {\n return false;\n } else {\n return isAtLineBoundary(root, pos) || hasSpaceBefore(root, pos) || hasSpaceAfter(root, pos);\n }\n };\n var needsToBeNbspLeft = function (root, pos) {\n if (isInPre(pos)) {\n return false;\n } else {\n return isAtStartOfBlock(root, pos) || isAfterBr(root, pos) || hasSpaceBefore(root, pos);\n }\n };\n var needsToBeNbspRight = function (root, pos) {\n if (isInPre(pos)) {\n return false;\n } else {\n return isAtEndOfBlock(root, pos) || isBeforeBr(root, pos) || hasSpaceAfter(root, pos);\n }\n };\n var isNbspAt = function (text, offset) {\n return isNbsp(text.charAt(offset));\n };\n var hasNbsp = function (pos) {\n var container = pos.container();\n return NodeType.isText(container) && contains$2(container.data, nbsp);\n };\n var normalizeNbspAtStart = function (root, node, text) {\n var firstPos = CaretPosition(node, 0);\n if (isNbspAt(text, 0) && !needsToBeNbspLeft(root, firstPos)) {\n return ' ' + text.slice(1);\n } else {\n return text;\n }\n };\n var normalizeNbspMiddle = function (text) {\n return map(text.split(''), function (chr, i, chars) {\n if (isNbsp(chr) && i > 0 && i < chars.length - 1 && isContent(chars[i - 1]) && isContent(chars[i + 1])) {\n return ' ';\n } else {\n return chr;\n }\n }).join('');\n };\n var normalizeNbspAtEnd = function (root, node, text) {\n var lastPos = CaretPosition(node, text.length);\n if (isNbspAt(text, text.length - 1) && !needsToBeNbspRight(root, lastPos)) {\n return text.slice(0, -1) + ' ';\n } else {\n return text;\n }\n };\n var normalizeNbsps = function (root, pos) {\n return Option.some(pos).filter(hasNbsp).bind(function (pos) {\n var container = pos.container();\n var text = container.nodeValue;\n var newText = normalizeNbspAtStart(root, container, normalizeNbspMiddle(normalizeNbspAtEnd(root, container, text)));\n if (text !== newText) {\n pos.container().nodeValue = newText;\n return Option.some(pos);\n } else {\n return Option.none();\n }\n });\n };\n var normalizeNbspsInEditor = function (editor) {\n var root = Element$$1.fromDom(editor.getBody());\n if (editor.selection.isCollapsed()) {\n normalizeNbsps(root, CaretPosition.fromRangeStart(editor.selection.getRng())).each(function (pos) {\n editor.selection.setRng(pos.toRange());\n });\n }\n };\n\n var locationToCaretPosition = function (root) {\n return function (location) {\n return location.fold(function (element) {\n return CaretFinder.prevPosition(root.dom(), CaretPosition$1.before(element));\n }, function (element) {\n return CaretFinder.firstPositionIn(element);\n }, function (element) {\n return CaretFinder.lastPositionIn(element);\n }, function (element) {\n return CaretFinder.nextPosition(root.dom(), CaretPosition$1.after(element));\n });\n };\n };\n var insertInlineBoundarySpaceOrNbsp = function (root, pos) {\n return function (checkPos) {\n return needsToHaveNbsp(root, checkPos) ? insertNbspAtPosition(pos) : insertSpaceAtPosition(pos);\n };\n };\n var setSelection$1 = function (editor) {\n return function (pos) {\n editor.selection.setRng(pos.toRange());\n editor.nodeChanged();\n return true;\n };\n };\n var insertSpaceOrNbspAtSelection = function (editor) {\n var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n var root = Element$$1.fromDom(editor.getBody());\n if (editor.selection.isCollapsed()) {\n var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);\n var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n return BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), caretPosition).bind(locationToCaretPosition(root)).bind(insertInlineBoundarySpaceOrNbsp(root, pos)).exists(setSelection$1(editor));\n } else {\n return false;\n }\n };\n\n var executeKeydownOverride$2 = function (editor, evt) {\n MatchKeys.execute([{\n keyCode: VK.SPACEBAR,\n action: MatchKeys.action(insertSpaceOrNbspAtSelection, editor)\n }], evt).each(function (_) {\n evt.preventDefault();\n });\n };\n var setup$a = function (editor) {\n editor.on('keydown', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeydownOverride$2(editor, evt);\n }\n });\n };\n var SpaceKey = { setup: setup$a };\n\n var findBlockCaretContainer = function (editor) {\n return descendant$1(Element$$1.fromDom(editor.getBody()), '*[data-mce-caret]').fold(constant(null), function (elm) {\n return elm.dom();\n });\n };\n var removeIeControlRect = function (editor) {\n editor.selection.setRng(editor.selection.getRng());\n };\n var showBlockCaretContainer = function (editor, blockCaretContainer) {\n if (blockCaretContainer.hasAttribute('data-mce-caret')) {\n showCaretContainerBlock(blockCaretContainer);\n removeIeControlRect(editor);\n editor.selection.scrollIntoView(blockCaretContainer);\n }\n };\n var handleBlockContainer = function (editor, e) {\n var blockCaretContainer = findBlockCaretContainer(editor);\n if (!blockCaretContainer) {\n return;\n }\n if (e.type === 'compositionstart') {\n e.preventDefault();\n e.stopPropagation();\n showBlockCaretContainer(editor, blockCaretContainer);\n return;\n }\n if (hasContent(blockCaretContainer)) {\n showBlockCaretContainer(editor, blockCaretContainer);\n editor.undoManager.add();\n }\n };\n var setup$b = function (editor) {\n editor.on('keyup compositionstart', curry(handleBlockContainer, editor));\n };\n var CaretContainerInput = { setup: setup$b };\n\n var browser$4 = PlatformDetection$1.detect().browser;\n var setupIeInput = function (editor) {\n var keypressThrotter = first$1(function () {\n if (!editor.composing) {\n normalizeNbspsInEditor(editor);\n }\n }, 0);\n if (browser$4.isIE()) {\n editor.on('keypress', function (e) {\n keypressThrotter.throttle();\n });\n editor.on('remove', function (e) {\n keypressThrotter.cancel();\n });\n }\n };\n var setup$c = function (editor) {\n setupIeInput(editor);\n editor.on('input', function (e) {\n if (e.isComposing === false) {\n normalizeNbspsInEditor(editor);\n }\n });\n };\n\n var setup$d = function (editor) {\n var caret = BoundarySelection.setupSelectedState(editor);\n CaretContainerInput.setup(editor);\n ArrowKeys.setup(editor, caret);\n DeleteBackspaceKeys.setup(editor, caret);\n EnterKey.setup(editor);\n SpaceKey.setup(editor);\n setup$c(editor);\n };\n var KeyboardOverrides = { setup: setup$d };\n\n function Quirks (editor) {\n var each = Tools.each;\n var BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings, parser = editor.parser;\n var isGecko = Env.gecko, isIE = Env.ie, isWebKit = Env.webkit;\n var mceInternalUrlPrefix = 'data:text/mce-internal,';\n var mceInternalDataType = isIE ? 'Text' : 'URL';\n var setEditorCommandState = function (cmd, state) {\n try {\n editor.getDoc().execCommand(cmd, false, state);\n } catch (ex) {\n }\n };\n var isDefaultPrevented = function (e) {\n return e.isDefaultPrevented();\n };\n var setMceInternalContent = function (e) {\n var selectionHtml, internalContent;\n if (e.dataTransfer) {\n if (editor.selection.isCollapsed() && e.target.tagName === 'IMG') {\n selection.select(e.target);\n }\n selectionHtml = editor.selection.getContent();\n if (selectionHtml.length > 0) {\n internalContent = mceInternalUrlPrefix + escape(editor.id) + ',' + escape(selectionHtml);\n e.dataTransfer.setData(mceInternalDataType, internalContent);\n }\n }\n };\n var getMceInternalContent = function (e) {\n var internalContent;\n if (e.dataTransfer) {\n internalContent = e.dataTransfer.getData(mceInternalDataType);\n if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) {\n internalContent = internalContent.substr(mceInternalUrlPrefix.length).split(',');\n return {\n id: unescape(internalContent[0]),\n html: unescape(internalContent[1])\n };\n }\n }\n return null;\n };\n var insertClipboardContents = function (content, internal) {\n if (editor.queryCommandSupported('mceInsertClipboardContent')) {\n editor.execCommand('mceInsertClipboardContent', false, {\n content: content,\n internal: internal\n });\n } else {\n editor.execCommand('mceInsertContent', false, content);\n }\n };\n var emptyEditorWhenDeleting = function () {\n var serializeRng = function (rng) {\n var body = dom.create('body');\n var contents = rng.cloneContents();\n body.appendChild(contents);\n return selection.serializer.serialize(body, { format: 'html' });\n };\n var allContentsSelected = function (rng) {\n var selection = serializeRng(rng);\n var allRng = dom.createRng();\n allRng.selectNode(editor.getBody());\n var allSelection = serializeRng(allRng);\n return selection === allSelection;\n };\n editor.on('keydown', function (e) {\n var keyCode = e.keyCode;\n var isCollapsed, body;\n if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE)) {\n isCollapsed = editor.selection.isCollapsed();\n body = editor.getBody();\n if (isCollapsed && !dom.isEmpty(body)) {\n return;\n }\n if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {\n return;\n }\n e.preventDefault();\n editor.setContent('');\n if (body.firstChild && dom.isBlock(body.firstChild)) {\n editor.selection.setCursorLocation(body.firstChild, 0);\n } else {\n editor.selection.setCursorLocation(body, 0);\n }\n editor.nodeChanged();\n }\n });\n };\n var selectAll = function () {\n editor.shortcuts.add('meta+a', null, 'SelectAll');\n };\n var inputMethodFocus = function () {\n if (!editor.settings.content_editable) {\n dom.bind(editor.getDoc(), 'mousedown mouseup', function (e) {\n var rng;\n if (e.target === editor.getDoc().documentElement) {\n rng = selection.getRng();\n editor.getBody().focus();\n if (e.type === 'mousedown') {\n if (isCaretContainer(rng.startContainer)) {\n return;\n }\n selection.placeCaretAt(e.clientX, e.clientY);\n } else {\n selection.setRng(rng);\n }\n }\n });\n }\n };\n var removeHrOnBackspace = function () {\n editor.on('keydown', function (e) {\n if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n if (!editor.getBody().getElementsByTagName('hr').length) {\n return;\n }\n if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n var node = selection.getNode();\n var previousSibling = node.previousSibling;\n if (node.nodeName === 'HR') {\n dom.remove(node);\n e.preventDefault();\n return;\n }\n if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') {\n dom.remove(previousSibling);\n e.preventDefault();\n }\n }\n }\n });\n };\n var focusBody = function () {\n if (!Range.prototype.getClientRects) {\n editor.on('mousedown', function (e) {\n if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') {\n var body_1 = editor.getBody();\n body_1.blur();\n Delay.setEditorTimeout(editor, function () {\n body_1.focus();\n });\n }\n });\n }\n };\n var selectControlElements = function () {\n editor.on('click', function (e) {\n var target = e.target;\n if (/^(IMG|HR)$/.test(target.nodeName) && dom.getContentEditableParent(target) !== 'false') {\n e.preventDefault();\n editor.selection.select(target);\n editor.nodeChanged();\n }\n if (target.nodeName === 'A' && dom.hasClass(target, 'mce-item-anchor')) {\n e.preventDefault();\n selection.select(target);\n }\n });\n };\n var removeStylesWhenDeletingAcrossBlockElements = function () {\n var getAttributeApplyFunction = function () {\n var template = dom.getAttribs(selection.getStart().cloneNode(false));\n return function () {\n var target = selection.getStart();\n if (target !== editor.getBody()) {\n dom.setAttrib(target, 'style', null);\n each(template, function (attr) {\n target.setAttributeNode(attr.cloneNode(true));\n });\n }\n };\n };\n var isSelectionAcrossElements = function () {\n return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock);\n };\n editor.on('keypress', function (e) {\n var applyAttributes;\n if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) {\n applyAttributes = getAttributeApplyFunction();\n editor.getDoc().execCommand('delete', false, null);\n applyAttributes();\n e.preventDefault();\n return false;\n }\n });\n dom.bind(editor.getDoc(), 'cut', function (e) {\n var applyAttributes;\n if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {\n applyAttributes = getAttributeApplyFunction();\n Delay.setEditorTimeout(editor, function () {\n applyAttributes();\n });\n }\n });\n };\n var disableBackspaceIntoATable = function () {\n editor.on('keydown', function (e) {\n if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n var previousSibling = selection.getNode().previousSibling;\n if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') {\n e.preventDefault();\n return false;\n }\n }\n }\n });\n };\n var removeBlockQuoteOnBackSpace = function () {\n editor.on('keydown', function (e) {\n var rng, container, offset, root, parent$$1;\n if (isDefaultPrevented(e) || e.keyCode !== VK.BACKSPACE) {\n return;\n }\n rng = selection.getRng();\n container = rng.startContainer;\n offset = rng.startOffset;\n root = dom.getRoot();\n parent$$1 = container;\n if (!rng.collapsed || offset !== 0) {\n return;\n }\n while (parent$$1 && parent$$1.parentNode && parent$$1.parentNode.firstChild === parent$$1 && parent$$1.parentNode !== root) {\n parent$$1 = parent$$1.parentNode;\n }\n if (parent$$1.tagName === 'BLOCKQUOTE') {\n editor.formatter.toggle('blockquote', null, parent$$1);\n rng = dom.createRng();\n rng.setStart(container, 0);\n rng.setEnd(container, 0);\n selection.setRng(rng);\n }\n });\n };\n var setGeckoEditingOptions = function () {\n var setOpts = function () {\n setEditorCommandState('StyleWithCSS', false);\n setEditorCommandState('enableInlineTableEditing', false);\n if (!settings.object_resizing) {\n setEditorCommandState('enableObjectResizing', false);\n }\n };\n if (!settings.readonly) {\n editor.on('BeforeExecCommand MouseDown', setOpts);\n }\n };\n var addBrAfterLastLinks = function () {\n var fixLinks = function () {\n each(dom.select('a'), function (node) {\n var parentNode = node.parentNode;\n var root = dom.getRoot();\n if (parentNode.lastChild === node) {\n while (parentNode && !dom.isBlock(parentNode)) {\n if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {\n return;\n }\n parentNode = parentNode.parentNode;\n }\n dom.add(parentNode, 'br', { 'data-mce-bogus': 1 });\n }\n });\n };\n editor.on('SetContent ExecCommand', function (e) {\n if (e.type === 'setcontent' || e.command === 'mceInsertLink') {\n fixLinks();\n }\n });\n };\n var setDefaultBlockType = function () {\n if (settings.forced_root_block) {\n editor.on('init', function () {\n setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block);\n });\n }\n };\n var normalizeSelection = function () {\n editor.on('keyup focusin mouseup', function (e) {\n if (!VK.modifierPressed(e)) {\n selection.normalize();\n }\n }, true);\n };\n var showBrokenImageIcon = function () {\n editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}');\n };\n var restoreFocusOnKeyDown = function () {\n if (!editor.inline) {\n editor.on('keydown', function () {\n if (document.activeElement === document.body) {\n editor.getWin().focus();\n }\n });\n }\n };\n var bodyHeight = function () {\n if (!editor.inline) {\n editor.contentStyles.push('body {min-height: 150px}');\n editor.on('click', function (e) {\n var rng;\n if (e.target.nodeName === 'HTML') {\n if (Env.ie > 11) {\n editor.getBody().focus();\n return;\n }\n rng = editor.selection.getRng();\n editor.getBody().focus();\n editor.selection.setRng(rng);\n editor.selection.normalize();\n editor.nodeChanged();\n }\n });\n }\n };\n var blockCmdArrowNavigation = function () {\n if (Env.mac) {\n editor.on('keydown', function (e) {\n if (VK.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) {\n e.preventDefault();\n editor.selection.getSel().modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary');\n }\n });\n }\n };\n var disableAutoUrlDetect = function () {\n setEditorCommandState('AutoUrlDetect', false);\n };\n var tapLinksAndImages = function () {\n editor.on('click', function (e) {\n var elm = e.target;\n do {\n if (elm.tagName === 'A') {\n e.preventDefault();\n return;\n }\n } while (elm = elm.parentNode);\n });\n editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}');\n };\n var blockFormSubmitInsideEditor = function () {\n editor.on('init', function () {\n editor.dom.bind(editor.getBody(), 'submit', function (e) {\n e.preventDefault();\n });\n });\n };\n var removeAppleInterchangeBrs = function () {\n parser.addNodeFilter('br', function (nodes) {\n var i = nodes.length;\n while (i--) {\n if (nodes[i].attr('class') === 'Apple-interchange-newline') {\n nodes[i].remove();\n }\n }\n });\n };\n var ieInternalDragAndDrop = function () {\n editor.on('dragstart', function (e) {\n setMceInternalContent(e);\n });\n editor.on('drop', function (e) {\n if (!isDefaultPrevented(e)) {\n var internalContent = getMceInternalContent(e);\n if (internalContent && internalContent.id !== editor.id) {\n e.preventDefault();\n var rng = CaretRangeFromPoint.fromPoint(e.x, e.y, editor.getDoc());\n selection.setRng(rng);\n insertClipboardContents(internalContent.html, true);\n }\n }\n });\n };\n var refreshContentEditable = function () {\n };\n var isHidden = function () {\n var sel;\n if (!isGecko || editor.removed) {\n return 0;\n }\n sel = editor.selection.getSel();\n return !sel || !sel.rangeCount || sel.rangeCount === 0;\n };\n removeBlockQuoteOnBackSpace();\n emptyEditorWhenDeleting();\n if (!Env.windowsPhone) {\n normalizeSelection();\n }\n if (isWebKit) {\n inputMethodFocus();\n selectControlElements();\n setDefaultBlockType();\n blockFormSubmitInsideEditor();\n disableBackspaceIntoATable();\n removeAppleInterchangeBrs();\n if (Env.iOS) {\n restoreFocusOnKeyDown();\n bodyHeight();\n tapLinksAndImages();\n } else {\n selectAll();\n }\n }\n if (Env.ie >= 11) {\n bodyHeight();\n disableBackspaceIntoATable();\n }\n if (Env.ie) {\n selectAll();\n disableAutoUrlDetect();\n ieInternalDragAndDrop();\n }\n if (isGecko) {\n removeHrOnBackspace();\n focusBody();\n removeStylesWhenDeletingAcrossBlockElements();\n setGeckoEditingOptions();\n addBrAfterLastLinks();\n showBrokenImageIcon();\n blockCmdArrowNavigation();\n disableBackspaceIntoATable();\n }\n return {\n refreshContentEditable: refreshContentEditable,\n isHidden: isHidden\n };\n }\n\n var isTextBlockNode = function (node) {\n return NodeType.isElement(node) && isTextBlock(Element$$1.fromDom(node));\n };\n var normalizeSelection$1 = function (editor) {\n var rng = editor.selection.getRng();\n var startPos = CaretPosition.fromRangeStart(rng);\n var endPos = CaretPosition.fromRangeEnd(rng);\n if (CaretPosition.isElementPosition(startPos)) {\n var container = startPos.container();\n if (isTextBlockNode(container)) {\n CaretFinder.firstPositionIn(container).each(function (pos) {\n return rng.setStart(pos.container(), pos.offset());\n });\n }\n }\n if (CaretPosition.isElementPosition(endPos)) {\n var container = startPos.container();\n if (isTextBlockNode(container)) {\n CaretFinder.lastPositionIn(container).each(function (pos) {\n return rng.setEnd(pos.container(), pos.offset());\n });\n }\n }\n editor.selection.setRng(RangeNormalizer.normalize(rng));\n };\n var setup$e = function (editor) {\n editor.on('click', function (e) {\n if (e.detail >= 3) {\n normalizeSelection$1(editor);\n }\n });\n };\n\n var preventSummaryToggle = function (editor) {\n editor.on('click', function (e) {\n if (editor.dom.getParent(e.target, 'details')) {\n e.preventDefault();\n }\n });\n };\n var filterDetails = function (editor) {\n editor.parser.addNodeFilter('details', function (elms) {\n each(elms, function (details) {\n details.attr('data-mce-open', details.attr('open'));\n details.attr('open', 'open');\n });\n });\n editor.serializer.addNodeFilter('details', function (elms) {\n each(elms, function (details) {\n var open = details.attr('data-mce-open');\n details.attr('open', isString(open) ? open : null);\n details.attr('data-mce-open', null);\n });\n });\n };\n var setup$f = function (editor) {\n preventSummaryToggle(editor);\n filterDetails(editor);\n };\n\n var DOM$2 = DOMUtils$1.DOM;\n var appendStyle = function (editor, text) {\n var head = Element$$1.fromDom(editor.getDoc().head);\n var tag = Element$$1.fromTag('style');\n set(tag, 'type', 'text/css');\n append(tag, Element$$1.fromText(text));\n append(head, tag);\n };\n var createParser = function (editor) {\n var parser = DomParser(editor.settings, editor.schema);\n parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name$$1) {\n var i = nodes.length, node;\n var dom = editor.dom;\n var value, internalName;\n while (i--) {\n node = nodes[i];\n value = node.attr(name$$1);\n internalName = 'data-mce-' + name$$1;\n if (!node.attributes.map[internalName]) {\n if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) {\n continue;\n }\n if (name$$1 === 'style') {\n value = dom.serializeStyle(dom.parseStyle(value), node.name);\n if (!value.length) {\n value = null;\n }\n node.attr(internalName, value);\n node.attr(name$$1, value);\n } else if (name$$1 === 'tabindex') {\n node.attr(internalName, value);\n node.attr(name$$1, null);\n } else {\n node.attr(internalName, editor.convertURL(value, name$$1, node.name));\n }\n }\n }\n });\n parser.addNodeFilter('script', function (nodes) {\n var i = nodes.length, node, type;\n while (i--) {\n node = nodes[i];\n type = node.attr('type') || 'no/type';\n if (type.indexOf('mce-') !== 0) {\n node.attr('type', 'mce-' + type);\n }\n }\n });\n parser.addNodeFilter('#cdata', function (nodes) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n node.type = 8;\n node.name = '#comment';\n node.value = '[CDATA[' + node.value + ']]';\n }\n });\n parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function (nodes) {\n var i = nodes.length, node;\n var nonEmptyElements = editor.schema.getNonEmptyElements();\n while (i--) {\n node = nodes[i];\n if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) {\n node.append(new Node$2('br', 1)).shortEnded = true;\n }\n }\n });\n return parser;\n };\n var autoFocus = function (editor) {\n if (editor.settings.auto_focus) {\n Delay.setEditorTimeout(editor, function () {\n var focusEditor;\n if (editor.settings.auto_focus === true) {\n focusEditor = editor;\n } else {\n focusEditor = editor.editorManager.get(editor.settings.auto_focus);\n }\n if (!focusEditor.destroyed) {\n focusEditor.focus();\n }\n }, 100);\n }\n };\n var initEditor = function (editor) {\n editor.bindPendingEventDelegates();\n editor.initialized = true;\n editor.fire('init');\n editor.focus(true);\n editor.nodeChanged({ initial: true });\n editor.execCallback('init_instance_callback', editor);\n autoFocus(editor);\n };\n var getStyleSheetLoader = function (editor) {\n return editor.inline ? DOM$2.styleSheetLoader : editor.dom.styleSheetLoader;\n };\n var initContentBody = function (editor, skipWrite) {\n var settings = editor.settings;\n var targetElm = editor.getElement();\n var doc = editor.getDoc(), body, contentCssText;\n if (!settings.inline) {\n editor.getElement().style.visibility = editor.orgVisibility;\n }\n if (!skipWrite && !settings.content_editable) {\n doc.open();\n doc.write(editor.iframeHTML);\n doc.close();\n }\n if (settings.content_editable) {\n editor.on('remove', function () {\n var bodyEl = this.getBody();\n DOM$2.removeClass(bodyEl, 'mce-content-body');\n DOM$2.removeClass(bodyEl, 'mce-edit-focus');\n DOM$2.setAttrib(bodyEl, 'contentEditable', null);\n });\n DOM$2.addClass(targetElm, 'mce-content-body');\n editor.contentDocument = doc = settings.content_document || document;\n editor.contentWindow = settings.content_window || window;\n editor.bodyElement = targetElm;\n settings.content_document = settings.content_window = null;\n settings.root_name = targetElm.nodeName.toLowerCase();\n }\n body = editor.getBody();\n body.disabled = true;\n editor.readonly = settings.readonly;\n if (!editor.readonly) {\n if (editor.inline && DOM$2.getStyle(body, 'position', true) === 'static') {\n body.style.position = 'relative';\n }\n body.contentEditable = editor.getParam('content_editable_state', true);\n }\n body.disabled = false;\n editor.editorUpload = EditorUpload(editor);\n editor.schema = Schema(settings);\n editor.dom = DOMUtils$1(doc, {\n keep_values: true,\n url_converter: editor.convertURL,\n url_converter_scope: editor,\n hex_colors: settings.force_hex_style_colors,\n class_filter: settings.class_filter,\n update_styles: true,\n root_element: editor.inline ? editor.getBody() : null,\n collect: settings.content_editable,\n schema: editor.schema,\n contentCssCors: Settings.shouldUseContentCssCors(editor),\n onSetAttrib: function (e) {\n editor.fire('SetAttrib', e);\n }\n });\n editor.parser = createParser(editor);\n editor.serializer = Serializer$1(settings, editor);\n editor.selection = Selection(editor.dom, editor.getWin(), editor.serializer, editor);\n editor.annotator = Annotator(editor);\n editor.formatter = Formatter(editor);\n editor.undoManager = UndoManager(editor);\n editor._nodeChangeDispatcher = new NodeChange(editor);\n editor._selectionOverrides = SelectionOverrides(editor);\n setup$f(editor);\n setup$e(editor);\n KeyboardOverrides.setup(editor);\n ForceBlocks.setup(editor);\n editor.fire('PreInit');\n if (!settings.browser_spellcheck && !settings.gecko_spellcheck) {\n doc.body.spellcheck = false;\n DOM$2.setAttrib(body, 'spellcheck', 'false');\n }\n editor.quirks = Quirks(editor);\n editor.fire('PostRender');\n if (settings.directionality) {\n body.dir = settings.directionality;\n }\n if (settings.nowrap) {\n body.style.whiteSpace = 'nowrap';\n }\n if (settings.protect) {\n editor.on('BeforeSetContent', function (e) {\n Tools.each(settings.protect, function (pattern) {\n e.content = e.content.replace(pattern, function (str) {\n return '';\n });\n });\n });\n }\n editor.on('SetContent', function () {\n editor.addVisual(editor.getBody());\n });\n editor.load({\n initial: true,\n format: 'html'\n });\n editor.startContent = editor.getContent({ format: 'raw' });\n editor.on('compositionstart compositionend', function (e) {\n editor.composing = e.type === 'compositionstart';\n });\n if (editor.contentStyles.length > 0) {\n contentCssText = '';\n Tools.each(editor.contentStyles, function (style) {\n contentCssText += style + '\\r\\n';\n });\n editor.dom.addStyle(contentCssText);\n }\n getStyleSheetLoader(editor).loadAll(editor.contentCSS, function (_) {\n initEditor(editor);\n }, function (urls) {\n initEditor(editor);\n });\n if (settings.content_style) {\n appendStyle(editor, settings.content_style);\n }\n };\n var InitContentBody = { initContentBody: initContentBody };\n\n var DOM$3 = DOMUtils$1.DOM;\n var relaxDomain = function (editor, ifr) {\n if (document.domain !== window.location.hostname && Env.ie && Env.ie < 12) {\n var bodyUuid = Uuid.uuid('mce');\n editor[bodyUuid] = function () {\n InitContentBody.initContentBody(editor);\n };\n var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain=\"' + document.domain + '\";' + 'var ed = window.parent.tinymce.get(\"' + editor.id + '\");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()';\n DOM$3.setAttrib(ifr, 'src', domainRelaxUrl);\n return true;\n }\n return false;\n };\n var normalizeHeight = function (height) {\n var normalizedHeight = typeof height === 'number' ? height + 'px' : height;\n return normalizedHeight ? normalizedHeight : '';\n };\n var createIframeElement = function (id, title, height, customAttrs) {\n var iframe = Element$$1.fromTag('iframe');\n setAll(iframe, customAttrs);\n setAll(iframe, {\n id: id + '_ifr',\n frameBorder: '0',\n allowTransparency: 'true',\n title: title\n });\n setAll$1(iframe, {\n width: '100%',\n height: normalizeHeight(height),\n display: 'block'\n });\n return iframe;\n };\n var getIframeHtml = function (editor) {\n var bodyId, bodyClass, iframeHTML;\n iframeHTML = Settings.getDocType(editor) + '';\n if (Settings.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) {\n iframeHTML += '';\n }\n iframeHTML += '';\n bodyId = Settings.getBodyId(editor);\n bodyClass = Settings.getBodyClass(editor);\n if (Settings.getContentSecurityPolicy(editor)) {\n iframeHTML += '';\n }\n iframeHTML += '
';\n return iframeHTML;\n };\n var createIframe = function (editor, o) {\n var title = editor.editorManager.translate('Rich Text Area. Press ALT-F9 for menu. ' + 'Press ALT-F10 for toolbar. Press ALT-0 for help');\n var ifr = createIframeElement(editor.id, title, o.height, Settings.getIframeAttrs(editor)).dom();\n ifr.onload = function () {\n ifr.onload = null;\n editor.fire('load');\n };\n var isDomainRelaxed = relaxDomain(editor, ifr);\n editor.contentAreaContainer = o.iframeContainer;\n editor.iframeElement = ifr;\n editor.iframeHTML = getIframeHtml(editor);\n DOM$3.add(o.iframeContainer, ifr);\n return isDomainRelaxed;\n };\n var init$1 = function (editor, boxInfo) {\n var isDomainRelaxed = createIframe(editor, boxInfo);\n if (boxInfo.editorContainer) {\n DOM$3.get(boxInfo.editorContainer).style.display = editor.orgDisplay;\n editor.hidden = DOM$3.isHidden(boxInfo.editorContainer);\n }\n editor.getElement().style.display = 'none';\n DOM$3.setAttrib(editor.id, 'aria-hidden', 'true');\n if (!isDomainRelaxed) {\n InitContentBody.initContentBody(editor);\n }\n };\n var InitIframe = { init: init$1 };\n\n var DOM$4 = DOMUtils$1.DOM;\n var initPlugin = function (editor, initializedPlugins, plugin) {\n var Plugin = PluginManager$1.get(plugin);\n var pluginUrl, pluginInstance;\n pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\\/$/, '');\n plugin = Tools.trim(plugin);\n if (Plugin && Tools.inArray(initializedPlugins, plugin) === -1) {\n Tools.each(PluginManager$1.dependencies(plugin), function (dep) {\n initPlugin(editor, initializedPlugins, dep);\n });\n if (editor.plugins[plugin]) {\n return;\n }\n pluginInstance = new Plugin(editor, pluginUrl, editor.$);\n editor.plugins[plugin] = pluginInstance;\n if (pluginInstance.init) {\n pluginInstance.init(editor, pluginUrl);\n initializedPlugins.push(plugin);\n }\n }\n };\n var trimLegacyPrefix = function (name) {\n return name.replace(/^\\-/, '');\n };\n var initPlugins = function (editor) {\n var initializedPlugins = [];\n Tools.each(editor.settings.plugins.split(/[ ,]/), function (name) {\n initPlugin(editor, initializedPlugins, trimLegacyPrefix(name));\n });\n };\n var initTheme = function (editor) {\n var Theme;\n var theme = editor.settings.theme;\n if (isString(theme)) {\n editor.settings.theme = trimLegacyPrefix(theme);\n Theme = ThemeManager.get(theme);\n editor.theme = new Theme(editor, ThemeManager.urls[theme]);\n if (editor.theme.init) {\n editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\\/$/, ''), editor.$);\n }\n } else {\n editor.theme = {};\n }\n };\n var renderFromLoadedTheme = function (editor) {\n var w, h, minHeight, re, info;\n var settings = editor.settings;\n var elm = editor.getElement();\n w = settings.width || DOM$4.getStyle(elm, 'width') || '100%';\n h = settings.height || DOM$4.getStyle(elm, 'height') || elm.offsetHeight;\n minHeight = settings.min_height || 100;\n re = /^[0-9\\.]+(|px)$/i;\n if (re.test('' + w)) {\n w = Math.max(parseInt(w, 10), 100);\n }\n if (re.test('' + h)) {\n h = Math.max(parseInt(h, 10), minHeight);\n }\n info = editor.theme.renderUI({\n targetNode: elm,\n width: w,\n height: h,\n deltaWidth: settings.delta_width,\n deltaHeight: settings.delta_height\n });\n if (!settings.content_editable) {\n h = (info.iframeHeight || h) + (typeof h === 'number' ? info.deltaHeight || 0 : '');\n if (h < minHeight) {\n h = minHeight;\n }\n }\n info.height = h;\n return info;\n };\n var renderFromThemeFunc = function (editor) {\n var info;\n var elm = editor.getElement();\n info = editor.settings.theme(editor, elm);\n if (info.editorContainer.nodeType) {\n info.editorContainer.id = info.editorContainer.id || editor.id + '_parent';\n }\n if (info.iframeContainer && info.iframeContainer.nodeType) {\n info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer';\n }\n info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight;\n return info;\n };\n var createThemeFalseResult = function (element) {\n return {\n editorContainer: element,\n iframeContainer: element\n };\n };\n var renderThemeFalseIframe = function (targetElement) {\n var iframeContainer = DOM$4.create('div');\n DOM$4.insertAfter(iframeContainer, targetElement);\n return createThemeFalseResult(iframeContainer);\n };\n var renderThemeFalse = function (editor) {\n var targetElement = editor.getElement();\n return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement);\n };\n var renderThemeUi = function (editor) {\n var settings = editor.settings, elm = editor.getElement();\n editor.orgDisplay = elm.style.display;\n if (isString(settings.theme)) {\n return renderFromLoadedTheme(editor);\n } else if (isFunction(settings.theme)) {\n return renderFromThemeFunc(editor);\n } else {\n return renderThemeFalse(editor);\n }\n };\n var init$2 = function (editor) {\n var settings = editor.settings;\n var elm = editor.getElement();\n var boxInfo;\n editor.rtl = settings.rtl_ui || editor.editorManager.i18n.rtl;\n editor.editorManager.i18n.setCode(settings.language);\n settings.aria_label = settings.aria_label || DOM$4.getAttrib(elm, 'aria-label', editor.getLang('aria.rich_text_area'));\n editor.fire('ScriptsLoaded');\n initTheme(editor);\n initPlugins(editor);\n boxInfo = renderThemeUi(editor);\n editor.editorContainer = boxInfo.editorContainer ? boxInfo.editorContainer : null;\n if (settings.content_css) {\n Tools.each(Tools.explode(settings.content_css), function (u) {\n editor.contentCSS.push(editor.documentBaseURI.toAbsolute(u));\n });\n }\n if (settings.content_editable) {\n return InitContentBody.initContentBody(editor);\n } else {\n return InitIframe.init(editor, boxInfo);\n }\n };\n var Init = { init: init$2 };\n\n var DOM$5 = DOMUtils$1.DOM;\n var hasSkipLoadPrefix = function (name$$1) {\n return name$$1.charAt(0) === '-';\n };\n var loadLanguage = function (scriptLoader, editor) {\n var settings = editor.settings;\n if (settings.language && settings.language !== 'en' && !settings.language_url) {\n settings.language_url = editor.editorManager.baseURL + '/langs/' + settings.language + '.js';\n }\n if (settings.language_url && !editor.editorManager.i18n.data[settings.language]) {\n scriptLoader.add(settings.language_url);\n }\n };\n var loadTheme = function (scriptLoader, editor, suffix, callback) {\n var settings = editor.settings, theme = settings.theme;\n if (isString(theme)) {\n if (!hasSkipLoadPrefix(theme) && !ThemeManager.urls.hasOwnProperty(theme)) {\n var themeUrl = settings.theme_url;\n if (themeUrl) {\n ThemeManager.load(theme, editor.documentBaseURI.toAbsolute(themeUrl));\n } else {\n ThemeManager.load(theme, 'themes/' + theme + '/theme' + suffix + '.js');\n }\n }\n scriptLoader.loadQueue(function () {\n ThemeManager.waitFor(theme, callback);\n });\n } else {\n callback();\n }\n };\n var loadPlugins = function (settings, suffix) {\n if (Tools.isArray(settings.plugins)) {\n settings.plugins = settings.plugins.join(' ');\n }\n Tools.each(settings.external_plugins, function (url, name$$1) {\n PluginManager$1.load(name$$1, url);\n settings.plugins += ' ' + name$$1;\n });\n Tools.each(settings.plugins.split(/[ ,]/), function (plugin) {\n plugin = Tools.trim(plugin);\n if (plugin && !PluginManager$1.urls[plugin]) {\n if (hasSkipLoadPrefix(plugin)) {\n plugin = plugin.substr(1, plugin.length);\n var dependencies = PluginManager$1.dependencies(plugin);\n Tools.each(dependencies, function (dep) {\n var defaultSettings = {\n prefix: 'plugins/',\n resource: dep,\n suffix: '/plugin' + suffix + '.js'\n };\n dep = PluginManager$1.createUrl(defaultSettings, dep);\n PluginManager$1.load(dep.resource, dep);\n });\n } else {\n PluginManager$1.load(plugin, {\n prefix: 'plugins/',\n resource: plugin,\n suffix: '/plugin' + suffix + '.js'\n });\n }\n }\n });\n };\n var loadScripts = function (editor, suffix) {\n var scriptLoader = ScriptLoader.ScriptLoader;\n loadTheme(scriptLoader, editor, suffix, function () {\n loadLanguage(scriptLoader, editor);\n loadPlugins(editor.settings, suffix);\n scriptLoader.loadQueue(function () {\n if (!editor.removed) {\n Init.init(editor);\n }\n }, editor, function (urls) {\n ErrorReporter.pluginLoadError(editor, urls[0]);\n if (!editor.removed) {\n Init.init(editor);\n }\n });\n });\n };\n var render = function (editor) {\n var settings = editor.settings, id = editor.id;\n var readyHandler = function () {\n DOM$5.unbind(window, 'ready', readyHandler);\n editor.render();\n };\n if (!EventUtils.Event.domLoaded) {\n DOM$5.bind(window, 'ready', readyHandler);\n return;\n }\n if (!editor.getElement()) {\n return;\n }\n if (!Env.contentEditable) {\n return;\n }\n if (!settings.inline) {\n editor.orgVisibility = editor.getElement().style.visibility;\n editor.getElement().style.visibility = 'hidden';\n } else {\n editor.inline = true;\n }\n var form = editor.getElement().form || DOM$5.getParent(id, 'form');\n if (form) {\n editor.formElement = form;\n if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(editor.getElement().nodeName)) {\n DOM$5.insertAfter(DOM$5.create('input', {\n type: 'hidden',\n name: id\n }), id);\n editor.hasHiddenInput = true;\n }\n editor.formEventDelegate = function (e) {\n editor.fire(e.type, e);\n };\n DOM$5.bind(form, 'submit reset', editor.formEventDelegate);\n editor.on('reset', function () {\n editor.setContent(editor.startContent, { format: 'raw' });\n });\n if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) {\n form._mceOldSubmit = form.submit;\n form.submit = function () {\n editor.editorManager.triggerSave();\n editor.setDirty(false);\n return form._mceOldSubmit(form);\n };\n }\n }\n editor.windowManager = WindowManager(editor);\n editor.notificationManager = NotificationManager(editor);\n if (settings.encoding === 'xml') {\n editor.on('GetContent', function (e) {\n if (e.save) {\n e.content = DOM$5.encode(e.content);\n }\n });\n }\n if (settings.add_form_submit_trigger) {\n editor.on('submit', function () {\n if (editor.initialized) {\n editor.save();\n }\n });\n }\n if (settings.add_unload_trigger) {\n editor._beforeUnload = function () {\n if (editor.initialized && !editor.destroyed && !editor.isHidden()) {\n editor.save({\n format: 'raw',\n no_events: true,\n set_dirty: false\n });\n }\n };\n editor.editorManager.on('BeforeUnload', editor._beforeUnload);\n }\n editor.editorManager.add(editor);\n loadScripts(editor, editor.suffix);\n };\n var Render = { render: render };\n\n var add$4 = function (editor, name, settings) {\n var sidebars = editor.sidebars ? editor.sidebars : [];\n sidebars.push({\n name: name,\n settings: settings\n });\n editor.sidebars = sidebars;\n };\n var Sidebar = { add: add$4 };\n\n var each$k = Tools.each, trim$4 = Tools.trim;\n var queryParts = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' ');\n var DEFAULT_PORTS = {\n ftp: 21,\n http: 80,\n https: 443,\n mailto: 25\n };\n var URI = function (url, settings) {\n var self$$1 = this;\n var baseUri, baseUrl;\n url = trim$4(url);\n settings = self$$1.settings = settings || {};\n baseUri = settings.base_uri;\n if (/^([\\w\\-]+):([^\\/]{2})/i.test(url) || /^\\s*#/.test(url)) {\n self$$1.source = url;\n return;\n }\n var isProtocolRelative = url.indexOf('//') === 0;\n if (url.indexOf('/') === 0 && !isProtocolRelative) {\n url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;\n }\n if (!/^[\\w\\-]*:?\\/\\//.test(url)) {\n baseUrl = settings.base_uri ? settings.base_uri.path : new URI(document.location.href).directory;\n if (settings.base_uri.protocol == '') {\n url = '//mce_host' + self$$1.toAbsPath(baseUrl, url);\n } else {\n url = /([^#?]*)([#?]?.*)/.exec(url);\n url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self$$1.toAbsPath(baseUrl, url[1]) + url[2];\n }\n }\n url = url.replace(/@@/g, '(mce_at)');\n url = /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@\\/]*):?([^:@\\/]*))?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/.exec(url);\n each$k(queryParts, function (v, i) {\n var part = url[i];\n if (part) {\n part = part.replace(/\\(mce_at\\)/g, '@@');\n }\n self$$1[v] = part;\n });\n if (baseUri) {\n if (!self$$1.protocol) {\n self$$1.protocol = baseUri.protocol;\n }\n if (!self$$1.userInfo) {\n self$$1.userInfo = baseUri.userInfo;\n }\n if (!self$$1.port && self$$1.host === 'mce_host') {\n self$$1.port = baseUri.port;\n }\n if (!self$$1.host || self$$1.host === 'mce_host') {\n self$$1.host = baseUri.host;\n }\n self$$1.source = '';\n }\n if (isProtocolRelative) {\n self$$1.protocol = '';\n }\n };\n URI.prototype = {\n setPath: function (path) {\n var self$$1 = this;\n path = /^(.*?)\\/?(\\w+)?$/.exec(path);\n self$$1.path = path[0];\n self$$1.directory = path[1];\n self$$1.file = path[2];\n self$$1.source = '';\n self$$1.getURI();\n },\n toRelative: function (uri) {\n var self$$1 = this;\n var output;\n if (uri === './') {\n return uri;\n }\n uri = new URI(uri, { base_uri: self$$1 });\n if (uri.host !== 'mce_host' && self$$1.host !== uri.host && uri.host || self$$1.port !== uri.port || self$$1.protocol !== uri.protocol && uri.protocol !== '') {\n return uri.getURI();\n }\n var tu = self$$1.getURI(), uu = uri.getURI();\n if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) {\n return tu;\n }\n output = self$$1.toRelPath(self$$1.path, uri.path);\n if (uri.query) {\n output += '?' + uri.query;\n }\n if (uri.anchor) {\n output += '#' + uri.anchor;\n }\n return output;\n },\n toAbsolute: function (uri, noHost) {\n uri = new URI(uri, { base_uri: this });\n return uri.getURI(noHost && this.isSameOrigin(uri));\n },\n isSameOrigin: function (uri) {\n if (this.host == uri.host && this.protocol == uri.protocol) {\n if (this.port == uri.port) {\n return true;\n }\n var defaultPort = DEFAULT_PORTS[this.protocol];\n if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) {\n return true;\n }\n }\n return false;\n },\n toRelPath: function (base, path) {\n var items, breakPoint = 0, out = '', i, l;\n base = base.substring(0, base.lastIndexOf('/'));\n base = base.split('/');\n items = path.split('/');\n if (base.length >= items.length) {\n for (i = 0, l = base.length; i < l; i++) {\n if (i >= items.length || base[i] !== items[i]) {\n breakPoint = i + 1;\n break;\n }\n }\n }\n if (base.length < items.length) {\n for (i = 0, l = items.length; i < l; i++) {\n if (i >= base.length || base[i] !== items[i]) {\n breakPoint = i + 1;\n break;\n }\n }\n }\n if (breakPoint === 1) {\n return path;\n }\n for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) {\n out += '../';\n }\n for (i = breakPoint - 1, l = items.length; i < l; i++) {\n if (i !== breakPoint - 1) {\n out += '/' + items[i];\n } else {\n out += items[i];\n }\n }\n return out;\n },\n toAbsPath: function (base, path) {\n var i, nb = 0, o = [], tr, outPath;\n tr = /\\/$/.test(path) ? '/' : '';\n base = base.split('/');\n path = path.split('/');\n each$k(base, function (k) {\n if (k) {\n o.push(k);\n }\n });\n base = o;\n for (i = path.length - 1, o = []; i >= 0; i--) {\n if (path[i].length === 0 || path[i] === '.') {\n continue;\n }\n if (path[i] === '..') {\n nb++;\n continue;\n }\n if (nb > 0) {\n nb--;\n continue;\n }\n o.push(path[i]);\n }\n i = base.length - nb;\n if (i <= 0) {\n outPath = o.reverse().join('/');\n } else {\n outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/');\n }\n if (outPath.indexOf('/') !== 0) {\n outPath = '/' + outPath;\n }\n if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) {\n outPath += tr;\n }\n return outPath;\n },\n getURI: function (noProtoHost) {\n var s;\n var self$$1 = this;\n if (!self$$1.source || noProtoHost) {\n s = '';\n if (!noProtoHost) {\n if (self$$1.protocol) {\n s += self$$1.protocol + '://';\n } else {\n s += '//';\n }\n if (self$$1.userInfo) {\n s += self$$1.userInfo + '@';\n }\n if (self$$1.host) {\n s += self$$1.host;\n }\n if (self$$1.port) {\n s += ':' + self$$1.port;\n }\n }\n if (self$$1.path) {\n s += self$$1.path;\n }\n if (self$$1.query) {\n s += '?' + self$$1.query;\n }\n if (self$$1.anchor) {\n s += '#' + self$$1.anchor;\n }\n self$$1.source = s;\n }\n return self$$1.source;\n }\n };\n URI.parseDataUri = function (uri) {\n var type, matches;\n uri = decodeURIComponent(uri).split(',');\n matches = /data:([^;]+)/.exec(uri[0]);\n if (matches) {\n type = matches[1];\n }\n return {\n type: type,\n data: uri[1]\n };\n };\n URI.getDocumentBaseUrl = function (loc) {\n var baseUrl;\n if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') {\n baseUrl = loc.href;\n } else {\n baseUrl = loc.protocol + '//' + loc.host + loc.pathname;\n }\n if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(baseUrl)) {\n baseUrl = baseUrl.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n if (!/[\\/\\\\]$/.test(baseUrl)) {\n baseUrl += '/';\n }\n }\n return baseUrl;\n };\n\n var defaultFormat = 'html';\n var trimEmptyContents = function (editor, html) {\n var blockName = Settings.getForcedRootBlock(editor);\n var emptyRegExp = new RegExp('^(<' + blockName + '[^>]*>( | |\\\\s|\\xA0|
|)<\\\\/' + blockName + '>[\\r\\n]*|
[\\r\\n]*)$');\n return html.replace(emptyRegExp, '');\n };\n var getContentFromBody = function (editor, args, body) {\n var content;\n args.format = args.format ? args.format : defaultFormat;\n args.get = true;\n args.getInner = true;\n if (!args.no_events) {\n editor.fire('BeforeGetContent', args);\n }\n if (args.format === 'raw') {\n content = Tools.trim(TrimHtml.trimExternal(editor.serializer, body.innerHTML));\n } else if (args.format === 'text') {\n content = Zwsp.trim(body.innerText || body.textContent);\n } else if (args.format === 'tree') {\n return editor.serializer.serialize(body, args);\n } else {\n content = trimEmptyContents(editor, editor.serializer.serialize(body, args));\n }\n if (args.format !== 'text' && !isWsPreserveElement(Element$$1.fromDom(body))) {\n args.content = Tools.trim(content);\n } else {\n args.content = content;\n }\n if (!args.no_events) {\n editor.fire('GetContent', args);\n }\n return args.content;\n };\n var getContent$1 = function (editor, args) {\n if (args === void 0) {\n args = {};\n }\n return Option.from(editor.getBody()).fold(constant(args.format === 'tree' ? new Node$2('body', 11) : ''), function (body) {\n return getContentFromBody(editor, args, body);\n });\n };\n\n var traverse = function (node, fn) {\n fn(node);\n if (node.firstChild) {\n traverse(node.firstChild, fn);\n }\n if (node.next) {\n traverse(node.next, fn);\n }\n };\n var findMatchingNodes = function (nodeFilters, attributeFilters, node) {\n var nodeMatches = {};\n var attrMatches = {};\n var matches = [];\n if (node.firstChild) {\n traverse(node.firstChild, function (node) {\n each(nodeFilters, function (filter$$1) {\n if (filter$$1.name === node.name) {\n if (nodeMatches[filter$$1.name]) {\n nodeMatches[filter$$1.name].nodes.push(node);\n } else {\n nodeMatches[filter$$1.name] = {\n filter: filter$$1,\n nodes: [node]\n };\n }\n }\n });\n each(attributeFilters, function (filter$$1) {\n if (typeof node.attr(filter$$1.name) === 'string') {\n if (attrMatches[filter$$1.name]) {\n attrMatches[filter$$1.name].nodes.push(node);\n } else {\n attrMatches[filter$$1.name] = {\n filter: filter$$1,\n nodes: [node]\n };\n }\n }\n });\n });\n }\n for (var name in nodeMatches) {\n if (nodeMatches.hasOwnProperty(name)) {\n matches.push(nodeMatches[name]);\n }\n }\n for (var name in attrMatches) {\n if (attrMatches.hasOwnProperty(name)) {\n matches.push(attrMatches[name]);\n }\n }\n return matches;\n };\n var filter$3 = function (nodeFilters, attributeFilters, node) {\n var matches = findMatchingNodes(nodeFilters, attributeFilters, node);\n each(matches, function (match) {\n each(match.filter.callbacks, function (callback) {\n callback(match.nodes, match.filter.name, {});\n });\n });\n };\n\n var defaultFormat$1 = 'html';\n var isTreeNode = function (content) {\n return content instanceof Node$2;\n };\n var moveSelection = function (editor) {\n if (EditorFocus.hasFocus(editor)) {\n CaretFinder.firstPositionIn(editor.getBody()).each(function (pos) {\n var node = pos.getNode();\n var caretPos = NodeType.isTable(node) ? CaretFinder.firstPositionIn(node).getOr(pos) : pos;\n editor.selection.setRng(caretPos.toRange());\n });\n }\n };\n var setEditorHtml = function (editor, html) {\n editor.dom.setHTML(editor.getBody(), html);\n moveSelection(editor);\n };\n var setContentString = function (editor, body, content, args) {\n var forcedRootBlockName, padd;\n if (content.length === 0 || /^\\s+$/.test(content)) {\n padd = '
';\n if (body.nodeName === 'TABLE') {\n content = '' + padd + '';\n } else if (/^(UL|OL)$/.test(body.nodeName)) {\n content = '
  • ' + padd + '
  • ';\n }\n forcedRootBlockName = Settings.getForcedRootBlock(editor);\n if (forcedRootBlockName && editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) {\n content = padd;\n content = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs, content);\n } else if (!content) {\n content = '
    ';\n }\n setEditorHtml(editor, content);\n editor.fire('SetContent', args);\n } else {\n if (args.format !== 'raw') {\n content = Serializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, {\n isRootContent: true,\n insert: true\n }));\n }\n args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? content : Tools.trim(content);\n setEditorHtml(editor, args.content);\n if (!args.no_events) {\n editor.fire('SetContent', args);\n }\n }\n return args.content;\n };\n var setContentTree = function (editor, body, content, args) {\n filter$3(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content);\n var html = Serializer({ validate: editor.validate }, editor.schema).serialize(content);\n args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? html : Tools.trim(html);\n setEditorHtml(editor, args.content);\n if (!args.no_events) {\n editor.fire('SetContent', args);\n }\n return content;\n };\n var setContent$1 = function (editor, content, args) {\n if (args === void 0) {\n args = {};\n }\n args.format = args.format ? args.format : defaultFormat$1;\n args.set = true;\n args.content = isTreeNode(content) ? '' : content;\n if (!isTreeNode(content) && !args.no_events) {\n editor.fire('BeforeSetContent', args);\n content = args.content;\n }\n return Option.from(editor.getBody()).fold(constant(content), function (body) {\n return isTreeNode(content) ? setContentTree(editor, body, content, args) : setContentString(editor, body, content, args);\n });\n };\n\n var DOM$6 = DOMUtils$1.DOM;\n var restoreOriginalStyles = function (editor) {\n DOM$6.setStyle(editor.id, 'display', editor.orgDisplay);\n };\n var safeDestroy = function (x) {\n return Option.from(x).each(function (x) {\n return x.destroy();\n });\n };\n var clearDomReferences = function (editor) {\n editor.contentAreaContainer = editor.formElement = editor.container = editor.editorContainer = null;\n editor.bodyElement = editor.contentDocument = editor.contentWindow = null;\n editor.iframeElement = editor.targetElm = null;\n if (editor.selection) {\n editor.selection = editor.selection.win = editor.selection.dom = editor.selection.dom.doc = null;\n }\n };\n var restoreForm = function (editor) {\n var form = editor.formElement;\n if (form) {\n if (form._mceOldSubmit) {\n form.submit = form._mceOldSubmit;\n form._mceOldSubmit = null;\n }\n DOM$6.unbind(form, 'submit reset', editor.formEventDelegate);\n }\n };\n var remove$9 = function (editor) {\n if (!editor.removed) {\n var _selectionOverrides = editor._selectionOverrides, editorUpload = editor.editorUpload;\n var body = editor.getBody();\n var element = editor.getElement();\n if (body) {\n editor.save({ is_removing: true });\n }\n editor.removed = true;\n editor.unbindAllNativeEvents();\n if (editor.hasHiddenInput && element) {\n DOM$6.remove(element.nextSibling);\n }\n if (!editor.inline && body) {\n restoreOriginalStyles(editor);\n }\n Events.fireRemove(editor);\n editor.editorManager.remove(editor);\n DOM$6.remove(editor.getContainer());\n safeDestroy(_selectionOverrides);\n safeDestroy(editorUpload);\n editor.destroy();\n }\n };\n var destroy = function (editor, automatic) {\n var selection = editor.selection, dom = editor.dom;\n if (editor.destroyed) {\n return;\n }\n if (!automatic && !editor.removed) {\n editor.remove();\n return;\n }\n if (!automatic) {\n editor.editorManager.off('beforeunload', editor._beforeUnload);\n if (editor.theme && editor.theme.destroy) {\n editor.theme.destroy();\n }\n safeDestroy(selection);\n safeDestroy(dom);\n }\n restoreForm(editor);\n clearDomReferences(editor);\n editor.destroyed = true;\n };\n\n var DOM$7 = DOMUtils$1.DOM;\n var extend$4 = Tools.extend, each$l = Tools.each;\n var resolve$4 = Tools.resolve;\n var ie$2 = Env.ie;\n var Editor = function (id, settings, editorManager) {\n var self = this;\n var documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL;\n var baseUri = editorManager.baseURI;\n settings = getEditorSettings(self, id, documentBaseUrl, editorManager.defaultSettings, settings);\n self.settings = settings;\n AddOnManager.language = settings.language || 'en';\n AddOnManager.languageLoad = settings.language_load;\n AddOnManager.baseURL = editorManager.baseURL;\n self.id = id;\n self.setDirty(false);\n self.plugins = {};\n self.documentBaseURI = new URI(settings.document_base_url, { base_uri: baseUri });\n self.baseURI = baseUri;\n self.contentCSS = [];\n self.contentStyles = [];\n self.shortcuts = new Shortcuts(self);\n self.loadedCSS = {};\n self.editorCommands = new EditorCommands(self);\n self.suffix = editorManager.suffix;\n self.editorManager = editorManager;\n self.inline = settings.inline;\n self.buttons = {};\n self.menuItems = {};\n if (settings.cache_suffix) {\n Env.cacheSuffix = settings.cache_suffix.replace(/^[\\?\\&]+/, '');\n }\n if (settings.override_viewport === false) {\n Env.overrideViewPort = false;\n }\n editorManager.fire('SetupEditor', { editor: self });\n self.execCallback('setup', self);\n self.$ = DomQuery.overrideDefaults(function () {\n return {\n context: self.inline ? self.getBody() : self.getDoc(),\n element: self.getBody()\n };\n });\n };\n Editor.prototype = {\n render: function () {\n Render.render(this);\n },\n focus: function (skipFocus) {\n EditorFocus.focus(this, skipFocus);\n },\n hasFocus: function () {\n return EditorFocus.hasFocus(this);\n },\n execCallback: function (name) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var self = this;\n var callback = self.settings[name], scope;\n if (!callback) {\n return;\n }\n if (self.callbackLookup && (scope = self.callbackLookup[name])) {\n callback = scope.func;\n scope = scope.scope;\n }\n if (typeof callback === 'string') {\n scope = callback.replace(/\\.\\w+$/, '');\n scope = scope ? resolve$4(scope) : 0;\n callback = resolve$4(callback);\n self.callbackLookup = self.callbackLookup || {};\n self.callbackLookup[name] = {\n func: callback,\n scope: scope\n };\n }\n return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1));\n },\n translate: function (text) {\n if (text && Tools.is(text, 'string')) {\n var lang_1 = this.settings.language || 'en', i18n_1 = this.editorManager.i18n;\n text = i18n_1.data[lang_1 + '.' + text] || text.replace(/\\{\\#([^\\}]+)\\}/g, function (a, b) {\n return i18n_1.data[lang_1 + '.' + b] || '{#' + b + '}';\n });\n }\n return this.editorManager.translate(text);\n },\n getLang: function (name, defaultVal) {\n return this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] || (defaultVal !== undefined ? defaultVal : '{#' + name + '}');\n },\n getParam: function (name, defaultVal, type) {\n return getParam(this, name, defaultVal, type);\n },\n nodeChanged: function (args) {\n this._nodeChangeDispatcher.nodeChanged(args);\n },\n addButton: function (name, settings) {\n var self = this;\n if (settings.cmd) {\n settings.onclick = function () {\n self.execCommand(settings.cmd);\n };\n }\n if (settings.stateSelector && typeof settings.active === 'undefined') {\n settings.active = false;\n }\n if (!settings.text && !settings.icon) {\n settings.icon = name;\n }\n settings.tooltip = settings.tooltip || settings.title;\n self.buttons[name] = settings;\n },\n addSidebar: function (name, settings) {\n return Sidebar.add(this, name, settings);\n },\n addMenuItem: function (name, settings) {\n var self = this;\n if (settings.cmd) {\n settings.onclick = function () {\n self.execCommand(settings.cmd);\n };\n }\n self.menuItems[name] = settings;\n },\n addContextToolbar: function (predicate, items) {\n var self = this;\n var selector;\n self.contextToolbars = self.contextToolbars || [];\n if (typeof predicate === 'string') {\n selector = predicate;\n predicate = function (elm) {\n return self.dom.is(elm, selector);\n };\n }\n self.contextToolbars.push({\n id: Uuid.uuid('mcet'),\n predicate: predicate,\n items: items\n });\n },\n addCommand: function (name, callback, scope) {\n this.editorCommands.addCommand(name, callback, scope);\n },\n addQueryStateHandler: function (name, callback, scope) {\n this.editorCommands.addQueryStateHandler(name, callback, scope);\n },\n addQueryValueHandler: function (name, callback, scope) {\n this.editorCommands.addQueryValueHandler(name, callback, scope);\n },\n addShortcut: function (pattern, desc, cmdFunc, scope) {\n this.shortcuts.add(pattern, desc, cmdFunc, scope);\n },\n execCommand: function (cmd, ui, value, args) {\n return this.editorCommands.execCommand(cmd, ui, value, args);\n },\n queryCommandState: function (cmd) {\n return this.editorCommands.queryCommandState(cmd);\n },\n queryCommandValue: function (cmd) {\n return this.editorCommands.queryCommandValue(cmd);\n },\n queryCommandSupported: function (cmd) {\n return this.editorCommands.queryCommandSupported(cmd);\n },\n show: function () {\n var self = this;\n if (self.hidden) {\n self.hidden = false;\n if (self.inline) {\n self.getBody().contentEditable = true;\n } else {\n DOM$7.show(self.getContainer());\n DOM$7.hide(self.id);\n }\n self.load();\n self.fire('show');\n }\n },\n hide: function () {\n var self = this, doc = self.getDoc();\n if (!self.hidden) {\n if (ie$2 && doc && !self.inline) {\n doc.execCommand('SelectAll');\n }\n self.save();\n if (self.inline) {\n self.getBody().contentEditable = false;\n if (self === self.editorManager.focusedEditor) {\n self.editorManager.focusedEditor = null;\n }\n } else {\n DOM$7.hide(self.getContainer());\n DOM$7.setStyle(self.id, 'display', self.orgDisplay);\n }\n self.hidden = true;\n self.fire('hide');\n }\n },\n isHidden: function () {\n return !!this.hidden;\n },\n setProgressState: function (state, time) {\n this.fire('ProgressState', {\n state: state,\n time: time\n });\n },\n load: function (args) {\n var self = this;\n var elm = self.getElement(), html;\n if (self.removed) {\n return '';\n }\n if (elm) {\n args = args || {};\n args.load = true;\n html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args);\n args.element = elm;\n if (!args.no_events) {\n self.fire('LoadContent', args);\n }\n args.element = elm = null;\n return html;\n }\n },\n save: function (args) {\n var self = this;\n var elm = self.getElement(), html, form;\n if (!elm || !self.initialized || self.removed) {\n return;\n }\n args = args || {};\n args.save = true;\n args.element = elm;\n html = args.content = self.getContent(args);\n if (!args.no_events) {\n self.fire('SaveContent', args);\n }\n if (args.format === 'raw') {\n self.fire('RawSaveContent', args);\n }\n html = args.content;\n if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) {\n if (args.is_removing || !self.inline) {\n elm.innerHTML = html;\n }\n if (form = DOM$7.getParent(self.id, 'form')) {\n each$l(form.elements, function (elm) {\n if (elm.name === self.id) {\n elm.value = html;\n return false;\n }\n });\n }\n } else {\n elm.value = html;\n }\n args.element = elm = null;\n if (args.set_dirty !== false) {\n self.setDirty(false);\n }\n return html;\n },\n setContent: function (content, args) {\n return setContent$1(this, content, args);\n },\n getContent: function (args) {\n return getContent$1(this, args);\n },\n insertContent: function (content, args) {\n if (args) {\n content = extend$4({ content: content }, args);\n }\n this.execCommand('mceInsertContent', false, content);\n },\n isDirty: function () {\n return !this.isNotDirty;\n },\n setDirty: function (state) {\n var oldState = !this.isNotDirty;\n this.isNotDirty = !state;\n if (state && state !== oldState) {\n this.fire('dirty');\n }\n },\n setMode: function (mode) {\n setMode(this, mode);\n },\n getContainer: function () {\n var self = this;\n if (!self.container) {\n self.container = DOM$7.get(self.editorContainer || self.id + '_parent');\n }\n return self.container;\n },\n getContentAreaContainer: function () {\n return this.contentAreaContainer;\n },\n getElement: function () {\n if (!this.targetElm) {\n this.targetElm = DOM$7.get(this.id);\n }\n return this.targetElm;\n },\n getWin: function () {\n var self = this;\n var elm;\n if (!self.contentWindow) {\n elm = self.iframeElement;\n if (elm) {\n self.contentWindow = elm.contentWindow;\n }\n }\n return self.contentWindow;\n },\n getDoc: function () {\n var self = this;\n var win;\n if (!self.contentDocument) {\n win = self.getWin();\n if (win) {\n self.contentDocument = win.document;\n }\n }\n return self.contentDocument;\n },\n getBody: function () {\n var doc = this.getDoc();\n return this.bodyElement || (doc ? doc.body : null);\n },\n convertURL: function (url, name, elm) {\n var self = this, settings = self.settings;\n if (settings.urlconverter_callback) {\n return self.execCallback('urlconverter_callback', url, elm, true, name);\n }\n if (!settings.convert_urls || elm && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) {\n return url;\n }\n if (settings.relative_urls) {\n return self.documentBaseURI.toRelative(url);\n }\n url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);\n return url;\n },\n addVisual: function (elm) {\n var self = this;\n var settings = self.settings;\n var dom = self.dom;\n var cls;\n elm = elm || self.getBody();\n if (self.hasVisual === undefined) {\n self.hasVisual = settings.visual;\n }\n each$l(dom.select('table,a', elm), function (elm) {\n var value;\n switch (elm.nodeName) {\n case 'TABLE':\n cls = settings.visual_table_class || 'mce-item-table';\n value = dom.getAttrib(elm, 'border');\n if ((!value || value === '0') && self.hasVisual) {\n dom.addClass(elm, cls);\n } else {\n dom.removeClass(elm, cls);\n }\n return;\n case 'A':\n if (!dom.getAttrib(elm, 'href')) {\n value = dom.getAttrib(elm, 'name') || elm.id;\n cls = settings.visual_anchor_class || 'mce-item-anchor';\n if (value && self.hasVisual) {\n dom.addClass(elm, cls);\n } else {\n dom.removeClass(elm, cls);\n }\n }\n return;\n }\n });\n self.fire('VisualAid', {\n element: elm,\n hasVisual: self.hasVisual\n });\n },\n remove: function () {\n remove$9(this);\n },\n destroy: function (automatic) {\n destroy(this, automatic);\n },\n uploadImages: function (callback) {\n return this.editorUpload.uploadImages(callback);\n },\n _scanForImages: function () {\n return this.editorUpload.scanForImages();\n }\n };\n extend$4(Editor.prototype, EditorObservable$1);\n\n var isEditorUIElement = function (elm) {\n return elm.className.toString().indexOf('mce-') !== -1;\n };\n var FocusManager = { isEditorUIElement: isEditorUIElement };\n\n var isManualNodeChange = function (e) {\n return e.type === 'nodechange' && e.selectionChange;\n };\n var registerPageMouseUp = function (editor, throttledStore) {\n var mouseUpPage = function () {\n throttledStore.throttle();\n };\n DOMUtils$1.DOM.bind(document, 'mouseup', mouseUpPage);\n editor.on('remove', function () {\n DOMUtils$1.DOM.unbind(document, 'mouseup', mouseUpPage);\n });\n };\n var registerFocusOut = function (editor) {\n editor.on('focusout', function () {\n SelectionBookmark.store(editor);\n });\n };\n var registerMouseUp = function (editor, throttledStore) {\n editor.on('mouseup touchend', function (e) {\n throttledStore.throttle();\n });\n };\n var registerEditorEvents = function (editor, throttledStore) {\n var browser = PlatformDetection$1.detect().browser;\n if (browser.isIE()) {\n registerFocusOut(editor);\n } else {\n registerMouseUp(editor, throttledStore);\n }\n editor.on('keyup nodechange', function (e) {\n if (!isManualNodeChange(e)) {\n SelectionBookmark.store(editor);\n }\n });\n };\n var register$3 = function (editor) {\n var throttledStore = first$1(function () {\n SelectionBookmark.store(editor);\n }, 0);\n if (editor.inline) {\n registerPageMouseUp(editor, throttledStore);\n }\n editor.on('init', function () {\n registerEditorEvents(editor, throttledStore);\n });\n editor.on('remove', function () {\n throttledStore.cancel();\n });\n };\n var SelectionRestore = { register: register$3 };\n\n var documentFocusInHandler;\n var DOM$8 = DOMUtils$1.DOM;\n var isEditorUIElement$1 = function (elm) {\n return FocusManager.isEditorUIElement(elm);\n };\n var isUIElement = function (editor, elm) {\n var customSelector = editor ? editor.settings.custom_ui_selector : '';\n var parent$$1 = DOM$8.getParent(elm, function (elm) {\n return isEditorUIElement$1(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false);\n });\n return parent$$1 !== null;\n };\n var getActiveElement = function () {\n try {\n return document.activeElement;\n } catch (ex) {\n return document.body;\n }\n };\n var registerEvents = function (editorManager, e) {\n var editor = e.editor;\n SelectionRestore.register(editor);\n editor.on('focusin', function () {\n var self$$1 = this;\n var focusedEditor = editorManager.focusedEditor;\n if (focusedEditor !== self$$1) {\n if (focusedEditor) {\n focusedEditor.fire('blur', { focusedEditor: self$$1 });\n }\n editorManager.setActive(self$$1);\n editorManager.focusedEditor = self$$1;\n self$$1.fire('focus', { blurredEditor: focusedEditor });\n self$$1.focus(true);\n }\n });\n editor.on('focusout', function () {\n var self$$1 = this;\n Delay.setEditorTimeout(self$$1, function () {\n var focusedEditor = editorManager.focusedEditor;\n if (!isUIElement(self$$1, getActiveElement()) && focusedEditor === self$$1) {\n self$$1.fire('blur', { focusedEditor: null });\n editorManager.focusedEditor = null;\n }\n });\n });\n if (!documentFocusInHandler) {\n documentFocusInHandler = function (e) {\n var activeEditor = editorManager.activeEditor;\n var target;\n target = e.target;\n if (activeEditor && target.ownerDocument === document) {\n if (target !== document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) {\n activeEditor.fire('blur', { focusedEditor: null });\n editorManager.focusedEditor = null;\n }\n }\n };\n DOM$8.bind(document, 'focusin', documentFocusInHandler);\n }\n };\n var unregisterDocumentEvents = function (editorManager, e) {\n if (editorManager.focusedEditor === e.editor) {\n editorManager.focusedEditor = null;\n }\n if (!editorManager.activeEditor) {\n DOM$8.unbind(document, 'focusin', documentFocusInHandler);\n documentFocusInHandler = null;\n }\n };\n var setup$g = function (editorManager) {\n editorManager.on('AddEditor', curry(registerEvents, editorManager));\n editorManager.on('RemoveEditor', curry(unregisterDocumentEvents, editorManager));\n };\n var FocusController = {\n setup: setup$g,\n isEditorUIElement: isEditorUIElement$1,\n isUIElement: isUIElement\n };\n\n var data = {};\n var code = 'en';\n var I18n = {\n setCode: function (newCode) {\n if (newCode) {\n code = newCode;\n this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false;\n }\n },\n getCode: function () {\n return code;\n },\n rtl: false,\n add: function (code, items) {\n var langData = data[code];\n if (!langData) {\n data[code] = langData = {};\n }\n for (var name in items) {\n langData[name] = items[name];\n }\n this.setCode(code);\n },\n translate: function (text) {\n var langData = data[code] || {};\n var toString = function (obj) {\n if (Tools.is(obj, 'function')) {\n return Object.prototype.toString.call(obj);\n }\n return !isEmpty(obj) ? '' + obj : '';\n };\n var isEmpty = function (text) {\n return text === '' || text === null || Tools.is(text, 'undefined');\n };\n var getLangData = function (text) {\n text = toString(text);\n return Tools.hasOwn(langData, text) ? toString(langData[text]) : text;\n };\n if (isEmpty(text)) {\n return '';\n }\n if (Tools.is(text, 'object') && Tools.hasOwn(text, 'raw')) {\n return toString(text.raw);\n }\n if (Tools.is(text, 'array')) {\n var values_1 = text.slice(1);\n text = getLangData(text[0]).replace(/\\{([0-9]+)\\}/g, function ($1, $2) {\n return Tools.hasOwn(values_1, $2) ? toString(values_1[$2]) : $1;\n });\n }\n return getLangData(text).replace(/{context:\\w+}$/, '');\n },\n data: data\n };\n\n var DOM$9 = DOMUtils$1.DOM;\n var explode$4 = Tools.explode, each$m = Tools.each, extend$5 = Tools.extend;\n var instanceCounter = 0, beforeUnloadDelegate, EditorManager, boundGlobalEvents = false;\n var legacyEditors = [];\n var editors = [];\n var isValidLegacyKey = function (id) {\n return id !== 'length';\n };\n var globalEventDelegate = function (e) {\n each$m(EditorManager.get(), function (editor) {\n if (e.type === 'scroll') {\n editor.fire('ScrollWindow', e);\n } else {\n editor.fire('ResizeWindow', e);\n }\n });\n };\n var toggleGlobalEvents = function (state) {\n if (state !== boundGlobalEvents) {\n if (state) {\n DomQuery(window).on('resize scroll', globalEventDelegate);\n } else {\n DomQuery(window).off('resize scroll', globalEventDelegate);\n }\n boundGlobalEvents = state;\n }\n };\n var removeEditorFromList = function (targetEditor) {\n var oldEditors = editors;\n delete legacyEditors[targetEditor.id];\n for (var i = 0; i < legacyEditors.length; i++) {\n if (legacyEditors[i] === targetEditor) {\n legacyEditors.splice(i, 1);\n break;\n }\n }\n editors = filter(editors, function (editor) {\n return targetEditor !== editor;\n });\n if (EditorManager.activeEditor === targetEditor) {\n EditorManager.activeEditor = editors.length > 0 ? editors[0] : null;\n }\n if (EditorManager.focusedEditor === targetEditor) {\n EditorManager.focusedEditor = null;\n }\n return oldEditors.length !== editors.length;\n };\n var purgeDestroyedEditor = function (editor) {\n if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) {\n removeEditorFromList(editor);\n editor.unbindAllNativeEvents();\n editor.destroy(true);\n editor.removed = true;\n editor = null;\n }\n return editor;\n };\n EditorManager = {\n defaultSettings: {},\n $: DomQuery,\n majorVersion: '4',\n minorVersion: '9.2',\n releaseDate: '2018-12-17',\n editors: legacyEditors,\n i18n: I18n,\n activeEditor: null,\n settings: {},\n setup: function () {\n var self$$1 = this;\n var baseURL, documentBaseURL, suffix = '', preInit, src;\n documentBaseURL = URI.getDocumentBaseUrl(document.location);\n if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(documentBaseURL)) {\n documentBaseURL = documentBaseURL.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n if (!/[\\/\\\\]$/.test(documentBaseURL)) {\n documentBaseURL += '/';\n }\n }\n preInit = window.tinymce || window.tinyMCEPreInit;\n if (preInit) {\n baseURL = preInit.base || preInit.baseURL;\n suffix = preInit.suffix;\n } else {\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n src = scripts[i].src;\n var srcScript = src.substring(src.lastIndexOf('/'));\n if (/tinymce(\\.full|\\.jquery|)(\\.min|\\.dev|)\\.js/.test(src)) {\n if (srcScript.indexOf('.min') !== -1) {\n suffix = '.min';\n }\n baseURL = src.substring(0, src.lastIndexOf('/'));\n break;\n }\n }\n if (!baseURL && document.currentScript) {\n src = document.currentScript.src;\n if (src.indexOf('.min') !== -1) {\n suffix = '.min';\n }\n baseURL = src.substring(0, src.lastIndexOf('/'));\n }\n }\n self$$1.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);\n self$$1.documentBaseURL = documentBaseURL;\n self$$1.baseURI = new URI(self$$1.baseURL);\n self$$1.suffix = suffix;\n FocusController.setup(self$$1);\n },\n overrideDefaults: function (defaultSettings) {\n var baseUrl, suffix;\n baseUrl = defaultSettings.base_url;\n if (baseUrl) {\n this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\\/+$/, ''));\n this.baseURI = new URI(this.baseURL);\n }\n suffix = defaultSettings.suffix;\n if (defaultSettings.suffix) {\n this.suffix = suffix;\n }\n this.defaultSettings = defaultSettings;\n var pluginBaseUrls = defaultSettings.plugin_base_urls;\n for (var name$$1 in pluginBaseUrls) {\n AddOnManager.PluginManager.urls[name$$1] = pluginBaseUrls[name$$1];\n }\n },\n init: function (settings) {\n var self$$1 = this;\n var result, invalidInlineTargets;\n invalidInlineTargets = Tools.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu', ' ');\n var isInvalidInlineTarget = function (settings, elm) {\n return settings.inline && elm.tagName.toLowerCase() in invalidInlineTargets;\n };\n var createId = function (elm) {\n var id = elm.id;\n if (!id) {\n id = elm.name;\n if (id && !DOM$9.get(id)) {\n id = elm.name;\n } else {\n id = DOM$9.uniqueId();\n }\n elm.setAttribute('id', id);\n }\n return id;\n };\n var execCallback = function (name$$1) {\n var callback = settings[name$$1];\n if (!callback) {\n return;\n }\n return callback.apply(self$$1, Array.prototype.slice.call(arguments, 2));\n };\n var hasClass = function (elm, className) {\n return className.constructor === RegExp ? className.test(elm.className) : DOM$9.hasClass(elm, className);\n };\n var findTargets = function (settings) {\n var l, targets = [];\n if (Env.ie && Env.ie < 11) {\n ErrorReporter.initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/');\n return [];\n }\n if (settings.types) {\n each$m(settings.types, function (type) {\n targets = targets.concat(DOM$9.select(type.selector));\n });\n return targets;\n } else if (settings.selector) {\n return DOM$9.select(settings.selector);\n } else if (settings.target) {\n return [settings.target];\n }\n switch (settings.mode) {\n case 'exact':\n l = settings.elements || '';\n if (l.length > 0) {\n each$m(explode$4(l), function (id) {\n var elm;\n if (elm = DOM$9.get(id)) {\n targets.push(elm);\n } else {\n each$m(document.forms, function (f) {\n each$m(f.elements, function (e) {\n if (e.name === id) {\n id = 'mce_editor_' + instanceCounter++;\n DOM$9.setAttrib(e, 'id', id);\n targets.push(e);\n }\n });\n });\n }\n });\n }\n break;\n case 'textareas':\n case 'specific_textareas':\n each$m(DOM$9.select('textarea'), function (elm) {\n if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) {\n return;\n }\n if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) {\n targets.push(elm);\n }\n });\n break;\n }\n return targets;\n };\n var provideResults = function (editors) {\n result = editors;\n };\n var initEditors = function () {\n var initCount = 0;\n var editors = [];\n var targets;\n var createEditor = function (id, settings, targetElm) {\n var editor = new Editor(id, settings, self$$1);\n editors.push(editor);\n editor.on('init', function () {\n if (++initCount === targets.length) {\n provideResults(editors);\n }\n });\n editor.targetElm = editor.targetElm || targetElm;\n editor.render();\n };\n DOM$9.unbind(window, 'ready', initEditors);\n execCallback('onpageload');\n targets = DomQuery.unique(findTargets(settings));\n if (settings.types) {\n each$m(settings.types, function (type) {\n Tools.each(targets, function (elm) {\n if (DOM$9.is(elm, type.selector)) {\n createEditor(createId(elm), extend$5({}, settings, type), elm);\n return false;\n }\n return true;\n });\n });\n return;\n }\n Tools.each(targets, function (elm) {\n purgeDestroyedEditor(self$$1.get(elm.id));\n });\n targets = Tools.grep(targets, function (elm) {\n return !self$$1.get(elm.id);\n });\n if (targets.length === 0) {\n provideResults([]);\n } else {\n each$m(targets, function (elm) {\n if (isInvalidInlineTarget(settings, elm)) {\n ErrorReporter.initError('Could not initialize inline editor on invalid inline target element', elm);\n } else {\n createEditor(createId(elm), settings, elm);\n }\n });\n }\n };\n self$$1.settings = settings;\n DOM$9.bind(window, 'ready', initEditors);\n return new promiseObj(function (resolve) {\n if (result) {\n resolve(result);\n } else {\n provideResults = function (editors) {\n resolve(editors);\n };\n }\n });\n },\n get: function (id) {\n if (arguments.length === 0) {\n return editors.slice(0);\n } else if (isString(id)) {\n return find(editors, function (editor) {\n return editor.id === id;\n }).getOr(null);\n } else if (isNumber(id)) {\n return editors[id] ? editors[id] : null;\n } else {\n return null;\n }\n },\n add: function (editor) {\n var self$$1 = this;\n var existingEditor;\n existingEditor = legacyEditors[editor.id];\n if (existingEditor === editor) {\n return editor;\n }\n if (self$$1.get(editor.id) === null) {\n if (isValidLegacyKey(editor.id)) {\n legacyEditors[editor.id] = editor;\n }\n legacyEditors.push(editor);\n editors.push(editor);\n }\n toggleGlobalEvents(true);\n self$$1.activeEditor = editor;\n self$$1.fire('AddEditor', { editor: editor });\n if (!beforeUnloadDelegate) {\n beforeUnloadDelegate = function () {\n self$$1.fire('BeforeUnload');\n };\n DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate);\n }\n return editor;\n },\n createEditor: function (id, settings) {\n return this.add(new Editor(id, settings, this));\n },\n remove: function (selector) {\n var self$$1 = this;\n var i, editor;\n if (!selector) {\n for (i = editors.length - 1; i >= 0; i--) {\n self$$1.remove(editors[i]);\n }\n return;\n }\n if (isString(selector)) {\n each$m(DOM$9.select(selector), function (elm) {\n editor = self$$1.get(elm.id);\n if (editor) {\n self$$1.remove(editor);\n }\n });\n return;\n }\n editor = selector;\n if (isNull(self$$1.get(editor.id))) {\n return null;\n }\n if (removeEditorFromList(editor)) {\n self$$1.fire('RemoveEditor', { editor: editor });\n }\n if (editors.length === 0) {\n DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate);\n }\n editor.remove();\n toggleGlobalEvents(editors.length > 0);\n return editor;\n },\n execCommand: function (cmd, ui, value) {\n var self$$1 = this, editor = self$$1.get(value);\n switch (cmd) {\n case 'mceAddEditor':\n if (!self$$1.get(value)) {\n new Editor(value, self$$1.settings, self$$1).render();\n }\n return true;\n case 'mceRemoveEditor':\n if (editor) {\n editor.remove();\n }\n return true;\n case 'mceToggleEditor':\n if (!editor) {\n self$$1.execCommand('mceAddEditor', 0, value);\n return true;\n }\n if (editor.isHidden()) {\n editor.show();\n } else {\n editor.hide();\n }\n return true;\n }\n if (self$$1.activeEditor) {\n return self$$1.activeEditor.execCommand(cmd, ui, value);\n }\n return false;\n },\n triggerSave: function () {\n each$m(editors, function (editor) {\n editor.save();\n });\n },\n addI18n: function (code, items) {\n I18n.add(code, items);\n },\n translate: function (text) {\n return I18n.translate(text);\n },\n setActive: function (editor) {\n var activeEditor = this.activeEditor;\n if (this.activeEditor !== editor) {\n if (activeEditor) {\n activeEditor.fire('deactivate', { relatedTarget: editor });\n }\n editor.fire('activate', { relatedTarget: activeEditor });\n }\n this.activeEditor = editor;\n }\n };\n extend$5(EditorManager, Observable);\n EditorManager.setup();\n var EditorManager$1 = EditorManager;\n\n function RangeUtils(dom) {\n var walk = function (rng, callback) {\n return RangeWalk.walk(dom, rng, callback);\n };\n var split = SplitRange.split;\n var normalize = function (rng) {\n return NormalizeRange.normalize(dom, rng).fold(constant(false), function (normalizedRng) {\n rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset);\n rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset);\n return true;\n });\n };\n return {\n walk: walk,\n split: split,\n normalize: normalize\n };\n }\n (function (RangeUtils) {\n RangeUtils.compareRanges = RangeCompare.isEq;\n RangeUtils.getCaretRangeFromPoint = CaretRangeFromPoint.fromPoint;\n RangeUtils.getSelectedNode = getSelectedNode;\n RangeUtils.getNode = getNode;\n }(RangeUtils || (RangeUtils = {})));\n var RangeUtils$1 = RangeUtils;\n\n var min = Math.min, max = Math.max, round$2 = Math.round;\n var relativePosition = function (rect, targetRect, rel) {\n var x, y, w, h, targetW, targetH;\n x = targetRect.x;\n y = targetRect.y;\n w = rect.w;\n h = rect.h;\n targetW = targetRect.w;\n targetH = targetRect.h;\n rel = (rel || '').split('');\n if (rel[0] === 'b') {\n y += targetH;\n }\n if (rel[1] === 'r') {\n x += targetW;\n }\n if (rel[0] === 'c') {\n y += round$2(targetH / 2);\n }\n if (rel[1] === 'c') {\n x += round$2(targetW / 2);\n }\n if (rel[3] === 'b') {\n y -= h;\n }\n if (rel[4] === 'r') {\n x -= w;\n }\n if (rel[3] === 'c') {\n y -= round$2(h / 2);\n }\n if (rel[4] === 'c') {\n x -= round$2(w / 2);\n }\n return create$3(x, y, w, h);\n };\n var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) {\n var pos, i;\n for (i = 0; i < rels.length; i++) {\n pos = relativePosition(rect, targetRect, rels[i]);\n if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) {\n return rels[i];\n }\n }\n return null;\n };\n var inflate = function (rect, w, h) {\n return create$3(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);\n };\n var intersect = function (rect, cropRect) {\n var x1, y1, x2, y2;\n x1 = max(rect.x, cropRect.x);\n y1 = max(rect.y, cropRect.y);\n x2 = min(rect.x + rect.w, cropRect.x + cropRect.w);\n y2 = min(rect.y + rect.h, cropRect.y + cropRect.h);\n if (x2 - x1 < 0 || y2 - y1 < 0) {\n return null;\n }\n return create$3(x1, y1, x2 - x1, y2 - y1);\n };\n var clamp$1 = function (rect, clampRect, fixedSize) {\n var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2;\n x1 = rect.x;\n y1 = rect.y;\n x2 = rect.x + rect.w;\n y2 = rect.y + rect.h;\n cx2 = clampRect.x + clampRect.w;\n cy2 = clampRect.y + clampRect.h;\n underflowX1 = max(0, clampRect.x - x1);\n underflowY1 = max(0, clampRect.y - y1);\n overflowX2 = max(0, x2 - cx2);\n overflowY2 = max(0, y2 - cy2);\n x1 += underflowX1;\n y1 += underflowY1;\n if (fixedSize) {\n x2 += underflowX1;\n y2 += underflowY1;\n x1 -= overflowX2;\n y1 -= overflowY2;\n }\n x2 -= overflowX2;\n y2 -= overflowY2;\n return create$3(x1, y1, x2 - x1, y2 - y1);\n };\n var create$3 = function (x, y, w, h) {\n return {\n x: x,\n y: y,\n w: w,\n h: h\n };\n };\n var fromClientRect = function (clientRect) {\n return create$3(clientRect.left, clientRect.top, clientRect.width, clientRect.height);\n };\n var Rect = {\n inflate: inflate,\n relativePosition: relativePosition,\n findBestRelativePosition: findBestRelativePosition,\n intersect: intersect,\n clamp: clamp$1,\n create: create$3,\n fromClientRect: fromClientRect\n };\n\n var types = {};\n var Factory = {\n add: function (type, typeClass) {\n types[type.toLowerCase()] = typeClass;\n },\n has: function (type) {\n return !!types[type.toLowerCase()];\n },\n get: function (type) {\n var lctype = type.toLowerCase();\n var controlType = types.hasOwnProperty(lctype) ? types[lctype] : null;\n if (controlType === null) {\n throw new Error('Could not find module for type: ' + type);\n }\n return controlType;\n },\n create: function (type, settings) {\n var ControlType;\n if (typeof type === 'string') {\n settings = settings || {};\n settings.type = type;\n } else {\n settings = type;\n type = settings.type;\n }\n type = type.toLowerCase();\n ControlType = types[type];\n if (!ControlType) {\n throw new Error('Could not find control by type: ' + type);\n }\n ControlType = new ControlType(settings);\n ControlType.type = type;\n return ControlType;\n }\n };\n\n var each$n = Tools.each, extend$6 = Tools.extend;\n var extendClass, initializing;\n var Class = function () {\n };\n Class.extend = extendClass = function (prop) {\n var self = this;\n var _super = self.prototype;\n var prototype, name, member;\n var Class = function () {\n var i, mixins, mixin;\n var self = this;\n if (!initializing) {\n if (self.init) {\n self.init.apply(self, arguments);\n }\n mixins = self.Mixins;\n if (mixins) {\n i = mixins.length;\n while (i--) {\n mixin = mixins[i];\n if (mixin.init) {\n mixin.init.apply(self, arguments);\n }\n }\n }\n }\n };\n var dummy = function () {\n return this;\n };\n var createMethod = function (name, fn) {\n return function () {\n var self = this;\n var tmp = self._super;\n var ret;\n self._super = _super[name];\n ret = fn.apply(self, arguments);\n self._super = tmp;\n return ret;\n };\n };\n initializing = true;\n prototype = new self();\n initializing = false;\n if (prop.Mixins) {\n each$n(prop.Mixins, function (mixin) {\n for (var name_1 in mixin) {\n if (name_1 !== 'init') {\n prop[name_1] = mixin[name_1];\n }\n }\n });\n if (_super.Mixins) {\n prop.Mixins = _super.Mixins.concat(prop.Mixins);\n }\n }\n if (prop.Methods) {\n each$n(prop.Methods.split(','), function (name) {\n prop[name] = dummy;\n });\n }\n if (prop.Properties) {\n each$n(prop.Properties.split(','), function (name) {\n var fieldName = '_' + name;\n prop[name] = function (value) {\n var self = this;\n if (value !== undefined) {\n self[fieldName] = value;\n return self;\n }\n return self[fieldName];\n };\n });\n }\n if (prop.Statics) {\n each$n(prop.Statics, function (func, name) {\n Class[name] = func;\n });\n }\n if (prop.Defaults && _super.Defaults) {\n prop.Defaults = extend$6({}, _super.Defaults, prop.Defaults);\n }\n for (name in prop) {\n member = prop[name];\n if (typeof member === 'function' && _super[name]) {\n prototype[name] = createMethod(name, member);\n } else {\n prototype[name] = member;\n }\n }\n Class.prototype = prototype;\n Class.constructor = Class;\n Class.extend = extendClass;\n return Class;\n };\n\n var min$1 = Math.min, max$1 = Math.max, round$3 = Math.round;\n var Color = function (value) {\n var self = {};\n var r = 0, g = 0, b = 0;\n var rgb2hsv = function (r, g, b) {\n var h, s, v, d, minRGB, maxRGB;\n h = 0;\n s = 0;\n v = 0;\n r = r / 255;\n g = g / 255;\n b = b / 255;\n minRGB = min$1(r, min$1(g, b));\n maxRGB = max$1(r, max$1(g, b));\n if (minRGB === maxRGB) {\n v = minRGB;\n return {\n h: 0,\n s: 0,\n v: v * 100\n };\n }\n d = r === minRGB ? g - b : b === minRGB ? r - g : b - r;\n h = r === minRGB ? 3 : b === minRGB ? 1 : 5;\n h = 60 * (h - d / (maxRGB - minRGB));\n s = (maxRGB - minRGB) / maxRGB;\n v = maxRGB;\n return {\n h: round$3(h),\n s: round$3(s * 100),\n v: round$3(v * 100)\n };\n };\n var hsvToRgb = function (hue, saturation, brightness) {\n var side, chroma, x, match;\n hue = (parseInt(hue, 10) || 0) % 360;\n saturation = parseInt(saturation, 10) / 100;\n brightness = parseInt(brightness, 10) / 100;\n saturation = max$1(0, min$1(saturation, 1));\n brightness = max$1(0, min$1(brightness, 1));\n if (saturation === 0) {\n r = g = b = round$3(255 * brightness);\n return;\n }\n side = hue / 60;\n chroma = brightness * saturation;\n x = chroma * (1 - Math.abs(side % 2 - 1));\n match = brightness - chroma;\n switch (Math.floor(side)) {\n case 0:\n r = chroma;\n g = x;\n b = 0;\n break;\n case 1:\n r = x;\n g = chroma;\n b = 0;\n break;\n case 2:\n r = 0;\n g = chroma;\n b = x;\n break;\n case 3:\n r = 0;\n g = x;\n b = chroma;\n break;\n case 4:\n r = x;\n g = 0;\n b = chroma;\n break;\n case 5:\n r = chroma;\n g = 0;\n b = x;\n break;\n default:\n r = g = b = 0;\n }\n r = round$3(255 * (r + match));\n g = round$3(255 * (g + match));\n b = round$3(255 * (b + match));\n };\n var toHex = function () {\n var hex = function (val) {\n val = parseInt(val, 10).toString(16);\n return val.length > 1 ? val : '0' + val;\n };\n return '#' + hex(r) + hex(g) + hex(b);\n };\n var toRgb = function () {\n return {\n r: r,\n g: g,\n b: b\n };\n };\n var toHsv = function () {\n return rgb2hsv(r, g, b);\n };\n var parse = function (value) {\n var matches;\n if (typeof value === 'object') {\n if ('r' in value) {\n r = value.r;\n g = value.g;\n b = value.b;\n } else if ('v' in value) {\n hsvToRgb(value.h, value.s, value.v);\n }\n } else {\n if (matches = /rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)[^\\)]*\\)/gi.exec(value)) {\n r = parseInt(matches[1], 10);\n g = parseInt(matches[2], 10);\n b = parseInt(matches[3], 10);\n } else if (matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value)) {\n r = parseInt(matches[1], 16);\n g = parseInt(matches[2], 16);\n b = parseInt(matches[3], 16);\n } else if (matches = /#([0-F])([0-F])([0-F])/gi.exec(value)) {\n r = parseInt(matches[1] + matches[1], 16);\n g = parseInt(matches[2] + matches[2], 16);\n b = parseInt(matches[3] + matches[3], 16);\n }\n }\n r = r < 0 ? 0 : r > 255 ? 255 : r;\n g = g < 0 ? 0 : g > 255 ? 255 : g;\n b = b < 0 ? 0 : b > 255 ? 255 : b;\n return self;\n };\n if (value) {\n parse(value);\n }\n self.toRgb = toRgb;\n self.toHsv = toHsv;\n self.toHex = toHex;\n self.parse = parse;\n return self;\n };\n\n var serialize = function (o, quote) {\n var i, v, t, name;\n quote = quote || '\"';\n if (o === null) {\n return 'null';\n }\n t = typeof o;\n if (t === 'string') {\n v = '\\bb\\tt\\nn\\ff\\rr\"\"\\'\\'\\\\\\\\';\n return quote + o.replace(/([\\u0080-\\uFFFF\\x00-\\x1f\\\"\\'\\\\])/g, function (a, b) {\n if (quote === '\"' && a === '\\'') {\n return a;\n }\n i = v.indexOf(b);\n if (i + 1) {\n return '\\\\' + v.charAt(i + 1);\n }\n a = b.charCodeAt().toString(16);\n return '\\\\u' + '0000'.substring(a.length) + a;\n }) + quote;\n }\n if (t === 'object') {\n if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {\n for (i = 0, v = '['; i < o.length; i++) {\n v += (i > 0 ? ',' : '') + serialize(o[i], quote);\n }\n return v + ']';\n }\n v = '{';\n for (name in o) {\n if (o.hasOwnProperty(name)) {\n v += typeof o[name] !== 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote + ':' + serialize(o[name], quote) : '';\n }\n }\n return v + '}';\n }\n return '' + o;\n };\n var JSON$1 = {\n serialize: serialize,\n parse: function (text) {\n try {\n return JSON.parse(text);\n } catch (ex) {\n }\n }\n };\n\n var JSONP = {\n callbacks: {},\n count: 0,\n send: function (settings) {\n var self = this, dom = DOMUtils$1.DOM, count = settings.count !== undefined ? settings.count : self.count;\n var id = 'tinymce_jsonp_' + count;\n self.callbacks[count] = function (json) {\n dom.remove(id);\n delete self.callbacks[count];\n settings.callback(json);\n };\n dom.add(dom.doc.body, 'script', {\n id: id,\n src: settings.url,\n type: 'text/javascript'\n });\n self.count++;\n }\n };\n\n var XHR = {\n send: function (settings) {\n var xhr, count = 0;\n var ready = function () {\n if (!settings.async || xhr.readyState === 4 || count++ > 10000) {\n if (settings.success && count < 10000 && xhr.status === 200) {\n settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings);\n } else if (settings.error) {\n settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings);\n }\n xhr = null;\n } else {\n setTimeout(ready, 10);\n }\n };\n settings.scope = settings.scope || this;\n settings.success_scope = settings.success_scope || settings.scope;\n settings.error_scope = settings.error_scope || settings.scope;\n settings.async = settings.async === false ? false : true;\n settings.data = settings.data || '';\n XHR.fire('beforeInitialize', { settings: settings });\n xhr = XMLHttpRequest();\n if (xhr) {\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(settings.content_type);\n }\n xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async);\n if (settings.crossDomain) {\n xhr.withCredentials = true;\n }\n if (settings.content_type) {\n xhr.setRequestHeader('Content-Type', settings.content_type);\n }\n if (settings.requestheaders) {\n Tools.each(settings.requestheaders, function (header) {\n xhr.setRequestHeader(header.key, header.value);\n });\n }\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr = XHR.fire('beforeSend', {\n xhr: xhr,\n settings: settings\n }).xhr;\n xhr.send(settings.data);\n if (!settings.async) {\n return ready();\n }\n setTimeout(ready, 10);\n }\n }\n };\n Tools.extend(XHR, Observable);\n\n var extend$7 = Tools.extend;\n var JSONRequest = function (settings) {\n this.settings = extend$7({}, settings);\n this.count = 0;\n };\n JSONRequest.sendRPC = function (o) {\n return new JSONRequest().send(o);\n };\n JSONRequest.prototype = {\n send: function (args) {\n var ecb = args.error, scb = args.success;\n args = extend$7(this.settings, args);\n args.success = function (c, x) {\n c = JSON$1.parse(c);\n if (typeof c === 'undefined') {\n c = { error: 'JSON Parse error.' };\n }\n if (c.error) {\n ecb.call(args.error_scope || args.scope, c.error, x);\n } else {\n scb.call(args.success_scope || args.scope, c.result);\n }\n };\n args.error = function (ty, x) {\n if (ecb) {\n ecb.call(args.error_scope || args.scope, ty, x);\n }\n };\n args.data = JSON$1.serialize({\n id: args.id || 'c' + this.count++,\n method: args.method,\n params: args.params\n });\n args.content_type = 'application/json';\n XHR.send(args);\n }\n };\n\n var create$4 = function () {\n return function () {\n var data = {};\n var keys = [];\n var storage = {\n getItem: function (key) {\n var item = data[key];\n return item ? item : null;\n },\n setItem: function (key, value) {\n keys.push(key);\n data[key] = String(value);\n },\n key: function (index) {\n return keys[index];\n },\n removeItem: function (key) {\n keys = keys.filter(function (k) {\n return k === key;\n });\n delete data[key];\n },\n clear: function () {\n keys = [];\n data = {};\n },\n length: 0\n };\n Object.defineProperty(storage, 'length', {\n get: function () {\n return keys.length;\n },\n configurable: false,\n enumerable: false\n });\n return storage;\n }();\n };\n\n var localStorage$$1;\n try {\n localStorage$$1 = window.localStorage;\n } catch (e) {\n localStorage$$1 = create$4();\n }\n var LocalStorage = localStorage$$1;\n\n var tinymce = EditorManager$1;\n var publicApi = {\n geom: { Rect: Rect },\n util: {\n Promise: promiseObj,\n Delay: Delay,\n Tools: Tools,\n VK: VK,\n URI: URI,\n Class: Class,\n EventDispatcher: Dispatcher,\n Observable: Observable,\n I18n: I18n,\n XHR: XHR,\n JSON: JSON$1,\n JSONRequest: JSONRequest,\n JSONP: JSONP,\n LocalStorage: LocalStorage,\n Color: Color\n },\n dom: {\n EventUtils: EventUtils,\n Sizzle: Sizzle,\n DomQuery: DomQuery,\n TreeWalker: TreeWalker,\n DOMUtils: DOMUtils$1,\n ScriptLoader: ScriptLoader,\n RangeUtils: RangeUtils$1,\n Serializer: Serializer$1,\n ControlSelection: ControlSelection,\n BookmarkManager: BookmarkManager$1,\n Selection: Selection,\n Event: EventUtils.Event\n },\n html: {\n Styles: Styles,\n Entities: Entities,\n Node: Node$2,\n Schema: Schema,\n SaxParser: SaxParser$1,\n DomParser: DomParser,\n Writer: Writer,\n Serializer: Serializer\n },\n ui: { Factory: Factory },\n Env: Env,\n AddOnManager: AddOnManager,\n Annotator: Annotator,\n Formatter: Formatter,\n UndoManager: UndoManager,\n EditorCommands: EditorCommands,\n WindowManager: WindowManager,\n NotificationManager: NotificationManager,\n EditorObservable: EditorObservable$1,\n Shortcuts: Shortcuts,\n Editor: Editor,\n FocusManager: FocusManager,\n EditorManager: EditorManager$1,\n DOM: DOMUtils$1.DOM,\n ScriptLoader: ScriptLoader.ScriptLoader,\n PluginManager: AddOnManager.PluginManager,\n ThemeManager: AddOnManager.ThemeManager,\n trim: Tools.trim,\n isArray: Tools.isArray,\n is: Tools.is,\n toArray: Tools.toArray,\n makeMap: Tools.makeMap,\n each: Tools.each,\n map: Tools.map,\n grep: Tools.grep,\n inArray: Tools.inArray,\n extend: Tools.extend,\n create: Tools.create,\n walk: Tools.walk,\n createNS: Tools.createNS,\n resolve: Tools.resolve,\n explode: Tools.explode,\n _addCacheSuffix: Tools._addCacheSuffix,\n isOpera: Env.opera,\n isWebKit: Env.webkit,\n isIE: Env.ie,\n isGecko: Env.gecko,\n isMac: Env.mac\n };\n tinymce = Tools.extend(tinymce, publicApi);\n var Tinymce = tinymce;\n\n var exportToModuleLoaders = function (tinymce) {\n if (typeof module === 'object') {\n try {\n module.exports = tinymce;\n } catch (_) {\n }\n }\n };\n var exportToWindowGlobal = function (tinymce) {\n window.tinymce = tinymce;\n window.tinyMCE = tinymce;\n };\n exportToWindowGlobal(Tinymce);\n exportToModuleLoaders(Tinymce);\n\n}());\n})();\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _formatMessage = _interopRequireDefault(require(\"format-message\"));\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 .\n */\nvar ns = _formatMessage.default.namespace();\n\nns.addLocale = function (translations) {\n ns.setup({\n translations: (0, _objectSpread2.default)({}, ns.setup().translations, translations)\n });\n};\n\nvar _default = ns;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.omitProps = omitProps;\nexports.pickProps = pickProps;\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 * category: utilities/react\n * ---\n * @module passthroughProps\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar omit = function omit(originalObject, keys) {\n // code based on babel's _objectWithoutProperties\n var newObject = {};\n\n for (var key in originalObject) {\n // special case because we always want to omit these and === is faster than concat'ing them in\n if (key === 'theme' || key === 'children' || key === 'className' || key === 'style') continue;\n if (keys.includes(key) || !hasOwnProperty.call(originalObject, key)) continue;\n newObject[key] = originalObject[key];\n }\n\n return newObject;\n};\n/**\n * Return a props object with the specified propTypes omitted.\n * Automatically excludes ('theme', 'children', 'className', 'style')\n *\n * @param {Object} props React component props\n * @param {Object} propTypes React component propTypes\n * @param {Array} exclude an optional array of prop names to exclude\n * @returns {Object} props object without the excluded props\n */\n\n\nfunction omitProps(props, propTypes, exclude) {\n var keys = Object.keys(propTypes || {});\n var combined = exclude ? keys.concat(exclude) : keys;\n return omit(props, combined);\n} // this was the fastest implementation from testing: https://jsperf.com/pick-props\n\n\nfunction pick(obj, keys) {\n var res = {};\n var len = keys.length;\n var idx = -1;\n var key;\n\n while (++idx < len) {\n key = keys[idx];\n\n if (key in obj) {\n res[key] = obj[key];\n }\n }\n\n return res;\n}\n/**\n * Return a props object with only specified propTypes.\n *\n * @param {Object} props React component props\n * @param {Object} propTypes React component propTypes\n * @param {Array} include an optional array of prop names to include\n * @returns {Object} props object with only the included props\n */\n\n\nfunction pickProps(props, propTypes, include) {\n var keys = Object.keys(propTypes || {});\n var combined = include ? keys.concat(include) : keys;\n return pick(props, combined);\n}","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\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 .\n */\nfunction _default(ed, document) {\n var ev = document.createEvent(\"CustomEvent\");\n ev.initCustomEvent(\"tinyRCE/initLinks\", true, true, {\n ed: ed\n });\n document.dispatchEvent(ev);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _SVGIcon = _interopRequireDefault(require(\"@instructure/ui-svg-images/lib/components/SVGIcon\"));\n\nvar _ref =\n/*#__PURE__*/\n_react.default.createElement(\"path\", {\n d: \"M568.13.012L392 176.142l783.864 783.989L392 1743.87 568.13 1920l960.118-959.87z\",\n fillRule: \"evenodd\",\n stroke: \"none\",\n strokeWidth: \"1\"\n});\n\nvar IconArrowOpenEnd =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(IconArrowOpenEnd, _Component);\n\n function IconArrowOpenEnd() {\n (0, _classCallCheck2.default)(this, IconArrowOpenEnd);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(IconArrowOpenEnd).apply(this, arguments));\n }\n\n (0, _createClass2.default)(IconArrowOpenEnd, [{\n key: \"render\",\n value: function render() {\n return _react.default.createElement(_SVGIcon.default, Object.assign({}, this.props, {\n name: \"IconArrowOpenEnd\",\n viewBox: \"0 0 1920 1920\",\n bidirectional: true\n }), _ref);\n }\n }]);\n IconArrowOpenEnd.displayName = \"IconArrowOpenEnd\";\n return IconArrowOpenEnd;\n}(_react.Component);\n\nexports.default = IconArrowOpenEnd;\nIconArrowOpenEnd.glyphName = 'arrow-open-end';\nIconArrowOpenEnd.variant = 'Solid';\nIconArrowOpenEnd.propTypes = (0, _objectSpread2.default)({}, _SVGIcon.default.propTypes);","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _canUseDOM = _interopRequireDefault(require(\"@instructure/ui-utils/lib/dom/canUseDOM\"));\n\nvar _getComputedStyle = _interopRequireDefault(require(\"@instructure/ui-utils/lib/dom/getComputedStyle\"));\n\n/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2018 - 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 */\nvar observer;\n/**\n * ---\n * category: utilities/i18n\n * ---\n *\n * Return the direction ('ltr' or 'rtl') of an element\n * @param {Element} element will use the element by default\n * @returns {String} 'ltr' or 'rtl' (or `undefined` if no DOM is present)\n */\n\nvar _default = _canUseDOM.default ? function () {\n /**\n * use a cached value for the default of element's \"dir\" so we don't\n * have to call the expensive getComputedStyle to look it it up every time\n */\n var htmlEl = document.documentElement;\n var htmlElDir = htmlEl.getAttribute('dir') || (0, _getComputedStyle.default)(htmlEl).direction;\n\n if (!observer) {\n observer = new MutationObserver(function () {\n htmlElDir = htmlEl.getAttribute('dir');\n });\n observer.observe(htmlEl, {\n attributes: true\n });\n }\n\n return function (element) {\n if (typeof element === 'undefined' || element === htmlEl) return htmlElDir;\n return (0, _getComputedStyle.default)(element).direction;\n };\n}() : function () {};\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = matchComponentTypes;\n\nvar _getDisplayName = _interopRequireDefault(require(\"./getDisplayName\"));\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 * category: utilities/react\n * ---\n * Check if a React component instance (React element) matches one of the\n * specified types.\n *\n * @param {ReactComponent} componentInstance\n * @param {Array} types an array of React components\n * @returns {Boolean} true if the component matches at least one of the types\n */\nfunction matchComponentTypes(componentInstance) {\n var types = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];\n\n if (componentInstance && componentInstance.type) {\n var displayNames = types.map(function (type) {\n return (0, _getDisplayName.default)(type);\n });\n return displayNames.indexOf((0, _getDisplayName.default)(componentInstance.type)) >= 0;\n } else {\n return false;\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _keycode = _interopRequireDefault(require(\"keycode\"));\n\nvar _uiThemeable = _interopRequireDefault(require(\"@instructure/ui-themeable\"));\n\nvar _uiPropTypes = require(\"@instructure/ui-prop-types\");\n\nvar _passthroughProps = require(\"@instructure/ui-utils/lib/react/passthroughProps\");\n\nvar _isActiveElement = _interopRequireDefault(require(\"@instructure/ui-utils/lib/dom/isActiveElement\"));\n\nvar _IconArrowOpenDown = _interopRequireDefault(require(\"@instructure/ui-icons/lib/Solid/IconArrowOpenDown\"));\n\nvar _uid = _interopRequireDefault(require(\"@instructure/uid\"));\n\nvar _deprecated = _interopRequireWildcard(require(\"@instructure/ui-utils/lib/react/deprecated\"));\n\nvar _FormField = _interopRequireDefault(require(\"@instructure/ui-forms/lib/components/FormField\"));\n\nvar _FormPropTypes = _interopRequireDefault(require(\"@instructure/ui-forms/lib/utils/FormPropTypes\"));\n\nvar _theme = _interopRequireDefault(require(\"./theme\"));\n\nvar _dec, _dec2, _class, _class2, _temp;\n\nvar styles = {\n componentId: 'dLdjY',\n template: function template(theme) {\n return \"\\n\\n.dLdjY_bGBk{display:block;position:relative}\\n\\n.dLdjY_bGBk .dLdjY_fAVq{color:\".concat(theme.arrowColor || 'inherit', \";display:block;inset-inline-end:\").concat(theme.padding || 'inherit', \";inset-inline-start:auto;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}\\n\\n[dir=ltr] .dLdjY_bGBk .dLdjY_fAVq{left:auto;right:\").concat(theme.padding || 'inherit', \"}\\n\\n[dir=rtl] .dLdjY_bGBk .dLdjY_fAVq{left:\").concat(theme.padding || 'inherit', \";right:auto}\\n\\n.dLdjY_bGBk .dLdjY_bDLZ{-moz-appearance:none;-webkit-appearance:none;all:initial;animation:none 0s ease 0s 1 normal none running;appearance:none;backface-visibility:visible;background:transparent none repeat 0 0/auto auto padding-box border-box scroll;background:\").concat(theme.background || 'inherit', \";border:medium none currentColor;border-bottom-color:\").concat(theme.borderBottomColor || 'inherit', \";border-collapse:separate;border-image:none;border-left-color:\").concat(theme.borderLeftColor || 'inherit', \";border-radius:0;border-radius:\").concat(theme.borderRadius || 'inherit', \";border-right-color:\").concat(theme.borderRightColor || 'inherit', \";border-spacing:0;border-style:\").concat(theme.borderStyle || 'inherit', \";border-top-color:\").concat(theme.borderTopColor || 'inherit', \";border-width:\").concat(theme.borderWidth || 'inherit', \";bottom:auto;box-shadow:none;box-sizing:content-box;box-sizing:border-box;caption-side:top;clear:none;clip:auto;color:#000;color:\").concat(theme.color || 'inherit', \";column-count:auto;column-fill:balance;column-gap:normal;column-rule:medium none currentColor;column-span:1;column-width:auto;columns:auto;content:normal;counter-increment:none;counter-reset:none;cursor:auto;direction:ltr;direction:inherit;display:inline;display:block;empty-cells:show;float:none;font-family:serif;font-family:\").concat(theme.fontFamily || 'inherit', \";font-size:medium;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;font-weight:\").concat(theme.fontWeight || 'inherit', \";height:auto;hyphens:none;left:auto;letter-spacing:normal;line-height:normal;list-style:disc outside none;margin:0;max-height:none;max-width:none;min-height:0;min-width:0;opacity:1;orphans:2;outline:medium none invert;outline:0.1875rem solid transparent;outline-offset:-0.5rem;overflow:visible;overflow-x:visible;overflow-y:visible;padding:0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;perspective:none;perspective-origin:50% 50%;position:static;right:auto;tab-size:8;table-layout:auto;text-align:left;text-align-last:auto;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;top:auto;transform:none;transform-origin:50% 50% 0;transform-style:flat;transition:none 0s ease 0s;transition:all 0.2s ease-out;unicode-bidi:normal;vertical-align:baseline;visibility:visible;white-space:normal;widows:2;width:auto;width:100%;word-spacing:normal;z-index:auto}\\n\\n.dLdjY_bGBk .dLdjY_bDLZ::-ms-expand{display:none}\\n\\n.dLdjY_bGBk .dLdjY_bDLZ:focus{border-color:\").concat(theme.focusBorderColor || 'inherit', \";outline:0.1875rem solid \").concat(theme.focusOutlineColor || 'inherit', \";outline-offset:-0.1875rem}\\n\\n.dLdjY_bGBk .dLdjY_bDLZ[aria-invalid],.dLdjY_bGBk .dLdjY_bDLZ[aria-invalid]:focus{border-color:\").concat(theme.errorBorderColor || 'inherit', \"}\\n\\n.dLdjY_bGBk .dLdjY_bDLZ[aria-invalid]:focus{outline-color:\").concat(theme.errorOutlineColor || 'inherit', \"}\\n\\n.dLdjY_ywdX{cursor:not-allowed;opacity:0.5;pointer-events:none}\\n\\n.dLdjY_doqw .dLdjY_bDLZ{-webkit-padding-end:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.smallArrowWidth || 'inherit', \");-webkit-padding-start:\").concat(theme.padding || 'inherit', \";font-size:\").concat(theme.smallFontSize || 'inherit', \";height:\").concat(theme.smallHeight || 'inherit', \";line-height:\").concat(theme.smallHeight || 'inherit', \";padding-bottom:0;padding-inline-end:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.smallArrowWidth || 'inherit', \");padding-inline-start:\").concat(theme.padding || 'inherit', \";padding-top:0}\\n\\n[dir=ltr] .dLdjY_doqw .dLdjY_bDLZ{padding-left:\").concat(theme.padding || 'inherit', \";padding-right:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.smallArrowWidth || 'inherit', \")}\\n\\n[dir=rtl] .dLdjY_doqw .dLdjY_bDLZ{padding-left:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.smallArrowWidth || 'inherit', \");padding-right:\").concat(theme.padding || 'inherit', \"}\\n\\n.dLdjY_doqw .dLdjY_fAVq{font-size:\").concat(theme.smallArrowWidth || 'inherit', \"}\\n\\n.dLdjY_ycrn .dLdjY_bDLZ{-webkit-padding-end:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.mediumArrowWidth || 'inherit', \");-webkit-padding-start:\").concat(theme.padding || 'inherit', \";font-size:\").concat(theme.mediumFontSize || 'inherit', \";height:\").concat(theme.mediumHeight || 'inherit', \";line-height:\").concat(theme.mediumHeight || 'inherit', \";padding-bottom:0;padding-inline-end:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.mediumArrowWidth || 'inherit', \");padding-inline-start:\").concat(theme.padding || 'inherit', \";padding-top:0}\\n\\n[dir=ltr] .dLdjY_ycrn .dLdjY_bDLZ{padding-left:\").concat(theme.padding || 'inherit', \";padding-right:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.mediumArrowWidth || 'inherit', \")}\\n\\n[dir=rtl] .dLdjY_ycrn .dLdjY_bDLZ{padding-left:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.mediumArrowWidth || 'inherit', \");padding-right:\").concat(theme.padding || 'inherit', \"}\\n\\n.dLdjY_ycrn .dLdjY_fAVq{font-size:\").concat(theme.mediumArrowWidth || 'inherit', \"}\\n\\n.dLdjY_cMDj .dLdjY_bDLZ{-webkit-padding-end:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.largeArrowWidth || 'inherit', \");-webkit-padding-start:\").concat(theme.padding || 'inherit', \";font-size:\").concat(theme.largeFontSize || 'inherit', \";height:\").concat(theme.largeHeight || 'inherit', \";line-height:\").concat(theme.largeHeight || 'inherit', \";padding-bottom:0;padding-inline-end:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.largeArrowWidth || 'inherit', \");padding-inline-start:\").concat(theme.padding || 'inherit', \";padding-top:0}\\n\\n[dir=ltr] .dLdjY_cMDj .dLdjY_bDLZ{padding-left:\").concat(theme.padding || 'inherit', \";padding-right:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.largeArrowWidth || 'inherit', \")}\\n\\n[dir=rtl] .dLdjY_cMDj .dLdjY_bDLZ{padding-left:calc(\").concat(theme.padding || 'inherit', \"*2 + \").concat(theme.largeArrowWidth || 'inherit', \");padding-right:\").concat(theme.padding || 'inherit', \"}\\n\\n.dLdjY_cMDj .dLdjY_fAVq{font-size:\").concat(theme.largeArrowWidth || 'inherit', \"}\");\n },\n 'root': 'dLdjY_bGBk',\n 'arrow': 'dLdjY_fAVq',\n 'select': 'dLdjY_bDLZ',\n 'disabled': 'dLdjY_ywdX',\n 'small': 'dLdjY_doqw',\n 'medium': 'dLdjY_ycrn',\n 'large': 'dLdjY_cMDj'\n};\nvar Select = (_dec = (0, _deprecated.default)('5.0.0', null, (0, _deprecated.changedPackageWarning)('ui-core', 'ui-forms')), _dec2 = (0, _uiThemeable.default)(_theme.default, styles), _dec(_class = _dec2(_class = (_temp = _class2 =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(Select, _Component);\n\n function Select(props) {\n var _this;\n\n (0, _classCallCheck2.default)(this, Select);\n _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Select).call(this));\n\n _this.handleChange = function (e) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n disabled = _this$props.disabled;\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (typeof onChange === 'function') {\n onChange(e);\n }\n };\n\n _this.handleKeyDown = function (e) {\n var _this$props2 = _this.props,\n onKeyDown = _this$props2.onKeyDown,\n disabled = _this$props2.disabled;\n var keycodes = [_keycode.default.codes.space, _keycode.default.codes.up, _keycode.default.codes.down];\n\n if (disabled && (keycodes.includes(e.keyCode) || e.keyCode >= 48 && e.keyCode <= 57 || // 0 - 9\n e.keyCode >= 65 && e.keyCode <= 90 || // A - Z\n e.keyCode >= 96 && e.keyCode <= 105 // numpad 0 - 9\n )) {\n e.preventDefault();\n return;\n }\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(e);\n }\n };\n\n _this._defaultId = (0, _uid.default)('Select');\n return _this;\n }\n\n (0, _createClass2.default)(Select, [{\n key: \"focus\",\n value: function focus() {\n this._select.focus();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classes,\n _this2 = this;\n\n var _this$props3 = this.props,\n size = _this$props3.size,\n children = _this$props3.children,\n width = _this$props3.width,\n layout = _this$props3.layout,\n selectRef = _this$props3.selectRef,\n onBlur = _this$props3.onBlur,\n required = _this$props3.required,\n disabled = _this$props3.disabled,\n value = _this$props3.value,\n defaultValue = _this$props3.defaultValue;\n var props = (0, _passthroughProps.omitProps)(this.props, Select.propTypes);\n var classes = (_classes = {}, (0, _defineProperty2.default)(_classes, styles.root, true), (0, _defineProperty2.default)(_classes, styles[size], size), (0, _defineProperty2.default)(_classes, styles.disabled, disabled), _classes);\n var style = width ? {\n width: width\n } : null;\n return _react.default.createElement(_FormField.default, Object.assign({}, (0, _passthroughProps.pickProps)(this.props, _FormField.default.propTypes), {\n layout: layout,\n id: this.id\n }), _react.default.createElement(\"span\", {\n className: (0, _classnames.default)(classes),\n style: style\n }, _react.default.createElement(\"select\", Object.assign({}, props, {\n id: this.id,\n ref: function ref(select) {\n _this2._select = select;\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 selectRef.apply(_this2, [select].concat(args));\n },\n value: value,\n defaultValue: defaultValue,\n onBlur: onBlur,\n onChange: this.handleChange,\n onKeyDown: this.handleKeyDown,\n className: styles.select,\n required: required,\n \"aria-required\": required,\n \"aria-invalid\": this.invalid ? 'true' : null,\n \"aria-disabled\": disabled ? 'true' : null,\n disabled: disabled\n }), children), _react.default.createElement(_IconArrowOpenDown.default, {\n className: styles.arrow\n })));\n }\n }, {\n key: \"id\",\n get: function get() {\n return this.props.id || this._defaultId;\n }\n }, {\n key: \"invalid\",\n get: function get() {\n return this.props.messages && this.props.messages.findIndex(function (message) {\n return message.type === 'error';\n }) >= 0;\n }\n }, {\n key: \"focused\",\n get: function get() {\n return (0, _isActiveElement.default)(this._select);\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._select.value;\n }\n }]);\n Select.displayName = \"Select\";\n return Select;\n}(_react.Component), _class2.propTypes = {\n /**\n * Children must be option tags.\n */\n children: _uiPropTypes.Children.oneOf(['option']),\n label: _propTypes.default.node.isRequired,\n disabled: _propTypes.default.bool,\n\n /**\n * object with shape: `{\n * text: PropTypes.string,\n * type: PropTypes.oneOf(['error', 'hint', 'success', 'screenreader-only'])\n * }`\n */\n messages: _propTypes.default.arrayOf(_FormPropTypes.default.message),\n id: _propTypes.default.string,\n size: _propTypes.default.oneOf(['small', 'medium', 'large']),\n layout: _propTypes.default.oneOf(['stacked', 'inline']),\n required: _propTypes.default.bool,\n inline: _propTypes.default.bool,\n width: _propTypes.default.string,\n\n /**\n * a function that provides a reference to the actual select element\n */\n selectRef: _propTypes.default.func,\n\n /**\n * value to set on initial render\n */\n defaultValue: _propTypes.default.string,\n\n /**\n * the selected value (must be accompanied by an `onChange` prop)\n */\n value: (0, _uiPropTypes.controllable)(_propTypes.default.string),\n\n /**\n * when used with the `value` prop, the component will not control its own state\n */\n onChange: _propTypes.default.func,\n onBlur: _propTypes.default.func,\n onKeyDown: _propTypes.default.func\n}, _class2.defaultProps = {\n required: false,\n width: void 0,\n inline: false,\n type: 'text',\n size: 'medium',\n layout: 'stacked',\n messages: [],\n disabled: false,\n selectRef: function selectRef(select) {},\n children: null,\n id: void 0,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n onBlur: void 0,\n onKeyDown: void 0\n}, _temp)) || _class) || _class);\nvar _default = Select;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = parse;\nexports.clean = clean;\nexports.ruleTypes = void 0;\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* category: utilities/themes\n* ---\n* Parses a CSS string into an AST object\n* @module parseCss\n* @param {String} cssText CSS string to parse\n* @returns {Object} AST for the CSS string\n*/\nfunction parse() {\n var cssText = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : '';\n var cleaned = clean(cssText);\n return parseLexed(lex(cleaned), cleaned);\n}\n/**\n* CSSRule types (https://developer.mozilla.org/en-US/docs/Web/API/CSSRule)\n*/\n\n\nvar ruleTypes = {\n style: 1,\n keyframes: 7,\n media: 4\n /**\n * Removes comments and import statements from a CSS string\n * (to prep for parsing and applying transforms)\n * @param {String} cssText CSS string to parse\n * @returns {String} cleaned CSS string\n */\n\n};\nexports.ruleTypes = ruleTypes;\n\nfunction clean() {\n var text = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : '';\n // remove comments and imports\n return text.replace(/\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim, '').replace(/@import[^;]*;/gim, '');\n}\n\nfunction lex(text) {\n var rootNode = {\n start: 0,\n end: text.length\n };\n var node = rootNode;\n var chars = text.split('');\n chars.forEach(function (char, i) {\n switch (char) {\n case '{':\n {\n if (!node.rules) {\n node.rules = [];\n }\n\n var parent = node;\n var previous = parent.rules[parent.rules.length - 1];\n node = {\n start: i + 1,\n parent: parent,\n previous: previous\n };\n parent.rules.push(node);\n break;\n }\n\n case '}':\n {\n node.end = i + 1;\n node = node.parent || rootNode;\n break;\n }\n\n default:\n {\n break;\n }\n }\n });\n return rootNode;\n}\n\nfunction parseSelector(node, text) {\n var start = node.previous ? node.previous.end : node.parent.start;\n var end = node.start - 1;\n var selector = text.substring(start, end);\n selector = selector.replace(/\\s+/g, ' ');\n selector = selector.substring(selector.lastIndexOf(';') + 1);\n return selector.trim();\n}\n\nfunction parseRuleType(selector) {\n if (selector.indexOf('@') === 0) {\n if (selector.indexOf('@media') === 0) {\n return ruleTypes.media;\n } else if (selector.match(/^@[^\\s]*keyframes/)) {\n return ruleTypes.keyframes;\n }\n } else {\n return ruleTypes.style;\n }\n}\n\nfunction parseLexed(node) {\n var text = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : '';\n\n /* eslint-disable no-param-reassign */\n if (node.parent) {\n node.selector = parseSelector(node, text);\n node.type = parseRuleType(node.selector);\n }\n\n node.cssText = text.substring(node.start, node.end - 1).trim();\n\n if (node.rules && node.rules.length > 0) {\n node.rules = node.rules.map(function (rule) {\n return parseLexed(rule, text);\n });\n }\n /* eslint-enable no-param-reassign */\n\n\n return node;\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _SVGIcon = _interopRequireDefault(require(\"@instructure/ui-svg-images/lib/components/SVGIcon\"));\n\nvar _ref =\n/*#__PURE__*/\n_react.default.createElement(\"path\", {\n d: \"M994.034 1226.26c-18.796 27.296-49.269 27.3-68.067 0L574.893 716.424C556.096 689.128 567.713 667 600.852 667h718.297c33.133 0 44.757 22.125 25.959 49.424L994.034 1226.26z\",\n fillRule: \"evenodd\",\n stroke: \"none\",\n strokeWidth: \"1\"\n});\n\nvar IconMiniArrowDown =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(IconMiniArrowDown, _Component);\n\n function IconMiniArrowDown() {\n (0, _classCallCheck2.default)(this, IconMiniArrowDown);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(IconMiniArrowDown).apply(this, arguments));\n }\n\n (0, _createClass2.default)(IconMiniArrowDown, [{\n key: \"render\",\n value: function render() {\n return _react.default.createElement(_SVGIcon.default, Object.assign({}, this.props, {\n name: \"IconMiniArrowDown\",\n viewBox: \"0 0 1920 1920\"\n }), _ref);\n }\n }]);\n IconMiniArrowDown.displayName = \"IconMiniArrowDown\";\n return IconMiniArrowDown;\n}(_react.Component);\n\nexports.default = IconMiniArrowDown;\nIconMiniArrowDown.glyphName = 'mini-arrow-down';\nIconMiniArrowDown.variant = 'Line';\nIconMiniArrowDown.propTypes = (0, _objectSpread2.default)({}, _SVGIcon.default.propTypes);","/*\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 */\nimport _default from './uid';\nexport { _default as default };","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _findDOMNode = _interopRequireDefault(require(\"./findDOMNode\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"./ownerDocument\"));\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 * category: utilities/DOM\n * ---\n * Retrieve the owner window object associated with\n * the owner document of the specified element\n * @param {ReactElement|DOMNode} el\n * @returns {Object} the owner window\n */\nfunction _default(el) {\n var node = el && (0, _findDOMNode.default)(el);\n var doc = (0, _ownerDocument.default)(node);\n return doc && (doc.defaultView || doc.parentWindow);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = applyVariablesToNode;\nexports.applyVariablesPolyfillToNode = applyVariablesPolyfillToNode;\nexports.applyVariablesToNodeStyle = applyVariablesToNodeStyle;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _isEmpty = _interopRequireDefault(require(\"@instructure/ui-utils/lib/isEmpty\"));\n\nvar _scopeStylesToNode = _interopRequireDefault(require(\"./scopeStylesToNode\"));\n\nvar _formatVariableNames = _interopRequireDefault(require(\"./formatVariableNames\"));\n\nvar _pickOverrides = _interopRequireDefault(require(\"./pickOverrides\"));\n\nvar _customPropertiesSupported = _interopRequireDefault(require(\"./customPropertiesSupported\"));\n\nvar _getCssText = require(\"./getCssText\");\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 * category: utilities/themes\n * ---\n * Apply theme variables to a DOM node (as CSS variables, with polyfill)\n * @module applyVariablesToNode\n * @param {Element} domNode HTML element to apply variables to using the style attribute\n * @param {Object} variables JS variables\n * @param {Object} defaults Default JS variables\n * @param {String} prefix A variable prefix/namespace\n * @param {Function} template (for IE) A template function that returns the CSS as a string with variables injected\n * @param {String} scope (for IE) A scope to apply to the styles applied to domNode\n */\nfunction applyVariablesToNode() {\n if ((0, _customPropertiesSupported.default)()) {\n applyVariablesToNodeStyle.apply(this, arguments);\n } else {\n applyVariablesPolyfillToNode.apply(this, arguments);\n }\n}\n\nfunction applyVariablesPolyfillToNode(domNode, variables, defaults, prefix, template, scope) {\n if (!domNode || (0, _isEmpty.default)(variables)) {\n return;\n }\n\n var overrides = (0, _pickOverrides.default)(defaults, variables);\n var cssText = '';\n\n if (overrides && Object.keys(overrides).length > 0) {\n cssText = (0, _getCssText.getCssTextWithPolyfill)(template, (0, _objectSpread2.default)({}, defaults, variables));\n }\n\n (0, _scopeStylesToNode.default)(domNode, cssText, scope);\n}\n\nfunction applyVariablesToNodeStyle(domNode, variables, defaults, prefix) {\n if (!domNode || (0, _isEmpty.default)(variables)) {\n return;\n }\n\n clearCustomProperties(domNode, prefix);\n var overrides = (0, _pickOverrides.default)(defaults, variables);\n\n if (overrides && !(0, _isEmpty.default)(overrides)) {\n setCustomProperties(domNode, (0, _formatVariableNames.default)(overrides, prefix));\n }\n}\n\nfunction clearCustomProperties(domNode, prefix) {\n var styles = domNode.style;\n\n for (var i = styles.length - 1; i >= 0; i--) {\n var prop = styles[i];\n\n if (prop.indexOf(\"--\".concat(prefix, \"-\")) >= 0) {\n domNode.style.removeProperty(prop);\n }\n }\n}\n\nfunction setCustomProperties(domNode, properties) {\n Object.keys(properties).forEach(function (propertyName) {\n var value = properties[propertyName];\n\n if (value) {\n domNode.style.setProperty(propertyName, value);\n }\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\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 */\nfunction _default(_ref) {\n var transitions = _ref.transitions;\n return {\n duration: transitions.duration,\n timing: transitions.timing\n };\n}","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\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 * category: utilities/DOM\n * ---\n *\n * Performs simple test to determine if DOM can be accessed\n * @module\n * @returns {boolean} whether the dom can be used\n */\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _SVGIcon = _interopRequireDefault(require(\"@instructure/ui-svg-images/lib/components/SVGIcon\"));\n\nvar _ref =\n/*#__PURE__*/\n_react.default.createElement(\"path\", {\n d: \"M960 0c529.468 0 960 430.645 960 960s-430.532 960-960 960C430.645 1920 0 1489.355 0 960S430.645 0 960 0zM451.765 1016.47h1016.47V903.53H451.765v112.94z\",\n fillRule: \"evenodd\",\n stroke: \"none\",\n strokeWidth: \"1\"\n});\n\nvar IconMinimize =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(IconMinimize, _Component);\n\n function IconMinimize() {\n (0, _classCallCheck2.default)(this, IconMinimize);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(IconMinimize).apply(this, arguments));\n }\n\n (0, _createClass2.default)(IconMinimize, [{\n key: \"render\",\n value: function render() {\n return _react.default.createElement(_SVGIcon.default, Object.assign({}, this.props, {\n name: \"IconMinimize\",\n viewBox: \"0 0 1920 1920\"\n }), _ref);\n }\n }]);\n IconMinimize.displayName = \"IconMinimize\";\n return IconMinimize;\n}(_react.Component);\n\nexports.default = IconMinimize;\nIconMinimize.glyphName = 'minimize';\nIconMinimize.variant = 'Solid';\nIconMinimize.propTypes = (0, _objectSpread2.default)({}, _SVGIcon.default.propTypes);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = generator;\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 */\nfunction generator(_ref) {\n var colors = _ref.colors,\n typography = _ref.typography;\n return {\n color: colors.textDarkest,\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightBold,\n fontSize: typography.fontSizeMedium,\n lineHeight: typography.lineHeightFit\n };\n}\n\ngenerator.canvas = function (variables) {\n return {\n color: variables['ic-brand-font-color-dark']\n };\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = customPropertiesSupported;\n\nvar _canUseDOM = _interopRequireDefault(require(\"@instructure/ui-utils/lib/dom/canUseDOM\"));\n\nvar _Browser = _interopRequireDefault(require(\"@instructure/ui-utils/lib/Browser\"));\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 */\nvar cachedReturnVal;\n/**\n * ---\n * category: utilities/DOM\n * ---\n * check if CSS custom properties (CSS variables) are supported\n * @returns {Boolean} true if the DOM is available and CSS variables are supported\n */\n\nfunction customPropertiesSupported() {\n if (typeof cachedReturnVal !== 'undefined') return cachedReturnVal;\n return cachedReturnVal = _canUseDOM.default && !_Browser.default.msedge && // polyfill edge until improved css variable support\n window.CSS && window.CSS.supports && window.CSS.supports('color', 'var(--primary)');\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _SVGIcon = _interopRequireDefault(require(\"@instructure/ui-svg-images/lib/components/SVGIcon\"));\n\nvar _ref =\n/*#__PURE__*/\n_react.default.createElement(\"path\", {\n d: \"M1807.059 1637.706c0 31.172-25.412 56.47-56.47 56.47H169.411c-31.06 0-56.47-25.298-56.47-56.47V225.94h590.907L854.4 451.824H225.882v112.94H1807.06v1072.942zM990.269 451.824L764.385 113H0v1524.706c0 93.402 76.01 169.412 169.412 169.412h1581.176c93.403 0 169.412-76.01 169.412-169.412V451.824H990.268z\",\n fillRule: \"evenodd\",\n stroke: \"none\",\n strokeWidth: \"1\"\n});\n\nvar IconFolder =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(IconFolder, _Component);\n\n function IconFolder() {\n (0, _classCallCheck2.default)(this, IconFolder);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(IconFolder).apply(this, arguments));\n }\n\n (0, _createClass2.default)(IconFolder, [{\n key: \"render\",\n value: function render() {\n return _react.default.createElement(_SVGIcon.default, Object.assign({}, this.props, {\n name: \"IconFolder\",\n viewBox: \"0 0 1920 1920\",\n bidirectional: true\n }), _ref);\n }\n }]);\n IconFolder.displayName = \"IconFolder\";\n return IconFolder;\n}(_react.Component);\n\nexports.default = IconFolder;\nIconFolder.glyphName = 'folder';\nIconFolder.variant = 'Line';\nIconFolder.propTypes = (0, _objectSpread2.default)({}, _SVGIcon.default.propTypes);","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ownerDocument;\n\nvar _findDOMNode = _interopRequireDefault(require(\"./findDOMNode\"));\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 * category: utilities/DOM\n * ---\n *\n * Retrieve the owner document of a specified element\n *\n * @param {ReactElement|DOMNode} el\n * @returns {DomNode} the owner document\n */\nfunction ownerDocument(el) {\n var node = el && (0, _findDOMNode.default)(el);\n return node && node.ownerDocument || document;\n}","(function () {\nvar media = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var getScripts = function (editor) {\n return editor.getParam('media_scripts');\n };\n var getAudioTemplateCallback = function (editor) {\n return editor.getParam('audio_template_callback');\n };\n var getVideoTemplateCallback = function (editor) {\n return editor.getParam('video_template_callback');\n };\n var hasLiveEmbeds = function (editor) {\n return editor.getParam('media_live_embeds', true);\n };\n var shouldFilterHtml = function (editor) {\n return editor.getParam('media_filter_html', true);\n };\n var getUrlResolver = function (editor) {\n return editor.getParam('media_url_resolver');\n };\n var hasAltSource = function (editor) {\n return editor.getParam('media_alt_source', true);\n };\n var hasPoster = function (editor) {\n return editor.getParam('media_poster', true);\n };\n var hasDimensions = function (editor) {\n return editor.getParam('media_dimensions', true);\n };\n var Settings = {\n getScripts: getScripts,\n getAudioTemplateCallback: getAudioTemplateCallback,\n getVideoTemplateCallback: getVideoTemplateCallback,\n hasLiveEmbeds: hasLiveEmbeds,\n shouldFilterHtml: shouldFilterHtml,\n getUrlResolver: getUrlResolver,\n hasAltSource: hasAltSource,\n hasPoster: hasPoster,\n hasDimensions: hasDimensions\n };\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.html.SaxParser');\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var getVideoScriptMatch = function (prefixes, src) {\n if (prefixes) {\n for (var i = 0; i < prefixes.length; i++) {\n if (src.indexOf(prefixes[i].filter) !== -1) {\n return prefixes[i];\n }\n }\n }\n };\n var VideoScript = { getVideoScriptMatch: getVideoScriptMatch };\n\n var trimPx = function (value) {\n return value.replace(/px$/, '');\n };\n var addPx = function (value) {\n return /^[0-9.]+$/.test(value) ? value + 'px' : value;\n };\n var getSize = function (name) {\n return function (elm) {\n return elm ? trimPx(elm.style[name]) : '';\n };\n };\n var setSize = function (name) {\n return function (elm, value) {\n if (elm) {\n elm.style[name] = addPx(value);\n }\n };\n };\n var Size = {\n getMaxWidth: getSize('maxWidth'),\n getMaxHeight: getSize('maxHeight'),\n setMaxWidth: setSize('maxWidth'),\n setMaxHeight: setSize('maxHeight')\n };\n\n var DOM = global$4.DOM;\n var getEphoxEmbedIri = function (elm) {\n return DOM.getAttrib(elm, 'data-ephox-embed-iri');\n };\n var isEphoxEmbed = function (html) {\n var fragment = DOM.createFragment(html);\n return getEphoxEmbedIri(fragment.firstChild) !== '';\n };\n var htmlToDataSax = function (prefixes, html) {\n var data = {};\n global$3({\n validate: false,\n allow_conditional_comments: true,\n special: 'script,noscript',\n start: function (name, attrs) {\n if (!data.source1 && name === 'param') {\n data.source1 = attrs.map.movie;\n }\n if (name === 'iframe' || name === 'object' || name === 'embed' || name === 'video' || name === 'audio') {\n if (!data.type) {\n data.type = name;\n }\n data = global$2.extend(attrs.map, data);\n }\n if (name === 'script') {\n var videoScript = VideoScript.getVideoScriptMatch(prefixes, attrs.map.src);\n if (!videoScript) {\n return;\n }\n data = {\n type: 'script',\n source1: attrs.map.src,\n width: videoScript.width,\n height: videoScript.height\n };\n }\n if (name === 'source') {\n if (!data.source1) {\n data.source1 = attrs.map.src;\n } else if (!data.source2) {\n data.source2 = attrs.map.src;\n }\n }\n if (name === 'img' && !data.poster) {\n data.poster = attrs.map.src;\n }\n }\n }).parse(html);\n data.source1 = data.source1 || data.src || data.data;\n data.source2 = data.source2 || '';\n data.poster = data.poster || '';\n return data;\n };\n var ephoxEmbedHtmlToData = function (html) {\n var fragment = DOM.createFragment(html);\n var div = fragment.firstChild;\n return {\n type: 'ephox-embed-iri',\n source1: getEphoxEmbedIri(div),\n source2: '',\n poster: '',\n width: Size.getMaxWidth(div),\n height: Size.getMaxHeight(div)\n };\n };\n var htmlToData = function (prefixes, html) {\n return isEphoxEmbed(html) ? ephoxEmbedHtmlToData(html) : htmlToDataSax(prefixes, html);\n };\n var HtmlToData = { htmlToData: htmlToData };\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.Promise');\n\n var guess = function (url) {\n var mimes = {\n mp3: 'audio/mpeg',\n wav: 'audio/wav',\n mp4: 'video/mp4',\n webm: 'video/webm',\n ogg: 'video/ogg',\n swf: 'application/x-shockwave-flash'\n };\n var fileEnd = url.toLowerCase().split('.').pop();\n var mime = mimes[fileEnd];\n return mime ? mime : '';\n };\n var Mime = { guess: guess };\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.html.Writer');\n\n var global$7 = tinymce.util.Tools.resolve('tinymce.html.Schema');\n\n var DOM$1 = global$4.DOM;\n var setAttributes = function (attrs, updatedAttrs) {\n var name;\n var i;\n var value;\n var attr;\n for (name in updatedAttrs) {\n value = '' + updatedAttrs[name];\n if (attrs.map[name]) {\n i = attrs.length;\n while (i--) {\n attr = attrs[i];\n if (attr.name === name) {\n if (value) {\n attrs.map[name] = value;\n attr.value = value;\n } else {\n delete attrs.map[name];\n attrs.splice(i, 1);\n }\n }\n }\n } else if (value) {\n attrs.push({\n name: name,\n value: value\n });\n attrs.map[name] = value;\n }\n }\n };\n var normalizeHtml = function (html) {\n var writer = global$6();\n var parser = global$3(writer);\n parser.parse(html);\n return writer.getContent();\n };\n var updateHtmlSax = function (html, data, updateAll) {\n var writer = global$6();\n var sourceCount = 0;\n var hasImage;\n global$3({\n validate: false,\n allow_conditional_comments: true,\n special: 'script,noscript',\n comment: function (text) {\n writer.comment(text);\n },\n cdata: function (text) {\n writer.cdata(text);\n },\n text: function (text, raw) {\n writer.text(text, raw);\n },\n start: function (name, attrs, empty) {\n switch (name) {\n case 'video':\n case 'object':\n case 'embed':\n case 'img':\n case 'iframe':\n if (data.height !== undefined && data.width !== undefined) {\n setAttributes(attrs, {\n width: data.width,\n height: data.height\n });\n }\n break;\n }\n if (updateAll) {\n switch (name) {\n case 'video':\n setAttributes(attrs, {\n poster: data.poster,\n src: ''\n });\n if (data.source2) {\n setAttributes(attrs, { src: '' });\n }\n break;\n case 'iframe':\n setAttributes(attrs, { src: data.source1 });\n break;\n case 'source':\n sourceCount++;\n if (sourceCount <= 2) {\n setAttributes(attrs, {\n src: data['source' + sourceCount],\n type: data['source' + sourceCount + 'mime']\n });\n if (!data['source' + sourceCount]) {\n return;\n }\n }\n break;\n case 'img':\n if (!data.poster) {\n return;\n }\n hasImage = true;\n break;\n }\n }\n writer.start(name, attrs, empty);\n },\n end: function (name) {\n if (name === 'video' && updateAll) {\n for (var index = 1; index <= 2; index++) {\n if (data['source' + index]) {\n var attrs = [];\n attrs.map = {};\n if (sourceCount < index) {\n setAttributes(attrs, {\n src: data['source' + index],\n type: data['source' + index + 'mime']\n });\n writer.start('source', attrs, true);\n }\n }\n }\n }\n if (data.poster && name === 'object' && updateAll && !hasImage) {\n var imgAttrs = [];\n imgAttrs.map = {};\n setAttributes(imgAttrs, {\n src: data.poster,\n width: data.width,\n height: data.height\n });\n writer.start('img', imgAttrs, true);\n }\n writer.end(name);\n }\n }, global$7({})).parse(html);\n return writer.getContent();\n };\n var isEphoxEmbed$1 = function (html) {\n var fragment = DOM$1.createFragment(html);\n return DOM$1.getAttrib(fragment.firstChild, 'data-ephox-embed-iri') !== '';\n };\n var updateEphoxEmbed = function (html, data) {\n var fragment = DOM$1.createFragment(html);\n var div = fragment.firstChild;\n Size.setMaxWidth(div, data.width);\n Size.setMaxHeight(div, data.height);\n return normalizeHtml(div.outerHTML);\n };\n var updateHtml = function (html, data, updateAll) {\n return isEphoxEmbed$1(html) ? updateEphoxEmbed(html, data) : updateHtmlSax(html, data, updateAll);\n };\n var UpdateHtml = { updateHtml: updateHtml };\n\n var urlPatterns = [\n {\n regex: /youtu\\.be\\/([\\w\\-_\\?&=.]+)/i,\n type: 'iframe',\n w: 560,\n h: 314,\n url: '//www.youtube.com/embed/$1',\n allowFullscreen: true\n },\n {\n regex: /youtube\\.com(.+)v=([^&]+)(&([a-z0-9&=\\-_]+))?/i,\n type: 'iframe',\n w: 560,\n h: 314,\n url: '//www.youtube.com/embed/$2?$4',\n allowFullscreen: true\n },\n {\n regex: /youtube.com\\/embed\\/([a-z0-9\\?&=\\-_]+)/i,\n type: 'iframe',\n w: 560,\n h: 314,\n url: '//www.youtube.com/embed/$1',\n allowFullscreen: true\n },\n {\n regex: /vimeo\\.com\\/([0-9]+)/,\n type: 'iframe',\n w: 425,\n h: 350,\n url: '//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc',\n allowFullscreen: true\n },\n {\n regex: /vimeo\\.com\\/(.*)\\/([0-9]+)/,\n type: 'iframe',\n w: 425,\n h: 350,\n url: '//player.vimeo.com/video/$2?title=0&byline=0',\n allowFullscreen: true\n },\n {\n regex: /maps\\.google\\.([a-z]{2,3})\\/maps\\/(.+)msid=(.+)/,\n type: 'iframe',\n w: 425,\n h: 350,\n url: '//maps.google.com/maps/ms?msid=$2&output=embed\"',\n allowFullscreen: false\n },\n {\n regex: /dailymotion\\.com\\/video\\/([^_]+)/,\n type: 'iframe',\n w: 480,\n h: 270,\n url: '//www.dailymotion.com/embed/video/$1',\n allowFullscreen: true\n },\n {\n regex: /dai\\.ly\\/([^_]+)/,\n type: 'iframe',\n w: 480,\n h: 270,\n url: '//www.dailymotion.com/embed/video/$1',\n allowFullscreen: true\n }\n ];\n var getUrl = function (pattern, url) {\n var match = pattern.regex.exec(url);\n var newUrl = pattern.url;\n var _loop_1 = function (i) {\n newUrl = newUrl.replace('$' + i, function () {\n return match[i] ? match[i] : '';\n });\n };\n for (var i = 0; i < match.length; i++) {\n _loop_1(i);\n }\n return newUrl.replace(/\\?$/, '');\n };\n var matchPattern = function (url) {\n var pattern = urlPatterns.filter(function (pattern) {\n return pattern.regex.test(url);\n });\n if (pattern.length > 0) {\n return global$2.extend({}, pattern[0], { url: getUrl(pattern[0], url) });\n } else {\n return null;\n }\n };\n\n var getIframeHtml = function (data) {\n var allowFullscreen = data.allowFullscreen ? ' allowFullscreen=\"1\"' : '';\n return '';\n };\n var getFlashHtml = function (data) {\n var html = '';\n if (data.poster) {\n html += '';\n }\n html += '';\n return html;\n };\n var getAudioHtml = function (data, audioTemplateCallback) {\n if (audioTemplateCallback) {\n return audioTemplateCallback(data);\n } else {\n return '';\n }\n };\n var getVideoHtml = function (data, videoTemplateCallback) {\n if (videoTemplateCallback) {\n return videoTemplateCallback(data);\n } else {\n return '';\n }\n };\n var getScriptHtml = function (data) {\n return '';\n };\n var dataToHtml = function (editor, dataIn) {\n var data = global$2.extend({}, dataIn);\n if (!data.source1) {\n global$2.extend(data, HtmlToData.htmlToData(Settings.getScripts(editor), data.embed));\n if (!data.source1) {\n return '';\n }\n }\n if (!data.source2) {\n data.source2 = '';\n }\n if (!data.poster) {\n data.poster = '';\n }\n data.source1 = editor.convertURL(data.source1, 'source');\n data.source2 = editor.convertURL(data.source2, 'source');\n data.source1mime = Mime.guess(data.source1);\n data.source2mime = Mime.guess(data.source2);\n data.poster = editor.convertURL(data.poster, 'poster');\n var pattern = matchPattern(data.source1);\n if (pattern) {\n data.source1 = pattern.url;\n data.type = pattern.type;\n data.allowFullscreen = pattern.allowFullscreen;\n data.width = data.width || pattern.w;\n data.height = data.height || pattern.h;\n }\n if (data.embed) {\n return UpdateHtml.updateHtml(data.embed, data, true);\n } else {\n var videoScript = VideoScript.getVideoScriptMatch(Settings.getScripts(editor), data.source1);\n if (videoScript) {\n data.type = 'script';\n data.width = videoScript.width;\n data.height = videoScript.height;\n }\n var audioTemplateCallback = Settings.getAudioTemplateCallback(editor);\n var videoTemplateCallback = Settings.getVideoTemplateCallback(editor);\n data.width = data.width || 300;\n data.height = data.height || 150;\n global$2.each(data, function (value, key) {\n data[key] = editor.dom.encode(value);\n });\n if (data.type === 'iframe') {\n return getIframeHtml(data);\n } else if (data.source1mime === 'application/x-shockwave-flash') {\n return getFlashHtml(data);\n } else if (data.source1mime.indexOf('audio') !== -1) {\n return getAudioHtml(data, audioTemplateCallback);\n } else if (data.type === 'script') {\n return getScriptHtml(data);\n } else {\n return getVideoHtml(data, videoTemplateCallback);\n }\n }\n };\n var DataToHtml = { dataToHtml: dataToHtml };\n\n var cache = {};\n var embedPromise = function (data, dataToHtml, handler) {\n return new global$5(function (res, rej) {\n var wrappedResolve = function (response) {\n if (response.html) {\n cache[data.source1] = response;\n }\n return res({\n url: data.source1,\n html: response.html ? response.html : dataToHtml(data)\n });\n };\n if (cache[data.source1]) {\n wrappedResolve(cache[data.source1]);\n } else {\n handler({ url: data.source1 }, wrappedResolve, rej);\n }\n });\n };\n var defaultPromise = function (data, dataToHtml) {\n return new global$5(function (res) {\n res({\n html: dataToHtml(data),\n url: data.source1\n });\n });\n };\n var loadedData = function (editor) {\n return function (data) {\n return DataToHtml.dataToHtml(editor, data);\n };\n };\n var getEmbedHtml = function (editor, data) {\n var embedHandler = Settings.getUrlResolver(editor);\n return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor));\n };\n var isCached = function (url) {\n return cache.hasOwnProperty(url);\n };\n var Service = {\n getEmbedHtml: getEmbedHtml,\n isCached: isCached\n };\n\n var doSyncSize = function (widthCtrl, heightCtrl) {\n widthCtrl.state.set('oldVal', widthCtrl.value());\n heightCtrl.state.set('oldVal', heightCtrl.value());\n };\n var doSizeControls = function (win, f) {\n var widthCtrl = win.find('#width')[0];\n var heightCtrl = win.find('#height')[0];\n var constrained = win.find('#constrain')[0];\n if (widthCtrl && heightCtrl && constrained) {\n f(widthCtrl, heightCtrl, constrained.checked());\n }\n };\n var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {\n var oldWidth = widthCtrl.state.get('oldVal');\n var oldHeight = heightCtrl.state.get('oldVal');\n var newWidth = widthCtrl.value();\n var newHeight = heightCtrl.value();\n if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {\n if (newWidth !== oldWidth) {\n newHeight = Math.round(newWidth / oldWidth * newHeight);\n if (!isNaN(newHeight)) {\n heightCtrl.value(newHeight);\n }\n } else {\n newWidth = Math.round(newHeight / oldHeight * newWidth);\n if (!isNaN(newWidth)) {\n widthCtrl.value(newWidth);\n }\n }\n }\n doSyncSize(widthCtrl, heightCtrl);\n };\n var syncSize = function (win) {\n doSizeControls(win, doSyncSize);\n };\n var updateSize = function (win) {\n doSizeControls(win, doUpdateSize);\n };\n var createUi = function (onChange) {\n var recalcSize = function () {\n onChange(function (win) {\n updateSize(win);\n });\n };\n return {\n type: 'container',\n label: 'Dimensions',\n layout: 'flex',\n align: 'center',\n spacing: 5,\n items: [\n {\n name: 'width',\n type: 'textbox',\n maxLength: 5,\n size: 5,\n onchange: recalcSize,\n ariaLabel: 'Width'\n },\n {\n type: 'label',\n text: 'x'\n },\n {\n name: 'height',\n type: 'textbox',\n maxLength: 5,\n size: 5,\n onchange: recalcSize,\n ariaLabel: 'Height'\n },\n {\n name: 'constrain',\n type: 'checkbox',\n checked: true,\n text: 'Constrain proportions'\n }\n ]\n };\n };\n var SizeManager = {\n createUi: createUi,\n syncSize: syncSize,\n updateSize: updateSize\n };\n\n var embedChange = global$1.ie && global$1.ie <= 8 ? 'onChange' : 'onInput';\n var handleError = function (editor) {\n return function (error) {\n var errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.';\n editor.notificationManager.open({\n type: 'error',\n text: errorMessage\n });\n };\n };\n var getData = function (editor) {\n var element = editor.selection.getNode();\n var dataEmbed = element.getAttribute('data-ephox-embed-iri');\n if (dataEmbed) {\n return {\n 'source1': dataEmbed,\n 'data-ephox-embed-iri': dataEmbed,\n 'width': Size.getMaxWidth(element),\n 'height': Size.getMaxHeight(element)\n };\n }\n return element.getAttribute('data-mce-object') ? HtmlToData.htmlToData(Settings.getScripts(editor), editor.serializer.serialize(element, { selection: true })) : {};\n };\n var getSource = function (editor) {\n var elm = editor.selection.getNode();\n if (elm.getAttribute('data-mce-object') || elm.getAttribute('data-ephox-embed-iri')) {\n return editor.selection.getContent();\n }\n };\n var addEmbedHtml = function (win, editor) {\n return function (response) {\n var html = response.html;\n var embed = win.find('#embed')[0];\n var data = global$2.extend(HtmlToData.htmlToData(Settings.getScripts(editor), html), { source1: response.url });\n win.fromJSON(data);\n if (embed) {\n embed.value(html);\n SizeManager.updateSize(win);\n }\n };\n };\n var selectPlaceholder = function (editor, beforeObjects) {\n var i;\n var y;\n var afterObjects = editor.dom.select('img[data-mce-object]');\n for (i = 0; i < beforeObjects.length; i++) {\n for (y = afterObjects.length - 1; y >= 0; y--) {\n if (beforeObjects[i] === afterObjects[y]) {\n afterObjects.splice(y, 1);\n }\n }\n }\n editor.selection.select(afterObjects[0]);\n };\n var handleInsert = function (editor, html) {\n var beforeObjects = editor.dom.select('img[data-mce-object]');\n editor.insertContent(html);\n selectPlaceholder(editor, beforeObjects);\n editor.nodeChanged();\n };\n var submitForm = function (win, editor) {\n var data = win.toJSON();\n data.embed = UpdateHtml.updateHtml(data.embed, data);\n if (data.embed && Service.isCached(data.source1)) {\n handleInsert(editor, data.embed);\n } else {\n Service.getEmbedHtml(editor, data).then(function (response) {\n handleInsert(editor, response.html);\n }).catch(handleError(editor));\n }\n };\n var populateMeta = function (win, meta) {\n global$2.each(meta, function (value, key) {\n win.find('#' + key).value(value);\n });\n };\n var showDialog = function (editor) {\n var win;\n var data;\n var generalFormItems = [{\n name: 'source1',\n type: 'filepicker',\n filetype: 'media',\n size: 40,\n autofocus: true,\n label: 'Source',\n onpaste: function () {\n setTimeout(function () {\n Service.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));\n }, 1);\n },\n onchange: function (e) {\n Service.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));\n populateMeta(win, e.meta);\n },\n onbeforecall: function (e) {\n e.meta = win.toJSON();\n }\n }];\n var advancedFormItems = [];\n var reserialise = function (update) {\n update(win);\n data = win.toJSON();\n win.find('#embed').value(UpdateHtml.updateHtml(data.embed, data));\n };\n if (Settings.hasAltSource(editor)) {\n advancedFormItems.push({\n name: 'source2',\n type: 'filepicker',\n filetype: 'media',\n size: 40,\n label: 'Alternative source'\n });\n }\n if (Settings.hasPoster(editor)) {\n advancedFormItems.push({\n name: 'poster',\n type: 'filepicker',\n filetype: 'image',\n size: 40,\n label: 'Poster'\n });\n }\n if (Settings.hasDimensions(editor)) {\n var control = SizeManager.createUi(reserialise);\n generalFormItems.push(control);\n }\n data = getData(editor);\n var embedTextBox = {\n id: 'mcemediasource',\n type: 'textbox',\n flex: 1,\n name: 'embed',\n value: getSource(editor),\n multiline: true,\n rows: 5,\n label: 'Source'\n };\n var updateValueOnChange = function () {\n data = global$2.extend({}, HtmlToData.htmlToData(Settings.getScripts(editor), this.value()));\n this.parent().parent().fromJSON(data);\n };\n embedTextBox[embedChange] = updateValueOnChange;\n var body = [\n {\n title: 'General',\n type: 'form',\n items: generalFormItems\n },\n {\n title: 'Embed',\n type: 'container',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n padding: 10,\n spacing: 10,\n items: [\n {\n type: 'label',\n text: 'Paste your embed code below:',\n forId: 'mcemediasource'\n },\n embedTextBox\n ]\n }\n ];\n if (advancedFormItems.length > 0) {\n body.push({\n title: 'Advanced',\n type: 'form',\n items: advancedFormItems\n });\n }\n win = editor.windowManager.open({\n title: 'Insert/edit media',\n data: data,\n bodyType: 'tabpanel',\n body: body,\n onSubmit: function () {\n SizeManager.updateSize(win);\n submitForm(win, editor);\n }\n });\n SizeManager.syncSize(win);\n };\n var Dialog = { showDialog: showDialog };\n\n var get = function (editor) {\n var showDialog = function () {\n Dialog.showDialog(editor);\n };\n return { showDialog: showDialog };\n };\n var Api = { get: get };\n\n var register = function (editor) {\n var showDialog = function () {\n Dialog.showDialog(editor);\n };\n editor.addCommand('mceMedia', showDialog);\n };\n var Commands = { register: register };\n\n var global$8 = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n var sanitize = function (editor, html) {\n if (Settings.shouldFilterHtml(editor) === false) {\n return html;\n }\n var writer = global$6();\n var blocked;\n global$3({\n validate: false,\n allow_conditional_comments: false,\n special: 'script,noscript',\n comment: function (text) {\n writer.comment(text);\n },\n cdata: function (text) {\n writer.cdata(text);\n },\n text: function (text, raw) {\n writer.text(text, raw);\n },\n start: function (name, attrs, empty) {\n blocked = true;\n if (name === 'script' || name === 'noscript') {\n return;\n }\n for (var i = 0; i < attrs.length; i++) {\n if (attrs[i].name.indexOf('on') === 0) {\n return;\n }\n if (attrs[i].name === 'style') {\n attrs[i].value = editor.dom.serializeStyle(editor.dom.parseStyle(attrs[i].value), name);\n }\n }\n writer.start(name, attrs, empty);\n blocked = false;\n },\n end: function (name) {\n if (blocked) {\n return;\n }\n writer.end(name);\n }\n }, global$7({})).parse(html);\n return writer.getContent();\n };\n var Sanitize = { sanitize: sanitize };\n\n var createPlaceholderNode = function (editor, node) {\n var placeHolder;\n var name = node.name;\n placeHolder = new global$8('img', 1);\n placeHolder.shortEnded = true;\n retainAttributesAndInnerHtml(editor, node, placeHolder);\n placeHolder.attr({\n 'width': node.attr('width') || '300',\n 'height': node.attr('height') || (name === 'audio' ? '30' : '150'),\n 'style': node.attr('style'),\n 'src': global$1.transparentSrc,\n 'data-mce-object': name,\n 'class': 'mce-object mce-object-' + name\n });\n return placeHolder;\n };\n var createPreviewIframeNode = function (editor, node) {\n var previewWrapper;\n var previewNode;\n var shimNode;\n var name = node.name;\n previewWrapper = new global$8('span', 1);\n previewWrapper.attr({\n 'contentEditable': 'false',\n 'style': node.attr('style'),\n 'data-mce-object': name,\n 'class': 'mce-preview-object mce-object-' + name\n });\n retainAttributesAndInnerHtml(editor, node, previewWrapper);\n previewNode = new global$8(name, 1);\n previewNode.attr({\n src: node.attr('src'),\n allowfullscreen: node.attr('allowfullscreen'),\n style: node.attr('style'),\n class: node.attr('class'),\n width: node.attr('width'),\n height: node.attr('height'),\n frameborder: '0'\n });\n shimNode = new global$8('span', 1);\n shimNode.attr('class', 'mce-shim');\n previewWrapper.append(previewNode);\n previewWrapper.append(shimNode);\n return previewWrapper;\n };\n var retainAttributesAndInnerHtml = function (editor, sourceNode, targetNode) {\n var attrName;\n var attrValue;\n var attribs;\n var ai;\n var innerHtml;\n attribs = sourceNode.attributes;\n ai = attribs.length;\n while (ai--) {\n attrName = attribs[ai].name;\n attrValue = attribs[ai].value;\n if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style') {\n if (attrName === 'data' || attrName === 'src') {\n attrValue = editor.convertURL(attrValue, attrName);\n }\n targetNode.attr('data-mce-p-' + attrName, attrValue);\n }\n }\n innerHtml = sourceNode.firstChild && sourceNode.firstChild.value;\n if (innerHtml) {\n targetNode.attr('data-mce-html', escape(Sanitize.sanitize(editor, innerHtml)));\n targetNode.firstChild = null;\n }\n };\n var isWithinEphoxEmbed = function (node) {\n while (node = node.parent) {\n if (node.attr('data-ephox-embed-iri')) {\n return true;\n }\n }\n return false;\n };\n var placeHolderConverter = function (editor) {\n return function (nodes) {\n var i = nodes.length;\n var node;\n var videoScript;\n while (i--) {\n node = nodes[i];\n if (!node.parent) {\n continue;\n }\n if (node.parent.attr('data-mce-object')) {\n continue;\n }\n if (node.name === 'script') {\n videoScript = VideoScript.getVideoScriptMatch(Settings.getScripts(editor), node.attr('src'));\n if (!videoScript) {\n continue;\n }\n }\n if (videoScript) {\n if (videoScript.width) {\n node.attr('width', videoScript.width.toString());\n }\n if (videoScript.height) {\n node.attr('height', videoScript.height.toString());\n }\n }\n if (node.name === 'iframe' && Settings.hasLiveEmbeds(editor) && global$1.ceFalse) {\n if (!isWithinEphoxEmbed(node)) {\n node.replace(createPreviewIframeNode(editor, node));\n }\n } else {\n if (!isWithinEphoxEmbed(node)) {\n node.replace(createPlaceholderNode(editor, node));\n }\n }\n }\n };\n };\n var Nodes = {\n createPreviewIframeNode: createPreviewIframeNode,\n createPlaceholderNode: createPlaceholderNode,\n placeHolderConverter: placeHolderConverter\n };\n\n var setup = function (editor) {\n editor.on('preInit', function () {\n var specialElements = editor.schema.getSpecialElements();\n global$2.each('video audio iframe object'.split(' '), function (name) {\n specialElements[name] = new RegExp(']*>', 'gi');\n });\n var boolAttrs = editor.schema.getBoolAttrs();\n global$2.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function (name) {\n boolAttrs[name] = {};\n });\n editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', Nodes.placeHolderConverter(editor));\n editor.serializer.addAttributeFilter('data-mce-object', function (nodes, name) {\n var i = nodes.length;\n var node;\n var realElm;\n var ai;\n var attribs;\n var innerHtml;\n var innerNode;\n var realElmName;\n var className;\n while (i--) {\n node = nodes[i];\n if (!node.parent) {\n continue;\n }\n realElmName = node.attr(name);\n realElm = new global$8(realElmName, 1);\n if (realElmName !== 'audio' && realElmName !== 'script') {\n className = node.attr('class');\n if (className && className.indexOf('mce-preview-object') !== -1) {\n realElm.attr({\n width: node.firstChild.attr('width'),\n height: node.firstChild.attr('height')\n });\n } else {\n realElm.attr({\n width: node.attr('width'),\n height: node.attr('height')\n });\n }\n }\n realElm.attr({ style: node.attr('style') });\n attribs = node.attributes;\n ai = attribs.length;\n while (ai--) {\n var attrName = attribs[ai].name;\n if (attrName.indexOf('data-mce-p-') === 0) {\n realElm.attr(attrName.substr(11), attribs[ai].value);\n }\n }\n if (realElmName === 'script') {\n realElm.attr('type', 'text/javascript');\n }\n innerHtml = node.attr('data-mce-html');\n if (innerHtml) {\n innerNode = new global$8('#text', 3);\n innerNode.raw = true;\n innerNode.value = Sanitize.sanitize(editor, unescape(innerHtml));\n realElm.append(innerNode);\n }\n node.replace(realElm);\n }\n });\n });\n editor.on('setContent', function () {\n editor.$('span.mce-preview-object').each(function (index, elm) {\n var $elm = editor.$(elm);\n if ($elm.find('span.mce-shim', elm).length === 0) {\n $elm.append('');\n }\n });\n });\n };\n var FilterContent = { setup: setup };\n\n var setup$1 = function (editor) {\n editor.on('ResolveName', function (e) {\n var name;\n if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) {\n e.name = name;\n }\n });\n };\n var ResolveName = { setup: setup$1 };\n\n var setup$2 = function (editor) {\n editor.on('click keyup', function () {\n var selectedNode = editor.selection.getNode();\n if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) {\n if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) {\n selectedNode.setAttribute('data-mce-selected', '2');\n }\n }\n });\n editor.on('ObjectSelected', function (e) {\n var objectType = e.target.getAttribute('data-mce-object');\n if (objectType === 'audio' || objectType === 'script') {\n e.preventDefault();\n }\n });\n editor.on('objectResized', function (e) {\n var target = e.target;\n var html;\n if (target.getAttribute('data-mce-object')) {\n html = target.getAttribute('data-mce-html');\n if (html) {\n html = unescape(html);\n target.setAttribute('data-mce-html', escape(UpdateHtml.updateHtml(html, {\n width: e.width,\n height: e.height\n })));\n }\n }\n });\n };\n var Selection = { setup: setup$2 };\n\n var register$1 = function (editor) {\n editor.addButton('media', {\n tooltip: 'Insert/edit media',\n cmd: 'mceMedia',\n stateSelector: [\n 'img[data-mce-object]',\n 'span[data-mce-object]',\n 'div[data-ephox-embed-iri]'\n ]\n });\n editor.addMenuItem('media', {\n icon: 'media',\n text: 'Media',\n cmd: 'mceMedia',\n context: 'insert',\n prependToContext: true\n });\n };\n var Buttons = { register: register$1 };\n\n global.add('media', function (editor) {\n Commands.register(editor);\n Buttons.register(editor);\n ResolveName.setup(editor);\n FilterContent.setup(editor);\n Selection.setup(editor);\n return Api.get(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = generator;\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 */\nfunction generator(_ref) {\n var colors = _ref.colors,\n typography = _ref.typography;\n return {\n color: colors.textDarkest,\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightBold,\n fontSize: typography.fontSizeMedium,\n lineHeight: typography.lineHeightFit\n };\n}\n\ngenerator.canvas = function (variables) {\n return {\n color: variables['ic-brand-font-color-dark']\n };\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = indicatorRegion;\n\nvar _bloodyOffset = _interopRequireDefault(require(\"bloody-offset\"));\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 .\n */\n// the editor's iframe\nfunction editorIframe(editor) {\n return editor.getContainer().querySelector(\"iframe\");\n}\n\nfunction box(el) {\n var b = el.getBoundingClientRect();\n return {\n top: b.top,\n left: b.left,\n width: b.right - b.left,\n height: b.bottom - b.top\n };\n} //\n// the shape of the target's sillhouette on the editor's container. have to\n// subtract out the iframe's scroll since the target's position is relative to\n// the iframe's _document_, not its visible window.\n\n\nfunction indicatorRegion(editor, target) {\n var offsetFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _bloodyOffset.default;\n var iframe = editorIframe(editor);\n var outerShape = offsetFn(iframe);\n var innerShape = box(target);\n return {\n width: innerShape.width,\n height: innerShape.height,\n left: outerShape.left + innerShape.left,\n top: outerShape.top + innerShape.top\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.cleanUrl = cleanUrl;\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 .\n */\n\n/**\n * functions in this module SHOULD NOT have side effects,\n * but should be focused around providing necessary data\n * or dom transformations with no state in this file.\n */\n\n/**\n * transforms an input url to make a link out of\n * into a correctly formed url. If it's clearly a mailing link,\n * adds mailto: to the front, and if it has no protocol but isn't an\n * absolute path, it prepends \"http://\".\n *\n * @param {string} input the raw url representative input by a user\n *\n * @returns {string} a well formed url\n */\nfunction cleanUrl(input) {\n var url = input;\n\n if (input.match(/@/) && !input.match(/\\//) && !input.match(/^mailto:/)) {\n url = \"mailto:\" + input;\n } else if (!input.match(/^\\w+:\\/\\//) && !input.match(/^mailto:/) && !input.match(/^\\//)) {\n url = \"http://\" + input;\n }\n\n if (url.indexOf(\"@\") != -1 && url.indexOf(\"mailto:\") != 0 && !url.match(/^http/)) {\n url = \"mailto:\" + url;\n }\n\n return url;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = require(\"react\");\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _uiPropTypes = require(\"@instructure/ui-prop-types\");\n\nvar _uid = _interopRequireDefault(require(\"@instructure/uid\"));\n\nvar _createChainedFunction = _interopRequireDefault(require(\"@instructure/ui-utils/lib/createChainedFunction\"));\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 */\nvar toggleExpanded = function toggleExpanded(_ref) {\n var expanded = _ref.expanded;\n return {\n expanded: !expanded\n };\n};\n/**\n---\ncategory: components/utilities\n---\n*/\n\n\nvar Expandable =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(Expandable, _Component);\n\n function Expandable(props) {\n var _this;\n\n (0, _classCallCheck2.default)(this, Expandable);\n _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Expandable).call(this));\n\n _this.handleToggle = function (event) {\n if (!_this.isControlled()) {\n _this.setState(toggleExpanded);\n }\n\n _this.props.onToggle(event, !_this.expanded);\n };\n\n _this.state = {\n expanded: _this.isControlled(props) ? props.expanded : !!props.defaultExpanded\n };\n _this._contentId = (0, _uid.default)('Expandable__content');\n return _this;\n }\n\n (0, _createClass2.default)(Expandable, [{\n key: \"isControlled\",\n value: function isControlled() {\n var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.props;\n return typeof props.expanded === 'boolean';\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n // if the component passes from controlled to uncontrolled, save the state\n if (this.isControlled() && !this.isControlled(nextProps) && this.props.expanded !== this.state.expanded) {\n this.setState(toggleExpanded);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n _this$props$render = _this$props.render,\n render = _this$props$render === void 0 ? children : _this$props$render;\n\n if (typeof render === 'function') {\n return render({\n expanded: this.expanded,\n getToggleProps: function getToggleProps() {\n var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n return (0, _objectSpread2.default)({\n 'aria-controls': _this2._contentId,\n 'aria-expanded': _this2.expanded,\n onClick: (0, _createChainedFunction.default)(_this2.handleToggle, props.onClick)\n }, props);\n },\n getDetailsProps: function getDetailsProps(props) {\n return {\n id: _this2._contentId\n };\n }\n });\n } else {\n return null;\n }\n }\n }, {\n key: \"expanded\",\n get: function get() {\n return this.isControlled() ? this.props.expanded : this.state.expanded;\n }\n }]);\n Expandable.displayName = \"Expandable\";\n return Expandable;\n}(_react.Component);\n\nExpandable.propTypes = {\n /**\n * Whether the content is expanded or hidden\n */\n expanded: (0, _uiPropTypes.controllable)(_propTypes.default.bool, 'onToggle', 'defaultExpanded'),\n\n /**\n * Whether the content is initially expanded or hidden (uncontrolled)\n */\n defaultExpanded: _propTypes.default.bool,\n onToggle: _propTypes.default.func,\n\n /**\n * @param {Object} renderProps\n * @param {Boolean} expanded\n * @param {Function} renderProps.getToggleProps - Props to be spread onto the trigger element\n * @param {Function} renderProps.getDetailsProps - Props to be spread onto the details element\n */\n children: _propTypes.default.func,\n\n /**\n * Identical to children\n */\n render: _propTypes.default.func\n};\nExpandable.defaultProps = {\n defaultExpanded: false,\n onToggle: function onToggle(event, expanded) {},\n expanded: void 0,\n children: null,\n render: void 0\n};\nvar _default = Expandable;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setFromTinymce = setFromTinymce;\nexports.reset = reset;\nexports.set = set;\nexports.ie = ie;\nexports.edge = edge;\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 .\n */\nvar isIE = false;\nvar isEdge = false; // expected to be called as setFromTinymce(window.tinymce) at some point where\n// window.tinymce is available\n\nfunction setFromTinymce(tinymce) {\n set(tinymce.Env);\n}\n\nfunction reset() {\n set({\n ie: false,\n edge: false\n });\n}\n\nfunction set(env) {\n isIE = !!env.ie;\n isEdge = isIE && !!(env.edge || env.ie == 12);\n}\n\nfunction ie() {\n return isIE;\n}\n\nfunction edge() {\n return isEdge;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\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 */\nfunction _default() {\n return {};\n}","(function () {\nvar modern = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.EditorManager');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var isBrandingEnabled = function (editor) {\n return editor.getParam('branding', true, 'boolean');\n };\n var hasMenubar = function (editor) {\n return getMenubar(editor) !== false;\n };\n var getMenubar = function (editor) {\n return editor.getParam('menubar');\n };\n var hasStatusbar = function (editor) {\n return editor.getParam('statusbar', true, 'boolean');\n };\n var getToolbarSize = function (editor) {\n return editor.getParam('toolbar_items_size');\n };\n var isReadOnly = function (editor) {\n return editor.getParam('readonly', false, 'boolean');\n };\n var getFixedToolbarContainer = function (editor) {\n return editor.getParam('fixed_toolbar_container');\n };\n var getInlineToolbarPositionHandler = function (editor) {\n return editor.getParam('inline_toolbar_position_handler');\n };\n var getMenu = function (editor) {\n return editor.getParam('menu');\n };\n var getRemovedMenuItems = function (editor) {\n return editor.getParam('removed_menuitems', '');\n };\n var getMinWidth = function (editor) {\n return editor.getParam('min_width', 100, 'number');\n };\n var getMinHeight = function (editor) {\n return editor.getParam('min_height', 100, 'number');\n };\n var getMaxWidth = function (editor) {\n return editor.getParam('max_width', 65535, 'number');\n };\n var getMaxHeight = function (editor) {\n return editor.getParam('max_height', 65535, 'number');\n };\n var isSkinDisabled = function (editor) {\n return editor.settings.skin === false;\n };\n var isInline = function (editor) {\n return editor.getParam('inline', false, 'boolean');\n };\n var getResize = function (editor) {\n var resize = editor.getParam('resize', 'vertical');\n if (resize === false) {\n return 'none';\n } else if (resize === 'both') {\n return 'both';\n } else {\n return 'vertical';\n }\n };\n var getSkinUrl = function (editor) {\n var settings = editor.settings;\n var skin = settings.skin;\n var skinUrl = settings.skin_url;\n if (skin !== false) {\n var skinName = skin ? skin : 'lightgray';\n if (skinUrl) {\n skinUrl = editor.documentBaseURI.toAbsolute(skinUrl);\n } else {\n skinUrl = global$1.baseURL + '/skins/' + skinName;\n }\n }\n return skinUrl;\n };\n var getIndexedToolbars = function (settings, defaultToolbar) {\n var toolbars = [];\n for (var i = 1; i < 10; i++) {\n var toolbar = settings['toolbar' + i];\n if (!toolbar) {\n break;\n }\n toolbars.push(toolbar);\n }\n var mainToolbar = settings.toolbar ? [settings.toolbar] : [defaultToolbar];\n return toolbars.length > 0 ? toolbars : mainToolbar;\n };\n var getToolbars = function (editor) {\n var toolbar = editor.getParam('toolbar');\n var defaultToolbar = 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image';\n if (toolbar === false) {\n return [];\n } else if (global$2.isArray(toolbar)) {\n return global$2.grep(toolbar, function (toolbar) {\n return toolbar.length > 0;\n });\n } else {\n return getIndexedToolbars(editor.settings, defaultToolbar);\n }\n };\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.ui.Factory');\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.I18n');\n\n var fireSkinLoaded = function (editor) {\n return editor.fire('SkinLoaded');\n };\n var fireResizeEditor = function (editor) {\n return editor.fire('ResizeEditor');\n };\n var fireBeforeRenderUI = function (editor) {\n return editor.fire('BeforeRenderUI');\n };\n var Events = {\n fireSkinLoaded: fireSkinLoaded,\n fireResizeEditor: fireResizeEditor,\n fireBeforeRenderUI: fireBeforeRenderUI\n };\n\n var focus = function (panel, type) {\n return function () {\n var item = panel.find(type)[0];\n if (item) {\n item.focus(true);\n }\n };\n };\n var addKeys = function (editor, panel) {\n editor.shortcuts.add('Alt+F9', '', focus(panel, 'menubar'));\n editor.shortcuts.add('Alt+F10,F10', '', focus(panel, 'toolbar'));\n editor.shortcuts.add('Alt+F11', '', focus(panel, 'elementpath'));\n panel.on('cancel', function () {\n editor.focus();\n });\n };\n var A11y = { addKeys: addKeys };\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect');\n\n var global$7 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n var noop = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n };\n var constant = function (value) {\n return function () {\n return value;\n };\n };\n var never = constant(false);\n var always = constant(true);\n\n var never$1 = never;\n var always$1 = always;\n var none = function () {\n return NONE;\n };\n var NONE = function () {\n var eq = function (o) {\n return o.isNone();\n };\n var call$$1 = function (thunk) {\n return thunk();\n };\n var id = function (n) {\n return n;\n };\n var noop$$1 = function () {\n };\n var nul = function () {\n return null;\n };\n var undef = function () {\n return undefined;\n };\n var me = {\n fold: function (n, s) {\n return n();\n },\n is: never$1,\n isSome: never$1,\n isNone: always$1,\n getOr: id,\n getOrThunk: call$$1,\n getOrDie: function (msg) {\n throw new Error(msg || 'error: getOrDie called on none.');\n },\n getOrNull: nul,\n getOrUndefined: undef,\n or: id,\n orThunk: call$$1,\n map: none,\n ap: none,\n each: noop$$1,\n bind: none,\n flatten: none,\n exists: never$1,\n forall: always$1,\n filter: none,\n equals: eq,\n equals_: eq,\n toArray: function () {\n return [];\n },\n toString: constant('none()')\n };\n if (Object.freeze)\n Object.freeze(me);\n return me;\n }();\n var some = function (a) {\n var constant_a = function () {\n return a;\n };\n var self = function () {\n return me;\n };\n var map = function (f) {\n return some(f(a));\n };\n var bind = function (f) {\n return f(a);\n };\n var me = {\n fold: function (n, s) {\n return s(a);\n },\n is: function (v) {\n return a === v;\n },\n isSome: always$1,\n isNone: never$1,\n getOr: constant_a,\n getOrThunk: constant_a,\n getOrDie: constant_a,\n getOrNull: constant_a,\n getOrUndefined: constant_a,\n or: self,\n orThunk: self,\n map: map,\n ap: function (optfab) {\n return optfab.fold(none, function (fab) {\n return some(fab(a));\n });\n },\n each: function (f) {\n f(a);\n },\n bind: bind,\n flatten: constant_a,\n exists: bind,\n forall: bind,\n filter: function (f) {\n return f(a) ? me : NONE;\n },\n equals: function (o) {\n return o.is(a);\n },\n equals_: function (o, elementEq) {\n return o.fold(never$1, function (b) {\n return elementEq(a, b);\n });\n },\n toArray: function () {\n return [a];\n },\n toString: function () {\n return 'some(' + a + ')';\n }\n };\n return me;\n };\n var from = function (value) {\n return value === null || value === undefined ? NONE : some(value);\n };\n var Option = {\n some: some,\n none: none,\n from: from\n };\n\n var getUiContainerDelta = function (ctrl) {\n var uiContainer = getUiContainer(ctrl);\n if (uiContainer && global$3.DOM.getStyle(uiContainer, 'position', true) !== 'static') {\n var containerPos = global$3.DOM.getPos(uiContainer);\n var dx = uiContainer.scrollLeft - containerPos.x;\n var dy = uiContainer.scrollTop - containerPos.y;\n return Option.some({\n x: dx,\n y: dy\n });\n } else {\n return Option.none();\n }\n };\n var setUiContainer = function (editor, ctrl) {\n var uiContainer = global$3.DOM.select(editor.settings.ui_container)[0];\n ctrl.getRoot().uiContainer = uiContainer;\n };\n var getUiContainer = function (ctrl) {\n return ctrl ? ctrl.getRoot().uiContainer : null;\n };\n var inheritUiContainer = function (fromCtrl, toCtrl) {\n return toCtrl.uiContainer = getUiContainer(fromCtrl);\n };\n var UiContainer = {\n getUiContainerDelta: getUiContainerDelta,\n setUiContainer: setUiContainer,\n getUiContainer: getUiContainer,\n inheritUiContainer: inheritUiContainer\n };\n\n var createToolbar = function (editor, items, size) {\n var toolbarItems = [];\n var buttonGroup;\n if (!items) {\n return;\n }\n global$2.each(items.split(/[ ,]/), function (item) {\n var itemName;\n var bindSelectorChanged = function () {\n var selection = editor.selection;\n if (item.settings.stateSelector) {\n selection.selectorChanged(item.settings.stateSelector, function (state) {\n item.active(state);\n }, true);\n }\n if (item.settings.disabledStateSelector) {\n selection.selectorChanged(item.settings.disabledStateSelector, function (state) {\n item.disabled(state);\n });\n }\n };\n if (item === '|') {\n buttonGroup = null;\n } else {\n if (!buttonGroup) {\n buttonGroup = {\n type: 'buttongroup',\n items: []\n };\n toolbarItems.push(buttonGroup);\n }\n if (editor.buttons[item]) {\n itemName = item;\n item = editor.buttons[itemName];\n if (typeof item === 'function') {\n item = item();\n }\n item.type = item.type || 'button';\n item.size = size;\n item = global$4.create(item);\n buttonGroup.items.push(item);\n if (editor.initialized) {\n bindSelectorChanged();\n } else {\n editor.on('init', bindSelectorChanged);\n }\n }\n }\n });\n return {\n type: 'toolbar',\n layout: 'flow',\n items: toolbarItems\n };\n };\n var createToolbars = function (editor, size) {\n var toolbars = [];\n var addToolbar = function (items) {\n if (items) {\n toolbars.push(createToolbar(editor, items, size));\n }\n };\n global$2.each(getToolbars(editor), function (toolbar) {\n addToolbar(toolbar);\n });\n if (toolbars.length) {\n return {\n type: 'panel',\n layout: 'stack',\n classes: 'toolbar-grp',\n ariaRoot: true,\n ariaRemember: true,\n items: toolbars\n };\n }\n };\n var Toolbar = {\n createToolbar: createToolbar,\n createToolbars: createToolbars\n };\n\n var DOM = global$3.DOM;\n var toClientRect = function (geomRect) {\n return {\n left: geomRect.x,\n top: geomRect.y,\n width: geomRect.w,\n height: geomRect.h,\n right: geomRect.x + geomRect.w,\n bottom: geomRect.y + geomRect.h\n };\n };\n var hideAllFloatingPanels = function (editor) {\n global$2.each(editor.contextToolbars, function (toolbar) {\n if (toolbar.panel) {\n toolbar.panel.hide();\n }\n });\n };\n var movePanelTo = function (panel, pos) {\n panel.moveTo(pos.left, pos.top);\n };\n var togglePositionClass = function (panel, relPos, predicate) {\n relPos = relPos ? relPos.substr(0, 2) : '';\n global$2.each({\n t: 'down',\n b: 'up'\n }, function (cls, pos) {\n panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(0, 1)));\n });\n global$2.each({\n l: 'left',\n r: 'right'\n }, function (cls, pos) {\n panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(1, 1)));\n });\n };\n var userConstrain = function (handler, x, y, elementRect, contentAreaRect, panelRect) {\n panelRect = toClientRect({\n x: x,\n y: y,\n w: panelRect.w,\n h: panelRect.h\n });\n if (handler) {\n panelRect = handler({\n elementRect: toClientRect(elementRect),\n contentAreaRect: toClientRect(contentAreaRect),\n panelRect: panelRect\n });\n }\n return panelRect;\n };\n var addContextualToolbars = function (editor) {\n var scrollContainer;\n var getContextToolbars = function () {\n return editor.contextToolbars || [];\n };\n var getElementRect = function (elm) {\n var pos, targetRect, root;\n pos = DOM.getPos(editor.getContentAreaContainer());\n targetRect = editor.dom.getRect(elm);\n root = editor.dom.getRoot();\n if (root.nodeName === 'BODY') {\n targetRect.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;\n targetRect.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;\n }\n targetRect.x += pos.x;\n targetRect.y += pos.y;\n return targetRect;\n };\n var reposition = function (match, shouldShow) {\n var relPos, panelRect, elementRect, contentAreaRect, panel, relRect, testPositions, smallElementWidthThreshold;\n var handler = getInlineToolbarPositionHandler(editor);\n if (editor.removed) {\n return;\n }\n if (!match || !match.toolbar.panel) {\n hideAllFloatingPanels(editor);\n return;\n }\n testPositions = [\n 'bc-tc',\n 'tc-bc',\n 'tl-bl',\n 'bl-tl',\n 'tr-br',\n 'br-tr'\n ];\n panel = match.toolbar.panel;\n if (shouldShow) {\n panel.show();\n }\n elementRect = getElementRect(match.element);\n panelRect = DOM.getRect(panel.getEl());\n contentAreaRect = DOM.getRect(editor.getContentAreaContainer() || editor.getBody());\n var delta = UiContainer.getUiContainerDelta(panel).getOr({\n x: 0,\n y: 0\n });\n elementRect.x += delta.x;\n elementRect.y += delta.y;\n panelRect.x += delta.x;\n panelRect.y += delta.y;\n contentAreaRect.x += delta.x;\n contentAreaRect.y += delta.y;\n smallElementWidthThreshold = 25;\n if (DOM.getStyle(match.element, 'display', true) !== 'inline') {\n var clientRect = match.element.getBoundingClientRect();\n elementRect.w = clientRect.width;\n elementRect.h = clientRect.height;\n }\n if (!editor.inline) {\n contentAreaRect.w = editor.getDoc().documentElement.offsetWidth;\n }\n if (editor.selection.controlSelection.isResizable(match.element) && elementRect.w < smallElementWidthThreshold) {\n elementRect = global$6.inflate(elementRect, 0, 8);\n }\n relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, testPositions);\n elementRect = global$6.clamp(elementRect, contentAreaRect);\n if (relPos) {\n relRect = global$6.relativePosition(panelRect, elementRect, relPos);\n movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));\n } else {\n contentAreaRect.h += panelRect.h;\n elementRect = global$6.intersect(contentAreaRect, elementRect);\n if (elementRect) {\n relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, [\n 'bc-tc',\n 'bl-tl',\n 'br-tr'\n ]);\n if (relPos) {\n relRect = global$6.relativePosition(panelRect, elementRect, relPos);\n movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));\n } else {\n movePanelTo(panel, userConstrain(handler, elementRect.x, elementRect.y, elementRect, contentAreaRect, panelRect));\n }\n } else {\n panel.hide();\n }\n }\n togglePositionClass(panel, relPos, function (pos1, pos2) {\n return pos1 === pos2;\n });\n };\n var repositionHandler = function (show) {\n return function () {\n var execute = function () {\n if (editor.selection) {\n reposition(findFrontMostMatch(editor.selection.getNode()), show);\n }\n };\n global$7.requestAnimationFrame(execute);\n };\n };\n var bindScrollEvent = function (panel) {\n if (!scrollContainer) {\n var reposition_1 = repositionHandler(true);\n var uiContainer_1 = UiContainer.getUiContainer(panel);\n scrollContainer = editor.selection.getScrollContainer() || editor.getWin();\n DOM.bind(scrollContainer, 'scroll', reposition_1);\n DOM.bind(uiContainer_1, 'scroll', reposition_1);\n editor.on('remove', function () {\n DOM.unbind(scrollContainer, 'scroll', reposition_1);\n DOM.unbind(uiContainer_1, 'scroll', reposition_1);\n });\n }\n };\n var showContextToolbar = function (match) {\n var panel;\n if (match.toolbar.panel) {\n match.toolbar.panel.show();\n reposition(match);\n return;\n }\n panel = global$4.create({\n type: 'floatpanel',\n role: 'dialog',\n classes: 'tinymce tinymce-inline arrow',\n ariaLabel: 'Inline toolbar',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n autohide: false,\n autofix: true,\n fixed: true,\n border: 1,\n items: Toolbar.createToolbar(editor, match.toolbar.items),\n oncancel: function () {\n editor.focus();\n }\n });\n UiContainer.setUiContainer(editor, panel);\n bindScrollEvent(panel);\n match.toolbar.panel = panel;\n panel.renderTo().reflow();\n reposition(match);\n };\n var hideAllContextToolbars = function () {\n global$2.each(getContextToolbars(), function (toolbar) {\n if (toolbar.panel) {\n toolbar.panel.hide();\n }\n });\n };\n var findFrontMostMatch = function (targetElm) {\n var i, y, parentsAndSelf;\n var toolbars = getContextToolbars();\n parentsAndSelf = editor.$(targetElm).parents().add(targetElm);\n for (i = parentsAndSelf.length - 1; i >= 0; i--) {\n for (y = toolbars.length - 1; y >= 0; y--) {\n if (toolbars[y].predicate(parentsAndSelf[i])) {\n return {\n toolbar: toolbars[y],\n element: parentsAndSelf[i]\n };\n }\n }\n }\n return null;\n };\n editor.on('click keyup setContent ObjectResized', function (e) {\n if (e.type === 'setcontent' && !e.selection) {\n return;\n }\n global$7.setEditorTimeout(editor, function () {\n var match;\n match = findFrontMostMatch(editor.selection.getNode());\n if (match) {\n hideAllContextToolbars();\n showContextToolbar(match);\n } else {\n hideAllContextToolbars();\n }\n });\n });\n editor.on('blur hide contextmenu', hideAllContextToolbars);\n editor.on('ObjectResizeStart', function () {\n var match = findFrontMostMatch(editor.selection.getNode());\n if (match && match.toolbar.panel) {\n match.toolbar.panel.hide();\n }\n });\n editor.on('ResizeEditor ResizeWindow', repositionHandler(true));\n editor.on('nodeChange', repositionHandler(false));\n editor.on('remove', function () {\n global$2.each(getContextToolbars(), function (toolbar) {\n if (toolbar.panel) {\n toolbar.panel.remove();\n }\n });\n editor.contextToolbars = {};\n });\n editor.shortcuts.add('ctrl+F9', '', function () {\n var match = findFrontMostMatch(editor.selection.getNode());\n if (match && match.toolbar.panel) {\n match.toolbar.panel.items()[0].focus();\n }\n });\n };\n var ContextToolbars = { addContextualToolbars: addContextualToolbars };\n\n var typeOf = function (x) {\n if (x === null)\n return 'null';\n var t = typeof x;\n if (t === 'object' && Array.prototype.isPrototypeOf(x))\n return 'array';\n if (t === 'object' && String.prototype.isPrototypeOf(x))\n return 'string';\n return t;\n };\n var isType = function (type) {\n return function (value) {\n return typeOf(value) === type;\n };\n };\n var isFunction = isType('function');\n var isNumber = isType('number');\n\n var rawIndexOf = function () {\n var pIndexOf = Array.prototype.indexOf;\n var fastIndex = function (xs, x) {\n return pIndexOf.call(xs, x);\n };\n var slowIndex = function (xs, x) {\n return slowIndexOf(xs, x);\n };\n return pIndexOf === undefined ? slowIndex : fastIndex;\n }();\n var indexOf = function (xs, x) {\n var r = rawIndexOf(xs, x);\n return r === -1 ? Option.none() : Option.some(r);\n };\n var exists = function (xs, pred) {\n return findIndex(xs, pred).isSome();\n };\n var map = function (xs, f) {\n var len = xs.length;\n var r = new Array(len);\n for (var i = 0; i < len; i++) {\n var x = xs[i];\n r[i] = f(x, i, xs);\n }\n return r;\n };\n var each = function (xs, f) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n f(x, i, xs);\n }\n };\n var filter = function (xs, pred) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n r.push(x);\n }\n }\n return r;\n };\n var foldl = function (xs, f, acc) {\n each(xs, function (x) {\n acc = f(acc, x);\n });\n return acc;\n };\n var find = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n return Option.some(x);\n }\n }\n return Option.none();\n };\n var findIndex = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n return Option.some(i);\n }\n }\n return Option.none();\n };\n var slowIndexOf = function (xs, x) {\n for (var i = 0, len = xs.length; i < len; ++i) {\n if (xs[i] === x) {\n return i;\n }\n }\n return -1;\n };\n var push = Array.prototype.push;\n var flatten = function (xs) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; ++i) {\n if (!Array.prototype.isPrototypeOf(xs[i]))\n throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n push.apply(r, xs[i]);\n }\n return r;\n };\n var slice = Array.prototype.slice;\n var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n return slice.call(x);\n };\n\n var defaultMenus = {\n file: {\n title: 'File',\n items: 'newdocument restoredraft | preview | print'\n },\n edit: {\n title: 'Edit',\n items: 'undo redo | cut copy paste pastetext | selectall'\n },\n view: {\n title: 'View',\n items: 'code | visualaid visualchars visualblocks | spellchecker | preview fullscreen'\n },\n insert: {\n title: 'Insert',\n items: 'image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime'\n },\n format: {\n title: 'Format',\n items: 'bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat'\n },\n tools: {\n title: 'Tools',\n items: 'spellchecker spellcheckerlanguage | a11ycheck code'\n },\n table: { title: 'Table' },\n help: { title: 'Help' }\n };\n var delimiterMenuNamePair = function () {\n return {\n name: '|',\n item: { text: '|' }\n };\n };\n var createMenuNameItemPair = function (name, item) {\n var menuItem = item ? {\n name: name,\n item: item\n } : null;\n return name === '|' ? delimiterMenuNamePair() : menuItem;\n };\n var hasItemName = function (namedMenuItems, name) {\n return findIndex(namedMenuItems, function (namedMenuItem) {\n return namedMenuItem.name === name;\n }).isSome();\n };\n var isSeparator = function (namedMenuItem) {\n return namedMenuItem && namedMenuItem.item.text === '|';\n };\n var cleanupMenu = function (namedMenuItems, removedMenuItems) {\n var menuItemsPass1 = filter(namedMenuItems, function (namedMenuItem) {\n return removedMenuItems.hasOwnProperty(namedMenuItem.name) === false;\n });\n var menuItemsPass2 = filter(menuItemsPass1, function (namedMenuItem, i, namedMenuItems) {\n return !isSeparator(namedMenuItem) || !isSeparator(namedMenuItems[i - 1]);\n });\n return filter(menuItemsPass2, function (namedMenuItem, i, namedMenuItems) {\n return !isSeparator(namedMenuItem) || i > 0 && i < namedMenuItems.length - 1;\n });\n };\n var createMenu = function (editorMenuItems, menus, removedMenuItems, context) {\n var menuButton, menu, namedMenuItems, isUserDefined;\n if (menus) {\n menu = menus[context];\n isUserDefined = true;\n } else {\n menu = defaultMenus[context];\n }\n if (menu) {\n menuButton = { text: menu.title };\n namedMenuItems = [];\n global$2.each((menu.items || '').split(/[ ,]/), function (name) {\n var namedMenuItem = createMenuNameItemPair(name, editorMenuItems[name]);\n if (namedMenuItem) {\n namedMenuItems.push(namedMenuItem);\n }\n });\n if (!isUserDefined) {\n global$2.each(editorMenuItems, function (item, name) {\n if (item.context === context && !hasItemName(namedMenuItems, name)) {\n if (item.separator === 'before') {\n namedMenuItems.push(delimiterMenuNamePair());\n }\n if (item.prependToContext) {\n namedMenuItems.unshift(createMenuNameItemPair(name, item));\n } else {\n namedMenuItems.push(createMenuNameItemPair(name, item));\n }\n if (item.separator === 'after') {\n namedMenuItems.push(delimiterMenuNamePair());\n }\n }\n });\n }\n menuButton.menu = map(cleanupMenu(namedMenuItems, removedMenuItems), function (menuItem) {\n return menuItem.item;\n });\n if (!menuButton.menu.length) {\n return null;\n }\n }\n return menuButton;\n };\n var getDefaultMenubar = function (editor) {\n var name;\n var defaultMenuBar = [];\n var menu = getMenu(editor);\n if (menu) {\n for (name in menu) {\n defaultMenuBar.push(name);\n }\n } else {\n for (name in defaultMenus) {\n defaultMenuBar.push(name);\n }\n }\n return defaultMenuBar;\n };\n var createMenuButtons = function (editor) {\n var menuButtons = [];\n var defaultMenuBar = getDefaultMenubar(editor);\n var removedMenuItems = global$2.makeMap(getRemovedMenuItems(editor).split(/[ ,]/));\n var menubar = getMenubar(editor);\n var enabledMenuNames = typeof menubar === 'string' ? menubar.split(/[ ,]/) : defaultMenuBar;\n for (var i = 0; i < enabledMenuNames.length; i++) {\n var menuItems = enabledMenuNames[i];\n var menu = createMenu(editor.menuItems, getMenu(editor), removedMenuItems, menuItems);\n if (menu) {\n menuButtons.push(menu);\n }\n }\n return menuButtons;\n };\n var Menubar = { createMenuButtons: createMenuButtons };\n\n var DOM$1 = global$3.DOM;\n var getSize = function (elm) {\n return {\n width: elm.clientWidth,\n height: elm.clientHeight\n };\n };\n var resizeTo = function (editor, width, height) {\n var containerElm, iframeElm, containerSize, iframeSize;\n containerElm = editor.getContainer();\n iframeElm = editor.getContentAreaContainer().firstChild;\n containerSize = getSize(containerElm);\n iframeSize = getSize(iframeElm);\n if (width !== null) {\n width = Math.max(getMinWidth(editor), width);\n width = Math.min(getMaxWidth(editor), width);\n DOM$1.setStyle(containerElm, 'width', width + (containerSize.width - iframeSize.width));\n DOM$1.setStyle(iframeElm, 'width', width);\n }\n height = Math.max(getMinHeight(editor), height);\n height = Math.min(getMaxHeight(editor), height);\n DOM$1.setStyle(iframeElm, 'height', height);\n Events.fireResizeEditor(editor);\n };\n var resizeBy = function (editor, dw, dh) {\n var elm = editor.getContentAreaContainer();\n resizeTo(editor, elm.clientWidth + dw, elm.clientHeight + dh);\n };\n var Resize = {\n resizeTo: resizeTo,\n resizeBy: resizeBy\n };\n\n var global$8 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var api = function (elm) {\n return {\n element: function () {\n return elm;\n }\n };\n };\n var trigger = function (sidebar, panel, callbackName) {\n var callback = sidebar.settings[callbackName];\n if (callback) {\n callback(api(panel.getEl('body')));\n }\n };\n var hidePanels = function (name, container, sidebars) {\n global$2.each(sidebars, function (sidebar) {\n var panel = container.items().filter('#' + sidebar.name)[0];\n if (panel && panel.visible() && sidebar.name !== name) {\n trigger(sidebar, panel, 'onhide');\n panel.visible(false);\n }\n });\n };\n var deactivateButtons = function (toolbar) {\n toolbar.items().each(function (ctrl) {\n ctrl.active(false);\n });\n };\n var findSidebar = function (sidebars, name) {\n return global$2.grep(sidebars, function (sidebar) {\n return sidebar.name === name;\n })[0];\n };\n var showPanel = function (editor, name, sidebars) {\n return function (e) {\n var btnCtrl = e.control;\n var container = btnCtrl.parents().filter('panel')[0];\n var panel = container.find('#' + name)[0];\n var sidebar = findSidebar(sidebars, name);\n hidePanels(name, container, sidebars);\n deactivateButtons(btnCtrl.parent());\n if (panel && panel.visible()) {\n trigger(sidebar, panel, 'onhide');\n panel.hide();\n btnCtrl.active(false);\n } else {\n if (panel) {\n panel.show();\n trigger(sidebar, panel, 'onshow');\n } else {\n panel = global$4.create({\n type: 'container',\n name: name,\n layout: 'stack',\n classes: 'sidebar-panel',\n html: ''\n });\n container.prepend(panel);\n trigger(sidebar, panel, 'onrender');\n trigger(sidebar, panel, 'onshow');\n }\n btnCtrl.active(true);\n }\n Events.fireResizeEditor(editor);\n };\n };\n var isModernBrowser = function () {\n return !global$8.ie || global$8.ie >= 11;\n };\n var hasSidebar = function (editor) {\n return isModernBrowser() && editor.sidebars ? editor.sidebars.length > 0 : false;\n };\n var createSidebar = function (editor) {\n var buttons = global$2.map(editor.sidebars, function (sidebar) {\n var settings = sidebar.settings;\n return {\n type: 'button',\n icon: settings.icon,\n image: settings.image,\n tooltip: settings.tooltip,\n onclick: showPanel(editor, sidebar.name, editor.sidebars)\n };\n });\n return {\n type: 'panel',\n name: 'sidebar',\n layout: 'stack',\n classes: 'sidebar',\n items: [{\n type: 'toolbar',\n layout: 'stack',\n classes: 'sidebar-toolbar',\n items: buttons\n }]\n };\n };\n var Sidebar = {\n hasSidebar: hasSidebar,\n createSidebar: createSidebar\n };\n\n var fireSkinLoaded$1 = function (editor) {\n var done = function () {\n editor._skinLoaded = true;\n Events.fireSkinLoaded(editor);\n };\n return function () {\n if (editor.initialized) {\n done();\n } else {\n editor.on('init', done);\n }\n };\n };\n var SkinLoaded = { fireSkinLoaded: fireSkinLoaded$1 };\n\n var DOM$2 = global$3.DOM;\n var switchMode = function (panel) {\n return function (e) {\n panel.find('*').disabled(e.mode === 'readonly');\n };\n };\n var editArea = function (border) {\n return {\n type: 'panel',\n name: 'iframe',\n layout: 'stack',\n classes: 'edit-area',\n border: border,\n html: ''\n };\n };\n var editAreaContainer = function (editor) {\n return {\n type: 'panel',\n layout: 'stack',\n classes: 'edit-aria-container',\n border: '1 0 0 0',\n items: [\n editArea('0'),\n Sidebar.createSidebar(editor)\n ]\n };\n };\n var render = function (editor, theme, args) {\n var panel, resizeHandleCtrl, startSize;\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\n DOM$2.styleSheetLoader.load(args.skinUiCss, SkinLoaded.fireSkinLoaded(editor));\n } else {\n SkinLoaded.fireSkinLoaded(editor)();\n }\n panel = theme.panel = global$4.create({\n type: 'panel',\n role: 'application',\n classes: 'tinymce',\n style: 'visibility: hidden',\n layout: 'stack',\n border: 1,\n items: [\n {\n type: 'container',\n classes: 'top-part',\n items: [\n hasMenubar(editor) === false ? null : {\n type: 'menubar',\n border: '0 0 1 0',\n items: Menubar.createMenuButtons(editor)\n },\n Toolbar.createToolbars(editor, getToolbarSize(editor))\n ]\n },\n Sidebar.hasSidebar(editor) ? editAreaContainer(editor) : editArea('1 0 0 0')\n ]\n });\n UiContainer.setUiContainer(editor, panel);\n if (getResize(editor) !== 'none') {\n resizeHandleCtrl = {\n type: 'resizehandle',\n direction: getResize(editor),\n onResizeStart: function () {\n var elm = editor.getContentAreaContainer().firstChild;\n startSize = {\n width: elm.clientWidth,\n height: elm.clientHeight\n };\n },\n onResize: function (e) {\n if (getResize(editor) === 'both') {\n Resize.resizeTo(editor, startSize.width + e.deltaX, startSize.height + e.deltaY);\n } else {\n Resize.resizeTo(editor, null, startSize.height + e.deltaY);\n }\n }\n };\n }\n if (hasStatusbar(editor)) {\n var linkHtml = 'Tiny';\n var html = global$5.translate([\n 'Powered by {0}',\n linkHtml\n ]);\n var brandingLabel = isBrandingEnabled(editor) ? {\n type: 'label',\n classes: 'branding',\n html: ' ' + html\n } : null;\n panel.add({\n type: 'panel',\n name: 'statusbar',\n classes: 'statusbar',\n layout: 'flow',\n border: '1 0 0 0',\n ariaRoot: true,\n items: [\n {\n type: 'elementpath',\n editor: editor\n },\n resizeHandleCtrl,\n brandingLabel\n ]\n });\n }\n Events.fireBeforeRenderUI(editor);\n editor.on('SwitchMode', switchMode(panel));\n panel.renderBefore(args.targetNode).reflow();\n if (isReadOnly(editor)) {\n editor.setMode('readonly');\n }\n if (args.width) {\n DOM$2.setStyle(panel.getEl(), 'width', args.width);\n }\n editor.on('remove', function () {\n panel.remove();\n panel = null;\n });\n A11y.addKeys(editor, panel);\n ContextToolbars.addContextualToolbars(editor);\n return {\n iframeContainer: panel.find('#iframe')[0].getEl(),\n editorContainer: panel.getEl()\n };\n };\n var Iframe = { render: render };\n\n var global$9 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');\n\n var count = 0;\n var funcs = {\n id: function () {\n return 'mceu_' + count++;\n },\n create: function (name$$1, attrs, children) {\n var elm = document.createElement(name$$1);\n global$3.DOM.setAttribs(elm, attrs);\n if (typeof children === 'string') {\n elm.innerHTML = children;\n } else {\n global$2.each(children, function (child) {\n if (child.nodeType) {\n elm.appendChild(child);\n }\n });\n }\n return elm;\n },\n createFragment: function (html) {\n return global$3.DOM.createFragment(html);\n },\n getWindowSize: function () {\n return global$3.DOM.getViewPort();\n },\n getSize: function (elm) {\n var width, height;\n if (elm.getBoundingClientRect) {\n var rect = elm.getBoundingClientRect();\n width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth);\n height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight);\n } else {\n width = elm.offsetWidth;\n height = elm.offsetHeight;\n }\n return {\n width: width,\n height: height\n };\n },\n getPos: function (elm, root) {\n return global$3.DOM.getPos(elm, root || funcs.getContainer());\n },\n getContainer: function () {\n return global$8.container ? global$8.container : document.body;\n },\n getViewPort: function (win) {\n return global$3.DOM.getViewPort(win);\n },\n get: function (id) {\n return document.getElementById(id);\n },\n addClass: function (elm, cls) {\n return global$3.DOM.addClass(elm, cls);\n },\n removeClass: function (elm, cls) {\n return global$3.DOM.removeClass(elm, cls);\n },\n hasClass: function (elm, cls) {\n return global$3.DOM.hasClass(elm, cls);\n },\n toggleClass: function (elm, cls, state) {\n return global$3.DOM.toggleClass(elm, cls, state);\n },\n css: function (elm, name$$1, value) {\n return global$3.DOM.setStyle(elm, name$$1, value);\n },\n getRuntimeStyle: function (elm, name$$1) {\n return global$3.DOM.getStyle(elm, name$$1, true);\n },\n on: function (target, name$$1, callback, scope) {\n return global$3.DOM.bind(target, name$$1, callback, scope);\n },\n off: function (target, name$$1, callback) {\n return global$3.DOM.unbind(target, name$$1, callback);\n },\n fire: function (target, name$$1, args) {\n return global$3.DOM.fire(target, name$$1, args);\n },\n innerHtml: function (elm, html) {\n global$3.DOM.setHTML(elm, html);\n }\n };\n\n var isStatic = function (elm) {\n return funcs.getRuntimeStyle(elm, 'position') === 'static';\n };\n var isFixed = function (ctrl) {\n return ctrl.state.get('fixed');\n };\n function calculateRelativePosition(ctrl, targetElm, rel) {\n var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;\n viewport = getWindowViewPort();\n pos = funcs.getPos(targetElm, UiContainer.getUiContainer(ctrl));\n x = pos.x;\n y = pos.y;\n if (isFixed(ctrl) && isStatic(document.body)) {\n x -= viewport.x;\n y -= viewport.y;\n }\n ctrlElm = ctrl.getEl();\n size = funcs.getSize(ctrlElm);\n selfW = size.width;\n selfH = size.height;\n size = funcs.getSize(targetElm);\n targetW = size.width;\n targetH = size.height;\n rel = (rel || '').split('');\n if (rel[0] === 'b') {\n y += targetH;\n }\n if (rel[1] === 'r') {\n x += targetW;\n }\n if (rel[0] === 'c') {\n y += Math.round(targetH / 2);\n }\n if (rel[1] === 'c') {\n x += Math.round(targetW / 2);\n }\n if (rel[3] === 'b') {\n y -= selfH;\n }\n if (rel[4] === 'r') {\n x -= selfW;\n }\n if (rel[3] === 'c') {\n y -= Math.round(selfH / 2);\n }\n if (rel[4] === 'c') {\n x -= Math.round(selfW / 2);\n }\n return {\n x: x,\n y: y,\n w: selfW,\n h: selfH\n };\n }\n var getUiContainerViewPort = function (customUiContainer) {\n return {\n x: 0,\n y: 0,\n w: customUiContainer.scrollWidth - 1,\n h: customUiContainer.scrollHeight - 1\n };\n };\n var getWindowViewPort = function () {\n var win = window;\n var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);\n var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);\n var w = win.innerWidth || document.documentElement.clientWidth;\n var h = win.innerHeight || document.documentElement.clientHeight;\n return {\n x: x,\n y: y,\n w: w,\n h: h\n };\n };\n var getViewPortRect = function (ctrl) {\n var customUiContainer = UiContainer.getUiContainer(ctrl);\n return customUiContainer && !isFixed(ctrl) ? getUiContainerViewPort(customUiContainer) : getWindowViewPort();\n };\n var Movable = {\n testMoveRel: function (elm, rels) {\n var viewPortRect = getViewPortRect(this);\n for (var i = 0; i < rels.length; i++) {\n var pos = calculateRelativePosition(this, elm, rels[i]);\n if (isFixed(this)) {\n if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {\n return rels[i];\n }\n } else {\n if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w + viewPortRect.x && pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h + viewPortRect.y) {\n return rels[i];\n }\n }\n }\n return rels[0];\n },\n moveRel: function (elm, rel) {\n if (typeof rel !== 'string') {\n rel = this.testMoveRel(elm, rel);\n }\n var pos = calculateRelativePosition(this, elm, rel);\n return this.moveTo(pos.x, pos.y);\n },\n moveBy: function (dx, dy) {\n var self$$1 = this, rect = self$$1.layoutRect();\n self$$1.moveTo(rect.x + dx, rect.y + dy);\n return self$$1;\n },\n moveTo: function (x, y) {\n var self$$1 = this;\n function constrain(value, max, size) {\n if (value < 0) {\n return 0;\n }\n if (value + size > max) {\n value = max - size;\n return value < 0 ? 0 : value;\n }\n return value;\n }\n if (self$$1.settings.constrainToViewport) {\n var viewPortRect = getViewPortRect(this);\n var layoutRect = self$$1.layoutRect();\n x = constrain(x, viewPortRect.w + viewPortRect.x, layoutRect.w);\n y = constrain(y, viewPortRect.h + viewPortRect.y, layoutRect.h);\n }\n var uiContainer = UiContainer.getUiContainer(self$$1);\n if (uiContainer && isStatic(uiContainer) && !isFixed(self$$1)) {\n x -= uiContainer.scrollLeft;\n y -= uiContainer.scrollTop;\n }\n if (uiContainer) {\n x += 1;\n y += 1;\n }\n if (self$$1.state.get('rendered')) {\n self$$1.layoutRect({\n x: x,\n y: y\n }).repaint();\n } else {\n self$$1.settings.x = x;\n self$$1.settings.y = y;\n }\n self$$1.fire('move', {\n x: x,\n y: y\n });\n return self$$1;\n }\n };\n\n var global$a = tinymce.util.Tools.resolve('tinymce.util.Class');\n\n var global$b = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher');\n\n var BoxUtils = {\n parseBox: function (value) {\n var len;\n var radix = 10;\n if (!value) {\n return;\n }\n if (typeof value === 'number') {\n value = value || 0;\n return {\n top: value,\n left: value,\n bottom: value,\n right: value\n };\n }\n value = value.split(' ');\n len = value.length;\n if (len === 1) {\n value[1] = value[2] = value[3] = value[0];\n } else if (len === 2) {\n value[2] = value[0];\n value[3] = value[1];\n } else if (len === 3) {\n value[3] = value[1];\n }\n return {\n top: parseInt(value[0], radix) || 0,\n right: parseInt(value[1], radix) || 0,\n bottom: parseInt(value[2], radix) || 0,\n left: parseInt(value[3], radix) || 0\n };\n },\n measureBox: function (elm, prefix) {\n function getStyle(name) {\n var defaultView = elm.ownerDocument.defaultView;\n if (defaultView) {\n var computedStyle = defaultView.getComputedStyle(elm, null);\n if (computedStyle) {\n name = name.replace(/[A-Z]/g, function (a) {\n return '-' + a;\n });\n return computedStyle.getPropertyValue(name);\n } else {\n return null;\n }\n }\n return elm.currentStyle[name];\n }\n function getSide(name) {\n var val = parseFloat(getStyle(name));\n return isNaN(val) ? 0 : val;\n }\n return {\n top: getSide(prefix + 'TopWidth'),\n right: getSide(prefix + 'RightWidth'),\n bottom: getSide(prefix + 'BottomWidth'),\n left: getSide(prefix + 'LeftWidth')\n };\n }\n };\n\n function noop$1() {\n }\n function ClassList(onchange) {\n this.cls = [];\n this.cls._map = {};\n this.onchange = onchange || noop$1;\n this.prefix = '';\n }\n global$2.extend(ClassList.prototype, {\n add: function (cls) {\n if (cls && !this.contains(cls)) {\n this.cls._map[cls] = true;\n this.cls.push(cls);\n this._change();\n }\n return this;\n },\n remove: function (cls) {\n if (this.contains(cls)) {\n var i = void 0;\n for (i = 0; i < this.cls.length; i++) {\n if (this.cls[i] === cls) {\n break;\n }\n }\n this.cls.splice(i, 1);\n delete this.cls._map[cls];\n this._change();\n }\n return this;\n },\n toggle: function (cls, state) {\n var curState = this.contains(cls);\n if (curState !== state) {\n if (curState) {\n this.remove(cls);\n } else {\n this.add(cls);\n }\n this._change();\n }\n return this;\n },\n contains: function (cls) {\n return !!this.cls._map[cls];\n },\n _change: function () {\n delete this.clsValue;\n this.onchange.call(this);\n }\n });\n ClassList.prototype.toString = function () {\n var value;\n if (this.clsValue) {\n return this.clsValue;\n }\n value = '';\n for (var i = 0; i < this.cls.length; i++) {\n if (i > 0) {\n value += ' ';\n }\n value += this.prefix + this.cls[i];\n }\n return value;\n };\n\n function unique(array) {\n var uniqueItems = [];\n var i = array.length, item;\n while (i--) {\n item = array[i];\n if (!item.__checked) {\n uniqueItems.push(item);\n item.__checked = 1;\n }\n }\n i = uniqueItems.length;\n while (i--) {\n delete uniqueItems[i].__checked;\n }\n return uniqueItems;\n }\n var expression = /^([\\w\\\\*]+)?(?:#([\\w\\-\\\\]+))?(?:\\.([\\w\\\\\\.]+))?(?:\\[\\@?([\\w\\\\]+)([\\^\\$\\*!~]?=)([\\w\\\\]+)\\])?(?:\\:(.+))?/i;\n var chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g;\n var whiteSpace = /^\\s*|\\s*$/g;\n var Collection;\n var Selector = global$a.extend({\n init: function (selector) {\n var match = this.match;\n function compileNameFilter(name) {\n if (name) {\n name = name.toLowerCase();\n return function (item) {\n return name === '*' || item.type === name;\n };\n }\n }\n function compileIdFilter(id) {\n if (id) {\n return function (item) {\n return item._name === id;\n };\n }\n }\n function compileClassesFilter(classes) {\n if (classes) {\n classes = classes.split('.');\n return function (item) {\n var i = classes.length;\n while (i--) {\n if (!item.classes.contains(classes[i])) {\n return false;\n }\n }\n return true;\n };\n }\n }\n function compileAttrFilter(name, cmp, check) {\n if (name) {\n return function (item) {\n var value = item[name] ? item[name]() : '';\n return !cmp ? !!check : cmp === '=' ? value === check : cmp === '*=' ? value.indexOf(check) >= 0 : cmp === '~=' ? (' ' + value + ' ').indexOf(' ' + check + ' ') >= 0 : cmp === '!=' ? value !== check : cmp === '^=' ? value.indexOf(check) === 0 : cmp === '$=' ? value.substr(value.length - check.length) === check : false;\n };\n }\n }\n function compilePsuedoFilter(name) {\n var notSelectors;\n if (name) {\n name = /(?:not\\((.+)\\))|(.+)/i.exec(name);\n if (!name[1]) {\n name = name[2];\n return function (item, index, length) {\n return name === 'first' ? index === 0 : name === 'last' ? index === length - 1 : name === 'even' ? index % 2 === 0 : name === 'odd' ? index % 2 === 1 : item[name] ? item[name]() : false;\n };\n }\n notSelectors = parseChunks(name[1], []);\n return function (item) {\n return !match(item, notSelectors);\n };\n }\n }\n function compile(selector, filters, direct) {\n var parts;\n function add(filter) {\n if (filter) {\n filters.push(filter);\n }\n }\n parts = expression.exec(selector.replace(whiteSpace, ''));\n add(compileNameFilter(parts[1]));\n add(compileIdFilter(parts[2]));\n add(compileClassesFilter(parts[3]));\n add(compileAttrFilter(parts[4], parts[5], parts[6]));\n add(compilePsuedoFilter(parts[7]));\n filters.pseudo = !!parts[7];\n filters.direct = direct;\n return filters;\n }\n function parseChunks(selector, selectors) {\n var parts = [];\n var extra, matches, i;\n do {\n chunker.exec('');\n matches = chunker.exec(selector);\n if (matches) {\n selector = matches[3];\n parts.push(matches[1]);\n if (matches[2]) {\n extra = matches[3];\n break;\n }\n }\n } while (matches);\n if (extra) {\n parseChunks(extra, selectors);\n }\n selector = [];\n for (i = 0; i < parts.length; i++) {\n if (parts[i] !== '>') {\n selector.push(compile(parts[i], [], parts[i - 1] === '>'));\n }\n }\n selectors.push(selector);\n return selectors;\n }\n this._selectors = parseChunks(selector, []);\n },\n match: function (control, selectors) {\n var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;\n selectors = selectors || this._selectors;\n for (i = 0, l = selectors.length; i < l; i++) {\n selector = selectors[i];\n sl = selector.length;\n item = control;\n count = 0;\n for (si = sl - 1; si >= 0; si--) {\n filters = selector[si];\n while (item) {\n if (filters.pseudo) {\n siblings = item.parent().items();\n index = length = siblings.length;\n while (index--) {\n if (siblings[index] === item) {\n break;\n }\n }\n }\n for (fi = 0, fl = filters.length; fi < fl; fi++) {\n if (!filters[fi](item, index, length)) {\n fi = fl + 1;\n break;\n }\n }\n if (fi === fl) {\n count++;\n break;\n } else {\n if (si === sl - 1) {\n break;\n }\n }\n item = item.parent();\n }\n }\n if (count === sl) {\n return true;\n }\n }\n return false;\n },\n find: function (container) {\n var matches = [], i, l;\n var selectors = this._selectors;\n function collect(items, selector, index) {\n var i, l, fi, fl, item;\n var filters = selector[index];\n for (i = 0, l = items.length; i < l; i++) {\n item = items[i];\n for (fi = 0, fl = filters.length; fi < fl; fi++) {\n if (!filters[fi](item, i, l)) {\n fi = fl + 1;\n break;\n }\n }\n if (fi === fl) {\n if (index === selector.length - 1) {\n matches.push(item);\n } else {\n if (item.items) {\n collect(item.items(), selector, index + 1);\n }\n }\n } else if (filters.direct) {\n return;\n }\n if (item.items) {\n collect(item.items(), selector, index);\n }\n }\n }\n if (container.items) {\n for (i = 0, l = selectors.length; i < l; i++) {\n collect(container.items(), selectors[i], 0);\n }\n if (l > 1) {\n matches = unique(matches);\n }\n }\n if (!Collection) {\n Collection = Selector.Collection;\n }\n return new Collection(matches);\n }\n });\n\n var Collection$1, proto;\n var push$1 = Array.prototype.push, slice$1 = Array.prototype.slice;\n proto = {\n length: 0,\n init: function (items) {\n if (items) {\n this.add(items);\n }\n },\n add: function (items) {\n var self = this;\n if (!global$2.isArray(items)) {\n if (items instanceof Collection$1) {\n self.add(items.toArray());\n } else {\n push$1.call(self, items);\n }\n } else {\n push$1.apply(self, items);\n }\n return self;\n },\n set: function (items) {\n var self = this;\n var len = self.length;\n var i;\n self.length = 0;\n self.add(items);\n for (i = self.length; i < len; i++) {\n delete self[i];\n }\n return self;\n },\n filter: function (selector) {\n var self = this;\n var i, l;\n var matches = [];\n var item, match;\n if (typeof selector === 'string') {\n selector = new Selector(selector);\n match = function (item) {\n return selector.match(item);\n };\n } else {\n match = selector;\n }\n for (i = 0, l = self.length; i < l; i++) {\n item = self[i];\n if (match(item)) {\n matches.push(item);\n }\n }\n return new Collection$1(matches);\n },\n slice: function () {\n return new Collection$1(slice$1.apply(this, arguments));\n },\n eq: function (index) {\n return index === -1 ? this.slice(index) : this.slice(index, +index + 1);\n },\n each: function (callback) {\n global$2.each(this, callback);\n return this;\n },\n toArray: function () {\n return global$2.toArray(this);\n },\n indexOf: function (ctrl) {\n var self = this;\n var i = self.length;\n while (i--) {\n if (self[i] === ctrl) {\n break;\n }\n }\n return i;\n },\n reverse: function () {\n return new Collection$1(global$2.toArray(this).reverse());\n },\n hasClass: function (cls) {\n return this[0] ? this[0].classes.contains(cls) : false;\n },\n prop: function (name, value) {\n var self = this;\n var item;\n if (value !== undefined) {\n self.each(function (item) {\n if (item[name]) {\n item[name](value);\n }\n });\n return self;\n }\n item = self[0];\n if (item && item[name]) {\n return item[name]();\n }\n },\n exec: function (name) {\n var self = this, args = global$2.toArray(arguments).slice(1);\n self.each(function (item) {\n if (item[name]) {\n item[name].apply(item, args);\n }\n });\n return self;\n },\n remove: function () {\n var i = this.length;\n while (i--) {\n this[i].remove();\n }\n return this;\n },\n addClass: function (cls) {\n return this.each(function (item) {\n item.classes.add(cls);\n });\n },\n removeClass: function (cls) {\n return this.each(function (item) {\n item.classes.remove(cls);\n });\n }\n };\n global$2.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) {\n proto[name] = function () {\n var args = global$2.toArray(arguments);\n this.each(function (ctrl) {\n if (name in ctrl) {\n ctrl[name].apply(ctrl, args);\n }\n });\n return this;\n };\n });\n global$2.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) {\n proto[name] = function (value) {\n return this.prop(name, value);\n };\n });\n Collection$1 = global$a.extend(proto);\n Selector.Collection = Collection$1;\n var Collection$2 = Collection$1;\n\n var Binding = function (settings) {\n this.create = settings.create;\n };\n Binding.create = function (model, name) {\n return new Binding({\n create: function (otherModel, otherName) {\n var bindings;\n var fromSelfToOther = function (e) {\n otherModel.set(otherName, e.value);\n };\n var fromOtherToSelf = function (e) {\n model.set(name, e.value);\n };\n otherModel.on('change:' + otherName, fromOtherToSelf);\n model.on('change:' + name, fromSelfToOther);\n bindings = otherModel._bindings;\n if (!bindings) {\n bindings = otherModel._bindings = [];\n otherModel.on('destroy', function () {\n var i = bindings.length;\n while (i--) {\n bindings[i]();\n }\n });\n }\n bindings.push(function () {\n model.off('change:' + name, fromSelfToOther);\n });\n return model.get(name);\n }\n });\n };\n\n var global$c = tinymce.util.Tools.resolve('tinymce.util.Observable');\n\n function isNode(node) {\n return node.nodeType > 0;\n }\n function isEqual(a, b) {\n var k, checked;\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return a === b;\n }\n if (typeof a !== 'object' || typeof b !== 'object') {\n return a === b;\n }\n if (global$2.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n k = a.length;\n while (k--) {\n if (!isEqual(a[k], b[k])) {\n return false;\n }\n }\n }\n if (isNode(a) || isNode(b)) {\n return a === b;\n }\n checked = {};\n for (k in b) {\n if (!isEqual(a[k], b[k])) {\n return false;\n }\n checked[k] = true;\n }\n for (k in a) {\n if (!checked[k] && !isEqual(a[k], b[k])) {\n return false;\n }\n }\n return true;\n }\n var ObservableObject = global$a.extend({\n Mixins: [global$c],\n init: function (data) {\n var name, value;\n data = data || {};\n for (name in data) {\n value = data[name];\n if (value instanceof Binding) {\n data[name] = value.create(this, name);\n }\n }\n this.data = data;\n },\n set: function (name, value) {\n var key, args;\n var oldValue = this.data[name];\n if (value instanceof Binding) {\n value = value.create(this, name);\n }\n if (typeof name === 'object') {\n for (key in name) {\n this.set(key, name[key]);\n }\n return this;\n }\n if (!isEqual(oldValue, value)) {\n this.data[name] = value;\n args = {\n target: this,\n name: name,\n value: value,\n oldValue: oldValue\n };\n this.fire('change:' + name, args);\n this.fire('change', args);\n }\n return this;\n },\n get: function (name) {\n return this.data[name];\n },\n has: function (name) {\n return name in this.data;\n },\n bind: function (name) {\n return Binding.create(this, name);\n },\n destroy: function () {\n this.fire('destroy');\n }\n });\n\n var dirtyCtrls = {}, animationFrameRequested;\n var ReflowQueue = {\n add: function (ctrl) {\n var parent$$1 = ctrl.parent();\n if (parent$$1) {\n if (!parent$$1._layout || parent$$1._layout.isNative()) {\n return;\n }\n if (!dirtyCtrls[parent$$1._id]) {\n dirtyCtrls[parent$$1._id] = parent$$1;\n }\n if (!animationFrameRequested) {\n animationFrameRequested = true;\n global$7.requestAnimationFrame(function () {\n var id, ctrl;\n animationFrameRequested = false;\n for (id in dirtyCtrls) {\n ctrl = dirtyCtrls[id];\n if (ctrl.state.get('rendered')) {\n ctrl.reflow();\n }\n }\n dirtyCtrls = {};\n }, document.body);\n }\n }\n },\n remove: function (ctrl) {\n if (dirtyCtrls[ctrl._id]) {\n delete dirtyCtrls[ctrl._id];\n }\n }\n };\n\n var hasMouseWheelEventSupport = 'onmousewheel' in document;\n var hasWheelEventSupport = false;\n var classPrefix = 'mce-';\n var Control, idCounter = 0;\n var proto$1 = {\n Statics: { classPrefix: classPrefix },\n isRtl: function () {\n return Control.rtl;\n },\n classPrefix: classPrefix,\n init: function (settings) {\n var self$$1 = this;\n var classes, defaultClasses;\n function applyClasses(classes) {\n var i;\n classes = classes.split(' ');\n for (i = 0; i < classes.length; i++) {\n self$$1.classes.add(classes[i]);\n }\n }\n self$$1.settings = settings = global$2.extend({}, self$$1.Defaults, settings);\n self$$1._id = settings.id || 'mceu_' + idCounter++;\n self$$1._aria = { role: settings.role };\n self$$1._elmCache = {};\n self$$1.$ = global$9;\n self$$1.state = new ObservableObject({\n visible: true,\n active: false,\n disabled: false,\n value: ''\n });\n self$$1.data = new ObservableObject(settings.data);\n self$$1.classes = new ClassList(function () {\n if (self$$1.state.get('rendered')) {\n self$$1.getEl().className = this.toString();\n }\n });\n self$$1.classes.prefix = self$$1.classPrefix;\n classes = settings.classes;\n if (classes) {\n if (self$$1.Defaults) {\n defaultClasses = self$$1.Defaults.classes;\n if (defaultClasses && classes !== defaultClasses) {\n applyClasses(defaultClasses);\n }\n }\n applyClasses(classes);\n }\n global$2.each('title text name visible disabled active value'.split(' '), function (name$$1) {\n if (name$$1 in settings) {\n self$$1[name$$1](settings[name$$1]);\n }\n });\n self$$1.on('click', function () {\n if (self$$1.disabled()) {\n return false;\n }\n });\n self$$1.settings = settings;\n self$$1.borderBox = BoxUtils.parseBox(settings.border);\n self$$1.paddingBox = BoxUtils.parseBox(settings.padding);\n self$$1.marginBox = BoxUtils.parseBox(settings.margin);\n if (settings.hidden) {\n self$$1.hide();\n }\n },\n Properties: 'parent,name',\n getContainerElm: function () {\n var uiContainer = UiContainer.getUiContainer(this);\n return uiContainer ? uiContainer : funcs.getContainer();\n },\n getParentCtrl: function (elm) {\n var ctrl;\n var lookup = this.getRoot().controlIdLookup;\n while (elm && lookup) {\n ctrl = lookup[elm.id];\n if (ctrl) {\n break;\n }\n elm = elm.parentNode;\n }\n return ctrl;\n },\n initLayoutRect: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var borderBox, layoutRect;\n var elm = self$$1.getEl();\n var width, height, minWidth, minHeight, autoResize;\n var startMinWidth, startMinHeight, initialSize;\n borderBox = self$$1.borderBox = self$$1.borderBox || BoxUtils.measureBox(elm, 'border');\n self$$1.paddingBox = self$$1.paddingBox || BoxUtils.measureBox(elm, 'padding');\n self$$1.marginBox = self$$1.marginBox || BoxUtils.measureBox(elm, 'margin');\n initialSize = funcs.getSize(elm);\n startMinWidth = settings.minWidth;\n startMinHeight = settings.minHeight;\n minWidth = startMinWidth || initialSize.width;\n minHeight = startMinHeight || initialSize.height;\n width = settings.width;\n height = settings.height;\n autoResize = settings.autoResize;\n autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height;\n width = width || minWidth;\n height = height || minHeight;\n var deltaW = borderBox.left + borderBox.right;\n var deltaH = borderBox.top + borderBox.bottom;\n var maxW = settings.maxWidth || 65535;\n var maxH = settings.maxHeight || 65535;\n self$$1._layoutRect = layoutRect = {\n x: settings.x || 0,\n y: settings.y || 0,\n w: width,\n h: height,\n deltaW: deltaW,\n deltaH: deltaH,\n contentW: width - deltaW,\n contentH: height - deltaH,\n innerW: width - deltaW,\n innerH: height - deltaH,\n startMinWidth: startMinWidth || 0,\n startMinHeight: startMinHeight || 0,\n minW: Math.min(minWidth, maxW),\n minH: Math.min(minHeight, maxH),\n maxW: maxW,\n maxH: maxH,\n autoResize: autoResize,\n scrollW: 0\n };\n self$$1._lastLayoutRect = {};\n return layoutRect;\n },\n layoutRect: function (newRect) {\n var self$$1 = this;\n var curRect = self$$1._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;\n if (!curRect) {\n curRect = self$$1.initLayoutRect();\n }\n if (newRect) {\n deltaWidth = curRect.deltaW;\n deltaHeight = curRect.deltaH;\n if (newRect.x !== undefined) {\n curRect.x = newRect.x;\n }\n if (newRect.y !== undefined) {\n curRect.y = newRect.y;\n }\n if (newRect.minW !== undefined) {\n curRect.minW = newRect.minW;\n }\n if (newRect.minH !== undefined) {\n curRect.minH = newRect.minH;\n }\n size = newRect.w;\n if (size !== undefined) {\n size = size < curRect.minW ? curRect.minW : size;\n size = size > curRect.maxW ? curRect.maxW : size;\n curRect.w = size;\n curRect.innerW = size - deltaWidth;\n }\n size = newRect.h;\n if (size !== undefined) {\n size = size < curRect.minH ? curRect.minH : size;\n size = size > curRect.maxH ? curRect.maxH : size;\n curRect.h = size;\n curRect.innerH = size - deltaHeight;\n }\n size = newRect.innerW;\n if (size !== undefined) {\n size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;\n size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;\n curRect.innerW = size;\n curRect.w = size + deltaWidth;\n }\n size = newRect.innerH;\n if (size !== undefined) {\n size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;\n size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;\n curRect.innerH = size;\n curRect.h = size + deltaHeight;\n }\n if (newRect.contentW !== undefined) {\n curRect.contentW = newRect.contentW;\n }\n if (newRect.contentH !== undefined) {\n curRect.contentH = newRect.contentH;\n }\n lastLayoutRect = self$$1._lastLayoutRect;\n if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {\n repaintControls = Control.repaintControls;\n if (repaintControls) {\n if (repaintControls.map && !repaintControls.map[self$$1._id]) {\n repaintControls.push(self$$1);\n repaintControls.map[self$$1._id] = true;\n }\n }\n lastLayoutRect.x = curRect.x;\n lastLayoutRect.y = curRect.y;\n lastLayoutRect.w = curRect.w;\n lastLayoutRect.h = curRect.h;\n }\n return self$$1;\n }\n return curRect;\n },\n repaint: function () {\n var self$$1 = this;\n var style, bodyStyle, bodyElm, rect, borderBox;\n var borderW, borderH, lastRepaintRect, round, value;\n round = !document.createRange ? Math.round : function (value) {\n return value;\n };\n style = self$$1.getEl().style;\n rect = self$$1._layoutRect;\n lastRepaintRect = self$$1._lastRepaintRect || {};\n borderBox = self$$1.borderBox;\n borderW = borderBox.left + borderBox.right;\n borderH = borderBox.top + borderBox.bottom;\n if (rect.x !== lastRepaintRect.x) {\n style.left = round(rect.x) + 'px';\n lastRepaintRect.x = rect.x;\n }\n if (rect.y !== lastRepaintRect.y) {\n style.top = round(rect.y) + 'px';\n lastRepaintRect.y = rect.y;\n }\n if (rect.w !== lastRepaintRect.w) {\n value = round(rect.w - borderW);\n style.width = (value >= 0 ? value : 0) + 'px';\n lastRepaintRect.w = rect.w;\n }\n if (rect.h !== lastRepaintRect.h) {\n value = round(rect.h - borderH);\n style.height = (value >= 0 ? value : 0) + 'px';\n lastRepaintRect.h = rect.h;\n }\n if (self$$1._hasBody && rect.innerW !== lastRepaintRect.innerW) {\n value = round(rect.innerW);\n bodyElm = self$$1.getEl('body');\n if (bodyElm) {\n bodyStyle = bodyElm.style;\n bodyStyle.width = (value >= 0 ? value : 0) + 'px';\n }\n lastRepaintRect.innerW = rect.innerW;\n }\n if (self$$1._hasBody && rect.innerH !== lastRepaintRect.innerH) {\n value = round(rect.innerH);\n bodyElm = bodyElm || self$$1.getEl('body');\n if (bodyElm) {\n bodyStyle = bodyStyle || bodyElm.style;\n bodyStyle.height = (value >= 0 ? value : 0) + 'px';\n }\n lastRepaintRect.innerH = rect.innerH;\n }\n self$$1._lastRepaintRect = lastRepaintRect;\n self$$1.fire('repaint', {}, false);\n },\n updateLayoutRect: function () {\n var self$$1 = this;\n self$$1.parent()._lastRect = null;\n funcs.css(self$$1.getEl(), {\n width: '',\n height: ''\n });\n self$$1._layoutRect = self$$1._lastRepaintRect = self$$1._lastLayoutRect = null;\n self$$1.initLayoutRect();\n },\n on: function (name$$1, callback) {\n var self$$1 = this;\n function resolveCallbackName(name$$1) {\n var callback, scope;\n if (typeof name$$1 !== 'string') {\n return name$$1;\n }\n return function (e) {\n if (!callback) {\n self$$1.parentsAndSelf().each(function (ctrl) {\n var callbacks = ctrl.settings.callbacks;\n if (callbacks && (callback = callbacks[name$$1])) {\n scope = ctrl;\n return false;\n }\n });\n }\n if (!callback) {\n e.action = name$$1;\n this.fire('execute', e);\n return;\n }\n return callback.call(scope, e);\n };\n }\n getEventDispatcher(self$$1).on(name$$1, resolveCallbackName(callback));\n return self$$1;\n },\n off: function (name$$1, callback) {\n getEventDispatcher(this).off(name$$1, callback);\n return this;\n },\n fire: function (name$$1, args, bubble) {\n var self$$1 = this;\n args = args || {};\n if (!args.control) {\n args.control = self$$1;\n }\n args = getEventDispatcher(self$$1).fire(name$$1, args);\n if (bubble !== false && self$$1.parent) {\n var parent$$1 = self$$1.parent();\n while (parent$$1 && !args.isPropagationStopped()) {\n parent$$1.fire(name$$1, args, false);\n parent$$1 = parent$$1.parent();\n }\n }\n return args;\n },\n hasEventListeners: function (name$$1) {\n return getEventDispatcher(this).has(name$$1);\n },\n parents: function (selector) {\n var self$$1 = this;\n var ctrl, parents = new Collection$2();\n for (ctrl = self$$1.parent(); ctrl; ctrl = ctrl.parent()) {\n parents.add(ctrl);\n }\n if (selector) {\n parents = parents.filter(selector);\n }\n return parents;\n },\n parentsAndSelf: function (selector) {\n return new Collection$2(this).add(this.parents(selector));\n },\n next: function () {\n var parentControls = this.parent().items();\n return parentControls[parentControls.indexOf(this) + 1];\n },\n prev: function () {\n var parentControls = this.parent().items();\n return parentControls[parentControls.indexOf(this) - 1];\n },\n innerHtml: function (html) {\n this.$el.html(html);\n return this;\n },\n getEl: function (suffix) {\n var id = suffix ? this._id + '-' + suffix : this._id;\n if (!this._elmCache[id]) {\n this._elmCache[id] = global$9('#' + id)[0];\n }\n return this._elmCache[id];\n },\n show: function () {\n return this.visible(true);\n },\n hide: function () {\n return this.visible(false);\n },\n focus: function () {\n try {\n this.getEl().focus();\n } catch (ex) {\n }\n return this;\n },\n blur: function () {\n this.getEl().blur();\n return this;\n },\n aria: function (name$$1, value) {\n var self$$1 = this, elm = self$$1.getEl(self$$1.ariaTarget);\n if (typeof value === 'undefined') {\n return self$$1._aria[name$$1];\n }\n self$$1._aria[name$$1] = value;\n if (self$$1.state.get('rendered')) {\n elm.setAttribute(name$$1 === 'role' ? name$$1 : 'aria-' + name$$1, value);\n }\n return self$$1;\n },\n encode: function (text, translate) {\n if (translate !== false) {\n text = this.translate(text);\n }\n return (text || '').replace(/[&<>\"]/g, function (match) {\n return '&#' + match.charCodeAt(0) + ';';\n });\n },\n translate: function (text) {\n return Control.translate ? Control.translate(text) : text;\n },\n before: function (items) {\n var self$$1 = this, parent$$1 = self$$1.parent();\n if (parent$$1) {\n parent$$1.insert(items, parent$$1.items().indexOf(self$$1), true);\n }\n return self$$1;\n },\n after: function (items) {\n var self$$1 = this, parent$$1 = self$$1.parent();\n if (parent$$1) {\n parent$$1.insert(items, parent$$1.items().indexOf(self$$1));\n }\n return self$$1;\n },\n remove: function () {\n var self$$1 = this;\n var elm = self$$1.getEl();\n var parent$$1 = self$$1.parent();\n var newItems, i;\n if (self$$1.items) {\n var controls = self$$1.items().toArray();\n i = controls.length;\n while (i--) {\n controls[i].remove();\n }\n }\n if (parent$$1 && parent$$1.items) {\n newItems = [];\n parent$$1.items().each(function (item) {\n if (item !== self$$1) {\n newItems.push(item);\n }\n });\n parent$$1.items().set(newItems);\n parent$$1._lastRect = null;\n }\n if (self$$1._eventsRoot && self$$1._eventsRoot === self$$1) {\n global$9(elm).off();\n }\n var lookup = self$$1.getRoot().controlIdLookup;\n if (lookup) {\n delete lookup[self$$1._id];\n }\n if (elm && elm.parentNode) {\n elm.parentNode.removeChild(elm);\n }\n self$$1.state.set('rendered', false);\n self$$1.state.destroy();\n self$$1.fire('remove');\n return self$$1;\n },\n renderBefore: function (elm) {\n global$9(elm).before(this.renderHtml());\n this.postRender();\n return this;\n },\n renderTo: function (elm) {\n global$9(elm || this.getContainerElm()).append(this.renderHtml());\n this.postRender();\n return this;\n },\n preRender: function () {\n },\n render: function () {\n },\n renderHtml: function () {\n return '
    ';\n },\n postRender: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var elm, box, parent$$1, name$$1, parentEventsRoot;\n self$$1.$el = global$9(self$$1.getEl());\n self$$1.state.set('rendered', true);\n for (name$$1 in settings) {\n if (name$$1.indexOf('on') === 0) {\n self$$1.on(name$$1.substr(2), settings[name$$1]);\n }\n }\n if (self$$1._eventsRoot) {\n for (parent$$1 = self$$1.parent(); !parentEventsRoot && parent$$1; parent$$1 = parent$$1.parent()) {\n parentEventsRoot = parent$$1._eventsRoot;\n }\n if (parentEventsRoot) {\n for (name$$1 in parentEventsRoot._nativeEvents) {\n self$$1._nativeEvents[name$$1] = true;\n }\n }\n }\n bindPendingEvents(self$$1);\n if (settings.style) {\n elm = self$$1.getEl();\n if (elm) {\n elm.setAttribute('style', settings.style);\n elm.style.cssText = settings.style;\n }\n }\n if (self$$1.settings.border) {\n box = self$$1.borderBox;\n self$$1.$el.css({\n 'border-top-width': box.top,\n 'border-right-width': box.right,\n 'border-bottom-width': box.bottom,\n 'border-left-width': box.left\n });\n }\n var root = self$$1.getRoot();\n if (!root.controlIdLookup) {\n root.controlIdLookup = {};\n }\n root.controlIdLookup[self$$1._id] = self$$1;\n for (var key in self$$1._aria) {\n self$$1.aria(key, self$$1._aria[key]);\n }\n if (self$$1.state.get('visible') === false) {\n self$$1.getEl().style.display = 'none';\n }\n self$$1.bindStates();\n self$$1.state.on('change:visible', function (e) {\n var state = e.value;\n var parentCtrl;\n if (self$$1.state.get('rendered')) {\n self$$1.getEl().style.display = state === false ? 'none' : '';\n self$$1.getEl().getBoundingClientRect();\n }\n parentCtrl = self$$1.parent();\n if (parentCtrl) {\n parentCtrl._lastRect = null;\n }\n self$$1.fire(state ? 'show' : 'hide');\n ReflowQueue.add(self$$1);\n });\n self$$1.fire('postrender', {}, false);\n },\n bindStates: function () {\n },\n scrollIntoView: function (align) {\n function getOffset(elm, rootElm) {\n var x, y, parent$$1 = elm;\n x = y = 0;\n while (parent$$1 && parent$$1 !== rootElm && parent$$1.nodeType) {\n x += parent$$1.offsetLeft || 0;\n y += parent$$1.offsetTop || 0;\n parent$$1 = parent$$1.offsetParent;\n }\n return {\n x: x,\n y: y\n };\n }\n var elm = this.getEl(), parentElm = elm.parentNode;\n var x, y, width, height, parentWidth, parentHeight;\n var pos = getOffset(elm, parentElm);\n x = pos.x;\n y = pos.y;\n width = elm.offsetWidth;\n height = elm.offsetHeight;\n parentWidth = parentElm.clientWidth;\n parentHeight = parentElm.clientHeight;\n if (align === 'end') {\n x -= parentWidth - width;\n y -= parentHeight - height;\n } else if (align === 'center') {\n x -= parentWidth / 2 - width / 2;\n y -= parentHeight / 2 - height / 2;\n }\n parentElm.scrollLeft = x;\n parentElm.scrollTop = y;\n return this;\n },\n getRoot: function () {\n var ctrl = this, rootControl;\n var parents = [];\n while (ctrl) {\n if (ctrl.rootControl) {\n rootControl = ctrl.rootControl;\n break;\n }\n parents.push(ctrl);\n rootControl = ctrl;\n ctrl = ctrl.parent();\n }\n if (!rootControl) {\n rootControl = this;\n }\n var i = parents.length;\n while (i--) {\n parents[i].rootControl = rootControl;\n }\n return rootControl;\n },\n reflow: function () {\n ReflowQueue.remove(this);\n var parent$$1 = this.parent();\n if (parent$$1 && parent$$1._layout && !parent$$1._layout.isNative()) {\n parent$$1.reflow();\n }\n return this;\n }\n };\n global$2.each('text title visible disabled active value'.split(' '), function (name$$1) {\n proto$1[name$$1] = function (value) {\n if (arguments.length === 0) {\n return this.state.get(name$$1);\n }\n if (typeof value !== 'undefined') {\n this.state.set(name$$1, value);\n }\n return this;\n };\n });\n Control = global$a.extend(proto$1);\n function getEventDispatcher(obj) {\n if (!obj._eventDispatcher) {\n obj._eventDispatcher = new global$b({\n scope: obj,\n toggleEvent: function (name$$1, state) {\n if (state && global$b.isNative(name$$1)) {\n if (!obj._nativeEvents) {\n obj._nativeEvents = {};\n }\n obj._nativeEvents[name$$1] = true;\n if (obj.state.get('rendered')) {\n bindPendingEvents(obj);\n }\n }\n }\n });\n }\n return obj._eventDispatcher;\n }\n function bindPendingEvents(eventCtrl) {\n var i, l, parents, eventRootCtrl, nativeEvents, name$$1;\n function delegate(e) {\n var control = eventCtrl.getParentCtrl(e.target);\n if (control) {\n control.fire(e.type, e);\n }\n }\n function mouseLeaveHandler() {\n var ctrl = eventRootCtrl._lastHoverCtrl;\n if (ctrl) {\n ctrl.fire('mouseleave', { target: ctrl.getEl() });\n ctrl.parents().each(function (ctrl) {\n ctrl.fire('mouseleave', { target: ctrl.getEl() });\n });\n eventRootCtrl._lastHoverCtrl = null;\n }\n }\n function mouseEnterHandler(e) {\n var ctrl = eventCtrl.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;\n if (ctrl !== lastCtrl) {\n eventRootCtrl._lastHoverCtrl = ctrl;\n parents = ctrl.parents().toArray().reverse();\n parents.push(ctrl);\n if (lastCtrl) {\n lastParents = lastCtrl.parents().toArray().reverse();\n lastParents.push(lastCtrl);\n for (idx = 0; idx < lastParents.length; idx++) {\n if (parents[idx] !== lastParents[idx]) {\n break;\n }\n }\n for (i = lastParents.length - 1; i >= idx; i--) {\n lastCtrl = lastParents[i];\n lastCtrl.fire('mouseleave', { target: lastCtrl.getEl() });\n }\n }\n for (i = idx; i < parents.length; i++) {\n ctrl = parents[i];\n ctrl.fire('mouseenter', { target: ctrl.getEl() });\n }\n }\n }\n function fixWheelEvent(e) {\n e.preventDefault();\n if (e.type === 'mousewheel') {\n e.deltaY = -1 / 40 * e.wheelDelta;\n if (e.wheelDeltaX) {\n e.deltaX = -1 / 40 * e.wheelDeltaX;\n }\n } else {\n e.deltaX = 0;\n e.deltaY = e.detail;\n }\n e = eventCtrl.fire('wheel', e);\n }\n nativeEvents = eventCtrl._nativeEvents;\n if (nativeEvents) {\n parents = eventCtrl.parents().toArray();\n parents.unshift(eventCtrl);\n for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {\n eventRootCtrl = parents[i]._eventsRoot;\n }\n if (!eventRootCtrl) {\n eventRootCtrl = parents[parents.length - 1] || eventCtrl;\n }\n eventCtrl._eventsRoot = eventRootCtrl;\n for (l = i, i = 0; i < l; i++) {\n parents[i]._eventsRoot = eventRootCtrl;\n }\n var eventRootDelegates = eventRootCtrl._delegates;\n if (!eventRootDelegates) {\n eventRootDelegates = eventRootCtrl._delegates = {};\n }\n for (name$$1 in nativeEvents) {\n if (!nativeEvents) {\n return false;\n }\n if (name$$1 === 'wheel' && !hasWheelEventSupport) {\n if (hasMouseWheelEventSupport) {\n global$9(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);\n } else {\n global$9(eventCtrl.getEl()).on('DOMMouseScroll', fixWheelEvent);\n }\n continue;\n }\n if (name$$1 === 'mouseenter' || name$$1 === 'mouseleave') {\n if (!eventRootCtrl._hasMouseEnter) {\n global$9(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);\n eventRootCtrl._hasMouseEnter = 1;\n }\n } else if (!eventRootDelegates[name$$1]) {\n global$9(eventRootCtrl.getEl()).on(name$$1, delegate);\n eventRootDelegates[name$$1] = true;\n }\n nativeEvents[name$$1] = false;\n }\n }\n }\n var Control$1 = Control;\n\n var hasTabstopData = function (elm) {\n return elm.getAttribute('data-mce-tabstop') ? true : false;\n };\n function KeyboardNavigation (settings) {\n var root = settings.root;\n var focusedElement, focusedControl;\n function isElement(node) {\n return node && node.nodeType === 1;\n }\n try {\n focusedElement = document.activeElement;\n } catch (ex) {\n focusedElement = document.body;\n }\n focusedControl = root.getParentCtrl(focusedElement);\n function getRole(elm) {\n elm = elm || focusedElement;\n if (isElement(elm)) {\n return elm.getAttribute('role');\n }\n return null;\n }\n function getParentRole(elm) {\n var role, parent$$1 = elm || focusedElement;\n while (parent$$1 = parent$$1.parentNode) {\n if (role = getRole(parent$$1)) {\n return role;\n }\n }\n }\n function getAriaProp(name$$1) {\n var elm = focusedElement;\n if (isElement(elm)) {\n return elm.getAttribute('aria-' + name$$1);\n }\n }\n function isTextInputElement(elm) {\n var tagName = elm.tagName.toUpperCase();\n return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT';\n }\n function canFocus(elm) {\n if (isTextInputElement(elm) && !elm.hidden) {\n return true;\n }\n if (hasTabstopData(elm)) {\n return true;\n }\n if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(getRole(elm))) {\n return true;\n }\n return false;\n }\n function getFocusElements(elm) {\n var elements = [];\n function collect(elm) {\n if (elm.nodeType !== 1 || elm.style.display === 'none' || elm.disabled) {\n return;\n }\n if (canFocus(elm)) {\n elements.push(elm);\n }\n for (var i = 0; i < elm.childNodes.length; i++) {\n collect(elm.childNodes[i]);\n }\n }\n collect(elm || root.getEl());\n return elements;\n }\n function getNavigationRoot(targetControl) {\n var navigationRoot, controls;\n targetControl = targetControl || focusedControl;\n controls = targetControl.parents().toArray();\n controls.unshift(targetControl);\n for (var i = 0; i < controls.length; i++) {\n navigationRoot = controls[i];\n if (navigationRoot.settings.ariaRoot) {\n break;\n }\n }\n return navigationRoot;\n }\n function focusFirst(targetControl) {\n var navigationRoot = getNavigationRoot(targetControl);\n var focusElements = getFocusElements(navigationRoot.getEl());\n if (navigationRoot.settings.ariaRemember && 'lastAriaIndex' in navigationRoot) {\n moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);\n } else {\n moveFocusToIndex(0, focusElements);\n }\n }\n function moveFocusToIndex(idx, elements) {\n if (idx < 0) {\n idx = elements.length - 1;\n } else if (idx >= elements.length) {\n idx = 0;\n }\n if (elements[idx]) {\n elements[idx].focus();\n }\n return idx;\n }\n function moveFocus(dir, elements) {\n var idx = -1;\n var navigationRoot = getNavigationRoot();\n elements = elements || getFocusElements(navigationRoot.getEl());\n for (var i = 0; i < elements.length; i++) {\n if (elements[i] === focusedElement) {\n idx = i;\n }\n }\n idx += dir;\n navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);\n }\n function left() {\n var parentRole = getParentRole();\n if (parentRole === 'tablist') {\n moveFocus(-1, getFocusElements(focusedElement.parentNode));\n } else if (focusedControl.parent().submenu) {\n cancel();\n } else {\n moveFocus(-1);\n }\n }\n function right() {\n var role = getRole(), parentRole = getParentRole();\n if (parentRole === 'tablist') {\n moveFocus(1, getFocusElements(focusedElement.parentNode));\n } else if (role === 'menuitem' && parentRole === 'menu' && getAriaProp('haspopup')) {\n enter();\n } else {\n moveFocus(1);\n }\n }\n function up() {\n moveFocus(-1);\n }\n function down() {\n var role = getRole(), parentRole = getParentRole();\n if (role === 'menuitem' && parentRole === 'menubar') {\n enter();\n } else if (role === 'button' && getAriaProp('haspopup')) {\n enter({ key: 'down' });\n } else {\n moveFocus(1);\n }\n }\n function tab(e) {\n var parentRole = getParentRole();\n if (parentRole === 'tablist') {\n var elm = getFocusElements(focusedControl.getEl('body'))[0];\n if (elm) {\n elm.focus();\n }\n } else {\n moveFocus(e.shiftKey ? -1 : 1);\n }\n }\n function cancel() {\n focusedControl.fire('cancel');\n }\n function enter(aria) {\n aria = aria || {};\n focusedControl.fire('click', {\n target: focusedElement,\n aria: aria\n });\n }\n root.on('keydown', function (e) {\n function handleNonTabOrEscEvent(e, handler) {\n if (isTextInputElement(focusedElement) || hasTabstopData(focusedElement)) {\n return;\n }\n if (getRole(focusedElement) === 'slider') {\n return;\n }\n if (handler(e) !== false) {\n e.preventDefault();\n }\n }\n if (e.isDefaultPrevented()) {\n return;\n }\n switch (e.keyCode) {\n case 37:\n handleNonTabOrEscEvent(e, left);\n break;\n case 39:\n handleNonTabOrEscEvent(e, right);\n break;\n case 38:\n handleNonTabOrEscEvent(e, up);\n break;\n case 40:\n handleNonTabOrEscEvent(e, down);\n break;\n case 27:\n cancel();\n break;\n case 14:\n case 13:\n case 32:\n handleNonTabOrEscEvent(e, enter);\n break;\n case 9:\n tab(e);\n e.preventDefault();\n break;\n }\n });\n root.on('focusin', function (e) {\n focusedElement = e.target;\n focusedControl = e.control;\n });\n return { focusFirst: focusFirst };\n }\n\n var selectorCache = {};\n var Container = Control$1.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n settings = self.settings;\n if (settings.fixed) {\n self.state.set('fixed', true);\n }\n self._items = new Collection$2();\n if (self.isRtl()) {\n self.classes.add('rtl');\n }\n self.bodyClasses = new ClassList(function () {\n if (self.state.get('rendered')) {\n self.getEl('body').className = this.toString();\n }\n });\n self.bodyClasses.prefix = self.classPrefix;\n self.classes.add('container');\n self.bodyClasses.add('container-body');\n if (settings.containerCls) {\n self.classes.add(settings.containerCls);\n }\n self._layout = global$4.create((settings.layout || '') + 'layout');\n if (self.settings.items) {\n self.add(self.settings.items);\n } else {\n self.add(self.render());\n }\n self._hasBody = true;\n },\n items: function () {\n return this._items;\n },\n find: function (selector) {\n selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);\n return selector.find(this);\n },\n add: function (items) {\n var self = this;\n self.items().add(self.create(items)).parent(self);\n return self;\n },\n focus: function (keyboard) {\n var self = this;\n var focusCtrl, keyboardNav, items;\n if (keyboard) {\n keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;\n if (keyboardNav) {\n keyboardNav.focusFirst(self);\n return;\n }\n }\n items = self.find('*');\n if (self.statusbar) {\n items.add(self.statusbar.items());\n }\n items.each(function (ctrl) {\n if (ctrl.settings.autofocus) {\n focusCtrl = null;\n return false;\n }\n if (ctrl.canFocus) {\n focusCtrl = focusCtrl || ctrl;\n }\n });\n if (focusCtrl) {\n focusCtrl.focus();\n }\n return self;\n },\n replace: function (oldItem, newItem) {\n var ctrlElm;\n var items = this.items();\n var i = items.length;\n while (i--) {\n if (items[i] === oldItem) {\n items[i] = newItem;\n break;\n }\n }\n if (i >= 0) {\n ctrlElm = newItem.getEl();\n if (ctrlElm) {\n ctrlElm.parentNode.removeChild(ctrlElm);\n }\n ctrlElm = oldItem.getEl();\n if (ctrlElm) {\n ctrlElm.parentNode.removeChild(ctrlElm);\n }\n }\n newItem.parent(this);\n },\n create: function (items) {\n var self = this;\n var settings;\n var ctrlItems = [];\n if (!global$2.isArray(items)) {\n items = [items];\n }\n global$2.each(items, function (item) {\n if (item) {\n if (!(item instanceof Control$1)) {\n if (typeof item === 'string') {\n item = { type: item };\n }\n settings = global$2.extend({}, self.settings.defaults, item);\n item.type = settings.type = settings.type || item.type || self.settings.defaultType || (settings.defaults ? settings.defaults.type : null);\n item = global$4.create(settings);\n }\n ctrlItems.push(item);\n }\n });\n return ctrlItems;\n },\n renderNew: function () {\n var self = this;\n self.items().each(function (ctrl, index) {\n var containerElm;\n ctrl.parent(self);\n if (!ctrl.state.get('rendered')) {\n containerElm = self.getEl('body');\n if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {\n global$9(containerElm.childNodes[index]).before(ctrl.renderHtml());\n } else {\n global$9(containerElm).append(ctrl.renderHtml());\n }\n ctrl.postRender();\n ReflowQueue.add(ctrl);\n }\n });\n self._layout.applyClasses(self.items().filter(':visible'));\n self._lastRect = null;\n return self;\n },\n append: function (items) {\n return this.add(items).renderNew();\n },\n prepend: function (items) {\n var self = this;\n self.items().set(self.create(items).concat(self.items().toArray()));\n return self.renderNew();\n },\n insert: function (items, index, before) {\n var self = this;\n var curItems, beforeItems, afterItems;\n items = self.create(items);\n curItems = self.items();\n if (!before && index < curItems.length - 1) {\n index += 1;\n }\n if (index >= 0 && index < curItems.length) {\n beforeItems = curItems.slice(0, index).toArray();\n afterItems = curItems.slice(index).toArray();\n curItems.set(beforeItems.concat(items, afterItems));\n }\n return self.renderNew();\n },\n fromJSON: function (data) {\n var self = this;\n for (var name in data) {\n self.find('#' + name).value(data[name]);\n }\n return self;\n },\n toJSON: function () {\n var self = this, data = {};\n self.find('*').each(function (ctrl) {\n var name = ctrl.name(), value = ctrl.value();\n if (name && typeof value !== 'undefined') {\n data[name] = value;\n }\n });\n return data;\n },\n renderHtml: function () {\n var self = this, layout = self._layout, role = this.settings.role;\n self.preRender();\n layout.preRender(self);\n return '
    ' + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n var box;\n self.items().exec('postRender');\n self._super();\n self._layout.postRender(self);\n self.state.set('rendered', true);\n if (self.settings.style) {\n self.$el.css(self.settings.style);\n }\n if (self.settings.border) {\n box = self.borderBox;\n self.$el.css({\n 'border-top-width': box.top,\n 'border-right-width': box.right,\n 'border-bottom-width': box.bottom,\n 'border-left-width': box.left\n });\n }\n if (!self.parent()) {\n self.keyboardNav = KeyboardNavigation({ root: self });\n }\n return self;\n },\n initLayoutRect: function () {\n var self = this, layoutRect = self._super();\n self._layout.recalc(self);\n return layoutRect;\n },\n recalc: function () {\n var self = this;\n var rect = self._layoutRect;\n var lastRect = self._lastRect;\n if (!lastRect || lastRect.w !== rect.w || lastRect.h !== rect.h) {\n self._layout.recalc(self);\n rect = self.layoutRect();\n self._lastRect = {\n x: rect.x,\n y: rect.y,\n w: rect.w,\n h: rect.h\n };\n return true;\n }\n },\n reflow: function () {\n var i;\n ReflowQueue.remove(this);\n if (this.visible()) {\n Control$1.repaintControls = [];\n Control$1.repaintControls.map = {};\n this.recalc();\n i = Control$1.repaintControls.length;\n while (i--) {\n Control$1.repaintControls[i].repaint();\n }\n if (this.settings.layout !== 'flow' && this.settings.layout !== 'stack') {\n this.repaint();\n }\n Control$1.repaintControls = [];\n }\n return this;\n }\n });\n\n function getDocumentSize(doc) {\n var documentElement, body, scrollWidth, clientWidth;\n var offsetWidth, scrollHeight, clientHeight, offsetHeight;\n var max = Math.max;\n documentElement = doc.documentElement;\n body = doc.body;\n scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);\n clientWidth = max(documentElement.clientWidth, body.clientWidth);\n offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);\n scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);\n clientHeight = max(documentElement.clientHeight, body.clientHeight);\n offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);\n return {\n width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,\n height: scrollHeight < offsetHeight ? clientHeight : scrollHeight\n };\n }\n function updateWithTouchData(e) {\n var keys, i;\n if (e.changedTouches) {\n keys = 'screenX screenY pageX pageY clientX clientY'.split(' ');\n for (i = 0; i < keys.length; i++) {\n e[keys[i]] = e.changedTouches[0][keys[i]];\n }\n }\n }\n function DragHelper (id, settings) {\n var $eventOverlay;\n var doc = settings.document || document;\n var downButton;\n var start, stop$$1, drag, startX, startY;\n settings = settings || {};\n var handleElement = doc.getElementById(settings.handle || id);\n start = function (e) {\n var docSize = getDocumentSize(doc);\n var handleElm, cursor;\n updateWithTouchData(e);\n e.preventDefault();\n downButton = e.button;\n handleElm = handleElement;\n startX = e.screenX;\n startY = e.screenY;\n if (window.getComputedStyle) {\n cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');\n } else {\n cursor = handleElm.runtimeStyle.cursor;\n }\n $eventOverlay = global$9('
    ').css({\n position: 'absolute',\n top: 0,\n left: 0,\n width: docSize.width,\n height: docSize.height,\n zIndex: 2147483647,\n opacity: 0.0001,\n cursor: cursor\n }).appendTo(doc.body);\n global$9(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop$$1);\n settings.start(e);\n };\n drag = function (e) {\n updateWithTouchData(e);\n if (e.button !== downButton) {\n return stop$$1(e);\n }\n e.deltaX = e.screenX - startX;\n e.deltaY = e.screenY - startY;\n e.preventDefault();\n settings.drag(e);\n };\n stop$$1 = function (e) {\n updateWithTouchData(e);\n global$9(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop$$1);\n $eventOverlay.remove();\n if (settings.stop) {\n settings.stop(e);\n }\n };\n this.destroy = function () {\n global$9(handleElement).off();\n };\n global$9(handleElement).on('mousedown touchstart', start);\n }\n\n var Scrollable = {\n init: function () {\n var self = this;\n self.on('repaint', self.renderScroll);\n },\n renderScroll: function () {\n var self = this, margin = 2;\n function repaintScroll() {\n var hasScrollH, hasScrollV, bodyElm;\n function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {\n var containerElm, scrollBarElm, scrollThumbElm;\n var containerSize, scrollSize, ratio, rect;\n var posNameLower, sizeNameLower;\n scrollBarElm = self.getEl('scroll' + axisName);\n if (scrollBarElm) {\n posNameLower = posName.toLowerCase();\n sizeNameLower = sizeName.toLowerCase();\n global$9(self.getEl('absend')).css(posNameLower, self.layoutRect()[contentSizeName] - 1);\n if (!hasScroll) {\n global$9(scrollBarElm).css('display', 'none');\n return;\n }\n global$9(scrollBarElm).css('display', 'block');\n containerElm = self.getEl('body');\n scrollThumbElm = self.getEl('scroll' + axisName + 't');\n containerSize = containerElm['client' + sizeName] - margin * 2;\n containerSize -= hasScrollH && hasScrollV ? scrollBarElm['client' + ax] : 0;\n scrollSize = containerElm['scroll' + sizeName];\n ratio = containerSize / scrollSize;\n rect = {};\n rect[posNameLower] = containerElm['offset' + posName] + margin;\n rect[sizeNameLower] = containerSize;\n global$9(scrollBarElm).css(rect);\n rect = {};\n rect[posNameLower] = containerElm['scroll' + posName] * ratio;\n rect[sizeNameLower] = containerSize * ratio;\n global$9(scrollThumbElm).css(rect);\n }\n }\n bodyElm = self.getEl('body');\n hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;\n hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;\n repaintAxis('h', 'Left', 'Width', 'contentW', hasScrollH, 'Height');\n repaintAxis('v', 'Top', 'Height', 'contentH', hasScrollV, 'Width');\n }\n function addScroll() {\n function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {\n var scrollStart;\n var axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;\n global$9(self.getEl()).append('
    ' + '
    ' + '
    ');\n self.draghelper = new DragHelper(axisId + 't', {\n start: function () {\n scrollStart = self.getEl('body')['scroll' + posName];\n global$9('#' + axisId).addClass(prefix + 'active');\n },\n drag: function (e) {\n var ratio, hasScrollH, hasScrollV, containerSize;\n var layoutRect = self.layoutRect();\n hasScrollH = layoutRect.contentW > layoutRect.innerW;\n hasScrollV = layoutRect.contentH > layoutRect.innerH;\n containerSize = self.getEl('body')['client' + sizeName] - margin * 2;\n containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)['client' + ax] : 0;\n ratio = containerSize / self.getEl('body')['scroll' + sizeName];\n self.getEl('body')['scroll' + posName] = scrollStart + e['delta' + deltaPosName] / ratio;\n },\n stop: function () {\n global$9('#' + axisId).removeClass(prefix + 'active');\n }\n });\n }\n self.classes.add('scroll');\n addScrollAxis('v', 'Top', 'Height', 'Y', 'Width');\n addScrollAxis('h', 'Left', 'Width', 'X', 'Height');\n }\n if (self.settings.autoScroll) {\n if (!self._hasScroll) {\n self._hasScroll = true;\n addScroll();\n self.on('wheel', function (e) {\n var bodyEl = self.getEl('body');\n bodyEl.scrollLeft += (e.deltaX || 0) * 10;\n bodyEl.scrollTop += e.deltaY * 10;\n repaintScroll();\n });\n global$9(self.getEl('body')).on('scroll', repaintScroll);\n }\n repaintScroll();\n }\n }\n };\n\n var Panel = Container.extend({\n Defaults: {\n layout: 'fit',\n containerCls: 'panel'\n },\n Mixins: [Scrollable],\n renderHtml: function () {\n var self = this;\n var layout = self._layout;\n var innerHtml = self.settings.html;\n self.preRender();\n layout.preRender(self);\n if (typeof innerHtml === 'undefined') {\n innerHtml = '
    ' + layout.renderHtml(self) + '
    ';\n } else {\n if (typeof innerHtml === 'function') {\n innerHtml = innerHtml.call(self);\n }\n self._hasBody = false;\n }\n return '
    ' + (self._preBodyHtml || '') + innerHtml + '
    ';\n }\n });\n\n var Resizable = {\n resizeToContent: function () {\n this._layoutRect.autoResize = true;\n this._lastRect = null;\n this.reflow();\n },\n resizeTo: function (w, h) {\n if (w <= 1 || h <= 1) {\n var rect = funcs.getWindowSize();\n w = w <= 1 ? w * rect.w : w;\n h = h <= 1 ? h * rect.h : h;\n }\n this._layoutRect.autoResize = false;\n return this.layoutRect({\n minW: w,\n minH: h,\n w: w,\n h: h\n }).reflow();\n },\n resizeBy: function (dw, dh) {\n var self = this, rect = self.layoutRect();\n return self.resizeTo(rect.w + dw, rect.h + dh);\n }\n };\n\n var documentClickHandler, documentScrollHandler, windowResizeHandler;\n var visiblePanels = [];\n var zOrder = [];\n var hasModal;\n function isChildOf(ctrl, parent$$1) {\n while (ctrl) {\n if (ctrl === parent$$1) {\n return true;\n }\n ctrl = ctrl.parent();\n }\n }\n function skipOrHidePanels(e) {\n var i = visiblePanels.length;\n while (i--) {\n var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);\n if (panel.settings.autohide) {\n if (clickCtrl) {\n if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {\n continue;\n }\n }\n e = panel.fire('autohide', { target: e.target });\n if (!e.isDefaultPrevented()) {\n panel.hide();\n }\n }\n }\n }\n function bindDocumentClickHandler() {\n if (!documentClickHandler) {\n documentClickHandler = function (e) {\n if (e.button === 2) {\n return;\n }\n skipOrHidePanels(e);\n };\n global$9(document).on('click touchstart', documentClickHandler);\n }\n }\n function bindDocumentScrollHandler() {\n if (!documentScrollHandler) {\n documentScrollHandler = function () {\n var i;\n i = visiblePanels.length;\n while (i--) {\n repositionPanel(visiblePanels[i]);\n }\n };\n global$9(window).on('scroll', documentScrollHandler);\n }\n }\n function bindWindowResizeHandler() {\n if (!windowResizeHandler) {\n var docElm_1 = document.documentElement;\n var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;\n windowResizeHandler = function () {\n if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {\n clientWidth_1 = docElm_1.clientWidth;\n clientHeight_1 = docElm_1.clientHeight;\n FloatPanel.hideAll();\n }\n };\n global$9(window).on('resize', windowResizeHandler);\n }\n }\n function repositionPanel(panel) {\n var scrollY$$1 = funcs.getViewPort().y;\n function toggleFixedChildPanels(fixed, deltaY) {\n var parent$$1;\n for (var i = 0; i < visiblePanels.length; i++) {\n if (visiblePanels[i] !== panel) {\n parent$$1 = visiblePanels[i].parent();\n while (parent$$1 && (parent$$1 = parent$$1.parent())) {\n if (parent$$1 === panel) {\n visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();\n }\n }\n }\n }\n }\n if (panel.settings.autofix) {\n if (!panel.state.get('fixed')) {\n panel._autoFixY = panel.layoutRect().y;\n if (panel._autoFixY < scrollY$$1) {\n panel.fixed(true).layoutRect({ y: 0 }).repaint();\n toggleFixedChildPanels(true, scrollY$$1 - panel._autoFixY);\n }\n } else {\n if (panel._autoFixY > scrollY$$1) {\n panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();\n toggleFixedChildPanels(false, panel._autoFixY - scrollY$$1);\n }\n }\n }\n }\n function addRemove(add, ctrl) {\n var i, zIndex = FloatPanel.zIndex || 65535, topModal;\n if (add) {\n zOrder.push(ctrl);\n } else {\n i = zOrder.length;\n while (i--) {\n if (zOrder[i] === ctrl) {\n zOrder.splice(i, 1);\n }\n }\n }\n if (zOrder.length) {\n for (i = 0; i < zOrder.length; i++) {\n if (zOrder[i].modal) {\n zIndex++;\n topModal = zOrder[i];\n }\n zOrder[i].getEl().style.zIndex = zIndex;\n zOrder[i].zIndex = zIndex;\n zIndex++;\n }\n }\n var modalBlockEl = global$9('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];\n if (topModal) {\n global$9(modalBlockEl).css('z-index', topModal.zIndex - 1);\n } else if (modalBlockEl) {\n modalBlockEl.parentNode.removeChild(modalBlockEl);\n hasModal = false;\n }\n FloatPanel.currentZIndex = zIndex;\n }\n var FloatPanel = Panel.extend({\n Mixins: [\n Movable,\n Resizable\n ],\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n self$$1._eventsRoot = self$$1;\n self$$1.classes.add('floatpanel');\n if (settings.autohide) {\n bindDocumentClickHandler();\n bindWindowResizeHandler();\n visiblePanels.push(self$$1);\n }\n if (settings.autofix) {\n bindDocumentScrollHandler();\n self$$1.on('move', function () {\n repositionPanel(this);\n });\n }\n self$$1.on('postrender show', function (e) {\n if (e.control === self$$1) {\n var $modalBlockEl_1;\n var prefix_1 = self$$1.classPrefix;\n if (self$$1.modal && !hasModal) {\n $modalBlockEl_1 = global$9('#' + prefix_1 + 'modal-block', self$$1.getContainerElm());\n if (!$modalBlockEl_1[0]) {\n $modalBlockEl_1 = global$9('
    ').appendTo(self$$1.getContainerElm());\n }\n global$7.setTimeout(function () {\n $modalBlockEl_1.addClass(prefix_1 + 'in');\n global$9(self$$1.getEl()).addClass(prefix_1 + 'in');\n });\n hasModal = true;\n }\n addRemove(true, self$$1);\n }\n });\n self$$1.on('show', function () {\n self$$1.parents().each(function (ctrl) {\n if (ctrl.state.get('fixed')) {\n self$$1.fixed(true);\n return false;\n }\n });\n });\n if (settings.popover) {\n self$$1._preBodyHtml = '
    ';\n self$$1.classes.add('popover').add('bottom').add(self$$1.isRtl() ? 'end' : 'start');\n }\n self$$1.aria('label', settings.ariaLabel);\n self$$1.aria('labelledby', self$$1._id);\n self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');\n },\n fixed: function (state) {\n var self$$1 = this;\n if (self$$1.state.get('fixed') !== state) {\n if (self$$1.state.get('rendered')) {\n var viewport = funcs.getViewPort();\n if (state) {\n self$$1.layoutRect().y -= viewport.y;\n } else {\n self$$1.layoutRect().y += viewport.y;\n }\n }\n self$$1.classes.toggle('fixed', state);\n self$$1.state.set('fixed', state);\n }\n return self$$1;\n },\n show: function () {\n var self$$1 = this;\n var i;\n var state = self$$1._super();\n i = visiblePanels.length;\n while (i--) {\n if (visiblePanels[i] === self$$1) {\n break;\n }\n }\n if (i === -1) {\n visiblePanels.push(self$$1);\n }\n return state;\n },\n hide: function () {\n removeVisiblePanel(this);\n addRemove(false, this);\n return this._super();\n },\n hideAll: function () {\n FloatPanel.hideAll();\n },\n close: function () {\n var self$$1 = this;\n if (!self$$1.fire('close').isDefaultPrevented()) {\n self$$1.remove();\n addRemove(false, self$$1);\n }\n return self$$1;\n },\n remove: function () {\n removeVisiblePanel(this);\n this._super();\n },\n postRender: function () {\n var self$$1 = this;\n if (self$$1.settings.bodyRole) {\n this.getEl('body').setAttribute('role', self$$1.settings.bodyRole);\n }\n return self$$1._super();\n }\n });\n FloatPanel.hideAll = function () {\n var i = visiblePanels.length;\n while (i--) {\n var panel = visiblePanels[i];\n if (panel && panel.settings.autohide) {\n panel.hide();\n visiblePanels.splice(i, 1);\n }\n }\n };\n function removeVisiblePanel(panel) {\n var i;\n i = visiblePanels.length;\n while (i--) {\n if (visiblePanels[i] === panel) {\n visiblePanels.splice(i, 1);\n }\n }\n i = zOrder.length;\n while (i--) {\n if (zOrder[i] === panel) {\n zOrder.splice(i, 1);\n }\n }\n }\n\n var isFixed$1 = function (inlineToolbarContainer, editor) {\n return !!(inlineToolbarContainer && !editor.settings.ui_container);\n };\n var render$1 = function (editor, theme, args) {\n var panel, inlineToolbarContainer;\n var DOM = global$3.DOM;\n var fixedToolbarContainer = getFixedToolbarContainer(editor);\n if (fixedToolbarContainer) {\n inlineToolbarContainer = DOM.select(fixedToolbarContainer)[0];\n }\n var reposition = function () {\n if (panel && panel.moveRel && panel.visible() && !panel._fixed) {\n var scrollContainer = editor.selection.getScrollContainer(), body = editor.getBody();\n var deltaX = 0, deltaY = 0;\n if (scrollContainer) {\n var bodyPos = DOM.getPos(body), scrollContainerPos = DOM.getPos(scrollContainer);\n deltaX = Math.max(0, scrollContainerPos.x - bodyPos.x);\n deltaY = Math.max(0, scrollContainerPos.y - bodyPos.y);\n }\n panel.fixed(false).moveRel(body, editor.rtl ? [\n 'tr-br',\n 'br-tr'\n ] : [\n 'tl-bl',\n 'bl-tl',\n 'tr-br'\n ]).moveBy(deltaX, deltaY);\n }\n };\n var show = function () {\n if (panel) {\n panel.show();\n reposition();\n DOM.addClass(editor.getBody(), 'mce-edit-focus');\n }\n };\n var hide = function () {\n if (panel) {\n panel.hide();\n FloatPanel.hideAll();\n DOM.removeClass(editor.getBody(), 'mce-edit-focus');\n }\n };\n var render = function () {\n if (panel) {\n if (!panel.visible()) {\n show();\n }\n return;\n }\n panel = theme.panel = global$4.create({\n type: inlineToolbarContainer ? 'panel' : 'floatpanel',\n role: 'application',\n classes: 'tinymce tinymce-inline',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n autohide: false,\n autofix: true,\n fixed: isFixed$1(inlineToolbarContainer, editor),\n border: 1,\n items: [\n hasMenubar(editor) === false ? null : {\n type: 'menubar',\n border: '0 0 1 0',\n items: Menubar.createMenuButtons(editor)\n },\n Toolbar.createToolbars(editor, getToolbarSize(editor))\n ]\n });\n UiContainer.setUiContainer(editor, panel);\n Events.fireBeforeRenderUI(editor);\n if (inlineToolbarContainer) {\n panel.renderTo(inlineToolbarContainer).reflow();\n } else {\n panel.renderTo().reflow();\n }\n A11y.addKeys(editor, panel);\n show();\n ContextToolbars.addContextualToolbars(editor);\n editor.on('nodeChange', reposition);\n editor.on('ResizeWindow', reposition);\n editor.on('activate', show);\n editor.on('deactivate', hide);\n editor.nodeChanged();\n };\n editor.settings.content_editable = true;\n editor.on('focus', function () {\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\n DOM.styleSheetLoader.load(args.skinUiCss, render, render);\n } else {\n render();\n }\n });\n editor.on('blur hide', hide);\n editor.on('remove', function () {\n if (panel) {\n panel.remove();\n panel = null;\n }\n });\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\n DOM.styleSheetLoader.load(args.skinUiCss, SkinLoaded.fireSkinLoaded(editor));\n } else {\n SkinLoaded.fireSkinLoaded(editor)();\n }\n return {};\n };\n var Inline = { render: render$1 };\n\n function Throbber (elm, inline) {\n var self = this;\n var state;\n var classPrefix = Control$1.classPrefix;\n var timer;\n self.show = function (time, callback) {\n function render() {\n if (state) {\n global$9(elm).append('
    ');\n if (callback) {\n callback();\n }\n }\n }\n self.hide();\n state = true;\n if (time) {\n timer = global$7.setTimeout(render, time);\n } else {\n render();\n }\n return self;\n };\n self.hide = function () {\n var child = elm.lastChild;\n global$7.clearTimeout(timer);\n if (child && child.className.indexOf('throbber') !== -1) {\n child.parentNode.removeChild(child);\n }\n state = false;\n return self;\n };\n }\n\n var setup = function (editor, theme) {\n var throbber;\n editor.on('ProgressState', function (e) {\n throbber = throbber || new Throbber(theme.panel.getEl('body'));\n if (e.state) {\n throbber.show(e.time);\n } else {\n throbber.hide();\n }\n });\n };\n var ProgressState = { setup: setup };\n\n var renderUI = function (editor, theme, args) {\n var skinUrl = getSkinUrl(editor);\n if (skinUrl) {\n args.skinUiCss = skinUrl + '/skin.min.css';\n editor.contentCSS.push(skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css');\n }\n ProgressState.setup(editor, theme);\n return isInline(editor) ? Inline.render(editor, theme, args) : Iframe.render(editor, theme, args);\n };\n var Render = { renderUI: renderUI };\n\n var Tooltip = Control$1.extend({\n Mixins: [Movable],\n Defaults: { classes: 'widget tooltip tooltip-n' },\n renderHtml: function () {\n var self = this, prefix = self.classPrefix;\n return '
    ' + '
    ' + '
    ' + self.encode(self.state.get('text')) + '
    ' + '
    ';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.getEl().lastChild.innerHTML = self.encode(e.value);\n });\n return self._super();\n },\n repaint: function () {\n var self = this;\n var style, rect;\n style = self.getEl().style;\n rect = self._layoutRect;\n style.left = rect.x + 'px';\n style.top = rect.y + 'px';\n style.zIndex = 65535 + 65535;\n }\n });\n\n var Widget = Control$1.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n settings = self.settings;\n self.canFocus = true;\n if (settings.tooltip && Widget.tooltips !== false) {\n self.on('mouseenter', function (e) {\n var tooltip = self.tooltip().moveTo(-65535);\n if (e.control === self) {\n var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [\n 'bc-tc',\n 'bc-tl',\n 'bc-tr'\n ]);\n tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');\n tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');\n tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');\n tooltip.moveRel(self.getEl(), rel);\n } else {\n tooltip.hide();\n }\n });\n self.on('mouseleave mousedown click', function () {\n self.tooltip().remove();\n self._tooltip = null;\n });\n }\n self.aria('label', settings.ariaLabel || settings.tooltip);\n },\n tooltip: function () {\n if (!this._tooltip) {\n this._tooltip = new Tooltip({ type: 'tooltip' });\n UiContainer.inheritUiContainer(this, this._tooltip);\n this._tooltip.renderTo();\n }\n return this._tooltip;\n },\n postRender: function () {\n var self = this, settings = self.settings;\n self._super();\n if (!self.parent() && (settings.width || settings.height)) {\n self.initLayoutRect();\n self.repaint();\n }\n if (settings.autofocus) {\n self.focus();\n }\n },\n bindStates: function () {\n var self = this;\n function disable(state) {\n self.aria('disabled', state);\n self.classes.toggle('disabled', state);\n }\n function active(state) {\n self.aria('pressed', state);\n self.classes.toggle('active', state);\n }\n self.state.on('change:disabled', function (e) {\n disable(e.value);\n });\n self.state.on('change:active', function (e) {\n active(e.value);\n });\n if (self.state.get('disabled')) {\n disable(true);\n }\n if (self.state.get('active')) {\n active(true);\n }\n return self._super();\n },\n remove: function () {\n this._super();\n if (this._tooltip) {\n this._tooltip.remove();\n this._tooltip = null;\n }\n }\n });\n\n var Progress = Widget.extend({\n Defaults: { value: 0 },\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('progress');\n if (!self.settings.filter) {\n self.settings.filter = function (value) {\n return Math.round(value);\n };\n }\n },\n renderHtml: function () {\n var self = this, id = self._id, prefix = this.classPrefix;\n return '
    ' + '
    ' + '
    ' + '
    ' + '
    0%
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n self._super();\n self.value(self.settings.value);\n return self;\n },\n bindStates: function () {\n var self = this;\n function setValue(value) {\n value = self.settings.filter(value);\n self.getEl().lastChild.innerHTML = value + '%';\n self.getEl().firstChild.firstChild.style.width = value + '%';\n }\n self.state.on('change:value', function (e) {\n setValue(e.value);\n });\n setValue(self.state.get('value'));\n return self._super();\n }\n });\n\n var updateLiveRegion = function (ctx, text) {\n ctx.getEl().lastChild.textContent = text + (ctx.progressBar ? ' ' + ctx.progressBar.value() + '%' : '');\n };\n var Notification = Control$1.extend({\n Mixins: [Movable],\n Defaults: { classes: 'widget notification' },\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.maxWidth = settings.maxWidth;\n if (settings.text) {\n self.text(settings.text);\n }\n if (settings.icon) {\n self.icon = settings.icon;\n }\n if (settings.color) {\n self.color = settings.color;\n }\n if (settings.type) {\n self.classes.add('notification-' + settings.type);\n }\n if (settings.timeout && (settings.timeout < 0 || settings.timeout > 0) && !settings.closeButton) {\n self.closeButton = false;\n } else {\n self.classes.add('has-close');\n self.closeButton = true;\n }\n if (settings.progressBar) {\n self.progressBar = new Progress();\n }\n self.on('click', function (e) {\n if (e.target.className.indexOf(self.classPrefix + 'close') !== -1) {\n self.close();\n }\n });\n },\n renderHtml: function () {\n var self = this;\n var prefix = self.classPrefix;\n var icon = '', closeButton = '', progressBar = '', notificationStyle = '';\n if (self.icon) {\n icon = '';\n }\n notificationStyle = ' style=\"max-width: ' + self.maxWidth + 'px;' + (self.color ? 'background-color: ' + self.color + ';\"' : '\"');\n if (self.closeButton) {\n closeButton = '';\n }\n if (self.progressBar) {\n progressBar = self.progressBar.renderHtml();\n }\n return '
    ' + icon + '
    ' + self.state.get('text') + '
    ' + progressBar + closeButton + '
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n global$7.setTimeout(function () {\n self.$el.addClass(self.classPrefix + 'in');\n updateLiveRegion(self, self.state.get('text'));\n }, 100);\n return self._super();\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.getEl().firstChild.innerHTML = e.value;\n updateLiveRegion(self, e.value);\n });\n if (self.progressBar) {\n self.progressBar.bindStates();\n self.progressBar.state.on('change:value', function (e) {\n updateLiveRegion(self, self.state.get('text'));\n });\n }\n return self._super();\n },\n close: function () {\n var self = this;\n if (!self.fire('close').isDefaultPrevented()) {\n self.remove();\n }\n return self;\n },\n repaint: function () {\n var self = this;\n var style, rect;\n style = self.getEl().style;\n rect = self._layoutRect;\n style.left = rect.x + 'px';\n style.top = rect.y + 'px';\n style.zIndex = 65535 - 1;\n }\n });\n\n function NotificationManagerImpl (editor) {\n var getEditorContainer = function (editor) {\n return editor.inline ? editor.getElement() : editor.getContentAreaContainer();\n };\n var getContainerWidth = function () {\n var container = getEditorContainer(editor);\n return funcs.getSize(container).width;\n };\n var prePositionNotifications = function (notifications) {\n each(notifications, function (notification) {\n notification.moveTo(0, 0);\n });\n };\n var positionNotifications = function (notifications) {\n if (notifications.length > 0) {\n var firstItem = notifications.slice(0, 1)[0];\n var container = getEditorContainer(editor);\n firstItem.moveRel(container, 'tc-tc');\n each(notifications, function (notification, index) {\n if (index > 0) {\n notification.moveRel(notifications[index - 1].getEl(), 'bc-tc');\n }\n });\n }\n };\n var reposition = function (notifications) {\n prePositionNotifications(notifications);\n positionNotifications(notifications);\n };\n var open = function (args, closeCallback) {\n var extendedArgs = global$2.extend(args, { maxWidth: getContainerWidth() });\n var notif = new Notification(extendedArgs);\n notif.args = extendedArgs;\n if (extendedArgs.timeout > 0) {\n notif.timer = setTimeout(function () {\n notif.close();\n closeCallback();\n }, extendedArgs.timeout);\n }\n notif.on('close', function () {\n closeCallback();\n });\n notif.renderTo();\n return notif;\n };\n var close = function (notification) {\n notification.close();\n };\n var getArgs = function (notification) {\n return notification.args;\n };\n return {\n open: open,\n close: close,\n reposition: reposition,\n getArgs: getArgs\n };\n }\n\n var windows = [];\n var oldMetaValue = '';\n function toggleFullScreenState(state) {\n var noScaleMetaValue = 'width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0';\n var viewport = global$9('meta[name=viewport]')[0], contentValue;\n if (global$8.overrideViewPort === false) {\n return;\n }\n if (!viewport) {\n viewport = document.createElement('meta');\n viewport.setAttribute('name', 'viewport');\n document.getElementsByTagName('head')[0].appendChild(viewport);\n }\n contentValue = viewport.getAttribute('content');\n if (contentValue && typeof oldMetaValue !== 'undefined') {\n oldMetaValue = contentValue;\n }\n viewport.setAttribute('content', state ? noScaleMetaValue : oldMetaValue);\n }\n function toggleBodyFullScreenClasses(classPrefix, state) {\n if (checkFullscreenWindows() && state === false) {\n global$9([\n document.documentElement,\n document.body\n ]).removeClass(classPrefix + 'fullscreen');\n }\n }\n function checkFullscreenWindows() {\n for (var i = 0; i < windows.length; i++) {\n if (windows[i]._fullscreen) {\n return true;\n }\n }\n return false;\n }\n function handleWindowResize() {\n if (!global$8.desktop) {\n var lastSize_1 = {\n w: window.innerWidth,\n h: window.innerHeight\n };\n global$7.setInterval(function () {\n var w = window.innerWidth, h = window.innerHeight;\n if (lastSize_1.w !== w || lastSize_1.h !== h) {\n lastSize_1 = {\n w: w,\n h: h\n };\n global$9(window).trigger('resize');\n }\n }, 100);\n }\n function reposition() {\n var i;\n var rect = funcs.getWindowSize();\n var layoutRect;\n for (i = 0; i < windows.length; i++) {\n layoutRect = windows[i].layoutRect();\n windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));\n }\n }\n global$9(window).on('resize', reposition);\n }\n var Window$$1 = FloatPanel.extend({\n modal: true,\n Defaults: {\n border: 1,\n layout: 'flex',\n containerCls: 'panel',\n role: 'dialog',\n callbacks: {\n submit: function () {\n this.fire('submit', { data: this.toJSON() });\n },\n close: function () {\n this.close();\n }\n }\n },\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n if (self$$1.isRtl()) {\n self$$1.classes.add('rtl');\n }\n self$$1.classes.add('window');\n self$$1.bodyClasses.add('window-body');\n self$$1.state.set('fixed', true);\n if (settings.buttons) {\n self$$1.statusbar = new Panel({\n layout: 'flex',\n border: '1 0 0 0',\n spacing: 3,\n padding: 10,\n align: 'center',\n pack: self$$1.isRtl() ? 'start' : 'end',\n defaults: { type: 'button' },\n items: settings.buttons\n });\n self$$1.statusbar.classes.add('foot');\n self$$1.statusbar.parent(self$$1);\n }\n self$$1.on('click', function (e) {\n var closeClass = self$$1.classPrefix + 'close';\n if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {\n self$$1.close();\n }\n });\n self$$1.on('cancel', function () {\n self$$1.close();\n });\n self$$1.on('move', function (e) {\n if (e.control === self$$1) {\n FloatPanel.hideAll();\n }\n });\n self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');\n self$$1.aria('label', settings.title);\n self$$1._fullscreen = false;\n },\n recalc: function () {\n var self$$1 = this;\n var statusbar$$1 = self$$1.statusbar;\n var layoutRect, width, x, needsRecalc;\n if (self$$1._fullscreen) {\n self$$1.layoutRect(funcs.getWindowSize());\n self$$1.layoutRect().contentH = self$$1.layoutRect().innerH;\n }\n self$$1._super();\n layoutRect = self$$1.layoutRect();\n if (self$$1.settings.title && !self$$1._fullscreen) {\n width = layoutRect.headerW;\n if (width > layoutRect.w) {\n x = layoutRect.x - Math.max(0, width / 2);\n self$$1.layoutRect({\n w: width,\n x: x\n });\n needsRecalc = true;\n }\n }\n if (statusbar$$1) {\n statusbar$$1.layoutRect({ w: self$$1.layoutRect().innerW }).recalc();\n width = statusbar$$1.layoutRect().minW + layoutRect.deltaW;\n if (width > layoutRect.w) {\n x = layoutRect.x - Math.max(0, width - layoutRect.w);\n self$$1.layoutRect({\n w: width,\n x: x\n });\n needsRecalc = true;\n }\n }\n if (needsRecalc) {\n self$$1.recalc();\n }\n },\n initLayoutRect: function () {\n var self$$1 = this;\n var layoutRect = self$$1._super();\n var deltaH = 0, headEl;\n if (self$$1.settings.title && !self$$1._fullscreen) {\n headEl = self$$1.getEl('head');\n var size = funcs.getSize(headEl);\n layoutRect.headerW = size.width;\n layoutRect.headerH = size.height;\n deltaH += layoutRect.headerH;\n }\n if (self$$1.statusbar) {\n deltaH += self$$1.statusbar.layoutRect().h;\n }\n layoutRect.deltaH += deltaH;\n layoutRect.minH += deltaH;\n layoutRect.h += deltaH;\n var rect = funcs.getWindowSize();\n layoutRect.x = self$$1.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);\n layoutRect.y = self$$1.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);\n return layoutRect;\n },\n renderHtml: function () {\n var self$$1 = this, layout = self$$1._layout, id = self$$1._id, prefix = self$$1.classPrefix;\n var settings = self$$1.settings;\n var headerHtml = '', footerHtml = '', html = settings.html;\n self$$1.preRender();\n layout.preRender(self$$1);\n if (settings.title) {\n headerHtml = '
    ' + '
    ' + self$$1.encode(settings.title) + '
    ' + '
    ' + '' + '
    ';\n }\n if (settings.url) {\n html = '';\n }\n if (typeof html === 'undefined') {\n html = layout.renderHtml(self$$1);\n }\n if (self$$1.statusbar) {\n footerHtml = self$$1.statusbar.renderHtml();\n }\n return '
    ' + '
    ' + headerHtml + '
    ' + html + '
    ' + footerHtml + '
    ' + '
    ';\n },\n fullscreen: function (state) {\n var self$$1 = this;\n var documentElement = document.documentElement;\n var slowRendering;\n var prefix = self$$1.classPrefix;\n var layoutRect;\n if (state !== self$$1._fullscreen) {\n global$9(window).on('resize', function () {\n var time;\n if (self$$1._fullscreen) {\n if (!slowRendering) {\n time = new Date().getTime();\n var rect = funcs.getWindowSize();\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n if (new Date().getTime() - time > 50) {\n slowRendering = true;\n }\n } else {\n if (!self$$1._timer) {\n self$$1._timer = global$7.setTimeout(function () {\n var rect = funcs.getWindowSize();\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n self$$1._timer = 0;\n }, 50);\n }\n }\n }\n });\n layoutRect = self$$1.layoutRect();\n self$$1._fullscreen = state;\n if (!state) {\n self$$1.borderBox = BoxUtils.parseBox(self$$1.settings.border);\n self$$1.getEl('head').style.display = '';\n layoutRect.deltaH += layoutRect.headerH;\n global$9([\n documentElement,\n document.body\n ]).removeClass(prefix + 'fullscreen');\n self$$1.classes.remove('fullscreen');\n self$$1.moveTo(self$$1._initial.x, self$$1._initial.y).resizeTo(self$$1._initial.w, self$$1._initial.h);\n } else {\n self$$1._initial = {\n x: layoutRect.x,\n y: layoutRect.y,\n w: layoutRect.w,\n h: layoutRect.h\n };\n self$$1.borderBox = BoxUtils.parseBox('0');\n self$$1.getEl('head').style.display = 'none';\n layoutRect.deltaH -= layoutRect.headerH + 2;\n global$9([\n documentElement,\n document.body\n ]).addClass(prefix + 'fullscreen');\n self$$1.classes.add('fullscreen');\n var rect = funcs.getWindowSize();\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n }\n }\n return self$$1.reflow();\n },\n postRender: function () {\n var self$$1 = this;\n var startPos;\n setTimeout(function () {\n self$$1.classes.add('in');\n self$$1.fire('open');\n }, 0);\n self$$1._super();\n if (self$$1.statusbar) {\n self$$1.statusbar.postRender();\n }\n self$$1.focus();\n this.dragHelper = new DragHelper(self$$1._id + '-dragh', {\n start: function () {\n startPos = {\n x: self$$1.layoutRect().x,\n y: self$$1.layoutRect().y\n };\n },\n drag: function (e) {\n self$$1.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);\n }\n });\n self$$1.on('submit', function (e) {\n if (!e.isDefaultPrevented()) {\n self$$1.close();\n }\n });\n windows.push(self$$1);\n toggleFullScreenState(true);\n },\n submit: function () {\n return this.fire('submit', { data: this.toJSON() });\n },\n remove: function () {\n var self$$1 = this;\n var i;\n self$$1.dragHelper.destroy();\n self$$1._super();\n if (self$$1.statusbar) {\n this.statusbar.remove();\n }\n toggleBodyFullScreenClasses(self$$1.classPrefix, false);\n i = windows.length;\n while (i--) {\n if (windows[i] === self$$1) {\n windows.splice(i, 1);\n }\n }\n toggleFullScreenState(windows.length > 0);\n },\n getContentWindow: function () {\n var ifr = this.getEl().getElementsByTagName('iframe')[0];\n return ifr ? ifr.contentWindow : null;\n }\n });\n handleWindowResize();\n\n var MessageBox = Window$$1.extend({\n init: function (settings) {\n settings = {\n border: 1,\n padding: 20,\n layout: 'flex',\n pack: 'center',\n align: 'center',\n containerCls: 'panel',\n autoScroll: true,\n buttons: {\n type: 'button',\n text: 'Ok',\n action: 'ok'\n },\n items: {\n type: 'label',\n multiline: true,\n maxWidth: 500,\n maxHeight: 200\n }\n };\n this._super(settings);\n },\n Statics: {\n OK: 1,\n OK_CANCEL: 2,\n YES_NO: 3,\n YES_NO_CANCEL: 4,\n msgBox: function (settings) {\n var buttons;\n var callback = settings.callback || function () {\n };\n function createButton(text, status$$1, primary) {\n return {\n type: 'button',\n text: text,\n subtype: primary ? 'primary' : '',\n onClick: function (e) {\n e.control.parents()[1].close();\n callback(status$$1);\n }\n };\n }\n switch (settings.buttons) {\n case MessageBox.OK_CANCEL:\n buttons = [\n createButton('Ok', true, true),\n createButton('Cancel', false)\n ];\n break;\n case MessageBox.YES_NO:\n case MessageBox.YES_NO_CANCEL:\n buttons = [\n createButton('Yes', 1, true),\n createButton('No', 0)\n ];\n if (settings.buttons === MessageBox.YES_NO_CANCEL) {\n buttons.push(createButton('Cancel', -1));\n }\n break;\n default:\n buttons = [createButton('Ok', true, true)];\n break;\n }\n return new Window$$1({\n padding: 20,\n x: settings.x,\n y: settings.y,\n minWidth: 300,\n minHeight: 100,\n layout: 'flex',\n pack: 'center',\n align: 'center',\n buttons: buttons,\n title: settings.title,\n role: 'alertdialog',\n items: {\n type: 'label',\n multiline: true,\n maxWidth: 500,\n maxHeight: 200,\n text: settings.text\n },\n onPostRender: function () {\n this.aria('describedby', this.items()[0]._id);\n },\n onClose: settings.onClose,\n onCancel: function () {\n callback(false);\n }\n }).renderTo(document.body).reflow();\n },\n alert: function (settings, callback) {\n if (typeof settings === 'string') {\n settings = { text: settings };\n }\n settings.callback = callback;\n return MessageBox.msgBox(settings);\n },\n confirm: function (settings, callback) {\n if (typeof settings === 'string') {\n settings = { text: settings };\n }\n settings.callback = callback;\n settings.buttons = MessageBox.OK_CANCEL;\n return MessageBox.msgBox(settings);\n }\n }\n });\n\n function WindowManagerImpl (editor) {\n var open$$1 = function (args, params, closeCallback) {\n var win;\n args.title = args.title || ' ';\n args.url = args.url || args.file;\n if (args.url) {\n args.width = parseInt(args.width || 320, 10);\n args.height = parseInt(args.height || 240, 10);\n }\n if (args.body) {\n args.items = {\n defaults: args.defaults,\n type: args.bodyType || 'form',\n items: args.body,\n data: args.data,\n callbacks: args.commands\n };\n }\n if (!args.url && !args.buttons) {\n args.buttons = [\n {\n text: 'Ok',\n subtype: 'primary',\n onclick: function () {\n win.find('form')[0].submit();\n }\n },\n {\n text: 'Cancel',\n onclick: function () {\n win.close();\n }\n }\n ];\n }\n win = new Window$$1(args);\n win.on('close', function () {\n closeCallback(win);\n });\n if (args.data) {\n win.on('postRender', function () {\n this.find('*').each(function (ctrl) {\n var name$$1 = ctrl.name();\n if (name$$1 in args.data) {\n ctrl.value(args.data[name$$1]);\n }\n });\n });\n }\n win.features = args || {};\n win.params = params || {};\n win = win.renderTo(document.body).reflow();\n return win;\n };\n var alert$$1 = function (message, choiceCallback, closeCallback) {\n var win;\n win = MessageBox.alert(message, function () {\n choiceCallback();\n });\n win.on('close', function () {\n closeCallback(win);\n });\n return win;\n };\n var confirm$$1 = function (message, choiceCallback, closeCallback) {\n var win;\n win = MessageBox.confirm(message, function (state) {\n choiceCallback(state);\n });\n win.on('close', function () {\n closeCallback(win);\n });\n return win;\n };\n var close$$1 = function (window$$1) {\n window$$1.close();\n };\n var getParams = function (window$$1) {\n return window$$1.params;\n };\n var setParams = function (window$$1, params) {\n window$$1.params = params;\n };\n return {\n open: open$$1,\n alert: alert$$1,\n confirm: confirm$$1,\n close: close$$1,\n getParams: getParams,\n setParams: setParams\n };\n }\n\n var get = function (editor) {\n var renderUI = function (args) {\n return Render.renderUI(editor, this, args);\n };\n var resizeTo = function (w, h) {\n return Resize.resizeTo(editor, w, h);\n };\n var resizeBy = function (dw, dh) {\n return Resize.resizeBy(editor, dw, dh);\n };\n var getNotificationManagerImpl = function () {\n return NotificationManagerImpl(editor);\n };\n var getWindowManagerImpl = function () {\n return WindowManagerImpl(editor);\n };\n return {\n renderUI: renderUI,\n resizeTo: resizeTo,\n resizeBy: resizeBy,\n getNotificationManagerImpl: getNotificationManagerImpl,\n getWindowManagerImpl: getWindowManagerImpl\n };\n };\n var ThemeApi = { get: get };\n\n var Layout = global$a.extend({\n Defaults: {\n firstControlClass: 'first',\n lastControlClass: 'last'\n },\n init: function (settings) {\n this.settings = global$2.extend({}, this.Defaults, settings);\n },\n preRender: function (container) {\n container.bodyClasses.add(this.settings.containerClass);\n },\n applyClasses: function (items) {\n var self = this;\n var settings = self.settings;\n var firstClass, lastClass, firstItem, lastItem;\n firstClass = settings.firstControlClass;\n lastClass = settings.lastControlClass;\n items.each(function (item) {\n item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);\n if (item.visible()) {\n if (!firstItem) {\n firstItem = item;\n }\n lastItem = item;\n }\n });\n if (firstItem) {\n firstItem.classes.add(firstClass);\n }\n if (lastItem) {\n lastItem.classes.add(lastClass);\n }\n },\n renderHtml: function (container) {\n var self = this;\n var html = '';\n self.applyClasses(container.items());\n container.items().each(function (item) {\n html += item.renderHtml();\n });\n return html;\n },\n recalc: function () {\n },\n postRender: function () {\n },\n isNative: function () {\n return false;\n }\n });\n\n var AbsoluteLayout = Layout.extend({\n Defaults: {\n containerClass: 'abs-layout',\n controlClass: 'abs-layout-item'\n },\n recalc: function (container) {\n container.items().filter(':visible').each(function (ctrl) {\n var settings = ctrl.settings;\n ctrl.layoutRect({\n x: settings.x,\n y: settings.y,\n w: settings.w,\n h: settings.h\n });\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n });\n },\n renderHtml: function (container) {\n return '
    ' + this._super(container);\n }\n });\n\n var Button = Widget.extend({\n Defaults: {\n classes: 'widget btn',\n role: 'button'\n },\n init: function (settings) {\n var self$$1 = this;\n var size;\n self$$1._super(settings);\n settings = self$$1.settings;\n size = self$$1.settings.size;\n self$$1.on('click mousedown', function (e) {\n e.preventDefault();\n });\n self$$1.on('touchstart', function (e) {\n self$$1.fire('click', e);\n e.preventDefault();\n });\n if (settings.subtype) {\n self$$1.classes.add(settings.subtype);\n }\n if (size) {\n self$$1.classes.add('btn-' + size);\n }\n if (settings.icon) {\n self$$1.icon(settings.icon);\n }\n },\n icon: function (icon) {\n if (!arguments.length) {\n return this.state.get('icon');\n }\n this.state.set('icon', icon);\n return this;\n },\n repaint: function () {\n var btnElm = this.getEl().firstChild;\n var btnStyle;\n if (btnElm) {\n btnStyle = btnElm.style;\n btnStyle.width = btnStyle.height = '100%';\n }\n this._super();\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n var icon = self$$1.state.get('icon'), image;\n var text = self$$1.state.get('text');\n var textHtml = '';\n var ariaPressed;\n var settings = self$$1.settings;\n image = settings.image;\n if (image) {\n icon = 'none';\n if (typeof image !== 'string') {\n image = window.getSelection ? image[0] : image[1];\n }\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n } else {\n image = '';\n }\n if (text) {\n self$$1.classes.add('btn-has-text');\n textHtml = '' + self$$1.encode(text) + '';\n }\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed=\"' + settings.active + '\"' : '';\n return '
    ' + '' + '
    ';\n },\n bindStates: function () {\n var self$$1 = this, $ = self$$1.$, textCls = self$$1.classPrefix + 'txt';\n function setButtonText(text) {\n var $span = $('span.' + textCls, self$$1.getEl());\n if (text) {\n if (!$span[0]) {\n $('button:first', self$$1.getEl()).append('');\n $span = $('span.' + textCls, self$$1.getEl());\n }\n $span.html(self$$1.encode(text));\n } else {\n $span.remove();\n }\n self$$1.classes.toggle('btn-has-text', !!text);\n }\n self$$1.state.on('change:text', function (e) {\n setButtonText(e.value);\n });\n self$$1.state.on('change:icon', function (e) {\n var icon = e.value;\n var prefix = self$$1.classPrefix;\n self$$1.settings.icon = icon;\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';\n var btnElm = self$$1.getEl().firstChild;\n var iconElm = btnElm.getElementsByTagName('i')[0];\n if (icon) {\n if (!iconElm || iconElm !== btnElm.firstChild) {\n iconElm = document.createElement('i');\n btnElm.insertBefore(iconElm, btnElm.firstChild);\n }\n iconElm.className = icon;\n } else if (iconElm) {\n btnElm.removeChild(iconElm);\n }\n setButtonText(self$$1.state.get('text'));\n });\n return self$$1._super();\n }\n });\n\n var BrowseButton = Button.extend({\n init: function (settings) {\n var self = this;\n settings = global$2.extend({\n text: 'Browse...',\n multiple: false,\n accept: null\n }, settings);\n self._super(settings);\n self.classes.add('browsebutton');\n if (settings.multiple) {\n self.classes.add('multiple');\n }\n },\n postRender: function () {\n var self = this;\n var input = funcs.create('input', {\n type: 'file',\n id: self._id + '-browse',\n accept: self.settings.accept\n });\n self._super();\n global$9(input).on('change', function (e) {\n var files = e.target.files;\n self.value = function () {\n if (!files.length) {\n return null;\n } else if (self.settings.multiple) {\n return files;\n } else {\n return files[0];\n }\n };\n e.preventDefault();\n if (files.length) {\n self.fire('change', e);\n }\n });\n global$9(input).on('click', function (e) {\n e.stopPropagation();\n });\n global$9(self.getEl('button')).on('click', function (e) {\n e.stopPropagation();\n input.click();\n });\n self.getEl().appendChild(input);\n },\n remove: function () {\n global$9(this.getEl('button')).off();\n global$9(this.getEl('input')).off();\n this._super();\n }\n });\n\n var ButtonGroup = Container.extend({\n Defaults: {\n defaultType: 'button',\n role: 'group'\n },\n renderHtml: function () {\n var self = this, layout = self._layout;\n self.classes.add('btn-group');\n self.preRender();\n layout.preRender(self);\n return '
    ' + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n }\n });\n\n var Checkbox = Widget.extend({\n Defaults: {\n classes: 'checkbox',\n role: 'checkbox',\n checked: false\n },\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n self$$1.on('click mousedown', function (e) {\n e.preventDefault();\n });\n self$$1.on('click', function (e) {\n e.preventDefault();\n if (!self$$1.disabled()) {\n self$$1.checked(!self$$1.checked());\n }\n });\n self$$1.checked(self$$1.settings.checked);\n },\n checked: function (state) {\n if (!arguments.length) {\n return this.state.get('checked');\n }\n this.state.set('checked', state);\n return this;\n },\n value: function (state) {\n if (!arguments.length) {\n return this.checked();\n }\n return this.checked(state);\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n return '
    ' + '' + '' + self$$1.encode(self$$1.state.get('text')) + '' + '
    ';\n },\n bindStates: function () {\n var self$$1 = this;\n function checked(state) {\n self$$1.classes.toggle('checked', state);\n self$$1.aria('checked', state);\n }\n self$$1.state.on('change:text', function (e) {\n self$$1.getEl('al').firstChild.data = self$$1.translate(e.value);\n });\n self$$1.state.on('change:checked change:value', function (e) {\n self$$1.fire('change');\n checked(e.value);\n });\n self$$1.state.on('change:icon', function (e) {\n var icon = e.value;\n var prefix = self$$1.classPrefix;\n if (typeof icon === 'undefined') {\n return self$$1.settings.icon;\n }\n self$$1.settings.icon = icon;\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';\n var btnElm = self$$1.getEl().firstChild;\n var iconElm = btnElm.getElementsByTagName('i')[0];\n if (icon) {\n if (!iconElm || iconElm !== btnElm.firstChild) {\n iconElm = document.createElement('i');\n btnElm.insertBefore(iconElm, btnElm.firstChild);\n }\n iconElm.className = icon;\n } else if (iconElm) {\n btnElm.removeChild(iconElm);\n }\n });\n if (self$$1.state.get('checked')) {\n checked(true);\n }\n return self$$1._super();\n }\n });\n\n var global$d = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n var ComboBox = Widget.extend({\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n settings = self$$1.settings;\n self$$1.classes.add('combobox');\n self$$1.subinput = true;\n self$$1.ariaTarget = 'inp';\n settings.menu = settings.menu || settings.values;\n if (settings.menu) {\n settings.icon = 'caret';\n }\n self$$1.on('click', function (e) {\n var elm = e.target;\n var root = self$$1.getEl();\n if (!global$9.contains(root, elm) && elm !== root) {\n return;\n }\n while (elm && elm !== root) {\n if (elm.id && elm.id.indexOf('-open') !== -1) {\n self$$1.fire('action');\n if (settings.menu) {\n self$$1.showMenu();\n if (e.aria) {\n self$$1.menu.items()[0].focus();\n }\n }\n }\n elm = elm.parentNode;\n }\n });\n self$$1.on('keydown', function (e) {\n var rootControl;\n if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {\n e.preventDefault();\n self$$1.parents().reverse().each(function (ctrl) {\n if (ctrl.toJSON) {\n rootControl = ctrl;\n return false;\n }\n });\n self$$1.fire('submit', { data: rootControl.toJSON() });\n }\n });\n self$$1.on('keyup', function (e) {\n if (e.target.nodeName === 'INPUT') {\n var oldValue = self$$1.state.get('value');\n var newValue = e.target.value;\n if (newValue !== oldValue) {\n self$$1.state.set('value', newValue);\n self$$1.fire('autocomplete', e);\n }\n }\n });\n self$$1.on('mouseover', function (e) {\n var tooltip = self$$1.tooltip().moveTo(-65535);\n if (self$$1.statusLevel() && e.target.className.indexOf(self$$1.classPrefix + 'status') !== -1) {\n var statusMessage = self$$1.statusMessage() || 'Ok';\n var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [\n 'bc-tc',\n 'bc-tl',\n 'bc-tr'\n ]);\n tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');\n tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');\n tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');\n tooltip.moveRel(e.target, rel);\n }\n });\n },\n statusLevel: function (value) {\n if (arguments.length > 0) {\n this.state.set('statusLevel', value);\n }\n return this.state.get('statusLevel');\n },\n statusMessage: function (value) {\n if (arguments.length > 0) {\n this.state.set('statusMessage', value);\n }\n return this.state.get('statusMessage');\n },\n showMenu: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var menu;\n if (!self$$1.menu) {\n menu = settings.menu || [];\n if (menu.length) {\n menu = {\n type: 'menu',\n items: menu\n };\n } else {\n menu.type = menu.type || 'menu';\n }\n self$$1.menu = global$4.create(menu).parent(self$$1).renderTo(self$$1.getContainerElm());\n self$$1.fire('createmenu');\n self$$1.menu.reflow();\n self$$1.menu.on('cancel', function (e) {\n if (e.control === self$$1.menu) {\n self$$1.focus();\n }\n });\n self$$1.menu.on('show hide', function (e) {\n e.control.items().each(function (ctrl) {\n ctrl.active(ctrl.value() === self$$1.value());\n });\n }).fire('show');\n self$$1.menu.on('select', function (e) {\n self$$1.value(e.control.value());\n });\n self$$1.on('focusin', function (e) {\n if (e.target.tagName.toUpperCase() === 'INPUT') {\n self$$1.menu.hide();\n }\n });\n self$$1.aria('expanded', true);\n }\n self$$1.menu.show();\n self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n 'br-tr',\n 'tr-br'\n ] : [\n 'bl-tl',\n 'tl-bl'\n ]);\n },\n focus: function () {\n this.getEl('inp').focus();\n },\n repaint: function () {\n var self$$1 = this, elm = self$$1.getEl(), openElm = self$$1.getEl('open'), rect = self$$1.layoutRect();\n var width, lineHeight, innerPadding = 0;\n var inputElm = elm.firstChild;\n if (self$$1.statusLevel() && self$$1.statusLevel() !== 'none') {\n innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);\n }\n if (openElm) {\n width = rect.w - funcs.getSize(openElm).width - 10;\n } else {\n width = rect.w - 10;\n }\n var doc = document;\n if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {\n lineHeight = self$$1.layoutRect().h - 2 + 'px';\n }\n global$9(inputElm).css({\n width: width - innerPadding,\n lineHeight: lineHeight\n });\n self$$1._super();\n return self$$1;\n },\n postRender: function () {\n var self$$1 = this;\n global$9(this.getEl('inp')).on('change', function (e) {\n self$$1.state.set('value', e.target.value);\n self$$1.fire('change', e);\n });\n return self$$1._super();\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, settings = self$$1.settings, prefix = self$$1.classPrefix;\n var value = self$$1.state.get('value') || '';\n var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';\n if ('spellcheck' in settings) {\n extraAttrs += ' spellcheck=\"' + settings.spellcheck + '\"';\n }\n if (settings.maxLength) {\n extraAttrs += ' maxlength=\"' + settings.maxLength + '\"';\n }\n if (settings.size) {\n extraAttrs += ' size=\"' + settings.size + '\"';\n }\n if (settings.subtype) {\n extraAttrs += ' type=\"' + settings.subtype + '\"';\n }\n statusHtml = '';\n if (self$$1.disabled()) {\n extraAttrs += ' disabled=\"disabled\"';\n }\n icon = settings.icon;\n if (icon && icon !== 'caret') {\n icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;\n }\n text = self$$1.state.get('text');\n if (icon || text) {\n openBtnHtml = '
    ' + '' + '
    ';\n self$$1.classes.add('has-open');\n }\n return '
    ' + '' + statusHtml + openBtnHtml + '
    ';\n },\n value: function (value) {\n if (arguments.length) {\n this.state.set('value', value);\n return this;\n }\n if (this.state.get('rendered')) {\n this.state.set('value', this.getEl('inp').value);\n }\n return this.state.get('value');\n },\n showAutoComplete: function (items, term) {\n var self$$1 = this;\n if (items.length === 0) {\n self$$1.hideMenu();\n return;\n }\n var insert = function (value, title) {\n return function () {\n self$$1.fire('selectitem', {\n title: title,\n value: value\n });\n };\n };\n if (self$$1.menu) {\n self$$1.menu.items().remove();\n } else {\n self$$1.menu = global$4.create({\n type: 'menu',\n classes: 'combobox-menu',\n layout: 'flow'\n }).parent(self$$1).renderTo();\n }\n global$2.each(items, function (item) {\n self$$1.menu.add({\n text: item.title,\n url: item.previewUrl,\n match: term,\n classes: 'menu-item-ellipsis',\n onclick: insert(item.value, item.title)\n });\n });\n self$$1.menu.renderNew();\n self$$1.hideMenu();\n self$$1.menu.on('cancel', function (e) {\n if (e.control.parent() === self$$1.menu) {\n e.stopPropagation();\n self$$1.focus();\n self$$1.hideMenu();\n }\n });\n self$$1.menu.on('select', function () {\n self$$1.focus();\n });\n var maxW = self$$1.layoutRect().w;\n self$$1.menu.layoutRect({\n w: maxW,\n minW: 0,\n maxW: maxW\n });\n self$$1.menu.repaint();\n self$$1.menu.reflow();\n self$$1.menu.show();\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n 'br-tr',\n 'tr-br'\n ] : [\n 'bl-tl',\n 'tl-bl'\n ]);\n },\n hideMenu: function () {\n if (this.menu) {\n this.menu.hide();\n }\n },\n bindStates: function () {\n var self$$1 = this;\n self$$1.state.on('change:value', function (e) {\n if (self$$1.getEl('inp').value !== e.value) {\n self$$1.getEl('inp').value = e.value;\n }\n });\n self$$1.state.on('change:disabled', function (e) {\n self$$1.getEl('inp').disabled = e.value;\n });\n self$$1.state.on('change:statusLevel', function (e) {\n var statusIconElm = self$$1.getEl('status');\n var prefix = self$$1.classPrefix, value = e.value;\n funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');\n funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');\n funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');\n funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');\n self$$1.classes.toggle('has-status', value !== 'none');\n self$$1.repaint();\n });\n funcs.on(self$$1.getEl('status'), 'mouseleave', function () {\n self$$1.tooltip().hide();\n });\n self$$1.on('cancel', function (e) {\n if (self$$1.menu && self$$1.menu.visible()) {\n e.stopPropagation();\n self$$1.hideMenu();\n }\n });\n var focusIdx = function (idx, menu) {\n if (menu && menu.items().length > 0) {\n menu.items().eq(idx)[0].focus();\n }\n };\n self$$1.on('keydown', function (e) {\n var keyCode = e.keyCode;\n if (e.target.nodeName === 'INPUT') {\n if (keyCode === global$d.DOWN) {\n e.preventDefault();\n self$$1.fire('autocomplete');\n focusIdx(0, self$$1.menu);\n } else if (keyCode === global$d.UP) {\n e.preventDefault();\n focusIdx(-1, self$$1.menu);\n }\n }\n });\n return self$$1._super();\n },\n remove: function () {\n global$9(this.getEl('inp')).off();\n if (this.menu) {\n this.menu.remove();\n }\n this._super();\n }\n });\n\n var ColorBox = ComboBox.extend({\n init: function (settings) {\n var self = this;\n settings.spellcheck = false;\n if (settings.onaction) {\n settings.icon = 'none';\n }\n self._super(settings);\n self.classes.add('colorbox');\n self.on('change keyup postrender', function () {\n self.repaintColor(self.value());\n });\n },\n repaintColor: function (value) {\n var openElm = this.getEl('open');\n var elm = openElm ? openElm.getElementsByTagName('i')[0] : null;\n if (elm) {\n try {\n elm.style.background = value;\n } catch (ex) {\n }\n }\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:value', function (e) {\n if (self.state.get('rendered')) {\n self.repaintColor(e.value);\n }\n });\n return self._super();\n }\n });\n\n var PanelButton = Button.extend({\n showPanel: function () {\n var self = this, settings = self.settings;\n self.classes.add('opened');\n if (!self.panel) {\n var panelSettings = settings.panel;\n if (panelSettings.type) {\n panelSettings = {\n layout: 'grid',\n items: panelSettings\n };\n }\n panelSettings.role = panelSettings.role || 'dialog';\n panelSettings.popover = true;\n panelSettings.autohide = true;\n panelSettings.ariaRoot = true;\n self.panel = new FloatPanel(panelSettings).on('hide', function () {\n self.classes.remove('opened');\n }).on('cancel', function (e) {\n e.stopPropagation();\n self.focus();\n self.hidePanel();\n }).parent(self).renderTo(self.getContainerElm());\n self.panel.fire('show');\n self.panel.reflow();\n } else {\n self.panel.show();\n }\n var rtlRels = [\n 'bc-tc',\n 'bc-tl',\n 'bc-tr'\n ];\n var ltrRels = [\n 'bc-tc',\n 'bc-tr',\n 'bc-tl',\n 'tc-bc',\n 'tc-br',\n 'tc-bl'\n ];\n var rel = self.panel.testMoveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? rtlRels : ltrRels));\n self.panel.classes.toggle('start', rel.substr(-1) === 'l');\n self.panel.classes.toggle('end', rel.substr(-1) === 'r');\n var isTop = rel.substr(0, 1) === 't';\n self.panel.classes.toggle('bottom', !isTop);\n self.panel.classes.toggle('top', isTop);\n self.panel.moveRel(self.getEl(), rel);\n },\n hidePanel: function () {\n var self = this;\n if (self.panel) {\n self.panel.hide();\n }\n },\n postRender: function () {\n var self = this;\n self.aria('haspopup', true);\n self.on('click', function (e) {\n if (e.control === self) {\n if (self.panel && self.panel.visible()) {\n self.hidePanel();\n } else {\n self.showPanel();\n self.panel.focus(!!e.aria);\n }\n }\n });\n return self._super();\n },\n remove: function () {\n if (this.panel) {\n this.panel.remove();\n this.panel = null;\n }\n return this._super();\n }\n });\n\n var DOM$3 = global$3.DOM;\n var ColorButton = PanelButton.extend({\n init: function (settings) {\n this._super(settings);\n this.classes.add('splitbtn');\n this.classes.add('colorbutton');\n },\n color: function (color) {\n if (color) {\n this._color = color;\n this.getEl('preview').style.backgroundColor = color;\n return this;\n }\n return this._color;\n },\n resetColor: function () {\n this._color = null;\n this.getEl('preview').style.backgroundColor = null;\n return this;\n },\n renderHtml: function () {\n var self = this, id = self._id, prefix = self.classPrefix, text = self.state.get('text');\n var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';\n var image = self.settings.image ? ' style=\"background-image: url(\\'' + self.settings.image + '\\')\"' : '';\n var textHtml = '';\n if (text) {\n self.classes.add('btn-has-text');\n textHtml = '' + self.encode(text) + '';\n }\n return '
    ' + '' + '' + '
    ';\n },\n postRender: function () {\n var self = this, onClickHandler = self.settings.onclick;\n self.on('click', function (e) {\n if (e.aria && e.aria.key === 'down') {\n return;\n }\n if (e.control === self && !DOM$3.getParent(e.target, '.' + self.classPrefix + 'open')) {\n e.stopImmediatePropagation();\n onClickHandler.call(self, e);\n }\n });\n delete self.settings.onclick;\n return self._super();\n }\n });\n\n var global$e = tinymce.util.Tools.resolve('tinymce.util.Color');\n\n var ColorPicker = Widget.extend({\n Defaults: { classes: 'widget colorpicker' },\n init: function (settings) {\n this._super(settings);\n },\n postRender: function () {\n var self = this;\n var color = self.color();\n var hsv, hueRootElm, huePointElm, svRootElm, svPointElm;\n hueRootElm = self.getEl('h');\n huePointElm = self.getEl('hp');\n svRootElm = self.getEl('sv');\n svPointElm = self.getEl('svp');\n function getPos(elm, event) {\n var pos = funcs.getPos(elm);\n var x, y;\n x = event.pageX - pos.x;\n y = event.pageY - pos.y;\n x = Math.max(0, Math.min(x / elm.clientWidth, 1));\n y = Math.max(0, Math.min(y / elm.clientHeight, 1));\n return {\n x: x,\n y: y\n };\n }\n function updateColor(hsv, hueUpdate) {\n var hue = (360 - hsv.h) / 360;\n funcs.css(huePointElm, { top: hue * 100 + '%' });\n if (!hueUpdate) {\n funcs.css(svPointElm, {\n left: hsv.s + '%',\n top: 100 - hsv.v + '%'\n });\n }\n svRootElm.style.background = global$e({\n s: 100,\n v: 100,\n h: hsv.h\n }).toHex();\n self.color().parse({\n s: hsv.s,\n v: hsv.v,\n h: hsv.h\n });\n }\n function updateSaturationAndValue(e) {\n var pos;\n pos = getPos(svRootElm, e);\n hsv.s = pos.x * 100;\n hsv.v = (1 - pos.y) * 100;\n updateColor(hsv);\n self.fire('change');\n }\n function updateHue(e) {\n var pos;\n pos = getPos(hueRootElm, e);\n hsv = color.toHsv();\n hsv.h = (1 - pos.y) * 360;\n updateColor(hsv, true);\n self.fire('change');\n }\n self._repaint = function () {\n hsv = color.toHsv();\n updateColor(hsv);\n };\n self._super();\n self._svdraghelper = new DragHelper(self._id + '-sv', {\n start: updateSaturationAndValue,\n drag: updateSaturationAndValue\n });\n self._hdraghelper = new DragHelper(self._id + '-h', {\n start: updateHue,\n drag: updateHue\n });\n self._repaint();\n },\n rgb: function () {\n return this.color().toRgb();\n },\n value: function (value) {\n var self = this;\n if (arguments.length) {\n self.color().parse(value);\n if (self._rendered) {\n self._repaint();\n }\n } else {\n return self.color().toHex();\n }\n },\n color: function () {\n if (!this._color) {\n this._color = global$e();\n }\n return this._color;\n },\n renderHtml: function () {\n var self = this;\n var id = self._id;\n var prefix = self.classPrefix;\n var hueHtml;\n var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';\n function getOldIeFallbackHtml() {\n var i, l, html = '', gradientPrefix, stopsList;\n gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';\n stopsList = stops.split(',');\n for (i = 0, l = stopsList.length - 1; i < l; i++) {\n html += '
    ';\n }\n return html;\n }\n var gradientCssText = 'background: -ms-linear-gradient(top,' + stops + ');' + 'background: linear-gradient(to bottom,' + stops + ');';\n hueHtml = '
    ' + getOldIeFallbackHtml() + '
    ' + '
    ';\n return '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + hueHtml + '
    ';\n }\n });\n\n var DropZone = Widget.extend({\n init: function (settings) {\n var self = this;\n settings = global$2.extend({\n height: 100,\n text: 'Drop an image here',\n multiple: false,\n accept: null\n }, settings);\n self._super(settings);\n self.classes.add('dropzone');\n if (settings.multiple) {\n self.classes.add('multiple');\n }\n },\n renderHtml: function () {\n var self = this;\n var attrs, elm;\n var cfg = self.settings;\n attrs = {\n id: self._id,\n hidefocus: '1'\n };\n elm = funcs.create('div', attrs, '' + this.translate(cfg.text) + '');\n if (cfg.height) {\n funcs.css(elm, 'height', cfg.height + 'px');\n }\n if (cfg.width) {\n funcs.css(elm, 'width', cfg.width + 'px');\n }\n elm.className = self.classes;\n return elm.outerHTML;\n },\n postRender: function () {\n var self = this;\n var toggleDragClass = function (e) {\n e.preventDefault();\n self.classes.toggle('dragenter');\n self.getEl().className = self.classes;\n };\n var filter = function (files) {\n var accept = self.settings.accept;\n if (typeof accept !== 'string') {\n return files;\n }\n var re = new RegExp('(' + accept.split(/\\s*,\\s*/).join('|') + ')$', 'i');\n return global$2.grep(files, function (file) {\n return re.test(file.name);\n });\n };\n self._super();\n self.$el.on('dragover', function (e) {\n e.preventDefault();\n });\n self.$el.on('dragenter', toggleDragClass);\n self.$el.on('dragleave', toggleDragClass);\n self.$el.on('drop', function (e) {\n e.preventDefault();\n if (self.state.get('disabled')) {\n return;\n }\n var files = filter(e.dataTransfer.files);\n self.value = function () {\n if (!files.length) {\n return null;\n } else if (self.settings.multiple) {\n return files;\n } else {\n return files[0];\n }\n };\n if (files.length) {\n self.fire('change', e);\n }\n });\n },\n remove: function () {\n this.$el.off();\n this._super();\n }\n });\n\n var Path = Widget.extend({\n init: function (settings) {\n var self = this;\n if (!settings.delimiter) {\n settings.delimiter = '\\xBB';\n }\n self._super(settings);\n self.classes.add('path');\n self.canFocus = true;\n self.on('click', function (e) {\n var index;\n var target = e.target;\n if (index = target.getAttribute('data-index')) {\n self.fire('select', {\n value: self.row()[index],\n index: index\n });\n }\n });\n self.row(self.settings.row);\n },\n focus: function () {\n var self = this;\n self.getEl().firstChild.focus();\n return self;\n },\n row: function (row) {\n if (!arguments.length) {\n return this.state.get('row');\n }\n this.state.set('row', row);\n return this;\n },\n renderHtml: function () {\n var self = this;\n return '
    ' + self._getDataPathHtml(self.state.get('row')) + '
    ';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:row', function (e) {\n self.innerHtml(self._getDataPathHtml(e.value));\n });\n return self._super();\n },\n _getDataPathHtml: function (data) {\n var self = this;\n var parts = data || [];\n var i, l, html = '';\n var prefix = self.classPrefix;\n for (i = 0, l = parts.length; i < l; i++) {\n html += (i > 0 ? '
    ' + self.settings.delimiter + '
    ' : '') + '
    ' + parts[i].name + '
    ';\n }\n if (!html) {\n html = '
    \\xA0
    ';\n }\n return html;\n }\n });\n\n var ElementPath = Path.extend({\n postRender: function () {\n var self = this, editor = self.settings.editor;\n function isHidden(elm) {\n if (elm.nodeType === 1) {\n if (elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus')) {\n return true;\n }\n if (elm.getAttribute('data-mce-type') === 'bookmark') {\n return true;\n }\n }\n return false;\n }\n if (editor.settings.elementpath !== false) {\n self.on('select', function (e) {\n editor.focus();\n editor.selection.select(this.row()[e.index].element);\n editor.nodeChanged();\n });\n editor.on('nodeChange', function (e) {\n var outParents = [];\n var parents = e.parents;\n var i = parents.length;\n while (i--) {\n if (parents[i].nodeType === 1 && !isHidden(parents[i])) {\n var args = editor.fire('ResolveName', {\n name: parents[i].nodeName.toLowerCase(),\n target: parents[i]\n });\n if (!args.isDefaultPrevented()) {\n outParents.push({\n name: args.name,\n element: parents[i]\n });\n }\n if (args.isPropagationStopped()) {\n break;\n }\n }\n }\n self.row(outParents);\n });\n }\n return self._super();\n }\n });\n\n var FormItem = Container.extend({\n Defaults: {\n layout: 'flex',\n align: 'center',\n defaults: { flex: 1 }\n },\n renderHtml: function () {\n var self = this, layout = self._layout, prefix = self.classPrefix;\n self.classes.add('formitem');\n layout.preRender(self);\n return '
    ' + (self.settings.title ? '
    ' + self.settings.title + '
    ' : '') + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n }\n });\n\n var Form = Container.extend({\n Defaults: {\n containerCls: 'form',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n flex: 1,\n padding: 15,\n labelGap: 30,\n spacing: 10,\n callbacks: {\n submit: function () {\n this.submit();\n }\n }\n },\n preRender: function () {\n var self = this, items = self.items();\n if (!self.settings.formItemDefaults) {\n self.settings.formItemDefaults = {\n layout: 'flex',\n autoResize: 'overflow',\n defaults: { flex: 1 }\n };\n }\n items.each(function (ctrl) {\n var formItem;\n var label = ctrl.settings.label;\n if (label) {\n formItem = new FormItem(global$2.extend({\n items: {\n type: 'label',\n id: ctrl._id + '-l',\n text: label,\n flex: 0,\n forId: ctrl._id,\n disabled: ctrl.disabled()\n }\n }, self.settings.formItemDefaults));\n formItem.type = 'formitem';\n ctrl.aria('labelledby', ctrl._id + '-l');\n if (typeof ctrl.settings.flex === 'undefined') {\n ctrl.settings.flex = 1;\n }\n self.replace(ctrl, formItem);\n formItem.add(ctrl);\n }\n });\n },\n submit: function () {\n return this.fire('submit', { data: this.toJSON() });\n },\n postRender: function () {\n var self = this;\n self._super();\n self.fromJSON(self.settings.data);\n },\n bindStates: function () {\n var self = this;\n self._super();\n function recalcLabels() {\n var maxLabelWidth = 0;\n var labels = [];\n var i, labelGap, items;\n if (self.settings.labelGapCalc === false) {\n return;\n }\n if (self.settings.labelGapCalc === 'children') {\n items = self.find('formitem');\n } else {\n items = self.items();\n }\n items.filter('formitem').each(function (item) {\n var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;\n maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;\n labels.push(labelCtrl);\n });\n labelGap = self.settings.labelGap || 0;\n i = labels.length;\n while (i--) {\n labels[i].settings.minWidth = maxLabelWidth + labelGap;\n }\n }\n self.on('show', recalcLabels);\n recalcLabels();\n }\n });\n\n var FieldSet = Form.extend({\n Defaults: {\n containerCls: 'fieldset',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n flex: 1,\n padding: '25 15 5 15',\n labelGap: 30,\n spacing: 10,\n border: 1\n },\n renderHtml: function () {\n var self = this, layout = self._layout, prefix = self.classPrefix;\n self.preRender();\n layout.preRender(self);\n return '
    ' + (self.settings.title ? '' + self.settings.title + '' : '') + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n }\n });\n\n var unique$1 = 0;\n var generate = function (prefix) {\n var date = new Date();\n var time = date.getTime();\n var random = Math.floor(Math.random() * 1000000000);\n unique$1++;\n return prefix + '_' + random + unique$1 + String(time);\n };\n\n var fromHtml = function (html, scope) {\n var doc = scope || document;\n var div = doc.createElement('div');\n div.innerHTML = html;\n if (!div.hasChildNodes() || div.childNodes.length > 1) {\n console.error('HTML does not have a single root node', html);\n throw 'HTML must have a single root node';\n }\n return fromDom(div.childNodes[0]);\n };\n var fromTag = function (tag, scope) {\n var doc = scope || document;\n var node = doc.createElement(tag);\n return fromDom(node);\n };\n var fromText = function (text, scope) {\n var doc = scope || document;\n var node = doc.createTextNode(text);\n return fromDom(node);\n };\n var fromDom = function (node) {\n if (node === null || node === undefined)\n throw new Error('Node cannot be null or undefined');\n return { dom: constant(node) };\n };\n var fromPoint = function (docElm, x, y) {\n var doc = docElm.dom();\n return Option.from(doc.elementFromPoint(x, y)).map(fromDom);\n };\n var Element$$1 = {\n fromHtml: fromHtml,\n fromTag: fromTag,\n fromText: fromText,\n fromDom: fromDom,\n fromPoint: fromPoint\n };\n\n var cached = function (f) {\n var called = false;\n var r;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!called) {\n called = true;\n r = f.apply(null, args);\n }\n return r;\n };\n };\n\n var ATTRIBUTE = Node.ATTRIBUTE_NODE;\n var CDATA_SECTION = Node.CDATA_SECTION_NODE;\n var COMMENT = Node.COMMENT_NODE;\n var DOCUMENT = Node.DOCUMENT_NODE;\n var DOCUMENT_TYPE = Node.DOCUMENT_TYPE_NODE;\n var DOCUMENT_FRAGMENT = Node.DOCUMENT_FRAGMENT_NODE;\n var ELEMENT = Node.ELEMENT_NODE;\n var TEXT = Node.TEXT_NODE;\n var PROCESSING_INSTRUCTION = Node.PROCESSING_INSTRUCTION_NODE;\n var ENTITY_REFERENCE = Node.ENTITY_REFERENCE_NODE;\n var ENTITY = Node.ENTITY_NODE;\n var NOTATION = Node.NOTATION_NODE;\n\n var Immutable = function () {\n var fields = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fields[_i] = arguments[_i];\n }\n return function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n if (fields.length !== values.length) {\n throw new Error('Wrong number of arguments to struct. Expected \"[' + fields.length + ']\", got ' + values.length + ' arguments');\n }\n var struct = {};\n each(fields, function (name, i) {\n struct[name] = constant(values[i]);\n });\n return struct;\n };\n };\n\n var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n var path = function (parts, scope) {\n var o = scope !== undefined && scope !== null ? scope : Global;\n for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\n o = o[parts[i]];\n return o;\n };\n var resolve = function (p, scope) {\n var parts = p.split('.');\n return path(parts, scope);\n };\n\n var unsafe = function (name, scope) {\n return resolve(name, scope);\n };\n var getOrDie = function (name, scope) {\n var actual = unsafe(name, scope);\n if (actual === undefined || actual === null)\n throw name + ' not available on this browser';\n return actual;\n };\n var Global$1 = { getOrDie: getOrDie };\n\n var node = function () {\n var f = Global$1.getOrDie('Node');\n return f;\n };\n var compareDocumentPosition = function (a, b, match) {\n return (a.compareDocumentPosition(b) & match) !== 0;\n };\n var documentPositionPreceding = function (a, b) {\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);\n };\n var documentPositionContainedBy = function (a, b) {\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);\n };\n var Node$1 = {\n documentPositionPreceding: documentPositionPreceding,\n documentPositionContainedBy: documentPositionContainedBy\n };\n\n var firstMatch = function (regexes, s) {\n for (var i = 0; i < regexes.length; i++) {\n var x = regexes[i];\n if (x.test(s))\n return x;\n }\n return undefined;\n };\n var find$2 = function (regexes, agent) {\n var r = firstMatch(regexes, agent);\n if (!r)\n return {\n major: 0,\n minor: 0\n };\n var group = function (i) {\n return Number(agent.replace(r, '$' + i));\n };\n return nu(group(1), group(2));\n };\n var detect = function (versionRegexes, agent) {\n var cleanedAgent = String(agent).toLowerCase();\n if (versionRegexes.length === 0)\n return unknown();\n return find$2(versionRegexes, cleanedAgent);\n };\n var unknown = function () {\n return nu(0, 0);\n };\n var nu = function (major, minor) {\n return {\n major: major,\n minor: minor\n };\n };\n var Version = {\n nu: nu,\n detect: detect,\n unknown: unknown\n };\n\n var edge = 'Edge';\n var chrome = 'Chrome';\n var ie = 'IE';\n var opera = 'Opera';\n var firefox = 'Firefox';\n var safari = 'Safari';\n var isBrowser = function (name, current) {\n return function () {\n return current === name;\n };\n };\n var unknown$1 = function () {\n return nu$1({\n current: undefined,\n version: Version.unknown()\n });\n };\n var nu$1 = function (info) {\n var current = info.current;\n var version = info.version;\n return {\n current: current,\n version: version,\n isEdge: isBrowser(edge, current),\n isChrome: isBrowser(chrome, current),\n isIE: isBrowser(ie, current),\n isOpera: isBrowser(opera, current),\n isFirefox: isBrowser(firefox, current),\n isSafari: isBrowser(safari, current)\n };\n };\n var Browser = {\n unknown: unknown$1,\n nu: nu$1,\n edge: constant(edge),\n chrome: constant(chrome),\n ie: constant(ie),\n opera: constant(opera),\n firefox: constant(firefox),\n safari: constant(safari)\n };\n\n var windows$1 = 'Windows';\n var ios = 'iOS';\n var android = 'Android';\n var linux = 'Linux';\n var osx = 'OSX';\n var solaris = 'Solaris';\n var freebsd = 'FreeBSD';\n var isOS = function (name, current) {\n return function () {\n return current === name;\n };\n };\n var unknown$2 = function () {\n return nu$2({\n current: undefined,\n version: Version.unknown()\n });\n };\n var nu$2 = function (info) {\n var current = info.current;\n var version = info.version;\n return {\n current: current,\n version: version,\n isWindows: isOS(windows$1, current),\n isiOS: isOS(ios, current),\n isAndroid: isOS(android, current),\n isOSX: isOS(osx, current),\n isLinux: isOS(linux, current),\n isSolaris: isOS(solaris, current),\n isFreeBSD: isOS(freebsd, current)\n };\n };\n var OperatingSystem = {\n unknown: unknown$2,\n nu: nu$2,\n windows: constant(windows$1),\n ios: constant(ios),\n android: constant(android),\n linux: constant(linux),\n osx: constant(osx),\n solaris: constant(solaris),\n freebsd: constant(freebsd)\n };\n\n var DeviceType = function (os, browser, userAgent) {\n var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n var isiPhone = os.isiOS() && !isiPad;\n var isAndroid3 = os.isAndroid() && os.version.major === 3;\n var isAndroid4 = os.isAndroid() && os.version.major === 4;\n var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;\n var isTouch = os.isiOS() || os.isAndroid();\n var isPhone = isTouch && !isTablet;\n var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n return {\n isiPad: constant(isiPad),\n isiPhone: constant(isiPhone),\n isTablet: constant(isTablet),\n isPhone: constant(isPhone),\n isTouch: constant(isTouch),\n isAndroid: os.isAndroid,\n isiOS: os.isiOS,\n isWebView: constant(iOSwebview)\n };\n };\n\n var detect$1 = function (candidates, userAgent) {\n var agent = String(userAgent).toLowerCase();\n return find(candidates, function (candidate) {\n return candidate.search(agent);\n });\n };\n var detectBrowser = function (browsers, userAgent) {\n return detect$1(browsers, userAgent).map(function (browser) {\n var version = Version.detect(browser.versionRegexes, userAgent);\n return {\n current: browser.name,\n version: version\n };\n });\n };\n var detectOs = function (oses, userAgent) {\n return detect$1(oses, userAgent).map(function (os) {\n var version = Version.detect(os.versionRegexes, userAgent);\n return {\n current: os.name,\n version: version\n };\n });\n };\n var UaString = {\n detectBrowser: detectBrowser,\n detectOs: detectOs\n };\n\n var contains$1 = function (str, substr) {\n return str.indexOf(substr) !== -1;\n };\n\n var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n var checkContains = function (target) {\n return function (uastring) {\n return contains$1(uastring, target);\n };\n };\n var browsers = [\n {\n name: 'Edge',\n versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n search: function (uastring) {\n var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');\n return monstrosity;\n }\n },\n {\n name: 'Chrome',\n versionRegexes: [\n /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\n normalVersionRegex\n ],\n search: function (uastring) {\n return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');\n }\n },\n {\n name: 'IE',\n versionRegexes: [\n /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*?rv:([0-9]+)\\.([0-9]+).*/\n ],\n search: function (uastring) {\n return contains$1(uastring, 'msie') || contains$1(uastring, 'trident');\n }\n },\n {\n name: 'Opera',\n versionRegexes: [\n normalVersionRegex,\n /.*?opera\\/([0-9]+)\\.([0-9]+).*/\n ],\n search: checkContains('opera')\n },\n {\n name: 'Firefox',\n versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n search: checkContains('firefox')\n },\n {\n name: 'Safari',\n versionRegexes: [\n normalVersionRegex,\n /.*?cpu os ([0-9]+)_([0-9]+).*/\n ],\n search: function (uastring) {\n return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');\n }\n }\n ];\n var oses = [\n {\n name: 'Windows',\n search: checkContains('win'),\n versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'iOS',\n search: function (uastring) {\n return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad');\n },\n versionRegexes: [\n /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*cpu os ([0-9]+)_([0-9]+).*/,\n /.*cpu iphone os ([0-9]+)_([0-9]+).*/\n ]\n },\n {\n name: 'Android',\n search: checkContains('android'),\n versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'OSX',\n search: checkContains('os x'),\n versionRegexes: [/.*?os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n },\n {\n name: 'Linux',\n search: checkContains('linux'),\n versionRegexes: []\n },\n {\n name: 'Solaris',\n search: checkContains('sunos'),\n versionRegexes: []\n },\n {\n name: 'FreeBSD',\n search: checkContains('freebsd'),\n versionRegexes: []\n }\n ];\n var PlatformInfo = {\n browsers: constant(browsers),\n oses: constant(oses)\n };\n\n var detect$2 = function (userAgent) {\n var browsers = PlatformInfo.browsers();\n var oses = PlatformInfo.oses();\n var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu);\n var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);\n var deviceType = DeviceType(os, browser, userAgent);\n return {\n browser: browser,\n os: os,\n deviceType: deviceType\n };\n };\n var PlatformDetection = { detect: detect$2 };\n\n var detect$3 = cached(function () {\n var userAgent = navigator.userAgent;\n return PlatformDetection.detect(userAgent);\n });\n var PlatformDetection$1 = { detect: detect$3 };\n\n var ELEMENT$1 = ELEMENT;\n var DOCUMENT$1 = DOCUMENT;\n var bypassSelector = function (dom) {\n return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0;\n };\n var all = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom();\n return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);\n };\n var one = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom();\n return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);\n };\n\n var regularContains = function (e1, e2) {\n var d1 = e1.dom(), d2 = e2.dom();\n return d1 === d2 ? false : d1.contains(d2);\n };\n var ieContains = function (e1, e2) {\n return Node$1.documentPositionContainedBy(e1.dom(), e2.dom());\n };\n var browser = PlatformDetection$1.detect().browser;\n var contains$2 = browser.isIE() ? ieContains : regularContains;\n\n var spot = Immutable('element', 'offset');\n\n var descendants$1 = function (scope, selector) {\n return all(selector, scope);\n };\n\n var trim$1 = global$2.trim;\n var hasContentEditableState = function (value) {\n return function (node) {\n if (node && node.nodeType === 1) {\n if (node.contentEditable === value) {\n return true;\n }\n if (node.getAttribute('data-mce-contenteditable') === value) {\n return true;\n }\n }\n return false;\n };\n };\n var isContentEditableTrue = hasContentEditableState('true');\n var isContentEditableFalse = hasContentEditableState('false');\n var create = function (type, title, url, level, attach) {\n return {\n type: type,\n title: title,\n url: url,\n level: level,\n attach: attach\n };\n };\n var isChildOfContentEditableTrue = function (node) {\n while (node = node.parentNode) {\n var value = node.contentEditable;\n if (value && value !== 'inherit') {\n return isContentEditableTrue(node);\n }\n }\n return false;\n };\n var select = function (selector, root) {\n return map(descendants$1(Element$$1.fromDom(root), selector), function (element) {\n return element.dom();\n });\n };\n var getElementText = function (elm) {\n return elm.innerText || elm.textContent;\n };\n var getOrGenerateId = function (elm) {\n return elm.id ? elm.id : generate('h');\n };\n var isAnchor = function (elm) {\n return elm && elm.nodeName === 'A' && (elm.id || elm.name);\n };\n var isValidAnchor = function (elm) {\n return isAnchor(elm) && isEditable(elm);\n };\n var isHeader = function (elm) {\n return elm && /^(H[1-6])$/.test(elm.nodeName);\n };\n var isEditable = function (elm) {\n return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);\n };\n var isValidHeader = function (elm) {\n return isHeader(elm) && isEditable(elm);\n };\n var getLevel = function (elm) {\n return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;\n };\n var headerTarget = function (elm) {\n var headerId = getOrGenerateId(elm);\n var attach = function () {\n elm.id = headerId;\n };\n return create('header', getElementText(elm), '#' + headerId, getLevel(elm), attach);\n };\n var anchorTarget = function (elm) {\n var anchorId = elm.id || elm.name;\n var anchorText = getElementText(elm);\n return create('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, noop);\n };\n var getHeaderTargets = function (elms) {\n return map(filter(elms, isValidHeader), headerTarget);\n };\n var getAnchorTargets = function (elms) {\n return map(filter(elms, isValidAnchor), anchorTarget);\n };\n var getTargetElements = function (elm) {\n var elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);\n return elms;\n };\n var hasTitle = function (target) {\n return trim$1(target.title).length > 0;\n };\n var find$3 = function (elm) {\n var elms = getTargetElements(elm);\n return filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);\n };\n var LinkTargets = { find: find$3 };\n\n var getActiveEditor = function () {\n return window.tinymce ? window.tinymce.activeEditor : global$1.activeEditor;\n };\n var history = {};\n var HISTORY_LENGTH = 5;\n var clearHistory = function () {\n history = {};\n };\n var toMenuItem = function (target) {\n return {\n title: target.title,\n value: {\n title: { raw: target.title },\n url: target.url,\n attach: target.attach\n }\n };\n };\n var toMenuItems = function (targets) {\n return global$2.map(targets, toMenuItem);\n };\n var staticMenuItem = function (title, url) {\n return {\n title: title,\n value: {\n title: title,\n url: url,\n attach: noop\n }\n };\n };\n var isUniqueUrl = function (url, targets) {\n var foundTarget = exists(targets, function (target) {\n return target.url === url;\n });\n return !foundTarget;\n };\n var getSetting = function (editorSettings, name, defaultValue) {\n var value = name in editorSettings ? editorSettings[name] : defaultValue;\n return value === false ? null : value;\n };\n var createMenuItems = function (term, targets, fileType, editorSettings) {\n var separator = { title: '-' };\n var fromHistoryMenuItems = function (history) {\n var historyItems = history.hasOwnProperty(fileType) ? history[fileType] : [];\n var uniqueHistory = filter(historyItems, function (url) {\n return isUniqueUrl(url, targets);\n });\n return global$2.map(uniqueHistory, function (url) {\n return {\n title: url,\n value: {\n title: url,\n url: url,\n attach: noop\n }\n };\n });\n };\n var fromMenuItems = function (type) {\n var filteredTargets = filter(targets, function (target) {\n return target.type === type;\n });\n return toMenuItems(filteredTargets);\n };\n var anchorMenuItems = function () {\n var anchorMenuItems = fromMenuItems('anchor');\n var topAnchor = getSetting(editorSettings, 'anchor_top', '#top');\n var bottomAchor = getSetting(editorSettings, 'anchor_bottom', '#bottom');\n if (topAnchor !== null) {\n anchorMenuItems.unshift(staticMenuItem('', topAnchor));\n }\n if (bottomAchor !== null) {\n anchorMenuItems.push(staticMenuItem('', bottomAchor));\n }\n return anchorMenuItems;\n };\n var join = function (items) {\n return foldl(items, function (a, b) {\n var bothEmpty = a.length === 0 || b.length === 0;\n return bothEmpty ? a.concat(b) : a.concat(separator, b);\n }, []);\n };\n if (editorSettings.typeahead_urls === false) {\n return [];\n }\n return fileType === 'file' ? join([\n filterByQuery(term, fromHistoryMenuItems(history)),\n filterByQuery(term, fromMenuItems('header')),\n filterByQuery(term, anchorMenuItems())\n ]) : filterByQuery(term, fromHistoryMenuItems(history));\n };\n var addToHistory = function (url, fileType) {\n var items = history[fileType];\n if (!/^https?/.test(url)) {\n return;\n }\n if (items) {\n if (indexOf(items, url).isNone()) {\n history[fileType] = items.slice(0, HISTORY_LENGTH).concat(url);\n }\n } else {\n history[fileType] = [url];\n }\n };\n var filterByQuery = function (term, menuItems) {\n var lowerCaseTerm = term.toLowerCase();\n var result = global$2.grep(menuItems, function (item) {\n return item.title.toLowerCase().indexOf(lowerCaseTerm) !== -1;\n });\n return result.length === 1 && result[0].title === term ? [] : result;\n };\n var getTitle = function (linkDetails) {\n var title = linkDetails.title;\n return title.raw ? title.raw : title;\n };\n var setupAutoCompleteHandler = function (ctrl, editorSettings, bodyElm, fileType) {\n var autocomplete = function (term) {\n var linkTargets = LinkTargets.find(bodyElm);\n var menuItems = createMenuItems(term, linkTargets, fileType, editorSettings);\n ctrl.showAutoComplete(menuItems, term);\n };\n ctrl.on('autocomplete', function () {\n autocomplete(ctrl.value());\n });\n ctrl.on('selectitem', function (e) {\n var linkDetails = e.value;\n ctrl.value(linkDetails.url);\n var title = getTitle(linkDetails);\n if (fileType === 'image') {\n ctrl.fire('change', {\n meta: {\n alt: title,\n attach: linkDetails.attach\n }\n });\n } else {\n ctrl.fire('change', {\n meta: {\n text: title,\n attach: linkDetails.attach\n }\n });\n }\n ctrl.focus();\n });\n ctrl.on('click', function (e) {\n if (ctrl.value().length === 0 && e.target.nodeName === 'INPUT') {\n autocomplete('');\n }\n });\n ctrl.on('PostRender', function () {\n ctrl.getRoot().on('submit', function (e) {\n if (!e.isDefaultPrevented()) {\n addToHistory(ctrl.value(), fileType);\n }\n });\n });\n };\n var statusToUiState = function (result) {\n var status = result.status, message = result.message;\n if (status === 'valid') {\n return {\n status: 'ok',\n message: message\n };\n } else if (status === 'unknown') {\n return {\n status: 'warn',\n message: message\n };\n } else if (status === 'invalid') {\n return {\n status: 'warn',\n message: message\n };\n } else {\n return {\n status: 'none',\n message: ''\n };\n }\n };\n var setupLinkValidatorHandler = function (ctrl, editorSettings, fileType) {\n var validatorHandler = editorSettings.filepicker_validator_handler;\n if (validatorHandler) {\n var validateUrl_1 = function (url) {\n if (url.length === 0) {\n ctrl.statusLevel('none');\n return;\n }\n validatorHandler({\n url: url,\n type: fileType\n }, function (result) {\n var uiState = statusToUiState(result);\n ctrl.statusMessage(uiState.message);\n ctrl.statusLevel(uiState.status);\n });\n };\n ctrl.state.on('change:value', function (e) {\n validateUrl_1(e.value);\n });\n }\n };\n var FilePicker = ComboBox.extend({\n Statics: { clearHistory: clearHistory },\n init: function (settings) {\n var self = this, editor = getActiveEditor(), editorSettings = editor.settings;\n var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;\n var fileType = settings.filetype;\n settings.spellcheck = false;\n fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;\n if (fileBrowserCallbackTypes) {\n fileBrowserCallbackTypes = global$2.makeMap(fileBrowserCallbackTypes, /[, ]/);\n }\n if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {\n fileBrowserCallback = editorSettings.file_picker_callback;\n if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {\n actionCallback = function () {\n var meta = self.fire('beforecall').meta;\n meta = global$2.extend({ filetype: fileType }, meta);\n fileBrowserCallback.call(editor, function (value, meta) {\n self.value(value).fire('change', { meta: meta });\n }, self.value(), meta);\n };\n } else {\n fileBrowserCallback = editorSettings.file_browser_callback;\n if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {\n actionCallback = function () {\n fileBrowserCallback(self.getEl('inp').id, self.value(), fileType, window);\n };\n }\n }\n }\n if (actionCallback) {\n settings.icon = 'browse';\n settings.onaction = actionCallback;\n }\n self._super(settings);\n self.classes.add('filepicker');\n setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);\n setupLinkValidatorHandler(self, editorSettings, fileType);\n }\n });\n\n var FitLayout = AbsoluteLayout.extend({\n recalc: function (container) {\n var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;\n container.items().filter(':visible').each(function (ctrl) {\n ctrl.layoutRect({\n x: paddingBox.left,\n y: paddingBox.top,\n w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,\n h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom\n });\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n });\n }\n });\n\n var FlexLayout = AbsoluteLayout.extend({\n recalc: function (container) {\n var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;\n var ctrl, ctrlLayoutRect, ctrlSettings, flex;\n var maxSizeItems = [];\n var size, maxSize, ratio, rect, pos, maxAlignEndPos;\n var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;\n var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;\n var alignDeltaSizeName, alignContentSizeName;\n var max = Math.max, min = Math.min;\n items = container.items().filter(':visible');\n contLayoutRect = container.layoutRect();\n contPaddingBox = container.paddingBox;\n contSettings = container.settings;\n direction = container.isRtl() ? contSettings.direction || 'row-reversed' : contSettings.direction;\n align = contSettings.align;\n pack = container.isRtl() ? contSettings.pack || 'end' : contSettings.pack;\n spacing = contSettings.spacing || 0;\n if (direction === 'row-reversed' || direction === 'column-reverse') {\n items = items.set(items.toArray().reverse());\n direction = direction.split('-')[0];\n }\n if (direction === 'column') {\n posName = 'y';\n sizeName = 'h';\n minSizeName = 'minH';\n maxSizeName = 'maxH';\n innerSizeName = 'innerH';\n beforeName = 'top';\n deltaSizeName = 'deltaH';\n contentSizeName = 'contentH';\n alignBeforeName = 'left';\n alignSizeName = 'w';\n alignAxisName = 'x';\n alignInnerSizeName = 'innerW';\n alignMinSizeName = 'minW';\n alignAfterName = 'right';\n alignDeltaSizeName = 'deltaW';\n alignContentSizeName = 'contentW';\n } else {\n posName = 'x';\n sizeName = 'w';\n minSizeName = 'minW';\n maxSizeName = 'maxW';\n innerSizeName = 'innerW';\n beforeName = 'left';\n deltaSizeName = 'deltaW';\n contentSizeName = 'contentW';\n alignBeforeName = 'top';\n alignSizeName = 'h';\n alignAxisName = 'y';\n alignInnerSizeName = 'innerH';\n alignMinSizeName = 'minH';\n alignAfterName = 'bottom';\n alignDeltaSizeName = 'deltaH';\n alignContentSizeName = 'contentH';\n }\n availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];\n maxAlignEndPos = totalFlex = 0;\n for (i = 0, l = items.length; i < l; i++) {\n ctrl = items[i];\n ctrlLayoutRect = ctrl.layoutRect();\n ctrlSettings = ctrl.settings;\n flex = ctrlSettings.flex;\n availableSpace -= i < l - 1 ? spacing : 0;\n if (flex > 0) {\n totalFlex += flex;\n if (ctrlLayoutRect[maxSizeName]) {\n maxSizeItems.push(ctrl);\n }\n ctrlLayoutRect.flex = flex;\n }\n availableSpace -= ctrlLayoutRect[minSizeName];\n size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];\n if (size > maxAlignEndPos) {\n maxAlignEndPos = size;\n }\n }\n rect = {};\n if (availableSpace < 0) {\n rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];\n } else {\n rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];\n }\n rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];\n rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;\n rect[alignContentSizeName] = maxAlignEndPos;\n rect.minW = min(rect.minW, contLayoutRect.maxW);\n rect.minH = min(rect.minH, contLayoutRect.maxH);\n rect.minW = max(rect.minW, contLayoutRect.startMinWidth);\n rect.minH = max(rect.minH, contLayoutRect.startMinHeight);\n if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {\n rect.w = rect.minW;\n rect.h = rect.minH;\n container.layoutRect(rect);\n this.recalc(container);\n if (container._lastRect === null) {\n var parentCtrl = container.parent();\n if (parentCtrl) {\n parentCtrl._lastRect = null;\n parentCtrl.recalc();\n }\n }\n return;\n }\n ratio = availableSpace / totalFlex;\n for (i = 0, l = maxSizeItems.length; i < l; i++) {\n ctrl = maxSizeItems[i];\n ctrlLayoutRect = ctrl.layoutRect();\n maxSize = ctrlLayoutRect[maxSizeName];\n size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;\n if (size > maxSize) {\n availableSpace -= ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName];\n totalFlex -= ctrlLayoutRect.flex;\n ctrlLayoutRect.flex = 0;\n ctrlLayoutRect.maxFlexSize = maxSize;\n } else {\n ctrlLayoutRect.maxFlexSize = 0;\n }\n }\n ratio = availableSpace / totalFlex;\n pos = contPaddingBox[beforeName];\n rect = {};\n if (totalFlex === 0) {\n if (pack === 'end') {\n pos = availableSpace + contPaddingBox[beforeName];\n } else if (pack === 'center') {\n pos = Math.round(contLayoutRect[innerSizeName] / 2 - (contLayoutRect[innerSizeName] - availableSpace) / 2) + contPaddingBox[beforeName];\n if (pos < 0) {\n pos = contPaddingBox[beforeName];\n }\n } else if (pack === 'justify') {\n pos = contPaddingBox[beforeName];\n spacing = Math.floor(availableSpace / (items.length - 1));\n }\n }\n rect[alignAxisName] = contPaddingBox[alignBeforeName];\n for (i = 0, l = items.length; i < l; i++) {\n ctrl = items[i];\n ctrlLayoutRect = ctrl.layoutRect();\n size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];\n if (align === 'center') {\n rect[alignAxisName] = Math.round(contLayoutRect[alignInnerSizeName] / 2 - ctrlLayoutRect[alignSizeName] / 2);\n } else if (align === 'stretch') {\n rect[alignSizeName] = max(ctrlLayoutRect[alignMinSizeName] || 0, contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]);\n rect[alignAxisName] = contPaddingBox[alignBeforeName];\n } else if (align === 'end') {\n rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;\n }\n if (ctrlLayoutRect.flex > 0) {\n size += ctrlLayoutRect.flex * ratio;\n }\n rect[sizeName] = size;\n rect[posName] = pos;\n ctrl.layoutRect(rect);\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n pos += size + spacing;\n }\n }\n });\n\n var FlowLayout = Layout.extend({\n Defaults: {\n containerClass: 'flow-layout',\n controlClass: 'flow-layout-item',\n endClass: 'break'\n },\n recalc: function (container) {\n container.items().filter(':visible').each(function (ctrl) {\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n });\n },\n isNative: function () {\n return true;\n }\n });\n\n var descendant$1 = function (scope, selector) {\n return one(selector, scope);\n };\n\n var toggleFormat = function (editor, fmt) {\n return function () {\n editor.execCommand('mceToggleFormat', false, fmt);\n };\n };\n var addFormatChangedListener = function (editor, name, changed) {\n var handler = function (state) {\n changed(state, name);\n };\n if (editor.formatter) {\n editor.formatter.formatChanged(name, handler);\n } else {\n editor.on('init', function () {\n editor.formatter.formatChanged(name, handler);\n });\n }\n };\n var postRenderFormatToggle = function (editor, name) {\n return function (e) {\n addFormatChangedListener(editor, name, function (state) {\n e.control.active(state);\n });\n };\n };\n\n var register = function (editor) {\n var alignFormats = [\n 'alignleft',\n 'aligncenter',\n 'alignright',\n 'alignjustify'\n ];\n var defaultAlign = 'alignleft';\n var alignMenuItems = [\n {\n text: 'Left',\n icon: 'alignleft',\n onclick: toggleFormat(editor, 'alignleft')\n },\n {\n text: 'Center',\n icon: 'aligncenter',\n onclick: toggleFormat(editor, 'aligncenter')\n },\n {\n text: 'Right',\n icon: 'alignright',\n onclick: toggleFormat(editor, 'alignright')\n },\n {\n text: 'Justify',\n icon: 'alignjustify',\n onclick: toggleFormat(editor, 'alignjustify')\n }\n ];\n editor.addMenuItem('align', {\n text: 'Align',\n menu: alignMenuItems\n });\n editor.addButton('align', {\n type: 'menubutton',\n icon: defaultAlign,\n menu: alignMenuItems,\n onShowMenu: function (e) {\n var menu = e.control.menu;\n global$2.each(alignFormats, function (formatName, idx) {\n menu.items().eq(idx).each(function (item) {\n return item.active(editor.formatter.match(formatName));\n });\n });\n },\n onPostRender: function (e) {\n var ctrl = e.control;\n global$2.each(alignFormats, function (formatName, idx) {\n addFormatChangedListener(editor, formatName, function (state) {\n ctrl.icon(defaultAlign);\n if (state) {\n ctrl.icon(formatName);\n }\n });\n });\n }\n });\n global$2.each({\n alignleft: [\n 'Align left',\n 'JustifyLeft'\n ],\n aligncenter: [\n 'Align center',\n 'JustifyCenter'\n ],\n alignright: [\n 'Align right',\n 'JustifyRight'\n ],\n alignjustify: [\n 'Justify',\n 'JustifyFull'\n ],\n alignnone: [\n 'No alignment',\n 'JustifyNone'\n ]\n }, function (item, name) {\n editor.addButton(name, {\n active: false,\n tooltip: item[0],\n cmd: item[1],\n onPostRender: postRenderFormatToggle(editor, name)\n });\n });\n };\n var Align = { register: register };\n\n var getFirstFont = function (fontFamily) {\n return fontFamily ? fontFamily.split(',')[0] : '';\n };\n var findMatchingValue = function (items, fontFamily) {\n var font = fontFamily ? fontFamily.toLowerCase() : '';\n var value;\n global$2.each(items, function (item) {\n if (item.value.toLowerCase() === font) {\n value = item.value;\n }\n });\n global$2.each(items, function (item) {\n if (!value && getFirstFont(item.value).toLowerCase() === getFirstFont(font).toLowerCase()) {\n value = item.value;\n }\n });\n return value;\n };\n var createFontNameListBoxChangeHandler = function (editor, items) {\n return function () {\n var self = this;\n self.state.set('value', null);\n editor.on('init nodeChange', function (e) {\n var fontFamily = editor.queryCommandValue('FontName');\n var match = findMatchingValue(items, fontFamily);\n self.value(match ? match : null);\n if (!match && fontFamily) {\n self.text(getFirstFont(fontFamily));\n }\n });\n };\n };\n var createFormats = function (formats) {\n formats = formats.replace(/;$/, '').split(';');\n var i = formats.length;\n while (i--) {\n formats[i] = formats[i].split('=');\n }\n return formats;\n };\n var getFontItems = function (editor) {\n var defaultFontsFormats = 'Andale Mono=andale mono,monospace;' + 'Arial=arial,helvetica,sans-serif;' + 'Arial Black=arial black,sans-serif;' + 'Book Antiqua=book antiqua,palatino,serif;' + 'Comic Sans MS=comic sans ms,sans-serif;' + 'Courier New=courier new,courier,monospace;' + 'Georgia=georgia,palatino,serif;' + 'Helvetica=helvetica,arial,sans-serif;' + 'Impact=impact,sans-serif;' + 'Symbol=symbol;' + 'Tahoma=tahoma,arial,helvetica,sans-serif;' + 'Terminal=terminal,monaco,monospace;' + 'Times New Roman=times new roman,times,serif;' + 'Trebuchet MS=trebuchet ms,geneva,sans-serif;' + 'Verdana=verdana,geneva,sans-serif;' + 'Webdings=webdings;' + 'Wingdings=wingdings,zapf dingbats';\n var fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);\n return global$2.map(fonts, function (font) {\n return {\n text: { raw: font[0] },\n value: font[1],\n textStyle: font[1].indexOf('dings') === -1 ? 'font-family:' + font[1] : ''\n };\n });\n };\n var registerButtons = function (editor) {\n editor.addButton('fontselect', function () {\n var items = getFontItems(editor);\n return {\n type: 'listbox',\n text: 'Font Family',\n tooltip: 'Font Family',\n values: items,\n fixedWidth: true,\n onPostRender: createFontNameListBoxChangeHandler(editor, items),\n onselect: function (e) {\n if (e.control.settings.value) {\n editor.execCommand('FontName', false, e.control.settings.value);\n }\n }\n };\n });\n };\n var register$1 = function (editor) {\n registerButtons(editor);\n };\n var FontSelect = { register: register$1 };\n\n var round = function (number, precision) {\n var factor = Math.pow(10, precision);\n return Math.round(number * factor) / factor;\n };\n var toPt = function (fontSize, precision) {\n if (/[0-9.]+px$/.test(fontSize)) {\n return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';\n }\n return fontSize;\n };\n var findMatchingValue$1 = function (items, pt, px) {\n var value;\n global$2.each(items, function (item) {\n if (item.value === px) {\n value = px;\n } else if (item.value === pt) {\n value = pt;\n }\n });\n return value;\n };\n var createFontSizeListBoxChangeHandler = function (editor, items) {\n return function () {\n var self = this;\n editor.on('init nodeChange', function (e) {\n var px, pt, precision, match;\n px = editor.queryCommandValue('FontSize');\n if (px) {\n for (precision = 3; !match && precision >= 0; precision--) {\n pt = toPt(px, precision);\n match = findMatchingValue$1(items, pt, px);\n }\n }\n self.value(match ? match : null);\n if (!match) {\n self.text(pt);\n }\n });\n };\n };\n var getFontSizeItems = function (editor) {\n var defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';\n var fontsizeFormats = editor.settings.fontsize_formats || defaultFontsizeFormats;\n return global$2.map(fontsizeFormats.split(' '), function (item) {\n var text = item, value = item;\n var values = item.split('=');\n if (values.length > 1) {\n text = values[0];\n value = values[1];\n }\n return {\n text: text,\n value: value\n };\n });\n };\n var registerButtons$1 = function (editor) {\n editor.addButton('fontsizeselect', function () {\n var items = getFontSizeItems(editor);\n return {\n type: 'listbox',\n text: 'Font Sizes',\n tooltip: 'Font Sizes',\n values: items,\n fixedWidth: true,\n onPostRender: createFontSizeListBoxChangeHandler(editor, items),\n onclick: function (e) {\n if (e.control.settings.value) {\n editor.execCommand('FontSize', false, e.control.settings.value);\n }\n }\n };\n });\n };\n var register$2 = function (editor) {\n registerButtons$1(editor);\n };\n var FontSizeSelect = { register: register$2 };\n\n var hideMenuObjects = function (editor, menu) {\n var count = menu.length;\n global$2.each(menu, function (item) {\n if (item.menu) {\n item.hidden = hideMenuObjects(editor, item.menu) === 0;\n }\n var formatName = item.format;\n if (formatName) {\n item.hidden = !editor.formatter.canApply(formatName);\n }\n if (item.hidden) {\n count--;\n }\n });\n return count;\n };\n var hideFormatMenuItems = function (editor, menu) {\n var count = menu.items().length;\n menu.items().each(function (item) {\n if (item.menu) {\n item.visible(hideFormatMenuItems(editor, item.menu) > 0);\n }\n if (!item.menu && item.settings.menu) {\n item.visible(hideMenuObjects(editor, item.settings.menu) > 0);\n }\n var formatName = item.settings.format;\n if (formatName) {\n item.visible(editor.formatter.canApply(formatName));\n }\n if (!item.visible()) {\n count--;\n }\n });\n return count;\n };\n var createFormatMenu = function (editor) {\n var count = 0;\n var newFormats = [];\n var defaultStyleFormats = [\n {\n title: 'Headings',\n items: [\n {\n title: 'Heading 1',\n format: 'h1'\n },\n {\n title: 'Heading 2',\n format: 'h2'\n },\n {\n title: 'Heading 3',\n format: 'h3'\n },\n {\n title: 'Heading 4',\n format: 'h4'\n },\n {\n title: 'Heading 5',\n format: 'h5'\n },\n {\n title: 'Heading 6',\n format: 'h6'\n }\n ]\n },\n {\n title: 'Inline',\n items: [\n {\n title: 'Bold',\n icon: 'bold',\n format: 'bold'\n },\n {\n title: 'Italic',\n icon: 'italic',\n format: 'italic'\n },\n {\n title: 'Underline',\n icon: 'underline',\n format: 'underline'\n },\n {\n title: 'Strikethrough',\n icon: 'strikethrough',\n format: 'strikethrough'\n },\n {\n title: 'Superscript',\n icon: 'superscript',\n format: 'superscript'\n },\n {\n title: 'Subscript',\n icon: 'subscript',\n format: 'subscript'\n },\n {\n title: 'Code',\n icon: 'code',\n format: 'code'\n }\n ]\n },\n {\n title: 'Blocks',\n items: [\n {\n title: 'Paragraph',\n format: 'p'\n },\n {\n title: 'Blockquote',\n format: 'blockquote'\n },\n {\n title: 'Div',\n format: 'div'\n },\n {\n title: 'Pre',\n format: 'pre'\n }\n ]\n },\n {\n title: 'Alignment',\n items: [\n {\n title: 'Left',\n icon: 'alignleft',\n format: 'alignleft'\n },\n {\n title: 'Center',\n icon: 'aligncenter',\n format: 'aligncenter'\n },\n {\n title: 'Right',\n icon: 'alignright',\n format: 'alignright'\n },\n {\n title: 'Justify',\n icon: 'alignjustify',\n format: 'alignjustify'\n }\n ]\n }\n ];\n var createMenu = function (formats) {\n var menu = [];\n if (!formats) {\n return;\n }\n global$2.each(formats, function (format) {\n var menuItem = {\n text: format.title,\n icon: format.icon\n };\n if (format.items) {\n menuItem.menu = createMenu(format.items);\n } else {\n var formatName = format.format || 'custom' + count++;\n if (!format.format) {\n format.name = formatName;\n newFormats.push(format);\n }\n menuItem.format = formatName;\n menuItem.cmd = format.cmd;\n }\n menu.push(menuItem);\n });\n return menu;\n };\n var createStylesMenu = function () {\n var menu;\n if (editor.settings.style_formats_merge) {\n if (editor.settings.style_formats) {\n menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));\n } else {\n menu = createMenu(defaultStyleFormats);\n }\n } else {\n menu = createMenu(editor.settings.style_formats || defaultStyleFormats);\n }\n return menu;\n };\n editor.on('init', function () {\n global$2.each(newFormats, function (format) {\n editor.formatter.register(format.name, format);\n });\n });\n return {\n type: 'menu',\n items: createStylesMenu(),\n onPostRender: function (e) {\n editor.fire('renderFormatsMenu', { control: e.control });\n },\n itemDefaults: {\n preview: true,\n textStyle: function () {\n if (this.settings.format) {\n return editor.formatter.getCssText(this.settings.format);\n }\n },\n onPostRender: function () {\n var self = this;\n self.parent().on('show', function () {\n var formatName, command;\n formatName = self.settings.format;\n if (formatName) {\n self.disabled(!editor.formatter.canApply(formatName));\n self.active(editor.formatter.match(formatName));\n }\n command = self.settings.cmd;\n if (command) {\n self.active(editor.queryCommandState(command));\n }\n });\n },\n onclick: function () {\n if (this.settings.format) {\n toggleFormat(editor, this.settings.format)();\n }\n if (this.settings.cmd) {\n editor.execCommand(this.settings.cmd);\n }\n }\n }\n };\n };\n var registerMenuItems = function (editor, formatMenu) {\n editor.addMenuItem('formats', {\n text: 'Formats',\n menu: formatMenu\n });\n };\n var registerButtons$2 = function (editor, formatMenu) {\n editor.addButton('styleselect', {\n type: 'menubutton',\n text: 'Formats',\n menu: formatMenu,\n onShowMenu: function () {\n if (editor.settings.style_formats_autohide) {\n hideFormatMenuItems(editor, this.menu);\n }\n }\n });\n };\n var register$3 = function (editor) {\n var formatMenu = createFormatMenu(editor);\n registerMenuItems(editor, formatMenu);\n registerButtons$2(editor, formatMenu);\n };\n var Formats = { register: register$3 };\n\n var defaultBlocks = 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre';\n var createFormats$1 = function (formats) {\n formats = formats.replace(/;$/, '').split(';');\n var i = formats.length;\n while (i--) {\n formats[i] = formats[i].split('=');\n }\n return formats;\n };\n var createListBoxChangeHandler = function (editor, items, formatName) {\n return function () {\n var self = this;\n editor.on('nodeChange', function (e) {\n var formatter = editor.formatter;\n var value = null;\n global$2.each(e.parents, function (node) {\n global$2.each(items, function (item) {\n if (formatName) {\n if (formatter.matchNode(node, formatName, { value: item.value })) {\n value = item.value;\n }\n } else {\n if (formatter.matchNode(node, item.value)) {\n value = item.value;\n }\n }\n if (value) {\n return false;\n }\n });\n if (value) {\n return false;\n }\n });\n self.value(value);\n });\n };\n };\n var lazyFormatSelectBoxItems = function (editor, blocks) {\n return function () {\n var items = [];\n global$2.each(blocks, function (block) {\n items.push({\n text: block[0],\n value: block[1],\n textStyle: function () {\n return editor.formatter.getCssText(block[1]);\n }\n });\n });\n return {\n type: 'listbox',\n text: blocks[0][0],\n values: items,\n fixedWidth: true,\n onselect: function (e) {\n if (e.control) {\n var fmt = e.control.value();\n toggleFormat(editor, fmt)();\n }\n },\n onPostRender: createListBoxChangeHandler(editor, items)\n };\n };\n };\n var buildMenuItems = function (editor, blocks) {\n return global$2.map(blocks, function (block) {\n return {\n text: block[0],\n onclick: toggleFormat(editor, block[1]),\n textStyle: function () {\n return editor.formatter.getCssText(block[1]);\n }\n };\n });\n };\n var register$4 = function (editor) {\n var blocks = createFormats$1(editor.settings.block_formats || defaultBlocks);\n editor.addMenuItem('blockformats', {\n text: 'Blocks',\n menu: buildMenuItems(editor, blocks)\n });\n editor.addButton('formatselect', lazyFormatSelectBoxItems(editor, blocks));\n };\n var FormatSelect = { register: register$4 };\n\n var createCustomMenuItems = function (editor, names) {\n var items, nameList;\n if (typeof names === 'string') {\n nameList = names.split(' ');\n } else if (global$2.isArray(names)) {\n return flatten(global$2.map(names, function (names) {\n return createCustomMenuItems(editor, names);\n }));\n }\n items = global$2.grep(nameList, function (name) {\n return name === '|' || name in editor.menuItems;\n });\n return global$2.map(items, function (name) {\n return name === '|' ? { text: '-' } : editor.menuItems[name];\n });\n };\n var isSeparator$1 = function (menuItem) {\n return menuItem && menuItem.text === '-';\n };\n var trimMenuItems = function (menuItems) {\n var menuItems2 = filter(menuItems, function (menuItem, i, menuItems) {\n return !isSeparator$1(menuItem) || !isSeparator$1(menuItems[i - 1]);\n });\n return filter(menuItems2, function (menuItem, i, menuItems) {\n return !isSeparator$1(menuItem) || i > 0 && i < menuItems.length - 1;\n });\n };\n var createContextMenuItems = function (editor, context) {\n var outputMenuItems = [{ text: '-' }];\n var menuItems = global$2.grep(editor.menuItems, function (menuItem) {\n return menuItem.context === context;\n });\n global$2.each(menuItems, function (menuItem) {\n if (menuItem.separator === 'before') {\n outputMenuItems.push({ text: '|' });\n }\n if (menuItem.prependToContext) {\n outputMenuItems.unshift(menuItem);\n } else {\n outputMenuItems.push(menuItem);\n }\n if (menuItem.separator === 'after') {\n outputMenuItems.push({ text: '|' });\n }\n });\n return outputMenuItems;\n };\n var createInsertMenu = function (editor) {\n var insertButtonItems = editor.settings.insert_button_items;\n if (insertButtonItems) {\n return trimMenuItems(createCustomMenuItems(editor, insertButtonItems));\n } else {\n return trimMenuItems(createContextMenuItems(editor, 'insert'));\n }\n };\n var registerButtons$3 = function (editor) {\n editor.addButton('insert', {\n type: 'menubutton',\n icon: 'insert',\n menu: [],\n oncreatemenu: function () {\n this.menu.add(createInsertMenu(editor));\n this.menu.renderNew();\n }\n });\n };\n var register$5 = function (editor) {\n registerButtons$3(editor);\n };\n var InsertButton = { register: register$5 };\n\n var registerFormatButtons = function (editor) {\n global$2.each({\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript'\n }, function (text, name) {\n editor.addButton(name, {\n active: false,\n tooltip: text,\n onPostRender: postRenderFormatToggle(editor, name),\n onclick: toggleFormat(editor, name)\n });\n });\n };\n var registerCommandButtons = function (editor) {\n global$2.each({\n outdent: [\n 'Decrease indent',\n 'Outdent'\n ],\n indent: [\n 'Increase indent',\n 'Indent'\n ],\n cut: [\n 'Cut',\n 'Cut'\n ],\n copy: [\n 'Copy',\n 'Copy'\n ],\n paste: [\n 'Paste',\n 'Paste'\n ],\n help: [\n 'Help',\n 'mceHelp'\n ],\n selectall: [\n 'Select all',\n 'SelectAll'\n ],\n visualaid: [\n 'Visual aids',\n 'mceToggleVisualAid'\n ],\n newdocument: [\n 'New document',\n 'mceNewDocument'\n ],\n removeformat: [\n 'Clear formatting',\n 'RemoveFormat'\n ],\n remove: [\n 'Remove',\n 'Delete'\n ]\n }, function (item, name) {\n editor.addButton(name, {\n tooltip: item[0],\n cmd: item[1]\n });\n });\n };\n var registerCommandToggleButtons = function (editor) {\n global$2.each({\n blockquote: [\n 'Blockquote',\n 'mceBlockQuote'\n ],\n subscript: [\n 'Subscript',\n 'Subscript'\n ],\n superscript: [\n 'Superscript',\n 'Superscript'\n ]\n }, function (item, name) {\n editor.addButton(name, {\n active: false,\n tooltip: item[0],\n cmd: item[1],\n onPostRender: postRenderFormatToggle(editor, name)\n });\n });\n };\n var registerButtons$4 = function (editor) {\n registerFormatButtons(editor);\n registerCommandButtons(editor);\n registerCommandToggleButtons(editor);\n };\n var registerMenuItems$1 = function (editor) {\n global$2.each({\n bold: [\n 'Bold',\n 'Bold',\n 'Meta+B'\n ],\n italic: [\n 'Italic',\n 'Italic',\n 'Meta+I'\n ],\n underline: [\n 'Underline',\n 'Underline',\n 'Meta+U'\n ],\n strikethrough: [\n 'Strikethrough',\n 'Strikethrough'\n ],\n subscript: [\n 'Subscript',\n 'Subscript'\n ],\n superscript: [\n 'Superscript',\n 'Superscript'\n ],\n removeformat: [\n 'Clear formatting',\n 'RemoveFormat'\n ],\n newdocument: [\n 'New document',\n 'mceNewDocument'\n ],\n cut: [\n 'Cut',\n 'Cut',\n 'Meta+X'\n ],\n copy: [\n 'Copy',\n 'Copy',\n 'Meta+C'\n ],\n paste: [\n 'Paste',\n 'Paste',\n 'Meta+V'\n ],\n selectall: [\n 'Select all',\n 'SelectAll',\n 'Meta+A'\n ]\n }, function (item, name) {\n editor.addMenuItem(name, {\n text: item[0],\n icon: name,\n shortcut: item[2],\n cmd: item[1]\n });\n });\n editor.addMenuItem('codeformat', {\n text: 'Code',\n icon: 'code',\n onclick: toggleFormat(editor, 'code')\n });\n };\n var register$6 = function (editor) {\n registerButtons$4(editor);\n registerMenuItems$1(editor);\n };\n var SimpleControls = { register: register$6 };\n\n var toggleUndoRedoState = function (editor, type) {\n return function () {\n var self = this;\n var checkState = function () {\n var typeFn = type === 'redo' ? 'hasRedo' : 'hasUndo';\n return editor.undoManager ? editor.undoManager[typeFn]() : false;\n };\n self.disabled(!checkState());\n editor.on('Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', function () {\n self.disabled(editor.readonly || !checkState());\n });\n };\n };\n var registerMenuItems$2 = function (editor) {\n editor.addMenuItem('undo', {\n text: 'Undo',\n icon: 'undo',\n shortcut: 'Meta+Z',\n onPostRender: toggleUndoRedoState(editor, 'undo'),\n cmd: 'undo'\n });\n editor.addMenuItem('redo', {\n text: 'Redo',\n icon: 'redo',\n shortcut: 'Meta+Y',\n onPostRender: toggleUndoRedoState(editor, 'redo'),\n cmd: 'redo'\n });\n };\n var registerButtons$5 = function (editor) {\n editor.addButton('undo', {\n tooltip: 'Undo',\n onPostRender: toggleUndoRedoState(editor, 'undo'),\n cmd: 'undo'\n });\n editor.addButton('redo', {\n tooltip: 'Redo',\n onPostRender: toggleUndoRedoState(editor, 'redo'),\n cmd: 'redo'\n });\n };\n var register$7 = function (editor) {\n registerMenuItems$2(editor);\n registerButtons$5(editor);\n };\n var UndoRedo = { register: register$7 };\n\n var toggleVisualAidState = function (editor) {\n return function () {\n var self = this;\n editor.on('VisualAid', function (e) {\n self.active(e.hasVisual);\n });\n self.active(editor.hasVisual);\n };\n };\n var registerMenuItems$3 = function (editor) {\n editor.addMenuItem('visualaid', {\n text: 'Visual aids',\n selectable: true,\n onPostRender: toggleVisualAidState(editor),\n cmd: 'mceToggleVisualAid'\n });\n };\n var register$8 = function (editor) {\n registerMenuItems$3(editor);\n };\n var VisualAid = { register: register$8 };\n\n var setupEnvironment = function () {\n Widget.tooltips = !global$8.iOS;\n Control$1.translate = function (text) {\n return global$1.translate(text);\n };\n };\n var setupUiContainer = function (editor) {\n if (editor.settings.ui_container) {\n global$8.container = descendant$1(Element$$1.fromDom(document.body), editor.settings.ui_container).fold(constant(null), function (elm) {\n return elm.dom();\n });\n }\n };\n var setupRtlMode = function (editor) {\n if (editor.rtl) {\n Control$1.rtl = true;\n }\n };\n var setupHideFloatPanels = function (editor) {\n editor.on('mousedown progressstate', function () {\n FloatPanel.hideAll();\n });\n };\n var setup$1 = function (editor) {\n setupRtlMode(editor);\n setupHideFloatPanels(editor);\n setupUiContainer(editor);\n setupEnvironment();\n FormatSelect.register(editor);\n Align.register(editor);\n SimpleControls.register(editor);\n UndoRedo.register(editor);\n FontSizeSelect.register(editor);\n FontSelect.register(editor);\n Formats.register(editor);\n VisualAid.register(editor);\n InsertButton.register(editor);\n };\n var FormatControls = { setup: setup$1 };\n\n var GridLayout = AbsoluteLayout.extend({\n recalc: function (container) {\n var settings, rows, cols, items, contLayoutRect, width, height, rect, ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY;\n var colWidths = [];\n var rowHeights = [];\n var ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;\n settings = container.settings;\n items = container.items().filter(':visible');\n contLayoutRect = container.layoutRect();\n cols = settings.columns || Math.ceil(Math.sqrt(items.length));\n rows = Math.ceil(items.length / cols);\n spacingH = settings.spacingH || settings.spacing || 0;\n spacingV = settings.spacingV || settings.spacing || 0;\n alignH = settings.alignH || settings.align;\n alignV = settings.alignV || settings.align;\n contPaddingBox = container.paddingBox;\n reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();\n if (alignH && typeof alignH === 'string') {\n alignH = [alignH];\n }\n if (alignV && typeof alignV === 'string') {\n alignV = [alignV];\n }\n for (x = 0; x < cols; x++) {\n colWidths.push(0);\n }\n for (y = 0; y < rows; y++) {\n rowHeights.push(0);\n }\n for (y = 0; y < rows; y++) {\n for (x = 0; x < cols; x++) {\n ctrl = items[y * cols + x];\n if (!ctrl) {\n break;\n }\n ctrlLayoutRect = ctrl.layoutRect();\n ctrlMinWidth = ctrlLayoutRect.minW;\n ctrlMinHeight = ctrlLayoutRect.minH;\n colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];\n rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];\n }\n }\n availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;\n for (maxX = 0, x = 0; x < cols; x++) {\n maxX += colWidths[x] + (x > 0 ? spacingH : 0);\n availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];\n }\n availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;\n for (maxY = 0, y = 0; y < rows; y++) {\n maxY += rowHeights[y] + (y > 0 ? spacingV : 0);\n availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];\n }\n maxX += contPaddingBox.left + contPaddingBox.right;\n maxY += contPaddingBox.top + contPaddingBox.bottom;\n rect = {};\n rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);\n rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);\n rect.contentW = rect.minW - contLayoutRect.deltaW;\n rect.contentH = rect.minH - contLayoutRect.deltaH;\n rect.minW = Math.min(rect.minW, contLayoutRect.maxW);\n rect.minH = Math.min(rect.minH, contLayoutRect.maxH);\n rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);\n rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);\n if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {\n rect.w = rect.minW;\n rect.h = rect.minH;\n container.layoutRect(rect);\n this.recalc(container);\n if (container._lastRect === null) {\n var parentCtrl = container.parent();\n if (parentCtrl) {\n parentCtrl._lastRect = null;\n parentCtrl.recalc();\n }\n }\n return;\n }\n if (contLayoutRect.autoResize) {\n rect = container.layoutRect(rect);\n rect.contentW = rect.minW - contLayoutRect.deltaW;\n rect.contentH = rect.minH - contLayoutRect.deltaH;\n }\n var flexV;\n if (settings.packV === 'start') {\n flexV = 0;\n } else {\n flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;\n }\n var totalFlex = 0;\n var flexWidths = settings.flexWidths;\n if (flexWidths) {\n for (x = 0; x < flexWidths.length; x++) {\n totalFlex += flexWidths[x];\n }\n } else {\n totalFlex = cols;\n }\n var ratio = availableWidth / totalFlex;\n for (x = 0; x < cols; x++) {\n colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;\n }\n posY = contPaddingBox.top;\n for (y = 0; y < rows; y++) {\n posX = contPaddingBox.left;\n height = rowHeights[y] + flexV;\n for (x = 0; x < cols; x++) {\n if (reverseRows) {\n idx = y * cols + cols - 1 - x;\n } else {\n idx = y * cols + x;\n }\n ctrl = items[idx];\n if (!ctrl) {\n break;\n }\n ctrlSettings = ctrl.settings;\n ctrlLayoutRect = ctrl.layoutRect();\n width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);\n ctrlLayoutRect.x = posX;\n ctrlLayoutRect.y = posY;\n align = ctrlSettings.alignH || (alignH ? alignH[x] || alignH[0] : null);\n if (align === 'center') {\n ctrlLayoutRect.x = posX + width / 2 - ctrlLayoutRect.w / 2;\n } else if (align === 'right') {\n ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;\n } else if (align === 'stretch') {\n ctrlLayoutRect.w = width;\n }\n align = ctrlSettings.alignV || (alignV ? alignV[x] || alignV[0] : null);\n if (align === 'center') {\n ctrlLayoutRect.y = posY + height / 2 - ctrlLayoutRect.h / 2;\n } else if (align === 'bottom') {\n ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;\n } else if (align === 'stretch') {\n ctrlLayoutRect.h = height;\n }\n ctrl.layoutRect(ctrlLayoutRect);\n posX += width + spacingH;\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n }\n posY += height + spacingV;\n }\n }\n });\n\n var Iframe$1 = Widget.extend({\n renderHtml: function () {\n var self = this;\n self.classes.add('iframe');\n self.canFocus = false;\n return '';\n },\n src: function (src) {\n this.getEl().src = src;\n },\n html: function (html, callback) {\n var self = this, body = this.getEl().contentWindow.document.body;\n if (!body) {\n global$7.setTimeout(function () {\n self.html(html);\n });\n } else {\n body.innerHTML = html;\n if (callback) {\n callback();\n }\n }\n return this;\n }\n });\n\n var InfoBox = Widget.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('widget').add('infobox');\n self.canFocus = false;\n },\n severity: function (level) {\n this.classes.remove('error');\n this.classes.remove('warning');\n this.classes.remove('success');\n this.classes.add(level);\n },\n help: function (state) {\n this.state.set('help', state);\n },\n renderHtml: function () {\n var self = this, prefix = self.classPrefix;\n return '
    ' + '
    ' + self.encode(self.state.get('text')) + '' + '
    ' + '
    ';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.getEl('body').firstChild.data = self.encode(e.value);\n if (self.state.get('rendered')) {\n self.updateLayoutRect();\n }\n });\n self.state.on('change:help', function (e) {\n self.classes.toggle('has-help', e.value);\n if (self.state.get('rendered')) {\n self.updateLayoutRect();\n }\n });\n return self._super();\n }\n });\n\n var Label = Widget.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('widget').add('label');\n self.canFocus = false;\n if (settings.multiline) {\n self.classes.add('autoscroll');\n }\n if (settings.strong) {\n self.classes.add('strong');\n }\n },\n initLayoutRect: function () {\n var self = this, layoutRect = self._super();\n if (self.settings.multiline) {\n var size = funcs.getSize(self.getEl());\n if (size.width > layoutRect.maxW) {\n layoutRect.minW = layoutRect.maxW;\n self.classes.add('multiline');\n }\n self.getEl().style.width = layoutRect.minW + 'px';\n layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, funcs.getSize(self.getEl()).height);\n }\n return layoutRect;\n },\n repaint: function () {\n var self = this;\n if (!self.settings.multiline) {\n self.getEl().style.lineHeight = self.layoutRect().h + 'px';\n }\n return self._super();\n },\n severity: function (level) {\n this.classes.remove('error');\n this.classes.remove('warning');\n this.classes.remove('success');\n this.classes.add(level);\n },\n renderHtml: function () {\n var self = this;\n var targetCtrl, forName, forId = self.settings.forId;\n var text = self.settings.html ? self.settings.html : self.encode(self.state.get('text'));\n if (!forId && (forName = self.settings.forName)) {\n targetCtrl = self.getRoot().find('#' + forName)[0];\n if (targetCtrl) {\n forId = targetCtrl._id;\n }\n }\n if (forId) {\n return '';\n }\n return '' + text + '';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.innerHtml(self.encode(e.value));\n if (self.state.get('rendered')) {\n self.updateLayoutRect();\n }\n });\n return self._super();\n }\n });\n\n var Toolbar$1 = Container.extend({\n Defaults: {\n role: 'toolbar',\n layout: 'flow'\n },\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('toolbar');\n },\n postRender: function () {\n var self = this;\n self.items().each(function (ctrl) {\n ctrl.classes.add('toolbar-item');\n });\n return self._super();\n }\n });\n\n var MenuBar = Toolbar$1.extend({\n Defaults: {\n role: 'menubar',\n containerCls: 'menubar',\n ariaRoot: true,\n defaults: { type: 'menubutton' }\n }\n });\n\n function isChildOf$1(node, parent$$1) {\n while (node) {\n if (parent$$1 === node) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n var MenuButton = Button.extend({\n init: function (settings) {\n var self$$1 = this;\n self$$1._renderOpen = true;\n self$$1._super(settings);\n settings = self$$1.settings;\n self$$1.classes.add('menubtn');\n if (settings.fixedWidth) {\n self$$1.classes.add('fixed-width');\n }\n self$$1.aria('haspopup', true);\n self$$1.state.set('menu', settings.menu || self$$1.render());\n },\n showMenu: function (toggle) {\n var self$$1 = this;\n var menu;\n if (self$$1.menu && self$$1.menu.visible() && toggle !== false) {\n return self$$1.hideMenu();\n }\n if (!self$$1.menu) {\n menu = self$$1.state.get('menu') || [];\n self$$1.classes.add('opened');\n if (menu.length) {\n menu = {\n type: 'menu',\n animate: true,\n items: menu\n };\n } else {\n menu.type = menu.type || 'menu';\n menu.animate = true;\n }\n if (!menu.renderTo) {\n self$$1.menu = global$4.create(menu).parent(self$$1).renderTo();\n } else {\n self$$1.menu = menu.parent(self$$1).show().renderTo();\n }\n self$$1.fire('createmenu');\n self$$1.menu.reflow();\n self$$1.menu.on('cancel', function (e) {\n if (e.control.parent() === self$$1.menu) {\n e.stopPropagation();\n self$$1.focus();\n self$$1.hideMenu();\n }\n });\n self$$1.menu.on('select', function () {\n self$$1.focus();\n });\n self$$1.menu.on('show hide', function (e) {\n if (e.type === 'hide' && e.control.parent() === self$$1) {\n self$$1.classes.remove('opened-under');\n }\n if (e.control === self$$1.menu) {\n self$$1.activeMenu(e.type === 'show');\n self$$1.classes.toggle('opened', e.type === 'show');\n }\n self$$1.aria('expanded', e.type === 'show');\n }).fire('show');\n }\n self$$1.menu.show();\n self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });\n self$$1.menu.repaint();\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n 'br-tr',\n 'tr-br'\n ] : [\n 'bl-tl',\n 'tl-bl'\n ]);\n var menuLayoutRect = self$$1.menu.layoutRect();\n var selfBottom = self$$1.$el.offset().top + self$$1.layoutRect().h;\n if (selfBottom > menuLayoutRect.y && selfBottom < menuLayoutRect.y + menuLayoutRect.h) {\n self$$1.classes.add('opened-under');\n }\n self$$1.fire('showmenu');\n },\n hideMenu: function () {\n var self$$1 = this;\n if (self$$1.menu) {\n self$$1.menu.items().each(function (item) {\n if (item.hideMenu) {\n item.hideMenu();\n }\n });\n self$$1.menu.hide();\n }\n },\n activeMenu: function (state) {\n this.classes.toggle('active', state);\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n var icon = self$$1.settings.icon, image;\n var text = self$$1.state.get('text');\n var textHtml = '';\n image = self$$1.settings.image;\n if (image) {\n icon = 'none';\n if (typeof image !== 'string') {\n image = window.getSelection ? image[0] : image[1];\n }\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n } else {\n image = '';\n }\n if (text) {\n self$$1.classes.add('btn-has-text');\n textHtml = '' + self$$1.encode(text) + '';\n }\n icon = self$$1.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n self$$1.aria('role', self$$1.parent() instanceof MenuBar ? 'menuitem' : 'button');\n return '
    ' + '' + '
    ';\n },\n postRender: function () {\n var self$$1 = this;\n self$$1.on('click', function (e) {\n if (e.control === self$$1 && isChildOf$1(e.target, self$$1.getEl())) {\n self$$1.focus();\n self$$1.showMenu(!e.aria);\n if (e.aria) {\n self$$1.menu.items().filter(':visible')[0].focus();\n }\n }\n });\n self$$1.on('mouseenter', function (e) {\n var overCtrl = e.control;\n var parent$$1 = self$$1.parent();\n var hasVisibleSiblingMenu;\n if (overCtrl && parent$$1 && overCtrl instanceof MenuButton && overCtrl.parent() === parent$$1) {\n parent$$1.items().filter('MenuButton').each(function (ctrl) {\n if (ctrl.hideMenu && ctrl !== overCtrl) {\n if (ctrl.menu && ctrl.menu.visible()) {\n hasVisibleSiblingMenu = true;\n }\n ctrl.hideMenu();\n }\n });\n if (hasVisibleSiblingMenu) {\n overCtrl.focus();\n overCtrl.showMenu();\n }\n }\n });\n return self$$1._super();\n },\n bindStates: function () {\n var self$$1 = this;\n self$$1.state.on('change:menu', function () {\n if (self$$1.menu) {\n self$$1.menu.remove();\n }\n self$$1.menu = null;\n });\n return self$$1._super();\n },\n remove: function () {\n this._super();\n if (this.menu) {\n this.menu.remove();\n }\n }\n });\n\n var Menu = FloatPanel.extend({\n Defaults: {\n defaultType: 'menuitem',\n border: 1,\n layout: 'stack',\n role: 'application',\n bodyRole: 'menu',\n ariaRoot: true\n },\n init: function (settings) {\n var self = this;\n settings.autohide = true;\n settings.constrainToViewport = true;\n if (typeof settings.items === 'function') {\n settings.itemsFactory = settings.items;\n settings.items = [];\n }\n if (settings.itemDefaults) {\n var items = settings.items;\n var i = items.length;\n while (i--) {\n items[i] = global$2.extend({}, settings.itemDefaults, items[i]);\n }\n }\n self._super(settings);\n self.classes.add('menu');\n if (settings.animate && global$8.ie !== 11) {\n self.classes.add('animate');\n }\n },\n repaint: function () {\n this.classes.toggle('menu-align', true);\n this._super();\n this.getEl().style.height = '';\n this.getEl('body').style.height = '';\n return this;\n },\n cancel: function () {\n var self = this;\n self.hideAll();\n self.fire('select');\n },\n load: function () {\n var self = this;\n var time, factory;\n function hideThrobber() {\n if (self.throbber) {\n self.throbber.hide();\n self.throbber = null;\n }\n }\n factory = self.settings.itemsFactory;\n if (!factory) {\n return;\n }\n if (!self.throbber) {\n self.throbber = new Throbber(self.getEl('body'), true);\n if (self.items().length === 0) {\n self.throbber.show();\n self.fire('loading');\n } else {\n self.throbber.show(100, function () {\n self.items().remove();\n self.fire('loading');\n });\n }\n self.on('hide close', hideThrobber);\n }\n self.requestTime = time = new Date().getTime();\n self.settings.itemsFactory(function (items) {\n if (items.length === 0) {\n self.hide();\n return;\n }\n if (self.requestTime !== time) {\n return;\n }\n self.getEl().style.width = '';\n self.getEl('body').style.width = '';\n hideThrobber();\n self.items().remove();\n self.getEl('body').innerHTML = '';\n self.add(items);\n self.renderNew();\n self.fire('loaded');\n });\n },\n hideAll: function () {\n var self = this;\n this.find('menuitem').exec('hideMenu');\n return self._super();\n },\n preRender: function () {\n var self = this;\n self.items().each(function (ctrl) {\n var settings = ctrl.settings;\n if (settings.icon || settings.image || settings.selectable) {\n self._hasIcons = true;\n return false;\n }\n });\n if (self.settings.itemsFactory) {\n self.on('postrender', function () {\n if (self.settings.itemsFactory) {\n self.load();\n }\n });\n }\n self.on('show hide', function (e) {\n if (e.control === self) {\n if (e.type === 'show') {\n global$7.setTimeout(function () {\n self.classes.add('in');\n }, 0);\n } else {\n self.classes.remove('in');\n }\n }\n });\n return self._super();\n }\n });\n\n var ListBox = MenuButton.extend({\n init: function (settings) {\n var self = this;\n var values, selected, selectedText, lastItemCtrl;\n function setSelected(menuValues) {\n for (var i = 0; i < menuValues.length; i++) {\n selected = menuValues[i].selected || settings.value === menuValues[i].value;\n if (selected) {\n selectedText = selectedText || menuValues[i].text;\n self.state.set('value', menuValues[i].value);\n return true;\n }\n if (menuValues[i].menu) {\n if (setSelected(menuValues[i].menu)) {\n return true;\n }\n }\n }\n }\n self._super(settings);\n settings = self.settings;\n self._values = values = settings.values;\n if (values) {\n if (typeof settings.value !== 'undefined') {\n setSelected(values);\n }\n if (!selected && values.length > 0) {\n selectedText = values[0].text;\n self.state.set('value', values[0].value);\n }\n self.state.set('menu', values);\n }\n self.state.set('text', settings.text || selectedText);\n self.classes.add('listbox');\n self.on('select', function (e) {\n var ctrl = e.control;\n if (lastItemCtrl) {\n e.lastControl = lastItemCtrl;\n }\n if (settings.multiple) {\n ctrl.active(!ctrl.active());\n } else {\n self.value(e.control.value());\n }\n lastItemCtrl = ctrl;\n });\n },\n value: function (value) {\n if (arguments.length === 0) {\n return this.state.get('value');\n }\n if (typeof value === 'undefined') {\n return this;\n }\n function valueExists(values) {\n return exists(values, function (a) {\n return a.menu ? valueExists(a.menu) : a.value === value;\n });\n }\n if (this.settings.values) {\n if (valueExists(this.settings.values)) {\n this.state.set('value', value);\n } else if (value === null) {\n this.state.set('value', null);\n }\n } else {\n this.state.set('value', value);\n }\n return this;\n },\n bindStates: function () {\n var self = this;\n function activateMenuItemsByValue(menu, value) {\n if (menu instanceof Menu) {\n menu.items().each(function (ctrl) {\n if (!ctrl.hasMenus()) {\n ctrl.active(ctrl.value() === value);\n }\n });\n }\n }\n function getSelectedItem(menuValues, value) {\n var selectedItem;\n if (!menuValues) {\n return;\n }\n for (var i = 0; i < menuValues.length; i++) {\n if (menuValues[i].value === value) {\n return menuValues[i];\n }\n if (menuValues[i].menu) {\n selectedItem = getSelectedItem(menuValues[i].menu, value);\n if (selectedItem) {\n return selectedItem;\n }\n }\n }\n }\n self.on('show', function (e) {\n activateMenuItemsByValue(e.control, self.value());\n });\n self.state.on('change:value', function (e) {\n var selectedItem = getSelectedItem(self.state.get('menu'), e.value);\n if (selectedItem) {\n self.text(selectedItem.text);\n } else {\n self.text(self.settings.text);\n }\n });\n return self._super();\n }\n });\n\n var toggleTextStyle = function (ctrl, state) {\n var textStyle = ctrl._textStyle;\n if (textStyle) {\n var textElm = ctrl.getEl('text');\n textElm.setAttribute('style', textStyle);\n if (state) {\n textElm.style.color = '';\n textElm.style.backgroundColor = '';\n }\n }\n };\n var MenuItem = Widget.extend({\n Defaults: {\n border: 0,\n role: 'menuitem'\n },\n init: function (settings) {\n var self = this;\n var text;\n self._super(settings);\n settings = self.settings;\n self.classes.add('menu-item');\n if (settings.menu) {\n self.classes.add('menu-item-expand');\n }\n if (settings.preview) {\n self.classes.add('menu-item-preview');\n }\n text = self.state.get('text');\n if (text === '-' || text === '|') {\n self.classes.add('menu-item-sep');\n self.aria('role', 'separator');\n self.state.set('text', '-');\n }\n if (settings.selectable) {\n self.aria('role', 'menuitemcheckbox');\n self.classes.add('menu-item-checkbox');\n settings.icon = 'selected';\n }\n if (!settings.preview && !settings.selectable) {\n self.classes.add('menu-item-normal');\n }\n self.on('mousedown', function (e) {\n e.preventDefault();\n });\n if (settings.menu && !settings.ariaHideMenu) {\n self.aria('haspopup', true);\n }\n },\n hasMenus: function () {\n return !!this.settings.menu;\n },\n showMenu: function () {\n var self = this;\n var settings = self.settings;\n var menu;\n var parent = self.parent();\n parent.items().each(function (ctrl) {\n if (ctrl !== self) {\n ctrl.hideMenu();\n }\n });\n if (settings.menu) {\n menu = self.menu;\n if (!menu) {\n menu = settings.menu;\n if (menu.length) {\n menu = {\n type: 'menu',\n items: menu\n };\n } else {\n menu.type = menu.type || 'menu';\n }\n if (parent.settings.itemDefaults) {\n menu.itemDefaults = parent.settings.itemDefaults;\n }\n menu = self.menu = global$4.create(menu).parent(self).renderTo();\n menu.reflow();\n menu.on('cancel', function (e) {\n e.stopPropagation();\n self.focus();\n menu.hide();\n });\n menu.on('show hide', function (e) {\n if (e.control.items) {\n e.control.items().each(function (ctrl) {\n ctrl.active(ctrl.settings.selected);\n });\n }\n }).fire('show');\n menu.on('hide', function (e) {\n if (e.control === menu) {\n self.classes.remove('selected');\n }\n });\n menu.submenu = true;\n } else {\n menu.show();\n }\n menu._parentMenu = parent;\n menu.classes.add('menu-sub');\n var rel = menu.testMoveRel(self.getEl(), self.isRtl() ? [\n 'tl-tr',\n 'bl-br',\n 'tr-tl',\n 'br-bl'\n ] : [\n 'tr-tl',\n 'br-bl',\n 'tl-tr',\n 'bl-br'\n ]);\n menu.moveRel(self.getEl(), rel);\n menu.rel = rel;\n rel = 'menu-sub-' + rel;\n menu.classes.remove(menu._lastRel).add(rel);\n menu._lastRel = rel;\n self.classes.add('selected');\n self.aria('expanded', true);\n }\n },\n hideMenu: function () {\n var self = this;\n if (self.menu) {\n self.menu.items().each(function (item) {\n if (item.hideMenu) {\n item.hideMenu();\n }\n });\n self.menu.hide();\n self.aria('expanded', false);\n }\n return self;\n },\n renderHtml: function () {\n var self = this;\n var id = self._id;\n var settings = self.settings;\n var prefix = self.classPrefix;\n var text = self.state.get('text');\n var icon = self.settings.icon, image = '', shortcut = settings.shortcut;\n var url = self.encode(settings.url), iconHtml = '';\n function convertShortcut(shortcut) {\n var i, value, replace = {};\n if (global$8.mac) {\n replace = {\n alt: '⌥',\n ctrl: '⌘',\n shift: '⇧',\n meta: '⌘'\n };\n } else {\n replace = { meta: 'Ctrl' };\n }\n shortcut = shortcut.split('+');\n for (i = 0; i < shortcut.length; i++) {\n value = replace[shortcut[i].toLowerCase()];\n if (value) {\n shortcut[i] = value;\n }\n }\n return shortcut.join('+');\n }\n function escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n function markMatches(text) {\n var match = settings.match || '';\n return match ? text.replace(new RegExp(escapeRegExp(match), 'gi'), function (match) {\n return '!mce~match[' + match + ']mce~match!';\n }) : text;\n }\n function boldMatches(text) {\n return text.replace(new RegExp(escapeRegExp('!mce~match['), 'g'), '').replace(new RegExp(escapeRegExp(']mce~match!'), 'g'), '');\n }\n if (icon) {\n self.parent().classes.add('menu-has-icons');\n }\n if (settings.image) {\n image = ' style=\"background-image: url(\\'' + settings.image + '\\')\"';\n }\n if (shortcut) {\n shortcut = convertShortcut(shortcut);\n }\n icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');\n iconHtml = text !== '-' ? '\\xA0' : '';\n text = boldMatches(self.encode(markMatches(text)));\n url = boldMatches(self.encode(markMatches(url)));\n return '
    ' + iconHtml + (text !== '-' ? '' + text + '' : '') + (shortcut ? '
    ' + shortcut + '
    ' : '') + (settings.menu ? '
    ' : '') + (url ? '
    ' + url + '
    ' : '') + '
    ';\n },\n postRender: function () {\n var self = this, settings = self.settings;\n var textStyle = settings.textStyle;\n if (typeof textStyle === 'function') {\n textStyle = textStyle.call(this);\n }\n if (textStyle) {\n var textElm = self.getEl('text');\n if (textElm) {\n textElm.setAttribute('style', textStyle);\n self._textStyle = textStyle;\n }\n }\n self.on('mouseenter click', function (e) {\n if (e.control === self) {\n if (!settings.menu && e.type === 'click') {\n self.fire('select');\n global$7.requestAnimationFrame(function () {\n self.parent().hideAll();\n });\n } else {\n self.showMenu();\n if (e.aria) {\n self.menu.focus(true);\n }\n }\n }\n });\n self._super();\n return self;\n },\n hover: function () {\n var self = this;\n self.parent().items().each(function (ctrl) {\n ctrl.classes.remove('selected');\n });\n self.classes.toggle('selected', true);\n return self;\n },\n active: function (state) {\n toggleTextStyle(this, state);\n if (typeof state !== 'undefined') {\n this.aria('checked', state);\n }\n return this._super(state);\n },\n remove: function () {\n this._super();\n if (this.menu) {\n this.menu.remove();\n }\n }\n });\n\n var Radio = Checkbox.extend({\n Defaults: {\n classes: 'radio',\n role: 'radio'\n }\n });\n\n var ResizeHandle = Widget.extend({\n renderHtml: function () {\n var self = this, prefix = self.classPrefix;\n self.classes.add('resizehandle');\n if (self.settings.direction === 'both') {\n self.classes.add('resizehandle-both');\n }\n self.canFocus = false;\n return '
    ' + '' + '
    ';\n },\n postRender: function () {\n var self = this;\n self._super();\n self.resizeDragHelper = new DragHelper(this._id, {\n start: function () {\n self.fire('ResizeStart');\n },\n drag: function (e) {\n if (self.settings.direction !== 'both') {\n e.deltaX = 0;\n }\n self.fire('Resize', e);\n },\n stop: function () {\n self.fire('ResizeEnd');\n }\n });\n },\n remove: function () {\n if (this.resizeDragHelper) {\n this.resizeDragHelper.destroy();\n }\n return this._super();\n }\n });\n\n function createOptions(options) {\n var strOptions = '';\n if (options) {\n for (var i = 0; i < options.length; i++) {\n strOptions += '';\n }\n }\n return strOptions;\n }\n var SelectBox = Widget.extend({\n Defaults: {\n classes: 'selectbox',\n role: 'selectbox',\n options: []\n },\n init: function (settings) {\n var self = this;\n self._super(settings);\n if (self.settings.size) {\n self.size = self.settings.size;\n }\n if (self.settings.options) {\n self._options = self.settings.options;\n }\n self.on('keydown', function (e) {\n var rootControl;\n if (e.keyCode === 13) {\n e.preventDefault();\n self.parents().reverse().each(function (ctrl) {\n if (ctrl.toJSON) {\n rootControl = ctrl;\n return false;\n }\n });\n self.fire('submit', { data: rootControl.toJSON() });\n }\n });\n },\n options: function (state) {\n if (!arguments.length) {\n return this.state.get('options');\n }\n this.state.set('options', state);\n return this;\n },\n renderHtml: function () {\n var self = this;\n var options, size = '';\n options = createOptions(self._options);\n if (self.size) {\n size = ' size = \"' + self.size + '\"';\n }\n return '';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:options', function (e) {\n self.getEl().innerHTML = createOptions(e.value);\n });\n return self._super();\n }\n });\n\n function constrain(value, minVal, maxVal) {\n if (value < minVal) {\n value = minVal;\n }\n if (value > maxVal) {\n value = maxVal;\n }\n return value;\n }\n function setAriaProp(el, name, value) {\n el.setAttribute('aria-' + name, value);\n }\n function updateSliderHandle(ctrl, value) {\n var maxHandlePos, shortSizeName, sizeName, stylePosName, styleValue, handleEl;\n if (ctrl.settings.orientation === 'v') {\n stylePosName = 'top';\n sizeName = 'height';\n shortSizeName = 'h';\n } else {\n stylePosName = 'left';\n sizeName = 'width';\n shortSizeName = 'w';\n }\n handleEl = ctrl.getEl('handle');\n maxHandlePos = (ctrl.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];\n styleValue = maxHandlePos * ((value - ctrl._minValue) / (ctrl._maxValue - ctrl._minValue)) + 'px';\n handleEl.style[stylePosName] = styleValue;\n handleEl.style.height = ctrl.layoutRect().h + 'px';\n setAriaProp(handleEl, 'valuenow', value);\n setAriaProp(handleEl, 'valuetext', '' + ctrl.settings.previewFilter(value));\n setAriaProp(handleEl, 'valuemin', ctrl._minValue);\n setAriaProp(handleEl, 'valuemax', ctrl._maxValue);\n }\n var Slider = Widget.extend({\n init: function (settings) {\n var self = this;\n if (!settings.previewFilter) {\n settings.previewFilter = function (value) {\n return Math.round(value * 100) / 100;\n };\n }\n self._super(settings);\n self.classes.add('slider');\n if (settings.orientation === 'v') {\n self.classes.add('vertical');\n }\n self._minValue = isNumber(settings.minValue) ? settings.minValue : 0;\n self._maxValue = isNumber(settings.maxValue) ? settings.maxValue : 100;\n self._initValue = self.state.get('value');\n },\n renderHtml: function () {\n var self = this, id = self._id, prefix = self.classPrefix;\n return '
    ' + '
    ' + '
    ';\n },\n reset: function () {\n this.value(this._initValue).repaint();\n },\n postRender: function () {\n var self = this;\n var minValue, maxValue, screenCordName, stylePosName, sizeName, shortSizeName;\n function toFraction(min, max, val) {\n return (val + min) / (max - min);\n }\n function fromFraction(min, max, val) {\n return val * (max - min) - min;\n }\n function handleKeyboard(minValue, maxValue) {\n function alter(delta) {\n var value;\n value = self.value();\n value = fromFraction(minValue, maxValue, toFraction(minValue, maxValue, value) + delta * 0.05);\n value = constrain(value, minValue, maxValue);\n self.value(value);\n self.fire('dragstart', { value: value });\n self.fire('drag', { value: value });\n self.fire('dragend', { value: value });\n }\n self.on('keydown', function (e) {\n switch (e.keyCode) {\n case 37:\n case 38:\n alter(-1);\n break;\n case 39:\n case 40:\n alter(1);\n break;\n }\n });\n }\n function handleDrag(minValue, maxValue, handleEl) {\n var startPos, startHandlePos, maxHandlePos, handlePos, value;\n self._dragHelper = new DragHelper(self._id, {\n handle: self._id + '-handle',\n start: function (e) {\n startPos = e[screenCordName];\n startHandlePos = parseInt(self.getEl('handle').style[stylePosName], 10);\n maxHandlePos = (self.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];\n self.fire('dragstart', { value: value });\n },\n drag: function (e) {\n var delta = e[screenCordName] - startPos;\n handlePos = constrain(startHandlePos + delta, 0, maxHandlePos);\n handleEl.style[stylePosName] = handlePos + 'px';\n value = minValue + handlePos / maxHandlePos * (maxValue - minValue);\n self.value(value);\n self.tooltip().text('' + self.settings.previewFilter(value)).show().moveRel(handleEl, 'bc tc');\n self.fire('drag', { value: value });\n },\n stop: function () {\n self.tooltip().hide();\n self.fire('dragend', { value: value });\n }\n });\n }\n minValue = self._minValue;\n maxValue = self._maxValue;\n if (self.settings.orientation === 'v') {\n screenCordName = 'screenY';\n stylePosName = 'top';\n sizeName = 'height';\n shortSizeName = 'h';\n } else {\n screenCordName = 'screenX';\n stylePosName = 'left';\n sizeName = 'width';\n shortSizeName = 'w';\n }\n self._super();\n handleKeyboard(minValue, maxValue);\n handleDrag(minValue, maxValue, self.getEl('handle'));\n },\n repaint: function () {\n this._super();\n updateSliderHandle(this, this.value());\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:value', function (e) {\n updateSliderHandle(self, e.value);\n });\n return self._super();\n }\n });\n\n var Spacer = Widget.extend({\n renderHtml: function () {\n var self = this;\n self.classes.add('spacer');\n self.canFocus = false;\n return '
    ';\n }\n });\n\n var SplitButton = MenuButton.extend({\n Defaults: {\n classes: 'widget btn splitbtn',\n role: 'button'\n },\n repaint: function () {\n var self$$1 = this;\n var elm = self$$1.getEl();\n var rect = self$$1.layoutRect();\n var mainButtonElm, menuButtonElm;\n self$$1._super();\n mainButtonElm = elm.firstChild;\n menuButtonElm = elm.lastChild;\n global$9(mainButtonElm).css({\n width: rect.w - funcs.getSize(menuButtonElm).width,\n height: rect.h - 2\n });\n global$9(menuButtonElm).css({ height: rect.h - 2 });\n return self$$1;\n },\n activeMenu: function (state) {\n var self$$1 = this;\n global$9(self$$1.getEl().lastChild).toggleClass(self$$1.classPrefix + 'active', state);\n },\n renderHtml: function () {\n var self$$1 = this;\n var id = self$$1._id;\n var prefix = self$$1.classPrefix;\n var image;\n var icon = self$$1.state.get('icon');\n var text = self$$1.state.get('text');\n var settings = self$$1.settings;\n var textHtml = '', ariaPressed;\n image = settings.image;\n if (image) {\n icon = 'none';\n if (typeof image !== 'string') {\n image = window.getSelection ? image[0] : image[1];\n }\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n } else {\n image = '';\n }\n icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n if (text) {\n self$$1.classes.add('btn-has-text');\n textHtml = '' + self$$1.encode(text) + '';\n }\n ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed=\"' + settings.active + '\"' : '';\n return '
    ' + '' + '' + '
    ';\n },\n postRender: function () {\n var self$$1 = this, onClickHandler = self$$1.settings.onclick;\n self$$1.on('click', function (e) {\n var node = e.target;\n if (e.control === this) {\n while (node) {\n if (e.aria && e.aria.key !== 'down' || node.nodeName === 'BUTTON' && node.className.indexOf('open') === -1) {\n e.stopImmediatePropagation();\n if (onClickHandler) {\n onClickHandler.call(this, e);\n }\n return;\n }\n node = node.parentNode;\n }\n }\n });\n delete self$$1.settings.onclick;\n return self$$1._super();\n }\n });\n\n var StackLayout = FlowLayout.extend({\n Defaults: {\n containerClass: 'stack-layout',\n controlClass: 'stack-layout-item',\n endClass: 'break'\n },\n isNative: function () {\n return true;\n }\n });\n\n var TabPanel = Panel.extend({\n Defaults: {\n layout: 'absolute',\n defaults: { type: 'panel' }\n },\n activateTab: function (idx) {\n var activeTabElm;\n if (this.activeTabId) {\n activeTabElm = this.getEl(this.activeTabId);\n global$9(activeTabElm).removeClass(this.classPrefix + 'active');\n activeTabElm.setAttribute('aria-selected', 'false');\n }\n this.activeTabId = 't' + idx;\n activeTabElm = this.getEl('t' + idx);\n activeTabElm.setAttribute('aria-selected', 'true');\n global$9(activeTabElm).addClass(this.classPrefix + 'active');\n this.items()[idx].show().fire('showtab');\n this.reflow();\n this.items().each(function (item, i) {\n if (idx !== i) {\n item.hide();\n }\n });\n },\n renderHtml: function () {\n var self = this;\n var layout = self._layout;\n var tabsHtml = '';\n var prefix = self.classPrefix;\n self.preRender();\n layout.preRender(self);\n self.items().each(function (ctrl, i) {\n var id = self._id + '-t' + i;\n ctrl.aria('role', 'tabpanel');\n ctrl.aria('labelledby', id);\n tabsHtml += '
    ' + self.encode(ctrl.settings.title) + '
    ';\n });\n return '
    ' + '
    ' + tabsHtml + '
    ' + '
    ' + layout.renderHtml(self) + '
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n self._super();\n self.settings.activeTab = self.settings.activeTab || 0;\n self.activateTab(self.settings.activeTab);\n this.on('click', function (e) {\n var targetParent = e.target.parentNode;\n if (targetParent && targetParent.id === self._id + '-head') {\n var i = targetParent.childNodes.length;\n while (i--) {\n if (targetParent.childNodes[i] === e.target) {\n self.activateTab(i);\n }\n }\n }\n });\n },\n initLayoutRect: function () {\n var self = this;\n var rect, minW, minH;\n minW = funcs.getSize(self.getEl('head')).width;\n minW = minW < 0 ? 0 : minW;\n minH = 0;\n self.items().each(function (item) {\n minW = Math.max(minW, item.layoutRect().minW);\n minH = Math.max(minH, item.layoutRect().minH);\n });\n self.items().each(function (ctrl) {\n ctrl.settings.x = 0;\n ctrl.settings.y = 0;\n ctrl.settings.w = minW;\n ctrl.settings.h = minH;\n ctrl.layoutRect({\n x: 0,\n y: 0,\n w: minW,\n h: minH\n });\n });\n var headH = funcs.getSize(self.getEl('head')).height;\n self.settings.minWidth = minW;\n self.settings.minHeight = minH + headH;\n rect = self._super();\n rect.deltaH += headH;\n rect.innerH = rect.h - rect.deltaH;\n return rect;\n }\n });\n\n var TextBox = Widget.extend({\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n self$$1.classes.add('textbox');\n if (settings.multiline) {\n self$$1.classes.add('multiline');\n } else {\n self$$1.on('keydown', function (e) {\n var rootControl;\n if (e.keyCode === 13) {\n e.preventDefault();\n self$$1.parents().reverse().each(function (ctrl) {\n if (ctrl.toJSON) {\n rootControl = ctrl;\n return false;\n }\n });\n self$$1.fire('submit', { data: rootControl.toJSON() });\n }\n });\n self$$1.on('keyup', function (e) {\n self$$1.state.set('value', e.target.value);\n });\n }\n },\n repaint: function () {\n var self$$1 = this;\n var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;\n style = self$$1.getEl().style;\n rect = self$$1._layoutRect;\n lastRepaintRect = self$$1._lastRepaintRect || {};\n var doc = document;\n if (!self$$1.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {\n style.lineHeight = rect.h - borderH + 'px';\n }\n borderBox = self$$1.borderBox;\n borderW = borderBox.left + borderBox.right + 8;\n borderH = borderBox.top + borderBox.bottom + (self$$1.settings.multiline ? 8 : 0);\n if (rect.x !== lastRepaintRect.x) {\n style.left = rect.x + 'px';\n lastRepaintRect.x = rect.x;\n }\n if (rect.y !== lastRepaintRect.y) {\n style.top = rect.y + 'px';\n lastRepaintRect.y = rect.y;\n }\n if (rect.w !== lastRepaintRect.w) {\n style.width = rect.w - borderW + 'px';\n lastRepaintRect.w = rect.w;\n }\n if (rect.h !== lastRepaintRect.h) {\n style.height = rect.h - borderH + 'px';\n lastRepaintRect.h = rect.h;\n }\n self$$1._lastRepaintRect = lastRepaintRect;\n self$$1.fire('repaint', {}, false);\n return self$$1;\n },\n renderHtml: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var attrs, elm;\n attrs = {\n id: self$$1._id,\n hidefocus: '1'\n };\n global$2.each([\n 'rows',\n 'spellcheck',\n 'maxLength',\n 'size',\n 'readonly',\n 'min',\n 'max',\n 'step',\n 'list',\n 'pattern',\n 'placeholder',\n 'required',\n 'multiple'\n ], function (name$$1) {\n attrs[name$$1] = settings[name$$1];\n });\n if (self$$1.disabled()) {\n attrs.disabled = 'disabled';\n }\n if (settings.subtype) {\n attrs.type = settings.subtype;\n }\n elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);\n elm.value = self$$1.state.get('value');\n elm.className = self$$1.classes.toString();\n return elm.outerHTML;\n },\n value: function (value) {\n if (arguments.length) {\n this.state.set('value', value);\n return this;\n }\n if (this.state.get('rendered')) {\n this.state.set('value', this.getEl().value);\n }\n return this.state.get('value');\n },\n postRender: function () {\n var self$$1 = this;\n self$$1.getEl().value = self$$1.state.get('value');\n self$$1._super();\n self$$1.$el.on('change', function (e) {\n self$$1.state.set('value', e.target.value);\n self$$1.fire('change', e);\n });\n },\n bindStates: function () {\n var self$$1 = this;\n self$$1.state.on('change:value', function (e) {\n if (self$$1.getEl().value !== e.value) {\n self$$1.getEl().value = e.value;\n }\n });\n self$$1.state.on('change:disabled', function (e) {\n self$$1.getEl().disabled = e.value;\n });\n return self$$1._super();\n },\n remove: function () {\n this.$el.off();\n this._super();\n }\n });\n\n var getApi = function () {\n return {\n Selector: Selector,\n Collection: Collection$2,\n ReflowQueue: ReflowQueue,\n Control: Control$1,\n Factory: global$4,\n KeyboardNavigation: KeyboardNavigation,\n Container: Container,\n DragHelper: DragHelper,\n Scrollable: Scrollable,\n Panel: Panel,\n Movable: Movable,\n Resizable: Resizable,\n FloatPanel: FloatPanel,\n Window: Window$$1,\n MessageBox: MessageBox,\n Tooltip: Tooltip,\n Widget: Widget,\n Progress: Progress,\n Notification: Notification,\n Layout: Layout,\n AbsoluteLayout: AbsoluteLayout,\n Button: Button,\n ButtonGroup: ButtonGroup,\n Checkbox: Checkbox,\n ComboBox: ComboBox,\n ColorBox: ColorBox,\n PanelButton: PanelButton,\n ColorButton: ColorButton,\n ColorPicker: ColorPicker,\n Path: Path,\n ElementPath: ElementPath,\n FormItem: FormItem,\n Form: Form,\n FieldSet: FieldSet,\n FilePicker: FilePicker,\n FitLayout: FitLayout,\n FlexLayout: FlexLayout,\n FlowLayout: FlowLayout,\n FormatControls: FormatControls,\n GridLayout: GridLayout,\n Iframe: Iframe$1,\n InfoBox: InfoBox,\n Label: Label,\n Toolbar: Toolbar$1,\n MenuBar: MenuBar,\n MenuButton: MenuButton,\n MenuItem: MenuItem,\n Throbber: Throbber,\n Menu: Menu,\n ListBox: ListBox,\n Radio: Radio,\n ResizeHandle: ResizeHandle,\n SelectBox: SelectBox,\n Slider: Slider,\n Spacer: Spacer,\n SplitButton: SplitButton,\n StackLayout: StackLayout,\n TabPanel: TabPanel,\n TextBox: TextBox,\n DropZone: DropZone,\n BrowseButton: BrowseButton\n };\n };\n var appendTo = function (target) {\n if (target.ui) {\n global$2.each(getApi(), function (ref, key) {\n target.ui[key] = ref;\n });\n } else {\n target.ui = getApi();\n }\n };\n var registerToFactory = function () {\n global$2.each(getApi(), function (ref, key) {\n global$4.add(key, ref);\n });\n };\n var Api = {\n appendTo: appendTo,\n registerToFactory: registerToFactory\n };\n\n Api.registerToFactory();\n Api.appendTo(window.tinymce ? window.tinymce : {});\n global.add('modern', function (editor) {\n FormatControls.setup(editor);\n return ThemeApi.get(editor);\n });\n function Theme () {\n }\n\n return Theme;\n\n}());\n})();\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"CheckboxFacade\", {\n enumerable: true,\n get: function get() {\n return _CheckboxFacade.default;\n }\n});\nObject.defineProperty(exports, \"ToggleFacade\", {\n enumerable: true,\n get: function get() {\n return _ToggleFacade.default;\n }\n});\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _console = require(\"@instructure/console\");\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _keycode = _interopRequireDefault(require(\"keycode\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _uiPropTypes = require(\"@instructure/ui-prop-types\");\n\nvar _FormPropTypes = _interopRequireDefault(require(\"@instructure/ui-form-field/lib/utils/FormPropTypes\"));\n\nvar _createChainedFunction = _interopRequireDefault(require(\"@instructure/ui-utils/lib/createChainedFunction\"));\n\nvar _uid = _interopRequireDefault(require(\"@instructure/uid\"));\n\nvar _isActiveElement = _interopRequireDefault(require(\"@instructure/ui-utils/lib/dom/isActiveElement\"));\n\nvar _uiThemeable = _interopRequireDefault(require(\"@instructure/ui-themeable\"));\n\nvar _FormFieldMessages = _interopRequireDefault(require(\"@instructure/ui-form-field/lib/components/FormFieldMessages\"));\n\nvar _passthroughProps = require(\"@instructure/ui-utils/lib/react/passthroughProps\");\n\nvar _uiTestable = _interopRequireDefault(require(\"@instructure/ui-testable\"));\n\nvar _CheckboxFacade = _interopRequireDefault(require(\"./CheckboxFacade\"));\n\nvar _ToggleFacade = _interopRequireDefault(require(\"./ToggleFacade\"));\n\nvar _theme = _interopRequireDefault(require(\"./theme\"));\n\nvar _dec, _dec2, _class, _class2, _temp;\n\nvar styles = {\n componentId: 'epRMX',\n template: function template(theme) {\n return \"\\n\\n.epRMX_bGBk{position:relative;width:100%}\\n\\n.epRMX_bOnW{all:initial;animation:none 0s ease 0s 1 normal none running;backface-visibility:visible;background:transparent none repeat 0 0/auto auto padding-box border-box scroll;border:medium none currentColor;border-collapse:separate;border-image:none;border-radius:0;border-spacing:0;bottom:auto;box-shadow:none;box-sizing:content-box;caption-side:top;clear:none;clip:auto;color:#000;column-count:auto;column-fill:balance;column-gap:normal;column-rule:medium none currentColor;column-span:1;column-width:auto;columns:auto;content:normal;counter-increment:none;counter-reset:none;cursor:auto;direction:ltr;direction:inherit;display:inline;display:block;empty-cells:show;float:none;font-family:serif;font-size:medium;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;height:auto;hyphens:none;left:auto;letter-spacing:normal;line-height:normal;list-style:disc outside none;margin:0;max-height:none;max-width:none;min-height:0;min-width:0;opacity:1;orphans:2;outline:medium none invert;overflow:visible;overflow-x:visible;overflow-y:visible;padding:0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;perspective:none;perspective-origin:50% 50%;position:static;right:auto;tab-size:8;table-layout:auto;text-align:left;text-align:start;text-align-last:auto;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;top:auto;transform:none;transform-origin:50% 50% 0;transform-style:flat;transition:none 0s ease 0s;unicode-bidi:normal;vertical-align:baseline;visibility:visible;white-space:normal;widows:2;width:auto;word-spacing:normal;z-index:auto}\\n\\n[dir=ltr] .epRMX_bOnW{text-align:left}\\n\\n[dir=rtl] .epRMX_bOnW{text-align:right}\\n\\n.epRMX_cwos{font-size:inherit;inset-inline-end:auto;inset-inline-start:0;line-height:inherit;margin:0;opacity:0.0001;padding:0;position:absolute;top:0;width:auto}\\n\\n[dir=ltr] .epRMX_cwos{left:0;right:auto}\\n\\n[dir=rtl] .epRMX_cwos{left:auto;right:0}\\n\\n.epRMX_ywdX{cursor:not-allowed;opacity:0.5;pointer-events:none}\\n\\n.epRMX_eXrk{display:inline-block;vertical-align:middle;width:auto}\";\n },\n 'root': 'epRMX_bGBk',\n 'control': 'epRMX_bOnW',\n 'input': 'epRMX_cwos',\n 'disabled': 'epRMX_ywdX',\n 'inline': 'epRMX_eXrk'\n};\n\n/**\n---\ncategory: components\n---\n**/\nvar Checkbox = (_dec = (0, _uiTestable.default)(), _dec2 = (0, _uiThemeable.default)(_theme.default, styles), _dec(_class = _dec2(_class = (_temp = _class2 =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(Checkbox, _Component);\n\n function Checkbox(props) {\n var _this;\n\n (0, _classCallCheck2.default)(this, Checkbox);\n _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Checkbox).call(this, props));\n\n _this.handleChange = function (e) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n disabled = _this$props.disabled,\n checked = _this$props.checked,\n readOnly = _this$props.readOnly;\n\n if (disabled || readOnly) {\n e.preventDefault();\n return;\n }\n\n if (typeof checked === 'undefined') {\n _this.setState({\n checked: !_this.state.checked\n });\n }\n\n if (typeof onChange === 'function') {\n onChange(e);\n }\n };\n\n _this.handleKeyDown = function (e) {\n if (_this.props.variant === 'toggle' && (e.keyCode === _keycode.default.codes.enter || e.keyCode === _keycode.default.codes.return)) {\n _this._input.click();\n\n e.preventDefault();\n }\n };\n\n _this.handleFocus = function (e) {\n _this.setState({\n focused: true\n });\n };\n\n _this.handleBlur = function (e) {\n _this.setState({\n focused: false\n });\n };\n\n _this.handleMouseOver = function (e) {\n _this.setState({\n hovered: true\n });\n };\n\n _this.handleMouseOut = function (e) {\n _this.setState({\n hovered: false\n });\n };\n\n _this.state = {\n focused: false,\n hovered: false\n };\n\n if (typeof props.checked === 'undefined') {\n _this.state.checked = !!props.defaultChecked;\n }\n\n _this._defaultId = (0, _uid.default)('Checkbox');\n return _this;\n }\n\n (0, _createClass2.default)(Checkbox, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // see https://github.com/facebook/react/issues/1798\n this._input.indeterminate = this.props.indeterminate;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // see https://github.com/facebook/react/issues/1798\n if (prevProps.indeterminate !== this.props.indeterminate) {\n this._input.indeterminate = this.props.indeterminate;\n }\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this._input.focus();\n }\n }, {\n key: \"renderFacade\",\n value: function renderFacade() {\n var _this$props2 = this.props,\n size = _this$props2.size,\n disabled = _this$props2.disabled,\n variant = _this$props2.variant,\n label = _this$props2.label,\n readOnly = _this$props2.readOnly,\n indeterminate = _this$props2.indeterminate;\n var _this$state = this.state,\n hovered = _this$state.hovered,\n focused = _this$state.focused;\n\n if (variant === 'toggle') {\n return _react.default.createElement(_ToggleFacade.default, {\n disabled: disabled,\n size: size,\n hovered: hovered,\n focused: focused,\n checked: this.checked,\n readOnly: readOnly\n }, label);\n } else {\n return _react.default.createElement(_CheckboxFacade.default, {\n size: size,\n hovered: hovered,\n focused: focused,\n checked: this.checked,\n indeterminate: indeterminate\n }, label);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classes,\n _this2 = this;\n\n var _this$props3 = this.props,\n inline = _this$props3.inline,\n disabled = _this$props3.disabled,\n readOnly = _this$props3.readOnly,\n messages = _this$props3.messages,\n value = _this$props3.value,\n onKeyDown = _this$props3.onKeyDown,\n onFocus = _this$props3.onFocus,\n onBlur = _this$props3.onBlur,\n onMouseOver = _this$props3.onMouseOver,\n onMouseOut = _this$props3.onMouseOut,\n indeterminate = _this$props3.indeterminate,\n variant = _this$props3.variant;\n var props = (0, _passthroughProps.omitProps)(this.props, Checkbox.propTypes);\n var classes = (_classes = {}, (0, _defineProperty2.default)(_classes, styles.root, true), (0, _defineProperty2.default)(_classes, styles.disabled, disabled), (0, _defineProperty2.default)(_classes, styles.inline, inline), _classes);\n\n /*#__PURE__*/\n (\n /*#__PURE__*/\n 0, _console.error)(!(variant === 'toggle' && indeterminate), \"[Checkbox] The `toggle` variant does not support the `indeterminate` property. Use the `simple` variant instead.\");\n /* eslint-disable jsx-a11y/mouse-events-have-key-events */\n\n return _react.default.createElement(\"div\", {\n className: (0, _classnames.default)(classes),\n onMouseOver: (0, _createChainedFunction.default)(onMouseOver, this.handleMouseOver),\n onMouseOut: (0, _createChainedFunction.default)(onMouseOut, this.handleMouseOut)\n }, _react.default.createElement(\"input\", Object.assign({}, props, {\n id: this.id,\n value: value,\n type: \"checkbox\",\n ref: function ref(c) {\n _this2._input = c;\n },\n disabled: disabled || readOnly,\n \"aria-checked\": indeterminate ? 'mixed' : null,\n className: styles.input,\n onChange: this.handleChange,\n onKeyDown: (0, _createChainedFunction.default)(onKeyDown, this.handleKeyDown),\n onFocus: (0, _createChainedFunction.default)(onFocus, this.handleFocus),\n onBlur: (0, _createChainedFunction.default)(onBlur, this.handleBlur),\n checked: this.checked\n })), _react.default.createElement(\"label\", {\n htmlFor: this.id,\n className: styles.control\n }, this.renderFacade(), _react.default.createElement(_FormFieldMessages.default, {\n messages: messages\n })));\n /* eslint-enable jsx-a11y/mouse-events-have-key-events */\n }\n }, {\n key: \"id\",\n get: function get() {\n return this.props.id || this._defaultId;\n }\n }, {\n key: \"checked\",\n get: function get() {\n return typeof this.props.checked === 'undefined' ? this.state.checked : this.props.checked;\n }\n }, {\n key: \"focused\",\n get: function get() {\n return (0, _isActiveElement.default)(this._input);\n }\n }]);\n Checkbox.displayName = \"Checkbox\";\n return Checkbox;\n}(_react.Component), _class2.propTypes = {\n label: _propTypes.default.node.isRequired,\n id: _propTypes.default.string,\n value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n\n /**\n * object with shape: `{\n * text: PropTypes.string,\n * type: PropTypes.oneOf(['error', 'hint', 'success', 'screenreader-only'])\n * }`\n */\n messages: _propTypes.default.arrayOf(_FormPropTypes.default.message),\n\n /* whether to set the input to checked or not on initial render */\n defaultChecked: _propTypes.default.bool,\n\n /**\n * whether the input is checked or not (must be accompanied by an `onChange` prop)\n */\n checked: (0, _uiPropTypes.controllable)(_propTypes.default.bool, 'onChange', 'defaultChecked'),\n\n /**\n * when used with the `checked` prop, the component will not control its own state\n */\n onChange: _propTypes.default.func,\n onKeyDown: _propTypes.default.func,\n onFocus: _propTypes.default.func,\n onBlur: _propTypes.default.func,\n onMouseOver: _propTypes.default.func,\n onMouseOut: _propTypes.default.func,\n\n /**\n * Whether or not to disable the checkbox\n */\n disabled: _propTypes.default.bool,\n\n /**\n * Works just like disabled but keeps the same styles as if it were active\n */\n readOnly: _propTypes.default.bool,\n\n /**\n * Visual state showing that child checkboxes are a combination of checked and unchecked\n */\n indeterminate: _propTypes.default.bool,\n size: _propTypes.default.oneOf(['small', 'medium', 'large']),\n variant: _propTypes.default.oneOf(['simple', 'toggle']),\n inline: _propTypes.default.bool\n}, _class2.defaultProps = {\n size: 'medium',\n variant: 'simple',\n disabled: false,\n inline: false,\n indeterminate: false,\n readOnly: false,\n onChange: void 0,\n onKeyDown: void 0,\n onFocus: void 0,\n onBlur: void 0,\n onMouseOut: void 0,\n onMouseOver: void 0,\n checked: void 0,\n defaultChecked: void 0,\n messages: void 0,\n id: void 0,\n value: void 0\n}, _temp)) || _class) || _class);\nvar _default = Checkbox;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _uiPropTypes = require(\"@instructure/ui-prop-types\");\n\nvar _safeCloneElement = _interopRequireDefault(require(\"@instructure/ui-utils/lib/react/safeCloneElement\"));\n\nvar _capitalizeFirstLetter = _interopRequireDefault(require(\"@instructure/ui-utils/lib/capitalizeFirstLetter\"));\n\nvar _uiThemeable = _interopRequireDefault(require(\"@instructure/ui-themeable\"));\n\nvar _matchComponentTypes = _interopRequireDefault(require(\"@instructure/ui-utils/lib/react/matchComponentTypes\"));\n\nvar _passthroughProps = require(\"@instructure/ui-utils/lib/react/passthroughProps\");\n\nvar _ScreenReaderContent = _interopRequireDefault(require(\"@instructure/ui-a11y/lib/components/ScreenReaderContent\"));\n\nvar _GridCol = _interopRequireDefault(require(\"../GridCol\"));\n\nvar _theme = _interopRequireDefault(require(\"./theme\"));\n\nvar _dec, _class, _class2, _temp;\n\nvar styles = {\n componentId: 'fxIji',\n template: function template(theme) {\n return \"\\n\\n.fxIji_bGBk{box-sizing:border-box;display:block}\\n\\n.fxIji_dTOw{display:flex;flex-flow:row nowrap}\\n\\n.fxIji_dTOw.fxIji_lvrA{justify-content:center}\\n\\n.fxIji_dTOw.fxIji_bWOh{justify-content:flex-start}\\n\\n.fxIji_dTOw.fxIji_fNQE{justify-content:flex-end}\\n\\n.fxIji_dTOw.fxIji_dWwe{justify-content:space-around}\\n\\n.fxIji_dTOw.fxIji_bPaV{justify-content:space-between}\\n\\n.fxIji_dTOw.fxIji_oUBk{align-items:flex-start}\\n\\n.fxIji_dTOw.fxIji_NmrE{align-items:center}\\n\\n.fxIji_dTOw.fxIji_bwwb{align-items:flex-end}\\n\\n.fxIji_dTOw.fxIji_bBOa{margin:0 calc(-1*\".concat(theme.spacingSmall || 'inherit', \"/2)}\\n\\n.fxIji_dTOw.fxIji_yZGt{margin:0 calc(-1*\").concat(theme.spacingMedium || 'inherit', \"/2)}\\n\\n.fxIji_dTOw.fxIji_PsGC{margin:0 calc(-1*\").concat(theme.spacingLarge || 'inherit', \"/2)}\\n\\n.fxIji_dTOw.fxIji_buDT{margin-bottom:\").concat(theme.spacingSmall || 'inherit', \"}\\n\\n.fxIji_dTOw.fxIji_dlWR{margin-bottom:\").concat(theme.spacingMedium || 'inherit', \"}\\n\\n.fxIji_dTOw.fxIji_cGJD{margin-bottom:\").concat(theme.spacingLarge || 'inherit', \"}\\n\\n.fxIji_dTOw.fxIji_DpxJ,.fxIji_dTOw.fxIji_cKZZ{margin-bottom:0}\\n\\n@media screen and (--mediumMin){.fxIji_crIs{display:flex;flex-flow:row nowrap}.fxIji_crIs.fxIji_lvrA{justify-content:center}.fxIji_crIs.fxIji_bWOh{justify-content:flex-start}.fxIji_crIs.fxIji_fNQE{justify-content:flex-end}.fxIji_crIs.fxIji_dWwe{justify-content:space-around}.fxIji_crIs.fxIji_bPaV{justify-content:space-between}.fxIji_crIs.fxIji_oUBk{align-items:flex-start}.fxIji_crIs.fxIji_NmrE{align-items:center}.fxIji_crIs.fxIji_bwwb{align-items:flex-end}.fxIji_crIs.fxIji_bBOa{margin:0 calc(-1*\").concat(theme.spacingSmall || 'inherit', \"/2)}.fxIji_crIs.fxIji_yZGt{margin:0 calc(-1*\").concat(theme.spacingMedium || 'inherit', \"/2)}.fxIji_crIs.fxIji_PsGC{margin:0 calc(-1*\").concat(theme.spacingLarge || 'inherit', \"/2)}.fxIji_crIs.fxIji_buDT{margin-bottom:\").concat(theme.spacingSmall || 'inherit', \"}.fxIji_crIs.fxIji_dlWR{margin-bottom:\").concat(theme.spacingMedium || 'inherit', \"}.fxIji_crIs.fxIji_cGJD{margin-bottom:\").concat(theme.spacingLarge || 'inherit', \"}.fxIji_crIs.fxIji_DpxJ,.fxIji_crIs.fxIji_cKZZ{margin-bottom:0}}\\n\\n@media screen and (--largeMin){.fxIji_cpbQ{display:flex;flex-flow:row nowrap}.fxIji_cpbQ.fxIji_lvrA{justify-content:center}.fxIji_cpbQ.fxIji_bWOh{justify-content:flex-start}.fxIji_cpbQ.fxIji_fNQE{justify-content:flex-end}.fxIji_cpbQ.fxIji_dWwe{justify-content:space-around}.fxIji_cpbQ.fxIji_bPaV{justify-content:space-between}.fxIji_cpbQ.fxIji_oUBk{align-items:flex-start}.fxIji_cpbQ.fxIji_NmrE{align-items:center}.fxIji_cpbQ.fxIji_bwwb{align-items:flex-end}.fxIji_cpbQ.fxIji_bBOa{margin:0 calc(-1*\").concat(theme.spacingSmall || 'inherit', \"/2)}.fxIji_cpbQ.fxIji_yZGt{margin:0 calc(-1*\").concat(theme.spacingMedium || 'inherit', \"/2)}.fxIji_cpbQ.fxIji_PsGC{margin:0 calc(-1*\").concat(theme.spacingLarge || 'inherit', \"/2)}.fxIji_cpbQ.fxIji_buDT{margin-bottom:\").concat(theme.spacingSmall || 'inherit', \"}.fxIji_cpbQ.fxIji_dlWR{margin-bottom:\").concat(theme.spacingMedium || 'inherit', \"}.fxIji_cpbQ.fxIji_cGJD{margin-bottom:\").concat(theme.spacingLarge || 'inherit', \"}.fxIji_cpbQ.fxIji_DpxJ,.fxIji_cpbQ.fxIji_cKZZ{margin-bottom:0}}\\n\\n@media screen and (--xLargeMin){.fxIji_cpbQ{display:flex;flex-flow:row nowrap}.fxIji_cpbQ.fxIji_lvrA{justify-content:center}.fxIji_cpbQ.fxIji_bWOh{justify-content:flex-start}.fxIji_cpbQ.fxIji_fNQE{justify-content:flex-end}.fxIji_cpbQ.fxIji_dWwe{justify-content:space-around}.fxIji_cpbQ.fxIji_bPaV{justify-content:space-between}.fxIji_cpbQ.fxIji_oUBk{align-items:flex-start}.fxIji_cpbQ.fxIji_NmrE{align-items:center}.fxIji_cpbQ.fxIji_bwwb{align-items:flex-end}.fxIji_cpbQ.fxIji_bBOa{margin:0 calc(-1*\").concat(theme.spacingSmall || 'inherit', \"/2)}.fxIji_cpbQ.fxIji_yZGt{margin:0 calc(-1*\").concat(theme.spacingMedium || 'inherit', \"/2)}.fxIji_cpbQ.fxIji_PsGC{margin:0 calc(-1*\").concat(theme.spacingLarge || 'inherit', \"/2)}.fxIji_cpbQ.fxIji_buDT{margin-bottom:\").concat(theme.spacingSmall || 'inherit', \"}.fxIji_cpbQ.fxIji_dlWR{margin-bottom:\").concat(theme.spacingMedium || 'inherit', \"}.fxIji_cpbQ.fxIji_cGJD{margin-bottom:\").concat(theme.spacingLarge || 'inherit', \"}.fxIji_cpbQ.fxIji_DpxJ,.fxIji_cpbQ.fxIji_cKZZ{margin-bottom:0}}\\n\\n.fxIji_fFVr{outline:0.0625rem dashed #00f}\");\n },\n 'root': 'fxIji_bGBk',\n 'startAtSmall': 'fxIji_dTOw',\n 'hAlign--center': 'fxIji_lvrA',\n 'hAlign--start': 'fxIji_bWOh',\n 'hAlign--end': 'fxIji_fNQE',\n 'hAlign--space-around': 'fxIji_dWwe',\n 'hAlign--space-between': 'fxIji_bPaV',\n 'vAlign--top': 'fxIji_oUBk',\n 'vAlign--middle': 'fxIji_NmrE',\n 'vAlign--bottom': 'fxIji_bwwb',\n 'colSpacingSmall': 'fxIji_bBOa',\n 'colSpacingMedium': 'fxIji_yZGt',\n 'colSpacingLarge': 'fxIji_PsGC',\n 'rowSpacingSmall': 'fxIji_buDT',\n 'rowSpacingMedium': 'fxIji_dlWR',\n 'rowSpacingLarge': 'fxIji_cGJD',\n 'lastRow': 'fxIji_DpxJ',\n 'rowSpacingNone': 'fxIji_cKZZ',\n 'startAtMedium': 'fxIji_crIs',\n 'startAtLarge': 'fxIji_cpbQ',\n 'visualDebug': 'fxIji_fFVr'\n};\nvar GridRow = (\n/**\n---\nparent: Grid\n---\n**/\n_dec = (0, _uiThemeable.default)(_theme.default, styles), _dec(_class = (_temp = _class2 =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(GridRow, _Component);\n\n function GridRow() {\n (0, _classCallCheck2.default)(this, GridRow);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(GridRow).apply(this, arguments));\n }\n\n (0, _createClass2.default)(GridRow, [{\n key: \"startAtClass\",\n\n /* eslint-disable react/require-default-props */\n value: function startAtClass() {\n return !!this.props.startAt && \"startAt\".concat((0, _capitalizeFirstLetter.default)(this.props.startAt));\n }\n }, {\n key: \"rowSpacingClass\",\n value: function rowSpacingClass() {\n return \"rowSpacing\".concat((0, _capitalizeFirstLetter.default)(this.props.rowSpacing));\n }\n }, {\n key: \"colSpacingClass\",\n value: function colSpacingClass() {\n return \"colSpacing\".concat((0, _capitalizeFirstLetter.default)(this.props.colSpacing));\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var _this = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n props = (0, _objectWithoutProperties2.default)(_this$props, [\"children\"]);\n return _react.Children.map(children, function (child, index) {\n if ((0, _matchComponentTypes.default)(child, [_GridCol.default])) {\n return (0, _safeCloneElement.default)(child, (0, _objectSpread2.default)({}, (0, _passthroughProps.pickProps)(_this.props, GridRow.propTypes), child.props, {\n /* child props should override parent */\n isLastRow: props.isLastRow,\n isLastCol: index + 1 === _react.Children.count(children)\n }));\n } else {\n return child; // PropType validation should handle errors\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classes;\n\n var classes = (_classes = {}, (0, _defineProperty2.default)(_classes, styles.root, true), (0, _defineProperty2.default)(_classes, styles.lastRow, this.props.isLastRow), (0, _defineProperty2.default)(_classes, styles[\"hAlign--\".concat(this.props.hAlign)], true), (0, _defineProperty2.default)(_classes, styles[\"vAlign--\".concat(this.props.vAlign)], true), (0, _defineProperty2.default)(_classes, styles[this.rowSpacingClass()], true), (0, _defineProperty2.default)(_classes, styles[this.colSpacingClass()], this.props.colSpacing !== 'none'), (0, _defineProperty2.default)(_classes, styles[this.startAtClass()], !!this.props.startAt), _classes);\n var props = (0, _passthroughProps.omitProps)(this.props, GridRow.propTypes);\n return _react.default.createElement(\"span\", Object.assign({}, props, {\n className: (0, _classnames.default)(classes)\n }), this.renderChildren());\n }\n }]);\n GridRow.displayName = \"GridRow\";\n return GridRow;\n}(_react.Component), _class2.propTypes = {\n children: _uiPropTypes.Children.oneOf([_GridCol.default, _ScreenReaderContent.default]),\n rowSpacing: _propTypes.default.oneOf(['none', 'small', 'medium', 'large']),\n colSpacing: _propTypes.default.oneOf(['none', 'small', 'medium', 'large']),\n hAlign: _propTypes.default.oneOf(['start', 'center', 'end', 'space-around', 'space-between']),\n vAlign: _propTypes.default.oneOf(['top', 'middle', 'bottom']),\n startAt: _propTypes.default.oneOf(['small', 'medium', 'large', 'x-large', null]),\n visualDebug: _propTypes.default.bool,\n isLastRow: _propTypes.default.bool\n /* eslint-enable react/require-default-props */\n\n}, _class2.defaultProps = {\n children: null,\n isLastRow: false\n}, _temp)) || _class);\nexports.default = GridRow;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"GridRow\", {\n enumerable: true,\n get: function get() {\n return _GridRow.default;\n }\n});\nObject.defineProperty(exports, \"GridCol\", {\n enumerable: true,\n get: function get() {\n return _GridCol.default;\n }\n});\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _uiThemeable = _interopRequireDefault(require(\"@instructure/ui-themeable\"));\n\nvar _uiPropTypes = require(\"@instructure/ui-prop-types\");\n\nvar _capitalizeFirstLetter = _interopRequireDefault(require(\"@instructure/ui-utils/lib/capitalizeFirstLetter\"));\n\nvar _safeCloneElement = _interopRequireDefault(require(\"@instructure/ui-utils/lib/react/safeCloneElement\"));\n\nvar _matchComponentTypes = _interopRequireDefault(require(\"@instructure/ui-utils/lib/react/matchComponentTypes\"));\n\nvar _passthroughProps = require(\"@instructure/ui-utils/lib/react/passthroughProps\");\n\nvar _ScreenReaderContent = _interopRequireDefault(require(\"@instructure/ui-a11y/lib/components/ScreenReaderContent\"));\n\nvar _GridRow = _interopRequireDefault(require(\"./GridRow\"));\n\nvar _theme = _interopRequireDefault(require(\"./theme\"));\n\nvar _GridCol = _interopRequireDefault(require(\"./GridCol\"));\n\nvar _dec, _class, _class2, _temp;\n\nvar styles = {\n componentId: 'cMIPy',\n template: function template(theme) {\n return \"\\n\\n.cMIPy_bGBk{display:block}\\n\\n.cMIPy_fFVr{outline:0.0625rem dashed red}\\n\\n.cMIPy_dTOw{box-sizing:border-box}\\n\\n@media screen and (--mediumMin){.cMIPy_crIs{box-sizing:border-box}}\\n\\n@media screen and (--largeMin){.cMIPy_cpbQ{box-sizing:border-box}}\\n\\n@media screen and (--xLargeMin){.cMIPy_dsuu{box-sizing:border-box}}\";\n },\n 'root': 'cMIPy_bGBk',\n 'visualDebug': 'cMIPy_fFVr',\n 'startAtSmall': 'cMIPy_dTOw',\n 'startAtMedium': 'cMIPy_crIs',\n 'startAtLarge': 'cMIPy_cpbQ',\n 'startAtXLarge': 'cMIPy_dsuu'\n};\nvar Grid = (\n/**\n---\ncategory: components\n---\n**/\n_dec = (0, _uiThemeable.default)(_theme.default, styles), _dec(_class = (_temp = _class2 =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(Grid, _Component);\n\n function Grid() {\n (0, _classCallCheck2.default)(this, Grid);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Grid).apply(this, arguments));\n }\n\n (0, _createClass2.default)(Grid, [{\n key: \"startAtClass\",\n value: function startAtClass() {\n return !!this.props.startAt && \"startAt\".concat((0, _capitalizeFirstLetter.default)(this.props.startAt));\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var _this = this;\n\n var children = _react.Children.toArray(this.props.children);\n\n return children.map(function (child, index) {\n if ((0, _matchComponentTypes.default)(child, [_GridRow.default])) {\n return (0, _safeCloneElement.default)(child, (0, _objectSpread2.default)({}, (0, _passthroughProps.pickProps)(_this.props, Grid.propTypes), child.props, {\n /* child props should override parent */\n isLastRow: index + 1 === children.length\n }));\n } else {\n return child; // PropType validation should handle errors\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classes;\n\n var classes = (_classes = {}, (0, _defineProperty2.default)(_classes, styles.root, true), (0, _defineProperty2.default)(_classes, styles[this.startAtClass()], !!this.props.startAt), (0, _defineProperty2.default)(_classes, styles.visualDebug, this.props.visualDebug), _classes);\n var props = (0, _passthroughProps.omitProps)(this.props, Grid.propTypes);\n return _react.default.createElement(\"span\", Object.assign({}, props, {\n className: (0, _classnames.default)(classes)\n }), this.renderChildren());\n }\n }]);\n Grid.displayName = \"Grid\";\n return Grid;\n}(_react.Component), _class2.propTypes = {\n children: _uiPropTypes.Children.oneOf([_GridRow.default, _ScreenReaderContent.default]),\n colSpacing: _propTypes.default.oneOf(['none', 'small', 'medium', 'large']),\n rowSpacing: _propTypes.default.oneOf(['none', 'small', 'medium', 'large']),\n hAlign: _propTypes.default.oneOf(['start', 'center', 'end', 'space-around', 'space-between']),\n vAlign: _propTypes.default.oneOf(['top', 'middle', 'bottom']),\n startAt: _propTypes.default.oneOf(['small', 'medium', 'large', 'x-large', null]),\n visualDebug: _propTypes.default.bool\n}, _class2.defaultProps = {\n colSpacing: 'medium',\n rowSpacing: 'medium',\n hAlign: 'start',\n startAt: 'small',\n vAlign: 'top',\n visualDebug: false,\n children: null\n}, _temp)) || _class);\nexports.default = Grid;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _escapeHtml = _interopRequireDefault(require(\"escape-html\"));\n\nvar _formatMessage = _interopRequireDefault(require(\"../../../format-message\"));\n\nvar _clickCallback = _interopRequireDefault(require(\"./clickCallback\"));\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 .\n */\ntinymce.create(\"tinymce.plugins.InstructureEquella\", {\n init: function init(ed) {\n ed.addCommand(\"instructureEquella\", _clickCallback.default.bind(this, ed, document));\n ed.addButton(\"instructure_equella\", {\n title: (0, _escapeHtml.default)((0, _formatMessage.default)({\n default: \"Insert Equella Links\",\n description: \"Title for RCE button to insert links to Equella content\"\n })),\n cmd: \"instructureEquella\",\n icon: \"equella icon-equella\"\n });\n },\n getInfo: function getInfo() {\n return {\n longname: \"InstructureEquella\",\n author: \"Brian Whitmer\",\n authorurl: \"http://www.instructure.com\",\n infourl: \"http://www.instructure.com\",\n version: tinymce.majorVersion + \".\" + tinymce.minorVersion\n };\n }\n}); // Register plugin\n\ntinymce.PluginManager.add(\"instructure_equella\", tinymce.plugins.InstructureEquella);","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _bridge = _interopRequireDefault(require(\"../bridge\"));\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 .\n */\nfunction _default(props) {\n return (0, _objectSpread2.default)({\n // default handlers, can be overridden by props\n onLinkClick: _bridge.default.insertLink,\n onImageEmbed: _bridge.default.embedImage\n }, props);\n}","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf3 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _File = _interopRequireDefault(require(\"./File\"));\n\nvar _Loading = _interopRequireDefault(require(\"../Loading\"));\n\nvar _aphrodite = require(\"aphrodite\");\n\nvar _styles = _interopRequireDefault(require(\"./styles\"));\n\nvar _IconMiniArrowDown = _interopRequireDefault(require(\"@instructure/ui-icons/lib/Line/IconMiniArrowDown\"));\n\nvar _IconMiniArrowEnd = _interopRequireDefault(require(\"@instructure/ui-icons/lib/Line/IconMiniArrowEnd\"));\n\nvar _IconFolder = _interopRequireDefault(require(\"@instructure/ui-icons/lib/Line/IconFolder\"));\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 .\n */\nvar Folder =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(Folder, _Component);\n\n function Folder() {\n var _getPrototypeOf2;\n\n var _this;\n\n (0, _classCallCheck2.default)(this, Folder);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(Folder)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _this.handleToggle = function () {\n var _this$props = _this.props,\n onToggle = _this$props.onToggle,\n folder = _this$props.folder;\n\n if (onToggle) {\n onToggle(folder.id);\n }\n };\n\n return _this;\n }\n\n (0, _createClass2.default)(Folder, [{\n key: \"files\",\n value: function files() {\n var _this2 = this;\n\n return this.props.folder.fileIds.map(function (id) {\n return _this2.props.files[id];\n }).filter(function (file) {\n return file != null;\n });\n }\n }, {\n key: \"subFolders\",\n value: function subFolders() {\n var _this3 = this;\n\n return this.props.folder.folderIds.map(function (id) {\n return _this3.props.folders[id];\n }).filter(function (folder) {\n return folder != null;\n });\n }\n }, {\n key: \"toggleIcon\",\n value: function toggleIcon() {\n var expanded = this.props.folder.expanded;\n return expanded ? _react.default.createElement(_IconMiniArrowDown.default, null) : _react.default.createElement(_IconMiniArrowEnd.default, null);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n folders = _this$props2.folders,\n folder = _this$props2.folder,\n files = _this$props2.files,\n onSelect = _this$props2.onSelect,\n onToggle = _this$props2.onToggle;\n return _react.default.createElement(\"div\", {\n className: (0, _aphrodite.css)(_styles.default.node)\n }, _react.default.createElement(\"button\", {\n className: (0, _aphrodite.css)(_styles.default.button),\n onClick: this.handleToggle,\n \"aria-expanded\": !!folder.expanded\n }, this.toggleIcon(), \" \", _react.default.createElement(_IconFolder.default, null), \" \", folder.name), folder.expanded && _react.default.createElement(\"ul\", {\n className: (0, _aphrodite.css)(_styles.default.list)\n }, this.subFolders().map(function (folder) {\n return _react.default.createElement(\"li\", {\n key: \"folder-\".concat(folder.id),\n className: (0, _aphrodite.css)(_styles.default.node)\n }, _react.default.createElement(Folder, {\n folders: folders,\n files: files,\n folder: folder,\n onToggle: onToggle,\n onSelect: onSelect\n }));\n }), this.files().map(function (file) {\n return _react.default.createElement(\"li\", {\n key: \"file-\".concat(file.id),\n className: (0, _aphrodite.css)(_styles.default.node)\n }, _react.default.createElement(_File.default, {\n onSelect: onSelect,\n file: file\n }));\n })), folder.expanded && folder.loading && _react.default.createElement(_Loading.default, {\n className: (0, _aphrodite.css)(_styles.default.loading)\n }));\n }\n }]);\n Folder.displayName = \"Folder\";\n return Folder;\n}(_react.Component);\n\nexports.default = Folder;\n\nvar folderPropType = _propTypes.default.shape({\n id: _propTypes.default.number,\n name: _propTypes.default.string,\n loading: _propTypes.default.bool,\n fileIds: _propTypes.default.arrayOf(_propTypes.default.number),\n folderIds: _propTypes.default.arrayOf(_propTypes.default.number)\n});\n\nFolder.propTypes = {\n folders: _propTypes.default.objectOf(folderPropType),\n files: _propTypes.default.objectOf(_File.default.propTypes.file),\n folder: folderPropType.isRequired,\n onToggle: _propTypes.default.func,\n onSelect: _File.default.propTypes.onSelect\n};\nFolder.defaultProps = {\n files: [],\n folders: []\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getShorthandPropValue;\n\nvar _console = require(\"@instructure/console\");\n\nvar _isEmpty = _interopRequireDefault(require(\"@instructure/ui-utils/lib/isEmpty\"));\n\nvar _convertCase = require(\"@instructure/ui-utils/lib/convertCase\");\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 * category: utilities/themes\n * ---\n * Given a theme object, a string of space delimited prop values,\n * and a propName prefix, combines each prop value with the\n * propName prefix and replaces it with a corresponding value\n * from the theme object.\n *\n * @param {String} componentName - the name of the component (for error messages)\n * @param {Object} componentTheme - a theme object of keys and values\n * @param {String} propValue - a space delimited string of values\n * @param {String} propName - a prefix to combine with each propValue\n * @returns {String} a string with each value replaced with a value from the theme object\n */\nfunction getShorthandPropValue(componentName, componentTheme, propValue, propName) {\n if (typeof propValue !== 'string' || (0, _isEmpty.default)(componentTheme)) {\n return;\n }\n\n return propValue.split(' ').map(function (shortHandValue) {\n if (shortHandValue === 'auto' || shortHandValue === '0') {\n return shortHandValue;\n }\n\n if (shortHandValue === 'none') {\n return '0';\n }\n\n var themeVariableName = (0, _convertCase.camelize)(\"\".concat(propName, \"-\").concat(shortHandValue));\n var themeVariableValue = componentTheme[themeVariableName];\n\n /*#__PURE__*/\n (\n /*#__PURE__*/\n 0, _console.error)(themeVariableValue, \"[\".concat(componentName, \"] '\").concat(themeVariableName, \"' is an invalid '\").concat(propName, \"' value.\"));\n return themeVariableValue || '0';\n }).join(' ').trim();\n}","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ensureSingleChild;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _safeCloneElement = _interopRequireDefault(require(\"./safeCloneElement\"));\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 * category: utilities/react\n * ---\n *\n * Ensure a single child. If it is a child of length 1, return a\n * cloned instance of the child. If it is a child of length > 1,\n * wrap in a span and return the child. Return null if child has\n * no length.\n *\n * @param {ReactElement} child\n * @param {Object} props - props for child\n * @returns {ReactElement} cloned instance for a single child, or children wrapped in a span\n */\nfunction ensureSingleChild(child) {\n var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n\n var childCount = _react.Children.count(child);\n\n if (childCount === 0) {\n return null;\n } else if (typeof child === 'string' && child.length > 0 || childCount > 1) {\n return _react.default.createElement(\"span\", props, child);\n } else {\n return (0, _safeCloneElement.default)(Array.isArray(child) ? child[0] : child, props);\n }\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf3 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _contentRendering = require(\"../../rce/contentRendering\");\n\nvar _dragHtml = _interopRequireDefault(require(\"../dragHtml\"));\n\nvar _formatMessage = _interopRequireDefault(require(\"../../format-message\"));\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 .\n */\nvar UploadedImage =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(UploadedImage, _Component);\n\n function UploadedImage() {\n var _getPrototypeOf2;\n\n var _this;\n\n (0, _classCallCheck2.default)(this, UploadedImage);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(UploadedImage)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _this.handleImageClick = function (e) {\n e.preventDefault();\n\n _this.props.onImageEmbed(_this.props.image);\n };\n\n _this.onDrag = function (ev) {\n (0, _dragHtml.default)(ev, (0, _contentRendering.renderImage)(_this.props.image));\n };\n\n return _this;\n }\n\n (0, _createClass2.default)(UploadedImage, [{\n key: \"imgTitle\",\n value: function imgTitle() {\n return (0, _formatMessage.default)(\"Click to embed { imageName }\", {\n imageName: this.props.image.display_name\n });\n }\n }, {\n key: \"renderImg\",\n value: function renderImg() {\n var image = this.props.image;\n return _react.default.createElement(\"img\", {\n draggable: true,\n onDragStart: this.onDrag,\n src: image.thumbnail_url,\n alt: image.display_name,\n title: this.imgTitle(),\n style: {\n maxHeight: 50,\n maxWidth: 200\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var title = (0, _formatMessage.default)(\"Click to embed image\");\n return _react.default.createElement(\"a\", {\n href: this.props.image,\n role: \"button\",\n title: title,\n draggable: false,\n onDragStart: this.onDrag,\n onClick: this.handleImageClick,\n style: imgLinkStyles\n }, _react.default.createElement(\"div\", {\n style: {\n minHeight: \"50px\"\n }\n }, this.renderImg()), _react.default.createElement(\"div\", {\n style: {\n wordBreak: \"break-all\"\n }\n }, this.props.image.display_name));\n }\n }]);\n UploadedImage.displayName = \"UploadedImage\";\n return UploadedImage;\n}(_react.Component);\n\nUploadedImage.propTypes = {\n image: _propTypes.default.shape({\n id: _propTypes.default.number.isRequired,\n filename: _propTypes.default.string,\n display_name: _propTypes.default.string.isRequired,\n preview_url: _propTypes.default.string.isRequired,\n thumbnail_url: _propTypes.default.string,\n href: _propTypes.default.string\n }).isRequired,\n onImageEmbed: _propTypes.default.func.isRequired\n};\nvar imgLinkStyles = {\n cursor: \"pointer\",\n overflow: \"hidden\",\n border: \"1px solid #ccc\",\n margin: \"3px\",\n padding: \"3px\",\n float: \"left\"\n};\nvar _default = UploadedImage;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmpty;\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 */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isEmpty(obj) {\n if (typeof obj !== 'object') return true;\n\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) return false;\n }\n\n return true;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"FlexItem\", {\n enumerable: true,\n get: function get() {\n return _FlexItem.default;\n }\n});\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _uiThemeable = _interopRequireDefault(require(\"@instructure/ui-themeable\"));\n\nvar _uiPropTypes = require(\"@instructure/ui-prop-types\");\n\nvar _ThemeablePropTypes = _interopRequireDefault(require(\"@instructure/ui-themeable/lib/utils/ThemeablePropTypes\"));\n\nvar _safeCloneElement = _interopRequireDefault(require(\"@instructure/ui-utils/lib/react/safeCloneElement\"));\n\nvar _passthroughProps = require(\"@instructure/ui-utils/lib/react/passthroughProps\");\n\nvar _View = _interopRequireDefault(require(\"../View\"));\n\nvar _FlexItem = _interopRequireDefault(require(\"./FlexItem\"));\n\nvar _theme = _interopRequireDefault(require(\"./theme\"));\n\nvar _dec, _class, _class2, _temp;\n\nvar styles = {\n componentId: 'cGJLp',\n template: function template(theme) {\n return \"\\n\\n.cGJLp_bGBk{box-sizing:border-box;font-family:\".concat(theme.fontFamily || 'inherit', \"}\\n\\n.cGJLp_bZNM{flex-direction:column}\\n\\n.cGJLp_eUXf{flex-direction:column-reverse}\\n\\n.cGJLp_qOas{flex-direction:row}\\n\\n.cGJLp_sGoV{flex-direction:row-reverse}\\n\\n.cGJLp_ePRQ{flex-wrap:wrap}\\n\\n.cGJLp_busO{justify-content:flex-start}\\n\\n.cGJLp_crdn{justify-content:flex-end}\\n\\n.cGJLp_eRIA{justify-content:center}\\n\\n.cGJLp_flTs{justify-content:space-around}\\n\\n.cGJLp_oDLF{justify-content:space-between}\\n\\n.cGJLp_fZWR{align-items:center}\\n\\n.cGJLp_cCxO{align-items:flex-start}\\n\\n.cGJLp_fncw{align-items:flex-end}\\n\\n.cGJLp_cQFX{align-items:stretch}\\n\\n.cGJLp_fFVr{outline:0.0625rem dashed \").concat(theme.debugOutlineColor || 'inherit', \"}\");\n },\n 'root': 'cGJLp_bGBk',\n 'column': 'cGJLp_bZNM',\n 'column-reverse': 'cGJLp_eUXf',\n 'row': 'cGJLp_qOas',\n 'row-reverse': 'cGJLp_sGoV',\n 'wrapItems': 'cGJLp_ePRQ',\n 'justifyItems--start': 'cGJLp_busO',\n 'justifyItems--end': 'cGJLp_crdn',\n 'justifyItems--center': 'cGJLp_eRIA',\n 'justifyItems--space-around': 'cGJLp_flTs',\n 'justifyItems--space-between': 'cGJLp_oDLF',\n 'alignItems--center': 'cGJLp_fZWR',\n 'alignItems--start': 'cGJLp_cCxO',\n 'alignItems--end': 'cGJLp_fncw',\n 'alignItems--stretch': 'cGJLp_cQFX',\n 'visualDebug': 'cGJLp_fFVr'\n};\nvar Flex = (\n/**\n---\ncategory: components\n---\n**/\n_dec = (0, _uiThemeable.default)(_theme.default, styles), _dec(_class = (_temp = _class2 =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(Flex, _Component);\n\n function Flex() {\n (0, _classCallCheck2.default)(this, Flex);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Flex).apply(this, arguments));\n }\n\n (0, _createClass2.default)(Flex, [{\n key: \"renderChildren\",\n value: function renderChildren() {\n var _this = this;\n\n return _react.Children.map(this.props.children, function (child) {\n if (child) {\n return (0, _safeCloneElement.default)(child, (0, _objectSpread2.default)({\n visualDebug: _this.props.visualDebug\n }, child.props, {\n /* child visualDebug prop should override parent */\n direction: _this.props.direction.replace(/-reverse/, '')\n }));\n } else {\n return null;\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classes;\n\n var props = (0, _passthroughProps.omitProps)(this.props, Flex.propTypes);\n var _this$props = this.props,\n as = _this$props.as,\n children = _this$props.children,\n direction = _this$props.direction,\n height = _this$props.height,\n inline = _this$props.inline,\n margin = _this$props.margin,\n padding = _this$props.padding,\n justifyItems = _this$props.justifyItems,\n textAlign = _this$props.textAlign,\n visualDebug = _this$props.visualDebug,\n width = _this$props.width,\n wrapItems = _this$props.wrapItems; // When flex direction is row, 'center' is the most useful default because it\n // vertically aligns FlexItems. For column direction, though, we want 'stretch'.\n\n var alignItems = this.props.alignItems || (direction === 'column' || direction === 'column-reverse' ? 'stretch' : 'center');\n var classes = (_classes = {}, (0, _defineProperty2.default)(_classes, styles.root, true), (0, _defineProperty2.default)(_classes, styles.visualDebug, visualDebug), (0, _defineProperty2.default)(_classes, styles[\"justifyItems--\".concat(justifyItems)], true), (0, _defineProperty2.default)(_classes, styles[\"alignItems--\".concat(alignItems)], true), (0, _defineProperty2.default)(_classes, styles.wrapItems, wrapItems), _classes);\n\n if (children && _react.default.Children.count(children) > 0) {\n return _react.default.createElement(_View.default, Object.assign({}, props, {\n className: (0, _classnames.default)(classes, styles[direction]),\n as: as,\n display: inline ? 'inline-flex' : 'flex',\n width: width,\n height: height,\n margin: margin,\n padding: padding,\n textAlign: textAlign\n }), this.renderChildren());\n } else {\n return null;\n }\n }\n }]);\n Flex.displayName = \"Flex\";\n return Flex;\n}(_react.Component), _class2.propTypes = {\n /**\n * Flex only accepts FlexItem as a child\n */\n children: _uiPropTypes.Children.oneOf([_FlexItem.default]),\n\n /**\n * the element type to render as\n */\n as: _propTypes.default.elementType,\n\n /**\n * Sets the flex-direction to row (horizontal) or column (vertical)\n */\n direction: _propTypes.default.oneOf(['row', 'column', 'row-reverse', 'column-reverse']),\n\n /**\n * Sets the height of the component's container (optional)\n */\n height: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n\n /**\n * Sets the width of the component's container (optional)\n */\n width: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n inline: _propTypes.default.bool,\n textAlign: _propTypes.default.oneOf(['start', 'center', 'end']),\n\n /**\n * Valid values are `0`, `none`, `auto`, `xxx-small`, `xx-small`, `x-small`,\n * `small`, `medium`, `large`, `x-large`, `xx-large`. Apply these values via\n * familiar CSS-like shorthand. For example: `margin=\"small auto large\"`.\n */\n margin: _ThemeablePropTypes.default.spacing,\n\n /**\n * Valid values are `0`, `none`, `xxx-small`, `xx-small`, `x-small`,\n * `small`, `medium`, `large`, `x-large`, `xx-large`. Apply these values via\n * familiar CSS-like shorthand. For example: `padding=\"small x-large large\"`.\n */\n padding: _ThemeablePropTypes.default.spacing,\n alignItems: _propTypes.default.oneOf(['center', 'start', 'end', 'stretch']),\n justifyItems: _propTypes.default.oneOf(['center', 'start', 'end', 'space-around', 'space-between']),\n\n /**\n * Places dashed lines around the component's borders to help debug your layout\n */\n visualDebug: _propTypes.default.bool,\n wrapItems: _propTypes.default.bool\n}, _class2.defaultProps = {\n children: null,\n as: 'span',\n direction: 'row',\n justifyItems: 'start',\n inline: false,\n visualDebug: false,\n wrapItems: false,\n width: void 0,\n height: void 0,\n padding: void 0,\n margin: void 0,\n alignItems: void 0,\n textAlign: void 0\n}, _temp)) || _class);\nexports.default = Flex;","'use strict';\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createReactClass = require('create-react-class');\n\nvar _createReactClass2 = _interopRequireDefault(_createReactClass);\n\nvar _lodashIsEqual = require('lodash/isEqual');\n\nvar _lodashIsEqual2 = _interopRequireDefault(_lodashIsEqual);\n\nvar _lodashClone = require('lodash/clone');\n\nvar _lodashClone2 = _interopRequireDefault(_lodashClone);\n\nvar _helpersUuid = require('../helpers/uuid');\n\nvar _helpersUuid2 = _interopRequireDefault(_helpersUuid);\n\nvar _helpersUcFirst = require('../helpers/ucFirst');\n\nvar _helpersUcFirst2 = _interopRequireDefault(_helpersUcFirst);\n\n// Include all of the Native DOM and custom events from:\n// https://github.com/tinymce/tinymce/blob/master/tools/docs/tinymce.Editor.js#L5-L12\nvar EVENTS = ['focusin', 'focusout', 'click', 'dblclick', 'mousedown', 'mouseup', 'mousemove', 'mouseover', 'beforepaste', 'paste', 'cut', 'copy', 'selectionchange', 'mouseout', 'mouseenter', 'mouseleave', 'keydown', 'keypress', 'keyup', 'contextmenu', 'dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag', 'BeforeRenderUI', 'SetAttrib', 'PreInit', 'PostRender', 'init', 'deactivate', 'activate', 'NodeChange', 'BeforeExecCommand', 'ExecCommand', 'show', 'hide', 'ProgressState', 'LoadContent', 'SaveContent', 'BeforeSetContent', 'SetContent', 'BeforeGetContent', 'GetContent', 'VisualAid', 'remove', 'submit', 'reset', 'BeforeAddUndo', 'AddUndo', 'change', 'undo', 'redo', 'ClearUndos', 'ObjectSelected', 'ObjectResizeStart', 'ObjectResized', 'PreProcess', 'PostProcess', 'focus', 'blur', 'dirty'];\n\n// Note: because the capitalization of the events is weird, we're going to get\n// some inconsistently-named handlers, for example compare:\n// 'onMouseleave' and 'onNodeChange'\nvar HANDLER_NAMES = EVENTS.map(function (event) {\n return 'on' + (0, _helpersUcFirst2['default'])(event);\n});\n\nvar TinyMCE = (0, _createReactClass2['default'])({\n displayName: 'TinyMCE',\n\n propTypes: {\n config: _propTypes2['default'].object,\n content: _propTypes2['default'].string,\n id: _propTypes2['default'].string,\n className: _propTypes2['default'].string,\n name: _propTypes2['default'].string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n config: {},\n content: ''\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.id = this.id || this.props.id || (0, _helpersUuid2['default'])();\n },\n\n componentDidMount: function componentDidMount() {\n var config = (0, _lodashClone2['default'])(this.props.config);\n this._init(config, this.props.content);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (!(0, _lodashIsEqual2['default'])(this.props.config, nextProps.config) || !(0, _lodashIsEqual2['default'])(this.props.id, nextProps.id)) {\n this.id = nextProps.id;\n this._init((0, _lodashClone2['default'])(nextProps.config), nextProps.content);\n return;\n }\n\n // TODO: This will fix problems with keeping internal state, but causes problems with cursor placement\n // if (!isEqual(this.props.content, nextProps.content)) {\n // const editor = tinymce.EditorManager.get(this.id);\n // editor.setContent(nextProps.content);\n //\n // editor.selection.select(editor.getBody(), true);\n // editor.selection.collapse(false);\n // }\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps) {\n return !(0, _lodashIsEqual2['default'])(this.props.config, nextProps.config);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._remove();\n },\n\n render: function render() {\n return this.props.config.inline ? _react2['default'].createElement('div', {\n id: this.id,\n className: this.props.className,\n dangerouslySetInnerHTML: { __html: this.props.content }\n }) : _react2['default'].createElement('textarea', {\n id: this.id,\n className: this.props.className,\n name: this.props.name,\n defaultValue: this.props.content\n });\n },\n\n _init: function _init(config, content) {\n var _this = this;\n\n if (this._isInit) {\n this._remove();\n }\n\n // hide the textarea that is me so that no one sees it\n (0, _reactDom.findDOMNode)(this).style.hidden = 'hidden';\n\n var setupCallback = config.setup;\n var hasSetupCallback = typeof setupCallback === 'function';\n\n config.selector = '#' + this.id;\n config.setup = function (editor) {\n EVENTS.forEach(function (eventType, index) {\n editor.on(eventType, function (e) {\n var handler = _this.props[HANDLER_NAMES[index]];\n if (typeof handler === 'function') {\n // native DOM events don't have access to the editor so we pass it here\n handler(e, editor);\n }\n });\n });\n // need to set content here because the textarea will still have the\n // old `this.props.content`\n if (typeof content !== 'undefined') {\n editor.on('init', function () {\n editor.setContent(content);\n });\n }\n if (hasSetupCallback) {\n setupCallback(editor);\n }\n };\n\n tinymce.init(config);\n\n (0, _reactDom.findDOMNode)(this).style.hidden = '';\n\n this._isInit = true;\n },\n\n _remove: function _remove() {\n tinymce.EditorManager.execCommand('mceRemoveEditor', true, this.id);\n this._isInit = false;\n }\n});\n\n// add handler propTypes\nHANDLER_NAMES.forEach(function (name) {\n TinyMCE.propTypes[name] = _propTypes2['default'].func;\n});\n\nmodule.exports = TinyMCE;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _SVGIcon = _interopRequireDefault(require(\"@instructure/ui-svg-images/lib/components/SVGIcon\"));\n\nvar _IconCheckMark = _interopRequireDefault(require(\"@instructure/ui-icons/lib/Solid/IconCheckMark\"));\n\nvar _uiThemeable = _interopRequireDefault(require(\"@instructure/ui-themeable\"));\n\nvar _theme = _interopRequireDefault(require(\"./theme\"));\n\nvar _dec, _class, _class2, _temp;\n\nvar styles = {\n componentId: 'yyQPt',\n template: function template(theme) {\n return \"\\n\\n.yyQPt_bGBk{align-items:flex-start;display:flex}\\n\\n.yyQPt_cSXm{-webkit-margin-end:\".concat(theme.marginRight || 'inherit', \";-webkit-margin-start:0;align-items:center;background:\").concat(theme.background || 'inherit', \";border:\").concat(theme.borderWidth || 'inherit', \" solid \").concat(theme.borderColor || 'inherit', \";border-radius:\").concat(theme.borderRadius || 'inherit', \";box-sizing:border-box;color:\").concat(theme.color || 'inherit', \";display:flex;flex-shrink:0;justify-content:center;margin-inline-end:\").concat(theme.marginRight || 'inherit', \";margin-inline-start:0;padding:\").concat(theme.padding || 'inherit', \";position:relative;transition:all 0.2s}\\n\\n[dir=ltr] .yyQPt_cSXm{margin-left:0;margin-right:\").concat(theme.marginRight || 'inherit', \"}\\n\\n[dir=rtl] .yyQPt_cSXm{margin-left:\").concat(theme.marginRight || 'inherit', \";margin-right:0}\\n\\n.yyQPt_cSXm:before{border:\").concat(theme.focusBorderWidth || 'inherit', \" \").concat(theme.focusBorderStyle || 'inherit', \" \").concat(theme.focusBorderColor || 'inherit', \";border-radius:calc(\").concat(theme.borderRadius || 'inherit', \"*1.5);bottom:-0.3125rem;box-sizing:border-box;content:\\\"\\\";left:-0.3125rem;opacity:0;pointer-events:none;position:absolute;right:-0.3125rem;top:-0.3125rem;transform:scale(0.75);transition:all 0.2s}\\n\\n.yyQPt_blJt{color:\").concat(theme.labelColor || 'inherit', \";flex:1 1 auto;font-family:\").concat(theme.labelFontFamily || 'inherit', \";font-weight:\").concat(theme.labelFontWeight || 'inherit', \";line-height:\").concat(theme.labelLineHeight || 'inherit', \";min-width:0.0625rem}\\n\\n.yyQPt_doqw .yyQPt_blJt{font-size:\").concat(theme.labelFontSizeSmall || 'inherit', \"}\\n\\n.yyQPt_doqw .yyQPt_cSXm{font-size:\").concat(theme.iconSizeSmall || 'inherit', \";height:\").concat(theme.facadeSizeSmall || 'inherit', \";width:\").concat(theme.facadeSizeSmall || 'inherit', \"}\\n\\n.yyQPt_ycrn .yyQPt_blJt{font-size:\").concat(theme.labelFontSizeMedium || 'inherit', \"}\\n\\n.yyQPt_ycrn .yyQPt_cSXm{font-size:\").concat(theme.iconSizeMedium || 'inherit', \";height:\").concat(theme.facadeSizeMedium || 'inherit', \";width:\").concat(theme.facadeSizeMedium || 'inherit', \"}\\n\\n.yyQPt_cMDj .yyQPt_blJt{font-size:\").concat(theme.labelFontSizeLarge || 'inherit', \"}\\n\\n.yyQPt_cMDj .yyQPt_cSXm{font-size:\").concat(theme.iconSizeLarge || 'inherit', \";height:\").concat(theme.facadeSizeLarge || 'inherit', \";width:\").concat(theme.facadeSizeLarge || 'inherit', \"}\\n\\n.yyQPt_cjfS .yyQPt_cSXm{background:\").concat(theme.checkedBackground || 'inherit', \";border-color:\").concat(theme.checkedBorderColor || 'inherit', \"}\\n\\n.yyQPt_cjfS .yyQPt_blJt{color:\").concat(theme.checkedLabelColor || 'inherit', \"}\\n\\n.yyQPt_cVYB .yyQPt_cSXm:before{opacity:1;transform:scale(1)}\\n\\n.yyQPt_Ffcq .yyQPt_cSXm{border-color:\").concat(theme.hoverBorderColor || 'inherit', \"}\");\n },\n 'root': 'yyQPt_bGBk',\n 'facade': 'yyQPt_cSXm',\n 'label': 'yyQPt_blJt',\n 'small': 'yyQPt_doqw',\n 'medium': 'yyQPt_ycrn',\n 'large': 'yyQPt_cMDj',\n 'checked': 'yyQPt_cjfS',\n 'focused': 'yyQPt_cVYB',\n 'hovered': 'yyQPt_Ffcq'\n};\n\nvar _ref =\n/*#__PURE__*/\n_react.default.createElement(_SVGIcon.default, {\n viewBox: \"0 0 1920 1920\",\n inline: false\n}, _react.default.createElement(\"rect\", {\n x: \"140\",\n y: \"820\",\n width: \"1640\",\n height: \"280\"\n}));\n\nvar _ref2 =\n/*#__PURE__*/\n_react.default.createElement(_IconCheckMark.default, {\n inline: false\n});\n\nvar CheckboxFacade = (\n/**\n---\nparent: Checkbox\n---\n**/\n_dec = (0, _uiThemeable.default)(_theme.default, styles), _dec(_class = (_temp = _class2 =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(CheckboxFacade, _Component);\n\n function CheckboxFacade() {\n (0, _classCallCheck2.default)(this, CheckboxFacade);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(CheckboxFacade).apply(this, arguments));\n }\n\n (0, _createClass2.default)(CheckboxFacade, [{\n key: \"renderIcon\",\n value: function renderIcon() {\n if (this.props.indeterminate) {\n return _ref;\n } else if (this.props.checked) {\n return _ref2;\n } else {\n return null;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classes;\n\n var _this$props = this.props,\n size = _this$props.size,\n checked = _this$props.checked,\n focused = _this$props.focused,\n hovered = _this$props.hovered,\n indeterminate = _this$props.indeterminate;\n var classes = (_classes = {}, (0, _defineProperty2.default)(_classes, styles.root, true), (0, _defineProperty2.default)(_classes, styles.checked, checked || indeterminate), (0, _defineProperty2.default)(_classes, styles.focused, focused), (0, _defineProperty2.default)(_classes, styles.hovered, hovered), (0, _defineProperty2.default)(_classes, styles[size], true), _classes);\n return _react.default.createElement(\"span\", {\n className: (0, _classnames.default)(classes)\n }, _react.default.createElement(\"span\", {\n className: styles.facade,\n \"aria-hidden\": \"true\"\n }, this.renderIcon()), _react.default.createElement(\"span\", {\n className: styles.label\n }, this.props.children));\n }\n }]);\n CheckboxFacade.displayName = \"CheckboxFacade\";\n return CheckboxFacade;\n}(_react.Component), _class2.propTypes = {\n children: _propTypes.default.node.isRequired,\n checked: _propTypes.default.bool,\n focused: _propTypes.default.bool,\n hovered: _propTypes.default.bool,\n size: _propTypes.default.oneOf(['small', 'medium', 'large']),\n\n /**\n * Visual state showing that child checkboxes are a combination of checked and unchecked\n */\n indeterminate: _propTypes.default.bool\n}, _class2.defaultProps = {\n checked: false,\n focused: false,\n hovered: false,\n size: 'medium',\n indeterminate: false\n}, _temp)) || _class);\nexports.default = CheckboxFacade;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _redux = require(\"redux\");\n\nvar _reducers = _interopRequireDefault(require(\"../reducers\"));\n\nvar _initialState = _interopRequireDefault(require(\"./initialState\"));\n\nvar _reduxThunk = _interopRequireDefault(require(\"redux-thunk\"));\n\nvar _reduxBatchMiddleware = require(\"redux-batch-middleware\");\n\nvar _initialActions = _interopRequireDefault(require(\"./initialActions\"));\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 .\n */\nfunction _default(props, state) {\n var store = (0, _redux.createStore)((0, _reduxBatchMiddleware.batching)(_reducers.default), state || (0, _initialState.default)(props), (0, _redux.applyMiddleware)(_reduxThunk.default, _reduxBatchMiddleware.batch));\n (0, _initialActions.default)(store);\n return store;\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"FormFieldLabel\", {\n enumerable: true,\n get: function get() {\n return _FormFieldLabel.default;\n }\n});\nObject.defineProperty(exports, \"FormFieldLayout\", {\n enumerable: true,\n get: function get() {\n return _FormFieldLayout.default;\n }\n});\nObject.defineProperty(exports, \"FormFieldMessage\", {\n enumerable: true,\n get: function get() {\n return _FormFieldMessage.default;\n }\n});\nObject.defineProperty(exports, \"FormFieldMessages\", {\n enumerable: true,\n get: function get() {\n return _FormFieldMessages.default;\n }\n});\nexports.default = void 0;\n\nvar _FormField = _interopRequireDefault(require(\"@instructure/ui-form-field/lib/components/FormField\"));\n\nvar _deprecated = _interopRequireWildcard(require(\"@instructure/ui-utils/lib/react/deprecated\"));\n\nvar _FormFieldLabel = _interopRequireDefault(require(\"./FormFieldLabel\"));\n\nvar _FormFieldLayout = _interopRequireDefault(require(\"./FormFieldLayout\"));\n\nvar _FormFieldMessage = _interopRequireDefault(require(\"./FormFieldMessage\"));\n\nvar _FormFieldMessages = _interopRequireDefault(require(\"./FormFieldMessages\"));\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 */\nvar _default = (0, _deprecated.default)('5.35.0', null, (0, _deprecated.changedPackageWarning)('ui-forms', 'ui-form-field'))(_FormField.default);\n\nexports.default = _default;","\"use strict\";\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 .\n */\n// if a locale is absent, we don't expect to receive it from canvas, but we'll\n// treat it the same as how we explicitly use english for Maori.\nvar mapping = {\n ar: \"ar_SA\",\n bg: \"bg_BG\",\n cs: \"cs\",\n cy: \"cy\",\n da: \"da\",\n de: \"de\",\n el: \"el\",\n // returning undefined tell tinymce to use it's default (en) strings\n en: \"en_US\",\n // tinymce doesn't have Australian strings, so just pretend it's en-GB\n \"en-AU\": \"en_GB\",\n \"en-GB\": \"en_GB\",\n es: \"es\",\n fa: \"fa_IR\",\n \"fa-IR\": \"fa_IR\",\n fr: \"fr_FR\",\n \"fr-CA\": \"fr_FR\",\n he: \"he_IL\",\n ht: \"en_US\",\n // tiny doesn't have Haitian Creole\n hu: \"hu_HU\",\n hy: \"hy\",\n is: \"en_US\",\n // tiny doesn't have Icelandic\n it: \"it\",\n ja: \"ja\",\n ko: \"ko_KR\",\n // tinymce doesn't have Maori strings, so just pretend it's en\n mi: \"en_US\",\n nb: \"nb_NO\",\n nl: \"nl\",\n nn: \"nb_NO\",\n // tiny doesn't have Norwegian (Nynorsk) so go to Norwegian (Bokmal)\n pl: \"pl\",\n pt: \"pt_PT\",\n \"pt-BR\": \"pt_BR\",\n ro: \"ro\",\n ru: \"ru_RU\",\n sq: \"en_US\",\n // tiny doesn't have Albanian\n sr: \"sr\",\n sv: \"sv_SE\",\n tr: \"tr_TR\",\n \"uk-UA\": \"uk_UA\",\n vi: \"vi_VN\",\n \"zh-Hans\": \"zh_CN\",\n \"zh-Hant\": \"zh_TW\"\n}; // still expose it as a method for consistent usage and in case we ever have to\n// add special casing or null interpretation in the future\n\nfunction editorLanguage(locale) {\n // tinymce won't know about custom locales, use the base one for mapping\n if (locale.match(\"-x-\")) {\n locale = locale.split(\"-x-\")[0];\n }\n\n return mapping[locale];\n}\n\nmodule.exports = editorLanguage;","(function () {\nvar wordcount = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var regExps = {\n aletter: '[A-Za-z\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05F3\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u10a0-\\u10c5\\u10d0-\\u10fa\\u10fc\\u1100-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1a00-\\u1a16\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bc0-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u24B6-\\u24E9\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2d00-\\u2d25\\u2d30-\\u2d65\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005\\u303b\\u303c\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790\\ua791\\ua7a0-\\ua7a9\\ua7fa-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]',\n midnumlet: '[-\\'\\\\.\\u2018\\u2019\\u2024\\uFE52\\uFF07\\uFF0E]',\n midletter: '[:\\xB7\\xB7\\u05F4\\u2027\\uFE13\\uFE55\\uFF1A]',\n midnum: '[\\xB1+*/,;;\\u0589\\u060C\\u060D\\u066C\\u07F8\\u2044\\uFE10\\uFE14\\uFE50\\uFE54\\uFF0C\\uFF1B]',\n numeric: '[0-9\\u0660-\\u0669\\u066B\\u06f0-\\u06f9\\u07c0-\\u07c9\\u0966-\\u096f\\u09e6-\\u09ef\\u0a66-\\u0a6f\\u0ae6-\\u0aef\\u0b66-\\u0b6f\\u0be6-\\u0bef\\u0c66-\\u0c6f\\u0ce6-\\u0cef\\u0d66-\\u0d6f\\u0e50-\\u0e59\\u0ed0-\\u0ed9\\u0f20-\\u0f29\\u1040-\\u1049\\u1090-\\u1099\\u17e0-\\u17e9\\u1810-\\u1819\\u1946-\\u194f\\u19d0-\\u19d9\\u1a80-\\u1a89\\u1a90-\\u1a99\\u1b50-\\u1b59\\u1bb0-\\u1bb9\\u1c40-\\u1c49\\u1c50-\\u1c59\\ua620-\\ua629\\ua8d0-\\ua8d9\\ua900-\\ua909\\ua9d0-\\ua9d9\\uaa50-\\uaa59\\uabf0-\\uabf9]',\n cr: '\\\\r',\n lf: '\\\\n',\n newline: '[\\x0B\\f\\x85\\u2028\\u2029]',\n extend: '[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065f\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0c01-\\u0c03\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d02\\u0d03\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f\\u109a-\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b6-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u19b0-\\u19c0\\u19c8\\u19c9\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1baa\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf2\\u1dc0-\\u1de6\\u1dfc-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\uA672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa7b\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe3-\\uabea\\uabec\\uabed\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]',\n format: '[\\xAD\\u0600-\\u0603\\u06DD\\u070F\\u17b4\\u17b5\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\uFEFF\\uFFF9-\\uFFFB]',\n katakana: '[\\u3031-\\u3035\\u309B\\u309C\\u30A0-\\u30fa\\u30fc-\\u30ff\\u31f0-\\u31ff\\u32D0-\\u32FE\\u3300-\\u3357\\uff66-\\uff9d]',\n extendnumlet: '[=_\\u203f\\u2040\\u2054\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff3f\\u2200-\\u22FF<>]',\n punctuation: '[!-#%-*,-\\\\/:;?@\\\\[-\\\\]_{}\\xA1\\xAB\\xB7\\xBB\\xBF;\\xB7\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1361-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u3008\\u3009\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30\\u2E31\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uff3f\\uFF5B\\uFF5D\\uFF5F-\\uFF65]'\n };\n var characterIndices = {\n ALETTER: 0,\n MIDNUMLET: 1,\n MIDLETTER: 2,\n MIDNUM: 3,\n NUMERIC: 4,\n CR: 5,\n LF: 6,\n NEWLINE: 7,\n EXTEND: 8,\n FORMAT: 9,\n KATAKANA: 10,\n EXTENDNUMLET: 11,\n AT: 12,\n OTHER: 13\n };\n var SETS = [\n new RegExp(regExps.aletter),\n new RegExp(regExps.midnumlet),\n new RegExp(regExps.midletter),\n new RegExp(regExps.midnum),\n new RegExp(regExps.numeric),\n new RegExp(regExps.cr),\n new RegExp(regExps.lf),\n new RegExp(regExps.newline),\n new RegExp(regExps.extend),\n new RegExp(regExps.format),\n new RegExp(regExps.katakana),\n new RegExp(regExps.extendnumlet),\n new RegExp('@')\n ];\n var EMPTY_STRING = '';\n var PUNCTUATION = new RegExp('^' + regExps.punctuation + '$');\n var WHITESPACE = /^\\s+$/;\n var UnicodeData = {\n characterIndices: characterIndices,\n SETS: SETS,\n EMPTY_STRING: EMPTY_STRING,\n PUNCTUATION: PUNCTUATION,\n WHITESPACE: WHITESPACE\n };\n\n var constant = function (value) {\n return function () {\n return value;\n };\n };\n var never = constant(false);\n var always = constant(true);\n\n var never$1 = never;\n var always$1 = always;\n var none = function () {\n return NONE;\n };\n var NONE = function () {\n var eq = function (o) {\n return o.isNone();\n };\n var call$$1 = function (thunk) {\n return thunk();\n };\n var id = function (n) {\n return n;\n };\n var noop$$1 = function () {\n };\n var nul = function () {\n return null;\n };\n var undef = function () {\n return undefined;\n };\n var me = {\n fold: function (n, s) {\n return n();\n },\n is: never$1,\n isSome: never$1,\n isNone: always$1,\n getOr: id,\n getOrThunk: call$$1,\n getOrDie: function (msg) {\n throw new Error(msg || 'error: getOrDie called on none.');\n },\n getOrNull: nul,\n getOrUndefined: undef,\n or: id,\n orThunk: call$$1,\n map: none,\n ap: none,\n each: noop$$1,\n bind: none,\n flatten: none,\n exists: never$1,\n forall: always$1,\n filter: none,\n equals: eq,\n equals_: eq,\n toArray: function () {\n return [];\n },\n toString: constant('none()')\n };\n if (Object.freeze)\n Object.freeze(me);\n return me;\n }();\n\n var typeOf = function (x) {\n if (x === null)\n return 'null';\n var t = typeof x;\n if (t === 'object' && Array.prototype.isPrototypeOf(x))\n return 'array';\n if (t === 'object' && String.prototype.isPrototypeOf(x))\n return 'string';\n return t;\n };\n var isType = function (type) {\n return function (value) {\n return typeOf(value) === type;\n };\n };\n var isFunction = isType('function');\n\n var map = function (xs, f) {\n var len = xs.length;\n var r = new Array(len);\n for (var i = 0; i < len; i++) {\n var x = xs[i];\n r[i] = f(x, i, xs);\n }\n return r;\n };\n var slice = Array.prototype.slice;\n var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n return slice.call(x);\n };\n\n var SETS$1 = UnicodeData.SETS;\n var OTHER = UnicodeData.characterIndices.OTHER;\n var getType = function (char) {\n var j, set, type = OTHER;\n var setsLength = SETS$1.length;\n for (j = 0; j < setsLength; ++j) {\n set = SETS$1[j];\n if (set && set.test(char)) {\n type = j;\n break;\n }\n }\n return type;\n };\n var memoize = function (func) {\n var cache = {};\n return function (char) {\n if (cache[char]) {\n return cache[char];\n } else {\n var result = func(char);\n cache[char] = result;\n return result;\n }\n };\n };\n var classify = function (string) {\n var memoized = memoize(getType);\n return map(string.split(''), memoized);\n };\n var StringMapper = { classify: classify };\n\n var ci = UnicodeData.characterIndices;\n var isWordBoundary = function (map, index) {\n var prevType;\n var type = map[index];\n var nextType = map[index + 1];\n var nextNextType;\n if (index < 0 || index > map.length - 1 && index !== 0) {\n return false;\n }\n if (type === ci.ALETTER && nextType === ci.ALETTER) {\n return false;\n }\n nextNextType = map[index + 2];\n if (type === ci.ALETTER && (nextType === ci.MIDLETTER || nextType === ci.MIDNUMLET || nextType === ci.AT) && nextNextType === ci.ALETTER) {\n return false;\n }\n prevType = map[index - 1];\n if ((type === ci.MIDLETTER || type === ci.MIDNUMLET || nextType === ci.AT) && nextType === ci.ALETTER && prevType === ci.ALETTER) {\n return false;\n }\n if ((type === ci.NUMERIC || type === ci.ALETTER) && (nextType === ci.NUMERIC || nextType === ci.ALETTER)) {\n return false;\n }\n if ((type === ci.MIDNUM || type === ci.MIDNUMLET) && nextType === ci.NUMERIC && prevType === ci.NUMERIC) {\n return false;\n }\n if (type === ci.NUMERIC && (nextType === ci.MIDNUM || nextType === ci.MIDNUMLET) && nextNextType === ci.NUMERIC) {\n return false;\n }\n if (type === ci.EXTEND || type === ci.FORMAT || prevType === ci.EXTEND || prevType === ci.FORMAT || nextType === ci.EXTEND || nextType === ci.FORMAT) {\n return false;\n }\n if (type === ci.CR && nextType === ci.LF) {\n return false;\n }\n if (type === ci.NEWLINE || type === ci.CR || type === ci.LF) {\n return true;\n }\n if (nextType === ci.NEWLINE || nextType === ci.CR || nextType === ci.LF) {\n return true;\n }\n if (type === ci.KATAKANA && nextType === ci.KATAKANA) {\n return false;\n }\n if (nextType === ci.EXTENDNUMLET && (type === ci.ALETTER || type === ci.NUMERIC || type === ci.KATAKANA || type === ci.EXTENDNUMLET)) {\n return false;\n }\n if (type === ci.EXTENDNUMLET && (nextType === ci.ALETTER || nextType === ci.NUMERIC || nextType === ci.KATAKANA)) {\n return false;\n }\n if (type === ci.AT) {\n return false;\n }\n return true;\n };\n var WordBoundary = { isWordBoundary: isWordBoundary };\n\n var EMPTY_STRING$1 = UnicodeData.EMPTY_STRING;\n var WHITESPACE$1 = UnicodeData.WHITESPACE;\n var PUNCTUATION$1 = UnicodeData.PUNCTUATION;\n var isProtocol = function (word) {\n return word === 'http' || word === 'https';\n };\n var findWordEnd = function (str, index) {\n var i;\n for (i = index; i < str.length; ++i) {\n var chr = str.charAt(i);\n if (WHITESPACE$1.test(chr)) {\n break;\n }\n }\n return i;\n };\n var extractUrl = function (word, str, index) {\n var endIndex = findWordEnd(str, index + 1);\n var peakedWord = str.substring(index + 1, endIndex);\n if (peakedWord.substr(0, 3) === '://') {\n return {\n word: word + peakedWord,\n index: endIndex\n };\n }\n return {\n word: word,\n index: index\n };\n };\n var doGetWords = function (str, options) {\n var i = 0;\n var map = StringMapper.classify(str);\n var len = map.length;\n var word = [];\n var words = [];\n var chr;\n var includePunctuation;\n var includeWhitespace;\n if (!options) {\n options = {};\n }\n if (options.ignoreCase) {\n str = str.toLowerCase();\n }\n includePunctuation = options.includePunctuation;\n includeWhitespace = options.includeWhitespace;\n for (; i < len; ++i) {\n chr = str.charAt(i);\n word.push(chr);\n if (WordBoundary.isWordBoundary(map, i)) {\n word = word.join(EMPTY_STRING$1);\n if (word && (includeWhitespace || !WHITESPACE$1.test(word)) && (includePunctuation || !PUNCTUATION$1.test(word))) {\n if (isProtocol(word)) {\n var obj = extractUrl(word, str, i);\n words.push(obj.word);\n i = obj.index;\n } else {\n words.push(word);\n }\n }\n word = [];\n }\n }\n return words;\n };\n var getWords = function (str, options) {\n return doGetWords(str.replace(/\\ufeff/g, ''), options);\n };\n var WordGetter = { getWords: getWords };\n\n var getText = function (node, schema) {\n var blockElements = schema.getBlockElements();\n var shortEndedElements = schema.getShortEndedElements();\n var whiteSpaceElements = schema.getWhiteSpaceElements();\n var isSeparator = function (node) {\n return blockElements[node.nodeName] || shortEndedElements[node.nodeName] || whiteSpaceElements[node.nodeName];\n };\n var txt = '';\n var treeWalker = new global$1(node, node);\n while (node = treeWalker.next()) {\n if (node.nodeType === 3) {\n txt += node.data;\n } else if (isSeparator(node)) {\n txt += ' ';\n }\n }\n return txt;\n };\n var innerText = function (node, schema) {\n return global$2.ie ? getText(node, schema) : node.innerText;\n };\n var getTextContent = function (editor) {\n return editor.removed ? '' : innerText(editor.getBody(), editor.schema);\n };\n var getCount = function (editor) {\n return WordGetter.getWords(getTextContent(editor)).length;\n };\n var WordCount = { getCount: getCount };\n\n var get = function (editor) {\n var getCount = function () {\n return WordCount.getCount(editor);\n };\n return { getCount: getCount };\n };\n var Api = { get: get };\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.util.I18n');\n\n var setup = function (editor) {\n var wordsToText = function (editor) {\n return global$4.translate([\n '{0} words',\n WordCount.getCount(editor)\n ]);\n };\n var update = function () {\n editor.theme.panel.find('#wordcount').text(wordsToText(editor));\n };\n editor.on('init', function () {\n var statusbar = editor.theme.panel && editor.theme.panel.find('#statusbar')[0];\n var debouncedUpdate = global$3.debounce(update, 300);\n if (statusbar) {\n global$3.setEditorTimeout(editor, function () {\n statusbar.insert({\n type: 'label',\n name: 'wordcount',\n text: wordsToText(editor),\n classes: 'wordcount',\n disabled: editor.settings.readonly\n }, 0);\n editor.on('setcontent beforeaddundo undo redo keyup', debouncedUpdate);\n }, 0);\n }\n });\n };\n var Statusbar = { setup: setup };\n\n global.add('wordcount', function (editor) {\n Statusbar.setup(editor);\n return Api.get(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _aphrodite = require(\"aphrodite\");\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 .\n */\nvar _default = _aphrodite.StyleSheet.create({\n container: {\n marginBottom: \"1em\",\n overflow: \"auto\"\n },\n list: {\n margin: \"0 0 0 .8em\",\n padding: \"0 0 0 .2em\",\n borderLeft: \"1px dotted #ccc\",\n listStyle: \"none outside\",\n flex: 1\n },\n node: {\n margin: 0,\n padding: 0,\n display: \"block\"\n },\n loading: {\n marginLeft: \".8em\",\n borderLeft: \"1px dotted #ccc\",\n padding: \".5em .7em\"\n },\n button: {\n display: \"block\",\n padding: \".3em\",\n borderRadius: \".3em\",\n backgroundColor: \"transparent\",\n textAlign: \"left\",\n margin: 0,\n fontFamily: \"inherit\",\n fontSize: \"inherit\",\n flex: 1,\n width: \"100%\",\n boxSizing: \"border-box\",\n border: \"1px solid transparent\",\n transition: \"background-color 0.3s\",\n wordBreak: \"break-all\",\n \":hover\": {\n backgroundColor: \"#eee\"\n },\n \":focus\": {\n border: \"1px solid #000\",\n outline: 0\n },\n \":active\": {\n backgroundColor: \"#ddd\"\n }\n },\n file: {\n \":active\": {\n backgroundColor: \"#008a14\"\n }\n }\n});\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _FormFieldMessages = _interopRequireDefault(require(\"@instructure/ui-form-field/lib/components/FormFieldMessages\"));\n\nvar _deprecated = _interopRequireWildcard(require(\"@instructure/ui-utils/lib/react/deprecated\"));\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 */\nvar _default = (0, _deprecated.default)('5.35.0', null, (0, _deprecated.changedPackageWarning)('ui-forms', 'ui-form-field'))(_FormFieldMessages.default);\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = folderReducer;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar actions = _interopRequireWildcard(require(\"../actions/files\"));\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 .\n */\nvar defaultState = {\n id: null,\n name: null,\n loadingCount: 0,\n loading: false,\n requested: false,\n expanded: false,\n filesUrl: null,\n foldersUrl: null,\n parentId: null,\n fileIds: [],\n folderIds: []\n};\n\nfunction folderReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var loadingCount;\n\n switch (action.type) {\n case actions.ADD_FOLDER:\n return (0, _objectSpread2.default)({}, state, {\n id: action.id,\n name: action.name,\n parentId: action.parentId,\n filesUrl: action.filesUrl,\n foldersUrl: action.foldersUrl\n });\n\n case actions.RECEIVE_FILES:\n loadingCount = state.loadingCount - 1;\n return (0, _objectSpread2.default)({}, state, {\n loadingCount: loadingCount,\n loading: !!loadingCount,\n fileIds: state.fileIds.concat(action.fileIds)\n });\n\n case actions.INSERT_FILE:\n return (0, _objectSpread2.default)({}, state, {\n fileIds: state.fileIds.concat(action.fileId)\n });\n\n case actions.RECEIVE_SUBFOLDERS:\n loadingCount = state.loadingCount - 1;\n return (0, _objectSpread2.default)({}, state, {\n loadingCount: loadingCount,\n loading: !!loadingCount,\n folderIds: state.folderIds.concat(action.folderIds)\n });\n\n case actions.REQUEST_FILES:\n loadingCount = state.loadingCount + 1;\n return (0, _objectSpread2.default)({}, state, {\n requested: true,\n loadingCount: loadingCount,\n loading: !!loadingCount\n });\n\n case actions.REQUEST_SUBFOLDERS:\n loadingCount = state.loadingCount + 1;\n return (0, _objectSpread2.default)({}, state, {\n requested: true,\n loadingCount: loadingCount,\n loading: !!loadingCount\n });\n\n case actions.TOGGLE:\n return (0, _objectSpread2.default)({}, state, {\n expanded: !state.expanded\n });\n\n default:\n return state;\n }\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _SVGIcon = _interopRequireDefault(require(\"@instructure/ui-svg-images/lib/components/SVGIcon\"));\n\nvar _ref =\n/*#__PURE__*/\n_react.default.createElement(\"path\", {\n d: \"M1458.948 1305.626c104.637-136.95 167.527-307.187 167.527-492.388C1626.475 364.764 1261.711 0 813.238 0 364.764 0 0 364.764 0 813.238c0 448.473 364.764 813.237 813.238 813.237 185.201 0 355.547-62.89 492.496-167.527L1766.678 1920 1920 1766.678l-461.052-461.052zm-645.71 103.986c-328.874 0-596.375-267.61-596.375-596.374 0-328.765 267.501-596.375 596.375-596.375 328.873 0 596.374 267.61 596.374 596.375s-267.501 596.374-596.374 596.374z\",\n fillRule: \"evenodd\",\n stroke: \"none\",\n strokeWidth: \"1\"\n});\n\nvar IconSearch =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(IconSearch, _Component);\n\n function IconSearch() {\n (0, _classCallCheck2.default)(this, IconSearch);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(IconSearch).apply(this, arguments));\n }\n\n (0, _createClass2.default)(IconSearch, [{\n key: \"render\",\n value: function render() {\n return _react.default.createElement(_SVGIcon.default, Object.assign({}, this.props, {\n name: \"IconSearch\",\n viewBox: \"0 0 1920 1920\"\n }), _ref);\n }\n }]);\n IconSearch.displayName = \"IconSearch\";\n return IconSearch;\n}(_react.Component);\n\nexports.default = IconSearch;\nIconSearch.glyphName = 'search';\nIconSearch.variant = 'Solid';\nIconSearch.propTypes = (0, _objectSpread2.default)({}, _SVGIcon.default.propTypes);","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ensureSingleChild;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _safeCloneElement = _interopRequireDefault(require(\"./safeCloneElement\"));\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 * category: utilities/react\n * ---\n *\n * Ensure a single child. If it is a child of length 1, return a\n * cloned instance of the child. If it is a child of length > 1,\n * wrap in a span and return the child. Return null if child has\n * no length.\n *\n * @param {ReactElement} child\n * @param {Object} props - props for child\n * @returns {ReactElement} cloned instance for a single child, or children wrapped in a span\n */\nfunction ensureSingleChild(child) {\n var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n\n var childCount = _react.Children.count(child);\n\n if (childCount === 0) {\n return null;\n } else if (typeof child === 'string' && child.length > 0 || childCount > 1) {\n return _react.default.createElement(\"span\", props, child);\n } else {\n return (0, _safeCloneElement.default)(Array.isArray(child) ? child[0] : child, props);\n }\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf3 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _CSSTransitionGroup = _interopRequireDefault(require(\"react-transition-group/CSSTransitionGroup\"));\n\nvar _formatMessage = _interopRequireDefault(require(\"../../format-message\"));\n\nvar _Button = _interopRequireDefault(require(\"@instructure/ui-buttons/lib/components/Button\"));\n\nvar _TextInput = _interopRequireDefault(require(\"@instructure/ui-forms/lib/components/TextInput\"));\n\nvar _IconAdd = _interopRequireDefault(require(\"@instructure/ui-icons/lib/Solid/IconAdd\"));\n\nvar _scroll = _interopRequireDefault(require(\"../../common/scroll\"));\n\nvar _aphrodite = require(\"aphrodite\");\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 .\n */\nvar LinkToNewPage =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(LinkToNewPage, _Component);\n\n function LinkToNewPage() {\n var _getPrototypeOf2;\n\n var _this;\n\n (0, _classCallCheck2.default)(this, LinkToNewPage);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(LinkToNewPage)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _this.handleLinkClick = function (e, link) {\n if (_this.props.onLinkClick) {\n e.preventDefault();\n\n _this.props.onLinkClick(link);\n }\n };\n\n return _this;\n }\n\n (0, _createClass2.default)(LinkToNewPage, [{\n key: \"validScrollTarget\",\n value: function validScrollTarget(target, parents) {\n return parents.scrolled < 1 && ( //only want to scroll 1 parent\n target === window || // top window passes // as does scrollable items\n // the style check(s) is to determine if it's potentially scrollable\n target.style && target.style.overflow === \"auto\");\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (this.props.newPageLinkExpanded && this.pageInput) {\n var formElem = this.pageInput.parentElement && this.pageInput.parentElement.parentElement ? this.pageInput.parentElement.parentElement : null;\n this.pageInput.focus();\n\n if (formElem) {\n // second param is config param for 'scroll-into-view' module\n _scroll.default.scrollIntoViewWDelay(formElem, {\n time: 100,\n // length of time for animating the scroll\n validTarget: this.validScrollTarget,\n align: {\n top: 0.75\n }\n });\n }\n }\n }\n }, {\n key: \"toggleForm\",\n value: function toggleForm(e) {\n e.preventDefault();\n this.props.toggleNewPageForm();\n }\n }, {\n key: \"isGroup\",\n value: function isGroup() {\n if (this.props.contextType === \"group\") {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"getContextHref\",\n value: function getContextHref() {\n var href = \"/\";\n\n if (this.isGroup()) {\n href += \"groups/\";\n } else {\n href += \"courses/\";\n }\n\n href += this.props.contextId + \"/\";\n href += \"pages/\";\n return href;\n }\n }, {\n key: \"handleSubmit\",\n value: function handleSubmit(e) {\n e.preventDefault();\n\n if (this.state && this.state.newPageTitle) {\n var newPageTitle = this.state.newPageTitle.trim();\n var newPageHref = this.getContextHref() + encodeURIComponent(newPageTitle) + \"?titleize=0\";\n this.handleLinkClick(e, {\n href: newPageHref,\n title: newPageTitle\n });\n this.props.toggleNewPageForm();\n }\n }\n }, {\n key: \"updateNewPageTitle\",\n value: function updateNewPageTitle(e) {\n this.setState((0, _objectSpread2.default)({}, this.state, {\n newPageTitle: e.target.value\n }));\n }\n }, {\n key: \"renderForm\",\n value: function renderForm() {\n var _this2 = this;\n\n if (this.props.newPageLinkExpanded) {\n return _react.default.createElement(\"form\", {\n id: \"new_page_drop_down\",\n style: {\n margin: \"5px\"\n },\n \"aria-expanded\": this.props.newPageLinkExpanded,\n onSubmit: this.handleSubmit.bind(this)\n }, _react.default.createElement(_TextInput.default, {\n id: \"new-page-name-input\",\n label: (0, _formatMessage.default)(\"What would you like to call the new page?\"),\n onChange: this.updateNewPageTitle.bind(this),\n ref: function ref(input) {\n return _this2.pageInput = input ? input._input : null;\n },\n size: \"small\"\n }), _react.default.createElement(_Button.default, {\n size: \"small\",\n id: \"rcs-LinkToNewPage-submit\",\n type: \"submit\"\n }, (0, _formatMessage.default)(\"Insert Link\")));\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n return _react.default.createElement(\"div\", {\n className: (0, _aphrodite.css)(styles.container)\n }, _react.default.createElement(_Button.default, {\n size: \"small\",\n id: \"rcs-LinkToNewPage-btn-link\",\n type: \"button\",\n variant: \"link\",\n onClick: function onClick(e) {\n return _this3.toggleForm(e);\n }\n }, _react.default.createElement(_IconAdd.default, {\n className: (0, _aphrodite.css)(styles.icon)\n }), \"\\xA0\", (0, _formatMessage.default)(\"Link to a New Page\")), _react.default.createElement(_CSSTransitionGroup.default, {\n transitionName: {\n enter: (0, _aphrodite.css)(styles.slideDownEnter),\n enterActive: (0, _aphrodite.css)(styles.slideDownEnter, styles.slideDownEnterActive),\n leave: (0, _aphrodite.css)(styles.slideDownLeave),\n leaveActive: (0, _aphrodite.css)(styles.slideDownLeave, styles.slideDownLeaveActive)\n },\n transitionEnterTimeout: 500,\n transitionLeaveTimeout: 300\n }, this.renderForm()));\n }\n }]);\n LinkToNewPage.displayName = \"LinkToNewPage\";\n return LinkToNewPage;\n}(_react.Component);\n\nLinkToNewPage.propTypes = {\n onLinkClick: _propTypes.default.func,\n toggleNewPageForm: _propTypes.default.func.isRequired,\n newPageLinkExpanded: _propTypes.default.bool,\n contextId: _propTypes.default.string.isRequired,\n contextType: _propTypes.default.string.isRequired\n};\n\nvar styles = _aphrodite.StyleSheet.create({\n slideDownEnter: {\n maxHeight: 0,\n overflowY: \"hidden\"\n },\n slideDownEnterActive: {\n maxHeight: \"500px\",\n transition: \"max-height 500ms ease-in\"\n },\n slideDownLeave: {\n maxHeight: \"500px\",\n overflowY: \"hidden\"\n },\n slideDownLeaveActive: {\n maxHeight: 0,\n transition: \"max-height 300ms ease-in\"\n },\n container: {\n marginTop: \"5px\"\n },\n icon: {\n verticalAlign: \"middle\"\n }\n});\n\nexports.styles = styles;\nvar _default = LinkToNewPage;\nexports.default = _default;","var defineProperty = require(\"./defineProperty.js\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getComputedStyle;\n\nvar _findDOMNode = _interopRequireDefault(require(\"./findDOMNode\"));\n\nvar _ownerWindow = _interopRequireDefault(require(\"./ownerWindow\"));\n\nvar _canUseDOM = _interopRequireDefault(require(\"./canUseDOM\"));\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 * category: utilities/DOM\n * ---\n *\n * Get the associated CSS properties and values for a\n * specified element\n *\n * @param {ReactComponent|DomNode} el - component or DOM node\n * @returns {Object} object containing css properties and values for the element\n */\nfunction getComputedStyle(el) {\n var style = {};\n\n if (_canUseDOM.default) {\n var node = el && (0, _findDOMNode.default)(el);\n style = node ? (0, _ownerWindow.default)(el).getComputedStyle(node) : {};\n }\n\n return style;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = sessionReducer;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _session = require(\"../actions/session\");\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 .\n */\nvar defaultState = {};\n\nfunction sessionReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _session.RECEIVE_SESSION:\n return (0, _objectSpread2.default)({}, state, action.data);\n\n default:\n return state;\n }\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\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 * category: utilities/themes\n * ---\n * @module ThemeContextTypes\n */\nimport PropTypes from 'prop-types';\nvar CONTEXT_KEY = '@@themeable';\n/**\n * React context types for [themeable](#themeable) components and\n * the [ApplyTheme](#ApplyTheme) component.\n */\n\nexport var ThemeContextTypes = _defineProperty({}, CONTEXT_KEY, PropTypes.object);\n/**\n * create theme context\n * @param {Object} theme an object containing [themeable](#themeable) component themes\n * @param {Boolean} immutable prevent theme overrides?\n */\n\nexport function makeThemeContext(theme, immutable) {\n return _defineProperty({}, CONTEXT_KEY, {\n theme: theme,\n immutable: immutable\n });\n}\n/**\n * get a theme context\n * @param {ReactContext} context React context object\n */\n\nexport function getThemeContext(context) {\n if (context) {\n return context[CONTEXT_KEY];\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* category: utilities/themes\n* ---\n* Parses a CSS string into an AST object\n* @module parseCss\n* @param {String} cssText CSS string to parse\n* @returns {Object} AST for the CSS string\n*/\nexport default function parse() {\n var cssText = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : '';\n var cleaned = clean(cssText);\n return parseLexed(lex(cleaned), cleaned);\n}\n/**\n* CSSRule types (https://developer.mozilla.org/en-US/docs/Web/API/CSSRule)\n*/\n\nexport var ruleTypes = {\n style: 1,\n keyframes: 7,\n media: 4\n /**\n * Removes comments and import statements from a CSS string\n * (to prep for parsing and applying transforms)\n * @param {String} cssText CSS string to parse\n * @returns {String} cleaned CSS string\n */\n\n};\nexport function clean() {\n var text = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : '';\n // remove comments and imports\n return text.replace(/\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim, '').replace(/@import[^;]*;/gim, '');\n}\n\nfunction lex(text) {\n var rootNode = {\n start: 0,\n end: text.length\n };\n var node = rootNode;\n var chars = text.split('');\n chars.forEach(function (char, i) {\n switch (char) {\n case '{':\n {\n if (!node.rules) {\n node.rules = [];\n }\n\n var parent = node;\n var previous = parent.rules[parent.rules.length - 1];\n node = {\n start: i + 1,\n parent: parent,\n previous: previous\n };\n parent.rules.push(node);\n break;\n }\n\n case '}':\n {\n node.end = i + 1;\n node = node.parent || rootNode;\n break;\n }\n\n default:\n {\n break;\n }\n }\n });\n return rootNode;\n}\n\nfunction parseSelector(node, text) {\n var start = node.previous ? node.previous.end : node.parent.start;\n var end = node.start - 1;\n var selector = text.substring(start, end);\n selector = selector.replace(/\\s+/g, ' ');\n selector = selector.substring(selector.lastIndexOf(';') + 1);\n return selector.trim();\n}\n\nfunction parseRuleType(selector) {\n if (selector.indexOf('@') === 0) {\n if (selector.indexOf('@media') === 0) {\n return ruleTypes.media;\n } else if (selector.match(/^@[^\\s]*keyframes/)) {\n return ruleTypes.keyframes;\n }\n } else {\n return ruleTypes.style;\n }\n}\n\nfunction parseLexed(node) {\n var text = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : '';\n\n /* eslint-disable no-param-reassign */\n if (node.parent) {\n node.selector = parseSelector(node, text);\n node.type = parseRuleType(node.selector);\n }\n\n node.cssText = text.substring(node.start, node.end - 1).trim();\n\n if (node.rules && node.rules.length > 0) {\n node.rules = node.rules.map(function (rule) {\n return parseLexed(rule, text);\n });\n }\n /* eslint-enable no-param-reassign */\n\n\n return node;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread\";\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 */\nimport Browser from '@instructure/ui-utils/lib/Browser';\nimport parseCss, { ruleTypes } from './parseCss';\n/**\n* ---\n* category: utilities/themes\n* ---\n* Transform a string of CSS\n* @module transformCss\n* @param {String} cssText CSS to parse and transform\n* @param {Function} transform a transform function to apply to each rule\n* @returns {String} the transformed CSS string\n*/\n\nexport default function transformCss(cssText, transform) {\n var node = parseCss(cssText);\n\n if (typeof transform === 'function') {\n node = transformNode(node, transform);\n }\n\n return toCssText(node);\n}\n/**\n* Checks if a rule is a keyframes selector/block\n* @param {Object} rule\n* @returns {Boolean} true if the rule is a keyframes rule\n*/\n\nexport function isKeyframesSelector(rule) {\n return rule.parent && rule.parent.type === ruleTypes.keyframes;\n}\n/**\n* Parses a string of CSS into an array of rules objects (selector + declaration block)\n* Filters out any vendor rules that don't apply to the current browser\n* @param {String} CSS text to parse\n* @returns {Array} an array of rules objects\n*/\n\nexport function toRules(cssText) {\n var node = parseCss(cssText);\n var rules = [];\n\n if (node.rules && node.rules.length > 0) {\n rules = node.rules.filter(filterUnusedVendorRule).map(function (rule) {\n return toCssText(rule);\n });\n } else {\n var _cssText = toCssText(node);\n\n if (_cssText) {\n rules = [_cssText];\n }\n }\n\n return rules;\n}\n\nfunction transformNode(node, transform) {\n if (!node) {\n return;\n }\n\n if (node.type === ruleTypes.style) {\n return transform(node);\n }\n\n var rules = node.rules || [];\n\n var transformed = _objectSpread({}, node);\n\n transformed.rules = rules.map(function (rule) {\n return transformNode(rule, transform);\n });\n return transformed;\n}\n\nfunction toCssText(node, text) {\n var cssText = '';\n var result = text || '';\n\n if (node.rules && node.rules.length > 0) {\n cssText = node.rules.map(function (rule) {\n return toCssText(rule, cssText);\n }).join('\\n');\n } else {\n cssText = node.cssText.trim();\n\n if (cssText) {\n cssText = \" \".concat(cssText, \"\\n\");\n }\n }\n\n if (cssText) {\n var prefix = node.selector ? \"\".concat(node.selector, \" {\\n\") : '';\n var suffix = node.selector ? '}\\n' : '';\n result += \"\".concat(prefix).concat(cssText).concat(suffix);\n }\n\n return result;\n}\n\nvar filterUnusedVendorRule = function () {\n var ms = '-ms-';\n var moz = '-moz-';\n var webkit = '-webkit-';\n if (Browser.blink) return function (_ref) {\n var selector = _ref.selector;\n return !(selector.includes(ms) || selector.includes(moz));\n };\n if (Browser.webkit) return function (_ref2) {\n var selector = _ref2.selector;\n return !(selector.includes(ms) || selector.includes(moz));\n };\n if (Browser.gecko) return function (_ref3) {\n var selector = _ref3.selector;\n return !(selector.includes(ms) || selector.includes(webkit));\n };\n if (Browser.msedge) return function (_ref4) {\n var selector = _ref4.selector;\n return !selector.includes(moz);\n };\n if (Browser.msie) return function (_ref5) {\n var selector = _ref5.selector;\n return !(selector.includes(moz) || selector.includes(webkit));\n };\n return function () {\n return true;\n };\n}();","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread\";\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 */\nimport transformCss, { isKeyframesSelector } from './transformCss';\n/**\n* ---\n* category: utilities/themes\n* ---\n* Scopes the styles in a CSS string to a DOM node\n* to polyfill CSS variables for [themeable](#themeable) components.\n* @module scopeStylesToNode\n* @param {DOMNode} domNode\n* @param {String} cssText\n* @param {String} scope a unique identifier to use to scope the styles. Applied as a custom html attribute.\n*/\n\nexport default function scopeStylesToNode(domNode, cssText, scope) {\n var styleNode = domNode.querySelector(\"#\".concat(scope));\n var attr = scope.toLowerCase();\n\n if (!cssText) {\n if (styleNode) {\n if (!styleNode.scoped) {\n removeScopeFromDomNode(domNode, attr);\n }\n\n domNode.removeChild(styleNode);\n }\n } else {\n var shouldInsertNode = !styleNode;\n var scopedCSS = cssText;\n\n if (shouldInsertNode) {\n styleNode = document.createElement('style');\n styleNode.setAttribute('scoped', true);\n styleNode.setAttribute('type', 'text/css');\n styleNode.id = scope;\n }\n\n if (!styleNode.scoped) {\n // if scoped styles are not supported\n addScopeToDomNode(domNode, attr);\n scopedCSS = scopeCssText(scopedCSS, \"[\".concat(attr, \"]\"));\n }\n\n if (shouldInsertNode) {\n domNode.insertBefore(styleNode, domNode.firstChild);\n }\n\n if ('textContent' in styleNode) {\n styleNode.textContent = scopedCSS;\n } else {\n styleNode.styleSheet.cssText = scopedCSS;\n }\n }\n}\n/**\n* Transforms a CSS string to add a scoping selector to each rule\n* @param {String} cssText\n* @param {String} scope a unique identifier to use to scope the styles\n*/\n\nexport function scopeCssText(cssText, scope) {\n return transformCss(cssText, function (rule) {\n var transformed = _objectSpread({}, rule);\n\n if (!rule.isScoped) {\n transformed.selector = scopeRule(rule, scope);\n transformed.isScoped = true;\n }\n\n return transformed;\n });\n}\n\nfunction addScopeToDomNode(node, scope) {\n // for SVG nodes children is undefined in IE/Edge\n var children = node.children || node.childNodes;\n\n if (node.setAttribute) {\n node.setAttribute(scope, '');\n }\n\n for (var i = 0; i < children.length; i++) {\n addScopeToDomNode(children[i], scope);\n }\n}\n\nfunction removeScopeFromDomNode(node, scope) {\n var children = node.children || node.childNodes;\n\n if (node.removeAttribute) {\n node.removeAttribute(scope);\n }\n\n for (var i = 0; i < children.length; i++) {\n removeScopeFromDomNode(children[i], scope);\n }\n}\n\nfunction isRootSelector(selector) {\n // eslint-disable-next-line no-useless-escape\n return selector.match(/^(_|html|body|\\:root)/i);\n}\n\nfunction isClassSelector(selector) {\n return selector.match(/^(\\.\\S+)/);\n}\n\nfunction scopeSimpleSelector(selector, scope) {\n var parts = selector.split(':');\n parts[0] += scope;\n return parts.join(':');\n}\n\nfunction scopeCompoundSelector(selector, combinator, scope) {\n if (isRootSelector(selector)) {\n return selector;\n }\n\n var scopedSelector = scope ? scopeSimpleSelector(selector, scope) : selector;\n return combinator + scopedSelector;\n}\n\nfunction scopeComplexSelector(selector, scope) {\n var scopedSelector = selector.trim();\n scopedSelector = scopedSelector.replace( // eslint-disable-next-line no-useless-escape\n /(^|[\\s>+~]+)((?:\\[.+?\\]|[^\\s>+~=\\[])+)/g, function (match, combinator, selector) {\n var offset = arguments[arguments.length - 2];\n\n if (isClassSelector(selector) || offset > 0) {\n return scopeCompoundSelector(selector, combinator, scope);\n } else {\n return selector;\n }\n });\n return scopedSelector;\n}\n\nfunction scopeRule(rule, scope) {\n var parts = rule.selector.split(',');\n\n if (!isKeyframesSelector(rule)) {\n parts = parts.map(function (part) {\n return scopeComplexSelector(part, scope);\n });\n }\n\n return parts.join(',');\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/themes\n * ---\n * Formats a variable as a CSS variable (prefixed with `--`)\n * @param {String} variableName\n * @param {String} prefix an optional prefix to add to the variable name\n * @returns {String} formatted variable name\n */\nexport default function formatVariableName(variableName, prefix) {\n var name = prefix ? \"\".concat(prefix, \"-\").concat(variableName) : variableName;\n return \"--\".concat(name);\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 */\nimport formatVariableName from './formatVariableName';\n/**\n * ---\n * category: utilities/themes\n * ---\n * Formats object keys as a CSS variable (prefixed with `--`)\n * @param {Object} variables\n * @param {String} prefix an optional prefix to add to the variable names\n * @returns {Object} variables object with the keys formatted as CSS variables\n */\n\nexport default function formatVariableNames(variables, prefix) {\n var formatted = {};\n Object.keys(variables || {}).forEach(function (key) {\n formatted[formatVariableName(key, prefix)] = variables[key];\n });\n return formatted;\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/themes\n* ---\n* Return only the theme variables that are different from the default\n* @param {Object} defaultTheme\n* @param {Object} theme\n* @returns {Object} variables that are different from the defaults\n*/\nexport default function pickOverrides(defaultTheme, theme) {\n var overrides = {}; // shortcut if possible\n\n if (defaultTheme === theme || !theme) return overrides; // filter out any properties that have values that are the same as in defaults\n\n Object.keys(theme).forEach(function (key) {\n if (defaultTheme[key] !== theme[key]) {\n overrides[key] = theme[key];\n }\n });\n return overrides;\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 */\nimport canUseDOM from '@instructure/ui-utils/lib/dom/canUseDOM';\nimport Browser from '@instructure/ui-utils/lib/Browser';\nvar cachedReturnVal;\n/**\n * ---\n * category: utilities/DOM\n * ---\n * check if CSS custom properties (CSS variables) are supported\n * @returns {Boolean} true if the DOM is available and CSS variables are supported\n */\n\nexport default function customPropertiesSupported() {\n if (typeof cachedReturnVal !== 'undefined') return cachedReturnVal;\n return cachedReturnVal = canUseDOM && !Browser.msedge && // polyfill edge until improved css variable support\n window.CSS && window.CSS.supports && window.CSS.supports('color', 'var(--primary)');\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 */\nimport formatVariableName from './formatVariableName';\n/**\n* ---\n* category: utilities/themes\n* ---\n* Replace the variables values with the CSS variable\n* @param {Object} variables\n* @param {String} prefix a prefix to add to the variable names\n* @returns {Object} the theme variables object with CSS variables in place of values\n*/\n\nexport default function replaceValuesWithVariableNames(variables, prefix) {\n var map = {};\n Object.keys(variables || {}).forEach(function (variableName) {\n map[variableName] = \"var(\".concat(formatVariableName(variableName, prefix), \")\");\n });\n return map;\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/themes\n * ---\n * Polyfill custom media for [themeable](#themeable) components.\n * Searches for strings like `(--mediumMin)` and replaces it with the\n * variable value (e.g. `variables.mediumMin`)\n * @param {String} cssText the CSS text to apply the custom media to\n * @param {Object|Function} variables object containing custom media variables, or a function that returns the variables object that will be lazy-evaluated only if there are matched media query\n * @returns {String} CSS text with custom media values applied\n */\nexport default function applyCustomMediaToCss(cssText, variables) {\n var matches = getMatches(cssText, /@media\\s*[^(]*\\((--[^)]+)\\)?/g);\n var result = cssText;\n\n if (matches.length > 0) {\n var vars = typeof variables === 'function' ? variables() : variables;\n matches.forEach(function (match) {\n var matcher = new RegExp(match[1].replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'gm');\n result = result.replace(matcher, vars[match[1]]);\n });\n }\n\n return result;\n}\n\nfunction getMatches(str, regex) {\n var matches = [];\n var match;\n var matcher = regex;\n matcher.lastIndex = 0;\n matcher = new RegExp(matcher.source, 'g'); // eslint-disable-next-line no-cond-assign\n\n while ((match = matcher.exec(str)) !== null) {\n matches.push(match);\n\n if (matcher.lastIndex === match.index) {\n matcher.lastIndex++;\n }\n }\n\n return matches;\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 */\nimport replaceValuesWithVariableNames from './replaceValuesWithVariableNames';\nimport formatVariableNames from './formatVariableNames';\nimport applyCustomMediaToCss from './applyCustomMediaToCss';\nimport customPropertiesSupported from './customPropertiesSupported';\n/**\n * ---\n * category: utilities/themes\n * ---\n * Returns the CSS as a string with variables applied\n * @module getCssText\n * @param {Function} template A template function that returns the CSS as a string with variables injected\n * @param {Object} variables JS variables\n * @param {string} prefix CSS variable prefix/namespace\n * @returns {String} css text\n */\n\nexport default function getCssText() {\n if (customPropertiesSupported()) {\n return getCssTextWithVariables.apply(this, arguments);\n } else {\n return getCssTextWithPolyfill.apply(this, arguments);\n }\n}\nexport function getCssTextWithPolyfill(template, variables) {\n // inject variable values\n var cssText = template(variables); // inject valules for @custom-media rules\n\n var customMedia = variables ? formatVariableNames(variables) : {};\n cssText = applyCustomMediaToCss(cssText, customMedia);\n return cssText;\n}\nexport function getCssTextWithVariables(template, variables, prefix) {\n var variableNames = variables ? replaceValuesWithVariableNames(variables, prefix) : {}; // inject the CSS variable names into the style template\n\n var cssText = template(variableNames); // inject values for @custom-media rules (https://www.w3.org/TR/2016/WD-mediaqueries-4-20160126/#custom-mq)\n\n var customMedia = variables ? function () {\n return formatVariableNames(variables);\n } : {};\n cssText = applyCustomMediaToCss(cssText, customMedia);\n var cssVariablesString = variables ? formatVariableNames(variables, prefix) : ''; // append the CSS variables (defaults) to the result\n\n cssText = [cssText, variablesToCSSText(cssVariablesString)].join('\\n');\n return cssText;\n}\n\nfunction variablesToCSSText() {\n var variables = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n var rules = [];\n\n for (var key in variables) {\n if (Object.prototype.hasOwnProperty.call(variables, key) && typeof variables[key] !== 'undefined') {\n rules.push(\"\".concat(key, \": \").concat(variables[key]));\n }\n }\n\n if (rules.length > 0) {\n return \"\\n :root {\\n \".concat(rules.join(';\\n'), \";\\n }\\n \");\n } else {\n return '';\n }\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread\";\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 */\nimport isEmpty from '@instructure/ui-utils/lib/isEmpty';\nimport scopeStylesToNode from './scopeStylesToNode';\nimport formatVariableNames from './formatVariableNames';\nimport pickOverrides from './pickOverrides';\nimport customPropertiesSupported from './customPropertiesSupported';\nimport { getCssTextWithPolyfill } from './getCssText';\n/**\n * ---\n * category: utilities/themes\n * ---\n * Apply theme variables to a DOM node (as CSS variables, with polyfill)\n * @module applyVariablesToNode\n * @param {Element} domNode HTML element to apply variables to using the style attribute\n * @param {Object} variables JS variables\n * @param {Object} defaults Default JS variables\n * @param {String} prefix A variable prefix/namespace\n * @param {Function} template (for IE) A template function that returns the CSS as a string with variables injected\n * @param {String} scope (for IE) A scope to apply to the styles applied to domNode\n */\n\nexport default function applyVariablesToNode() {\n if (customPropertiesSupported()) {\n applyVariablesToNodeStyle.apply(this, arguments);\n } else {\n applyVariablesPolyfillToNode.apply(this, arguments);\n }\n}\nexport function applyVariablesPolyfillToNode(domNode, variables, defaults, prefix, template, scope) {\n if (!domNode || isEmpty(variables)) {\n return;\n }\n\n var overrides = pickOverrides(defaults, variables);\n var cssText = '';\n\n if (overrides && Object.keys(overrides).length > 0) {\n cssText = getCssTextWithPolyfill(template, _objectSpread({}, defaults, variables));\n }\n\n scopeStylesToNode(domNode, cssText, scope);\n}\nexport function applyVariablesToNodeStyle(domNode, variables, defaults, prefix) {\n if (!domNode || isEmpty(variables)) {\n return;\n }\n\n clearCustomProperties(domNode, prefix);\n var overrides = pickOverrides(defaults, variables);\n\n if (overrides && !isEmpty(overrides)) {\n setCustomProperties(domNode, formatVariableNames(overrides, prefix));\n }\n}\n\nfunction clearCustomProperties(domNode, prefix) {\n var styles = domNode.style;\n\n for (var i = styles.length - 1; i >= 0; i--) {\n var prop = styles[i];\n\n if (prop.indexOf(\"--\".concat(prefix, \"-\")) >= 0) {\n domNode.style.removeProperty(prop);\n }\n }\n}\n\nfunction setCustomProperties(domNode, properties) {\n Object.keys(properties).forEach(function (propertyName) {\n var value = properties[propertyName];\n\n if (value) {\n domNode.style.setProperty(propertyName, value);\n }\n });\n}","import { warn as _warn } from \"@instructure/console\";\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 */\nimport canUseDOM from '@instructure/ui-utils/lib/dom/canUseDOM';\nvar hasRan = false;\n/**\n* ---\n* category: utilities/themes\n* ---\n* Sets the document text direction as it's required for themeable component\n* bidirectional styles.\n*/\n\nexport default function setTextDirection() {\n if (hasRan) return;\n hasRan = true;\n\n if (canUseDOM) {\n var dir = document.documentElement.getAttribute('dir');\n\n if (!dir) {\n /*#__PURE__*/\n\n /*#__PURE__*/\n _warn(dir, \"[themeable] component styles require setting a 'dir' attribute on the HTML element.\\n To prevent breaking changes, we'll set it to a default value: 'ltr'.\");\n\n document.documentElement.setAttribute('dir', 'ltr');\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _get from \"@babel/runtime/helpers/esm/get\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread\";\nimport { warn as _warn } from \"@instructure/console\";\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 */\nimport PropTypes from 'prop-types';\nimport decorator from '@instructure/ui-decorator';\nimport shallowEqual from '@instructure/ui-utils/lib/shallowEqual';\nimport isEmpty from '@instructure/ui-utils/lib/isEmpty';\nimport uid from '@instructure/uid';\nimport deepEqual from '@instructure/ui-utils/lib/deepEqual';\nimport findDOMNode from '@instructure/ui-utils/lib/dom/findDOMNode';\nimport { ThemeContextTypes, getThemeContext } from './ThemeContextTypes';\nimport applyVariablesToNode from './utils/applyVariablesToNode';\nimport getCssText from './utils/getCssText';\nimport setTextDirection from './utils/setTextDirection';\nimport { generateComponentTheme, generateTheme, registerComponentTheme } from './registry';\nimport StyleSheet from './StyleSheet';\nimport { toRules } from './utils/transformCss';\n/**\n* ---\n* category: utilities/themes\n* ---\n* A decorator or higher order component that makes a component `themeable`.\n*\n* As a HOC:\n*\n* ```js\n* import themeable from '@instructure/ui-themeable'\n* import styles from 'styles.css'\n* import theme from 'theme.js'\n*\n* class Example extends React.Component {\n* render () {\n* return
    Hello
    \n* }\n* }\n*\n* export default themeable(theme, styles)(Example)\n* ```\n*\n* Note: in the above example, the CSS file must be transformed into a JS object\n* via [babel](#babel-plugin-themeable-styles) or [webpack](#ui-webpack-config) loader.\n*\n* Themeable components inject their themed styles into the document when they are mounted.\n*\n* After the initial mount, a themeable component's theme can be configured explicitly\n* via its `theme` prop or passed via React context using the [ApplyTheme](#ApplyTheme) component.\n*\n* Themeable components register themselves with the [global theme registry](#registry)\n* when they are imported into the application, so you will need to be sure to import them\n* before you mount your application so that the default themed styles can be generated and injected.\n*\n* @param {function} theme - A function that generates the component theme variables.\n* @param {object} styles - The component styles object.\n* @return {function} composes the themeable component.\n*/\n\nvar emptyObj = {};\nvar themeable = decorator(function (ComposedComponent, theme) {\n var styles = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var displayName = ComposedComponent.displayName || ComposedComponent.name;\n var componentId = \"\".concat(styles && styles.componentId || uid());\n\n if (process.env.NODE_ENV !== 'production') {\n componentId = \"\".concat(displayName, \"__\").concat(componentId);\n }\n\n var contextKey = Symbol(componentId);\n var template = styles && typeof styles.template === 'function' ? styles.template : function () {\n /*#__PURE__*/\n\n /*#__PURE__*/\n _warn(false, '[themeable] Invalid styles for: %O. Use @instructure/babel-plugin-themeable-styles to transform CSS imports.', displayName);\n\n return '';\n };\n registerComponentTheme(contextKey, theme);\n\n var getContext = function getContext(context) {\n var themeContext = getThemeContext(context);\n return themeContext || emptyObj;\n };\n\n var getThemeFromContext = function getThemeFromContext(context) {\n var _getContext = getContext(context),\n theme = _getContext.theme;\n\n if (theme && theme[contextKey]) {\n return _objectSpread({}, theme[contextKey]);\n } else {\n return emptyObj;\n }\n };\n\n var generateThemeForContextKey = function generateThemeForContextKey(themeKey, overrides) {\n return generateComponentTheme(contextKey, themeKey, overrides);\n };\n\n var ThemeableComponent =\n /*#__PURE__*/\n function (_ComposedComponent) {\n _inherits(ThemeableComponent, _ComposedComponent);\n\n function ThemeableComponent() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ThemeableComponent);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ThemeableComponent)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this._themeCache = null;\n _this._instanceId = uid(displayName);\n return _this;\n }\n\n _createClass(ThemeableComponent, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n if (!StyleSheet.mounted(componentId)) {\n var defaultTheme = generateThemeForContextKey();\n var cssText = getCssText(template, defaultTheme, componentId);\n StyleSheet.mount(componentId, toRules(cssText));\n }\n\n if (_get(_getPrototypeOf(ThemeableComponent.prototype), \"componentWillMount\", this)) {\n _get(_getPrototypeOf(ThemeableComponent.prototype), \"componentWillMount\", this).call(this);\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.applyTheme();\n setTextDirection();\n\n if (_get(_getPrototypeOf(ThemeableComponent.prototype), \"componentDidMount\", this)) {\n _get(_getPrototypeOf(ThemeableComponent.prototype), \"componentDidMount\", this).call(this);\n }\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState, nextContext) {\n var themeContextWillChange = !deepEqual(getThemeContext(this.context), getThemeContext(nextContext));\n if (themeContextWillChange) return true;\n\n if (_get(_getPrototypeOf(ThemeableComponent.prototype), \"shouldComponentUpdate\", this)) {\n return _get(_getPrototypeOf(ThemeableComponent.prototype), \"shouldComponentUpdate\", this).call(this, nextProps, nextState, nextContext);\n }\n\n return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state, nextState) || !shallowEqual(this.context, nextContext);\n }\n }, {\n key: \"componentWillUpdate\",\n value: function componentWillUpdate(nextProps, nextState, nextContext) {\n if (!deepEqual(nextProps.theme, this.props.theme) || !deepEqual(getThemeFromContext(nextContext), getThemeFromContext(this.context))) {\n this._themeCache = null;\n }\n\n if (_get(_getPrototypeOf(ThemeableComponent.prototype), \"componentWillUpdate\", this)) {\n _get(_getPrototypeOf(ThemeableComponent.prototype), \"componentWillUpdate\", this).call(this, nextProps, nextState, nextContext);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState, prevContext) {\n this.applyTheme();\n\n if (_get(_getPrototypeOf(ThemeableComponent.prototype), \"componentDidUpdate\", this)) {\n _get(_getPrototypeOf(ThemeableComponent.prototype), \"componentDidUpdate\", this).call(this, prevProps, prevState, prevContext);\n }\n }\n }, {\n key: \"applyTheme\",\n value: function applyTheme(DOMNode) {\n if (isEmpty(this.theme)) {\n return;\n }\n\n var defaultTheme = generateThemeForContextKey();\n applyVariablesToNode(DOMNode || findDOMNode(this), // eslint-disable-line react/no-find-dom-node\n this.theme, defaultTheme, componentId, template, // for IE 11\n this.scope // for IE 11\n );\n }\n }, {\n key: \"scope\",\n get: function get() {\n return \"\".concat(componentId, \"__\").concat(this._instanceId);\n }\n }, {\n key: \"theme\",\n get: function get() {\n if (this._themeCache !== null) {\n return this._themeCache;\n }\n\n var _getContext2 = getContext(this.context),\n immutable = _getContext2.immutable;\n\n var theme = getThemeFromContext(this.context);\n\n if (this.props.theme && !isEmpty(this.props.theme)) {\n if (!theme) {\n theme = this.props.theme;\n } else if (immutable) {\n /*#__PURE__*/\n\n /*#__PURE__*/\n _warn(false, '[themeable] Parent theme is immutable. Cannot apply theme: %O', this.props.theme);\n } else {\n theme = isEmpty(theme) ? this.props.theme : _objectSpread({}, theme, this.props.theme);\n }\n } // pass in the component theme as overrides\n\n\n this._themeCache = generateThemeForContextKey(null, theme);\n return this._themeCache;\n }\n }]);\n\n return ThemeableComponent;\n }(ComposedComponent);\n\n ThemeableComponent.componentId = componentId;\n ThemeableComponent.theme = contextKey;\n ThemeableComponent.contextTypes = _objectSpread({}, ComposedComponent.contextTypes, ThemeContextTypes);\n ThemeableComponent.propTypes = _objectSpread({}, ComposedComponent.propTypes, {\n theme: PropTypes.object // eslint-disable-line react/forbid-prop-types\n\n });\n ThemeableComponent.generateTheme = generateThemeForContextKey;\n return ThemeableComponent;\n});\n/**\n* Utility to generate a theme for all themeable components that have been registered.\n* This theme can be applied using the [ApplyTheme](#ApplyTheme) component.\n*\n* @param {String} themeKey The theme to use (for global theme variables across components)\n* @param {Object} overrides theme variable overrides (usually for dynamic/user defined values)\n* @return {Object} A theme config to use with ``\n*/\n\nthemeable.generateTheme = generateTheme;\nexport default themeable;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport { warn as _warn } from \"@instructure/console\";\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 */\nimport { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport mergeDeep from '@instructure/ui-utils/lib/mergeDeep';\nimport ensureSingleChild from '@instructure/ui-utils/lib/react/ensureSingleChild';\nimport { ThemeContextTypes, makeThemeContext, getThemeContext } from '../../ThemeContextTypes';\nimport themeable from '../../themeable';\n/**\n---\ncategory: components/utilities\n---\n**/\n\nvar ApplyTheme =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ApplyTheme, _Component);\n\n function ApplyTheme() {\n _classCallCheck(this, ApplyTheme);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ApplyTheme).apply(this, arguments));\n }\n\n _createClass(ApplyTheme, [{\n key: \"getChildContext\",\n value: function getChildContext() {\n var theme = this.props.theme || {};\n var parentThemeContext = getThemeContext(this.context) || {};\n\n if (parentThemeContext.immutable && parentThemeContext.theme) {\n /*#__PURE__*/\n\n /*#__PURE__*/\n _warn(!this.props.theme, '[ApplyTheme] Parent theme is immutable. Cannot apply theme: %O', this.props.theme);\n\n theme = parentThemeContext.theme;\n } else if (parentThemeContext.theme) {\n theme = mergeDeep(parentThemeContext.theme, theme);\n }\n\n return makeThemeContext(theme, parentThemeContext.immutable || this.props.immutable);\n }\n }, {\n key: \"render\",\n value: function render() {\n return ensureSingleChild(this.props.children);\n }\n }]);\n\n ApplyTheme.displayName = \"ApplyTheme\";\n return ApplyTheme;\n}(Component);\n\nApplyTheme.propTypes = {\n /**\n * set theme variables to override the defaults\n */\n theme: PropTypes.object,\n\n /**\n * accepts only one child (children must be wrapped in a single component/element)\n */\n children: PropTypes.node,\n\n /**\n * Prevent overriding this theme via a child ApplyTheme component or theme props\n */\n immutable: PropTypes.bool\n};\nApplyTheme.defaultProps = {\n theme: void 0,\n children: null,\n immutable: false\n};\nApplyTheme.childContextTypes = ThemeContextTypes;\nApplyTheme.contextTypes = ThemeContextTypes;\nApplyTheme.generateTheme = themeable.generateTheme;\nexport { ApplyTheme as default };","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"DIRECTION\", {\n enumerable: true,\n get: function get() {\n return _TextDirectionContextTypes.DIRECTION;\n }\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf3 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _uiDecorator = _interopRequireDefault(require(\"@instructure/ui-decorator\"));\n\nvar _TextDirectionContextTypes = require(\"./TextDirectionContextTypes\");\n\nvar _getTextDirection = _interopRequireDefault(require(\"./utils/getTextDirection\"));\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* category: utilities/i18n\n* ---\n* A decorator or higher order component that makes a component `bidirectional`.\n*\n* As an HOC:\n*\n* ```js\n* import bidirectional, { DIRECTION } from '@instructure/ui-i18n/lib/bidirectional'\n*\n* class Example extends React.Component {\n* render () {\n* return this.dir === DIRECTION.rtl ?
    rtl
    :
    ltr
    \n* }\n* }\n*\n* export default bidirectional()(Example)\n* ```\n*\n* When used as a child of [ApplyTextDirection](#ApplyTextDirection), bidirectional components use\n* the direction provided in the context. When used without [ApplyTextDirection](#ApplyTextDirection),\n* the direction can be supplied explicitly via the `dir` prop. If no `dir` prop is provided,\n* bidirectional components query the documentElement for the `dir` attribute, defaulting to `ltr`\n* if it is not present.\n*\n* @return {function} composes the bidirectional component.\n*/\nvar _default = (0, _uiDecorator.default)(function (ComposedComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_ComposedComponent) {\n (0, _inherits2.default)(BidirectionalComponent, _ComposedComponent);\n\n function BidirectionalComponent() {\n var _getPrototypeOf2;\n\n var _this;\n\n (0, _classCallCheck2.default)(this, BidirectionalComponent);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(BidirectionalComponent)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this._defaultDirection = (0, _getTextDirection.default)();\n return _this;\n }\n\n (0, _createClass2.default)(BidirectionalComponent, [{\n key: \"dir\",\n get: function get() {\n var context = (0, _TextDirectionContextTypes.getTextDirectionContext)(this.context) || {};\n return context.dir || this.props.dir || this._defaultDirection;\n }\n }, {\n key: \"rtl\",\n get: function get() {\n return this.dir === _TextDirectionContextTypes.DIRECTION.rtl;\n }\n }, {\n key: \"ltr\",\n get: function get() {\n return this.dir === _TextDirectionContextTypes.DIRECTION.ltr;\n }\n }]);\n return BidirectionalComponent;\n }(ComposedComponent), _class.propTypes = (0, _objectSpread2.default)({}, ComposedComponent.propTypes, {\n dir: _propTypes.default.oneOf(Object.values(_TextDirectionContextTypes.DIRECTION))\n }), _class.contextTypes = (0, _objectSpread2.default)({}, ComposedComponent.contextTypes, _TextDirectionContextTypes.TextDirectionContextTypes), _temp;\n});\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getActiveElement;\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 * category: utilities/DOM\n * ---\n *\n * Get the active element of the specified document\n *\n * @param {DomNode} doc - document by default or user specified doc\n * @throws Will throw an error in ie if no active element\n * @return {DomNode} the active element\n */\nfunction getActiveElement(doc) {\n try {\n return (doc || document).activeElement;\n } catch (e) {\n /* ie throws if no active element */\n }\n}","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startLoading = startLoading;\nexports.stopLoading = stopLoading;\nexports.receiveFolder = receiveFolder;\nexports.failFoldersLoad = failFoldersLoad;\nexports.startUpload = startUpload;\nexports.failUpload = failUpload;\nexports.quotaExceeded = quotaExceeded;\nexports.completeUpload = completeUpload;\nexports.openOrCloseUploadForm = openOrCloseUploadForm;\nexports.processedFolderBatch = processedFolderBatch;\nexports.allUploadCompleteActions = allUploadCompleteActions;\nexports.embedUploadResult = embedUploadResult;\nexports.fetchFolders = fetchFolders;\nexports.setUsageRights = setUsageRights;\nexports.getFileUrlIfMissing = getFileUrlIfMissing;\nexports.generateThumbnailUrl = generateThumbnailUrl;\nexports.setAltText = setAltText;\nexports.handleFailures = handleFailures;\nexports.uploadPreflight = uploadPreflight;\nexports.STOP_LOADING = exports.START_LOADING = exports.QUOTA_EXCEEDED_UPLOAD = exports.PROCESSED_FOLDER_BATCH = exports.TOGGLE_UPLOAD_FORM = exports.COMPLETE_FILE_UPLOAD = exports.FAIL_FILE_UPLOAD = exports.START_FILE_UPLOAD = exports.FAIL_FOLDERS_LOAD = exports.RECEIVE_FOLDER = void 0;\n\nvar files = _interopRequireWildcard(require(\"./files\"));\n\nvar images = _interopRequireWildcard(require(\"./images\"));\n\nvar _bridge = _interopRequireDefault(require(\"../../bridge\"));\n\nvar _mimeClass = require(\"../../common/mimeClass\");\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 .\n */\nvar RECEIVE_FOLDER = \"RECEIVE_FOLDER\";\nexports.RECEIVE_FOLDER = \"RECEIVE_FOLDER\";\nvar FAIL_FOLDERS_LOAD = \"FAIL_FOLDERS_LOAD\";\nexports.FAIL_FOLDERS_LOAD = \"FAIL_FOLDERS_LOAD\";\nvar START_FILE_UPLOAD = \"START_FILE_UPLOAD\";\nexports.START_FILE_UPLOAD = \"START_FILE_UPLOAD\";\nvar FAIL_FILE_UPLOAD = \"FAIL_FILE_UPLOAD\";\nexports.FAIL_FILE_UPLOAD = \"FAIL_FILE_UPLOAD\";\nvar COMPLETE_FILE_UPLOAD = \"COMPLETE_FILE_UPLOAD\";\nexports.COMPLETE_FILE_UPLOAD = \"COMPLETE_FILE_UPLOAD\";\nvar TOGGLE_UPLOAD_FORM = \"TOGGLE_UPLOAD_FORM\";\nexports.TOGGLE_UPLOAD_FORM = \"TOGGLE_UPLOAD_FORM\";\nvar PROCESSED_FOLDER_BATCH = \"PROCESSED_FOLDER_BATCH\";\nexports.PROCESSED_FOLDER_BATCH = \"PROCESSED_FOLDER_BATCH\";\nvar QUOTA_EXCEEDED_UPLOAD = \"QUOTA_EXCEEDED_UPLOAD\";\nexports.QUOTA_EXCEEDED_UPLOAD = \"QUOTA_EXCEEDED_UPLOAD\";\nvar START_LOADING = \"START_LOADING\";\nexports.START_LOADING = \"START_LOADING\";\nvar STOP_LOADING = \"STOP_LOADING\";\nexports.STOP_LOADING = \"STOP_LOADING\";\n\nfunction startLoading() {\n return {\n type: START_LOADING\n };\n}\n\nfunction stopLoading() {\n return {\n type: STOP_LOADING\n };\n}\n\nfunction receiveFolder(_ref) {\n var id = _ref.id,\n name = _ref.name,\n parentId = _ref.parentId;\n return {\n type: RECEIVE_FOLDER,\n id: id,\n name: name,\n parentId: parentId\n };\n}\n\nfunction failFoldersLoad(error) {\n return {\n type: FAIL_FOLDERS_LOAD,\n error: error\n };\n}\n\nfunction startUpload(fileMetaProps) {\n return {\n type: START_FILE_UPLOAD,\n file: fileMetaProps\n };\n}\n\nfunction failUpload(error) {\n return {\n type: FAIL_FILE_UPLOAD,\n error: error\n };\n}\n\nfunction quotaExceeded(error) {\n return {\n type: QUOTA_EXCEEDED_UPLOAD,\n error: error\n };\n}\n\nfunction completeUpload(results) {\n return {\n type: COMPLETE_FILE_UPLOAD,\n results: results\n };\n}\n\nfunction openOrCloseUploadForm() {\n return {\n type: TOGGLE_UPLOAD_FORM\n };\n}\n\nfunction processedFolderBatch(_ref2) {\n var folders = _ref2.folders;\n return {\n type: PROCESSED_FOLDER_BATCH,\n folders: folders\n };\n}\n\nfunction allUploadCompleteActions(results, fileMetaProps) {\n var actions = [];\n actions.push(completeUpload(results));\n var fileProps = {\n id: results.id,\n name: results.display_name,\n url: results.preview_url,\n type: fileMetaProps.contentType,\n embed: (0, _mimeClass.fileEmbed)(results)\n };\n actions.push(files.createAddFile(fileProps));\n actions.push(files.createInsertFile(fileMetaProps.parentFolderId, results.id));\n\n if (/^image\\//.test(results[\"content-type\"])) {\n actions.push(images.createAddImage(results));\n }\n\n return actions;\n}\n\nfunction embedUploadResult(results, selectedTabType) {\n var embedData = (0, _mimeClass.fileEmbed)(results);\n\n if (selectedTabType == \"images\" && embedData.type == \"image\" && !(_bridge.default.existingContentToLink() && !_bridge.default.existingContentToLinkIsImg())) {\n _bridge.default.insertImage(results);\n } else {\n _bridge.default.insertLink({\n title: results.display_name,\n href: results.url,\n embed: embedData\n });\n }\n\n return results;\n} // fetches the list of folders to select from when uploading a file\n\n\nfunction fetchFolders(bookmark) {\n return function (dispatch, getState) {\n dispatch(startLoading());\n\n var _getState = getState(),\n source = _getState.source,\n jwt = _getState.jwt,\n upload = _getState.upload,\n host = _getState.host,\n contextId = _getState.contextId,\n contextType = _getState.contextType;\n\n if (bookmark || upload.folders && Object.keys(upload.folders).length === 0) {\n return source.fetchFolders({\n jwt: jwt,\n host: host,\n contextId: contextId,\n contextType: contextType\n }, bookmark).then(function (_ref3) {\n var folders = _ref3.folders,\n bookmark = _ref3.bookmark;\n dispatch(folders.map(receiveFolder));\n\n var _getState2 = getState(),\n upload = _getState2.upload;\n\n dispatch(processedFolderBatch(upload));\n\n if (bookmark) {\n dispatch(fetchFolders(bookmark));\n } else {\n dispatch(stopLoading());\n }\n }).catch(function (error) {\n dispatch(failFoldersLoad(error));\n });\n }\n };\n}\n\nfunction setUsageRights(source, fileMetaProps, results) {\n var usageRights = fileMetaProps.usageRights;\n\n if (usageRights) {\n source.setUsageRights(results.id, usageRights);\n }\n\n return results;\n}\n\nfunction getFileUrlIfMissing(source, results) {\n if (results.url) {\n return Promise.resolve(results);\n }\n\n return source.getFile(results.id).then(function (file) {\n results.url = file.url;\n return results;\n });\n}\n\nfunction readUploadedFileAsDataURL(file) {\n var reader = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new FileReader();\n return new Promise(function (resolve, reject) {\n reader.onerror = function () {\n reader.abort();\n reject(new DOMException(\"Unable to parse file\"));\n };\n\n reader.onload = function () {\n resolve(reader.result);\n };\n\n reader.readAsDataURL(file);\n });\n}\n\nfunction generateThumbnailUrl(results, fileDOMObject, reader) {\n if (/^image\\//.test(results[\"content-type\"])) {\n return readUploadedFileAsDataURL(fileDOMObject, reader).then(function (result) {\n results.thumbnail_url = result;\n return results;\n });\n } else {\n return Promise.resolve(results);\n }\n}\n\nfunction setAltText(altText, results) {\n if (altText) {\n results.alt_text = altText;\n }\n\n return results;\n}\n\nfunction handleFailures(error, dispatch) {\n return error.response.json().then(function (resp) {\n if (resp.message === \"file size exceeds quota\") {\n dispatch(quotaExceeded(error));\n } else {\n dispatch(failUpload(error));\n }\n }).catch(function (error) {\n return dispatch(failUpload(error));\n });\n}\n\nfunction uploadPreflight(tabContext, fileMetaProps) {\n return function (dispatch, getState) {\n var _getState3 = getState(),\n source = _getState3.source,\n jwt = _getState3.jwt,\n host = _getState3.host,\n contextId = _getState3.contextId,\n contextType = _getState3.contextType;\n\n var fileReader = fileMetaProps.fileReader;\n dispatch(startUpload(fileMetaProps));\n return source.preflightUpload(fileMetaProps, {\n jwt: jwt,\n host: host,\n contextId: contextId,\n contextType: contextType\n }).then(function (results) {\n return source.uploadFRD(fileMetaProps.domObject, results);\n }).then(function (results) {\n return setUsageRights(source, fileMetaProps, results);\n }).then(function (results) {\n return getFileUrlIfMissing(source, results);\n }).then(function (results) {\n return generateThumbnailUrl(results, fileMetaProps.domObject, fileReader);\n }).then(function (results) {\n return setAltText(fileMetaProps.altText, results);\n }).then(function (results) {\n return embedUploadResult(results, tabContext);\n }).then(function (results) {\n dispatch(allUploadCompleteActions(results, fileMetaProps));\n }).catch(function (err) {\n return handleFailures(err, dispatch);\n });\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\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 * category: utilities/DOM\n * ---\n *\n * Performs simple test to determine if DOM can be accessed\n * @module\n * @returns {boolean} whether the dom can be used\n */\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\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 */\nfunction _default(_ref) {\n var spacing = _ref.spacing,\n media = _ref.media,\n breakpoints = _ref.breakpoints;\n return (0, _objectSpread2.default)({\n spacingSmall: spacing.small,\n spacingMedium: spacing.medium,\n spacingLarge: spacing.large,\n maxWidth: breakpoints.maxWidth\n }, media);\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = foldersReducer;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _folder = _interopRequireDefault(require(\"./folder\"));\n\nvar actions = _interopRequireWildcard(require(\"../actions/files\"));\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 .\n */\nfunction foldersReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case actions.ADD_FOLDER:\n case actions.RECEIVE_FILES:\n case actions.INSERT_FILE:\n case actions.RECEIVE_SUBFOLDERS:\n case actions.REQUEST_FILES:\n case actions.REQUEST_SUBFOLDERS:\n case actions.TOGGLE:\n return (0, _objectSpread2.default)({}, state, (0, _defineProperty2.default)({}, action.id, (0, _folder.default)(state[action.id], action)));\n\n default:\n return state;\n }\n}","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","(function () {\nvar link = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n var assumeExternalTargets = function (editorSettings) {\n return typeof editorSettings.link_assume_external_targets === 'boolean' ? editorSettings.link_assume_external_targets : false;\n };\n var hasContextToolbar = function (editorSettings) {\n return typeof editorSettings.link_context_toolbar === 'boolean' ? editorSettings.link_context_toolbar : false;\n };\n var getLinkList = function (editorSettings) {\n return editorSettings.link_list;\n };\n var hasDefaultLinkTarget = function (editorSettings) {\n return typeof editorSettings.default_link_target === 'string';\n };\n var getDefaultLinkTarget = function (editorSettings) {\n return editorSettings.default_link_target;\n };\n var getTargetList = function (editorSettings) {\n return editorSettings.target_list;\n };\n var setTargetList = function (editor, list) {\n editor.settings.target_list = list;\n };\n var shouldShowTargetList = function (editorSettings) {\n return getTargetList(editorSettings) !== false;\n };\n var getRelList = function (editorSettings) {\n return editorSettings.rel_list;\n };\n var hasRelList = function (editorSettings) {\n return getRelList(editorSettings) !== undefined;\n };\n var getLinkClassList = function (editorSettings) {\n return editorSettings.link_class_list;\n };\n var hasLinkClassList = function (editorSettings) {\n return getLinkClassList(editorSettings) !== undefined;\n };\n var shouldShowLinkTitle = function (editorSettings) {\n return editorSettings.link_title !== false;\n };\n var allowUnsafeLinkTarget = function (editorSettings) {\n return typeof editorSettings.allow_unsafe_link_target === 'boolean' ? editorSettings.allow_unsafe_link_target : false;\n };\n var Settings = {\n assumeExternalTargets: assumeExternalTargets,\n hasContextToolbar: hasContextToolbar,\n getLinkList: getLinkList,\n hasDefaultLinkTarget: hasDefaultLinkTarget,\n getDefaultLinkTarget: getDefaultLinkTarget,\n getTargetList: getTargetList,\n setTargetList: setTargetList,\n shouldShowTargetList: shouldShowTargetList,\n getRelList: getRelList,\n hasRelList: hasRelList,\n getLinkClassList: getLinkClassList,\n hasLinkClassList: hasLinkClassList,\n shouldShowLinkTitle: shouldShowLinkTitle,\n allowUnsafeLinkTarget: allowUnsafeLinkTarget\n };\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var appendClickRemove = function (link, evt) {\n document.body.appendChild(link);\n link.dispatchEvent(evt);\n document.body.removeChild(link);\n };\n var open$$1 = function (url) {\n if (!global$3.ie || global$3.ie > 10) {\n var link = document.createElement('a');\n link.target = '_blank';\n link.href = url;\n link.rel = 'noreferrer noopener';\n var evt = document.createEvent('MouseEvents');\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n appendClickRemove(link, evt);\n } else {\n var win = window.open('', '_blank');\n if (win) {\n win.opener = null;\n var doc = win.document;\n doc.open();\n doc.write('');\n doc.close();\n }\n }\n };\n var OpenUrl = { open: open$$1 };\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var toggleTargetRules = function (rel, isUnsafe) {\n var rules = ['noopener'];\n var newRel = rel ? rel.split(/\\s+/) : [];\n var toString = function (rel) {\n return global$4.trim(rel.sort().join(' '));\n };\n var addTargetRules = function (rel) {\n rel = removeTargetRules(rel);\n return rel.length ? rel.concat(rules) : rules;\n };\n var removeTargetRules = function (rel) {\n return rel.filter(function (val) {\n return global$4.inArray(rules, val) === -1;\n });\n };\n newRel = isUnsafe ? addTargetRules(newRel) : removeTargetRules(newRel);\n return newRel.length ? toString(newRel) : null;\n };\n var trimCaretContainers = function (text) {\n return text.replace(/\\uFEFF/g, '');\n };\n var getAnchorElement = function (editor, selectedElm) {\n selectedElm = selectedElm || editor.selection.getNode();\n if (isImageFigure(selectedElm)) {\n return editor.dom.select('a[href]', selectedElm)[0];\n } else {\n return editor.dom.getParent(selectedElm, 'a[href]');\n }\n };\n var getAnchorText = function (selection, anchorElm) {\n var text = anchorElm ? anchorElm.innerText || anchorElm.textContent : selection.getContent({ format: 'text' });\n return trimCaretContainers(text);\n };\n var isLink = function (elm) {\n return elm && elm.nodeName === 'A' && elm.href;\n };\n var hasLinks = function (elements) {\n return global$4.grep(elements, isLink).length > 0;\n };\n var isOnlyTextSelected = function (html) {\n if (/]+>[^<]+<\\/a>$/.test(html) || html.indexOf('href=') === -1)) {\n return false;\n }\n return true;\n };\n var isImageFigure = function (node) {\n return node && node.nodeName === 'FIGURE' && /\\bimage\\b/i.test(node.className);\n };\n var link = function (editor, attachState) {\n return function (data) {\n editor.undoManager.transact(function () {\n var selectedElm = editor.selection.getNode();\n var anchorElm = getAnchorElement(editor, selectedElm);\n var linkAttrs = {\n href: data.href,\n target: data.target ? data.target : null,\n rel: data.rel ? data.rel : null,\n class: data.class ? data.class : null,\n title: data.title ? data.title : null\n };\n if (!Settings.hasRelList(editor.settings) && Settings.allowUnsafeLinkTarget(editor.settings) === false) {\n linkAttrs.rel = toggleTargetRules(linkAttrs.rel, linkAttrs.target === '_blank');\n }\n if (data.href === attachState.href) {\n attachState.attach();\n attachState = {};\n }\n if (anchorElm) {\n editor.focus();\n if (data.hasOwnProperty('text')) {\n if ('innerText' in anchorElm) {\n anchorElm.innerText = data.text;\n } else {\n anchorElm.textContent = data.text;\n }\n }\n editor.dom.setAttribs(anchorElm, linkAttrs);\n editor.selection.select(anchorElm);\n editor.undoManager.add();\n } else {\n if (isImageFigure(selectedElm)) {\n linkImageFigure(editor, selectedElm, linkAttrs);\n } else if (data.hasOwnProperty('text')) {\n editor.insertContent(editor.dom.createHTML('a', linkAttrs, editor.dom.encode(data.text)));\n } else {\n editor.execCommand('mceInsertLink', false, linkAttrs);\n }\n }\n });\n };\n };\n var unlink = function (editor) {\n return function () {\n editor.undoManager.transact(function () {\n var node = editor.selection.getNode();\n if (isImageFigure(node)) {\n unlinkImageFigure(editor, node);\n } else {\n editor.execCommand('unlink');\n }\n });\n };\n };\n var unlinkImageFigure = function (editor, fig) {\n var a, img;\n img = editor.dom.select('img', fig)[0];\n if (img) {\n a = editor.dom.getParents(img, 'a[href]', fig)[0];\n if (a) {\n a.parentNode.insertBefore(img, a);\n editor.dom.remove(a);\n }\n }\n };\n var linkImageFigure = function (editor, fig, attrs) {\n var a, img;\n img = editor.dom.select('img', fig)[0];\n if (img) {\n a = editor.dom.create('a', attrs);\n img.parentNode.insertBefore(a, img);\n a.appendChild(img);\n }\n };\n var Utils = {\n link: link,\n unlink: unlink,\n isLink: isLink,\n hasLinks: hasLinks,\n isOnlyTextSelected: isOnlyTextSelected,\n getAnchorElement: getAnchorElement,\n getAnchorText: getAnchorText,\n toggleTargetRules: toggleTargetRules\n };\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.util.XHR');\n\n var attachState = {};\n var createLinkList = function (editor, callback) {\n var linkList = Settings.getLinkList(editor.settings);\n if (typeof linkList === 'string') {\n global$6.send({\n url: linkList,\n success: function (text) {\n callback(editor, JSON.parse(text));\n }\n });\n } else if (typeof linkList === 'function') {\n linkList(function (list) {\n callback(editor, list);\n });\n } else {\n callback(editor, linkList);\n }\n };\n var buildListItems = function (inputList, itemCallback, startItems) {\n var appendItems = function (values, output) {\n output = output || [];\n global$4.each(values, function (item) {\n var menuItem = { text: item.text || item.title };\n if (item.menu) {\n menuItem.menu = appendItems(item.menu);\n } else {\n menuItem.value = item.value;\n if (itemCallback) {\n itemCallback(menuItem);\n }\n }\n output.push(menuItem);\n });\n return output;\n };\n return appendItems(inputList, startItems || []);\n };\n var delayedConfirm = function (editor, message, callback) {\n var rng = editor.selection.getRng();\n global$5.setEditorTimeout(editor, function () {\n editor.windowManager.confirm(message, function (state) {\n editor.selection.setRng(rng);\n callback(state);\n });\n });\n };\n var showDialog = function (editor, linkList) {\n var data = {};\n var selection = editor.selection;\n var dom = editor.dom;\n var anchorElm, initialText;\n var win, onlyText, textListCtrl, linkListCtrl, relListCtrl, targetListCtrl, classListCtrl, linkTitleCtrl, value;\n var linkListChangeHandler = function (e) {\n var textCtrl = win.find('#text');\n if (!textCtrl.value() || e.lastControl && textCtrl.value() === e.lastControl.text()) {\n textCtrl.value(e.control.text());\n }\n win.find('#href').value(e.control.value());\n };\n var buildAnchorListControl = function (url) {\n var anchorList = [];\n global$4.each(editor.dom.select('a:not([href])'), function (anchor) {\n var id = anchor.name || anchor.id;\n if (id) {\n anchorList.push({\n text: id,\n value: '#' + id,\n selected: url.indexOf('#' + id) !== -1\n });\n }\n });\n if (anchorList.length) {\n anchorList.unshift({\n text: 'None',\n value: ''\n });\n return {\n name: 'anchor',\n type: 'listbox',\n label: 'Anchors',\n values: anchorList,\n onselect: linkListChangeHandler\n };\n }\n };\n var updateText = function () {\n if (!initialText && onlyText && !data.text) {\n this.parent().parent().find('#text')[0].value(this.value());\n }\n };\n var urlChange = function (e) {\n var meta = e.meta || {};\n if (linkListCtrl) {\n linkListCtrl.value(editor.convertURL(this.value(), 'href'));\n }\n global$4.each(e.meta, function (value, key) {\n var inp = win.find('#' + key);\n if (key === 'text') {\n if (initialText.length === 0) {\n inp.value(value);\n data.text = value;\n }\n } else {\n inp.value(value);\n }\n });\n if (meta.attach) {\n attachState = {\n href: this.value(),\n attach: meta.attach\n };\n }\n if (!meta.text) {\n updateText.call(this);\n }\n };\n var onBeforeCall = function (e) {\n e.meta = win.toJSON();\n };\n onlyText = Utils.isOnlyTextSelected(selection.getContent());\n anchorElm = Utils.getAnchorElement(editor);\n data.text = initialText = Utils.getAnchorText(editor.selection, anchorElm);\n data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';\n if (anchorElm) {\n data.target = dom.getAttrib(anchorElm, 'target');\n } else if (Settings.hasDefaultLinkTarget(editor.settings)) {\n data.target = Settings.getDefaultLinkTarget(editor.settings);\n }\n if (value = dom.getAttrib(anchorElm, 'rel')) {\n data.rel = value;\n }\n if (value = dom.getAttrib(anchorElm, 'class')) {\n data.class = value;\n }\n if (value = dom.getAttrib(anchorElm, 'title')) {\n data.title = value;\n }\n if (onlyText) {\n textListCtrl = {\n name: 'text',\n type: 'textbox',\n size: 40,\n label: 'Text to display',\n onchange: function () {\n data.text = this.value();\n }\n };\n }\n if (linkList) {\n linkListCtrl = {\n type: 'listbox',\n label: 'Link list',\n values: buildListItems(linkList, function (item) {\n item.value = editor.convertURL(item.value || item.url, 'href');\n }, [{\n text: 'None',\n value: ''\n }]),\n onselect: linkListChangeHandler,\n value: editor.convertURL(data.href, 'href'),\n onPostRender: function () {\n linkListCtrl = this;\n }\n };\n }\n if (Settings.shouldShowTargetList(editor.settings)) {\n if (Settings.getTargetList(editor.settings) === undefined) {\n Settings.setTargetList(editor, [\n {\n text: 'None',\n value: ''\n },\n {\n text: 'New window',\n value: '_blank'\n }\n ]);\n }\n targetListCtrl = {\n name: 'target',\n type: 'listbox',\n label: 'Target',\n values: buildListItems(Settings.getTargetList(editor.settings))\n };\n }\n if (Settings.hasRelList(editor.settings)) {\n relListCtrl = {\n name: 'rel',\n type: 'listbox',\n label: 'Rel',\n values: buildListItems(Settings.getRelList(editor.settings), function (item) {\n if (Settings.allowUnsafeLinkTarget(editor.settings) === false) {\n item.value = Utils.toggleTargetRules(item.value, data.target === '_blank');\n }\n })\n };\n }\n if (Settings.hasLinkClassList(editor.settings)) {\n classListCtrl = {\n name: 'class',\n type: 'listbox',\n label: 'Class',\n values: buildListItems(Settings.getLinkClassList(editor.settings), function (item) {\n if (item.value) {\n item.textStyle = function () {\n return editor.formatter.getCssText({\n inline: 'a',\n classes: [item.value]\n });\n };\n }\n })\n };\n }\n if (Settings.shouldShowLinkTitle(editor.settings)) {\n linkTitleCtrl = {\n name: 'title',\n type: 'textbox',\n label: 'Title',\n value: data.title\n };\n }\n win = editor.windowManager.open({\n title: 'Insert link',\n data: data,\n body: [\n {\n name: 'href',\n type: 'filepicker',\n filetype: 'file',\n size: 40,\n autofocus: true,\n label: 'Url',\n onchange: urlChange,\n onkeyup: updateText,\n onpaste: updateText,\n onbeforecall: onBeforeCall\n },\n textListCtrl,\n linkTitleCtrl,\n buildAnchorListControl(data.href),\n linkListCtrl,\n relListCtrl,\n targetListCtrl,\n classListCtrl\n ],\n onSubmit: function (e) {\n var assumeExternalTargets = Settings.assumeExternalTargets(editor.settings);\n var insertLink = Utils.link(editor, attachState);\n var removeLink = Utils.unlink(editor);\n var resultData = global$4.extend({}, data, e.data);\n var href = resultData.href;\n if (!href) {\n removeLink();\n return;\n }\n if (!onlyText || resultData.text === initialText) {\n delete resultData.text;\n }\n if (href.indexOf('@') > 0 && href.indexOf('//') === -1 && href.indexOf('mailto:') === -1) {\n delayedConfirm(editor, 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?', function (state) {\n if (state) {\n resultData.href = 'mailto:' + href;\n }\n insertLink(resultData);\n });\n return;\n }\n if (assumeExternalTargets === true && !/^\\w+:/i.test(href) || assumeExternalTargets === false && /^\\s*www[\\.|\\d\\.]/i.test(href)) {\n delayedConfirm(editor, 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (state) {\n if (state) {\n resultData.href = 'http://' + href;\n }\n insertLink(resultData);\n });\n return;\n }\n insertLink(resultData);\n }\n });\n };\n var open$1 = function (editor) {\n createLinkList(editor, showDialog);\n };\n var Dialog = { open: open$1 };\n\n var getLink = function (editor, elm) {\n return editor.dom.getParent(elm, 'a[href]');\n };\n var getSelectedLink = function (editor) {\n return getLink(editor, editor.selection.getStart());\n };\n var getHref = function (elm) {\n var href = elm.getAttribute('data-mce-href');\n return href ? href : elm.getAttribute('href');\n };\n var isContextMenuVisible = function (editor) {\n var contextmenu = editor.plugins.contextmenu;\n return contextmenu ? contextmenu.isContextMenuVisible() : false;\n };\n var hasOnlyAltModifier = function (e) {\n return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;\n };\n var gotoLink = function (editor, a) {\n if (a) {\n var href = getHref(a);\n if (/^#/.test(href)) {\n var targetEl = editor.$(href);\n if (targetEl.length) {\n editor.selection.scrollIntoView(targetEl[0], true);\n }\n } else {\n OpenUrl.open(a.href);\n }\n }\n };\n var openDialog = function (editor) {\n return function () {\n Dialog.open(editor);\n };\n };\n var gotoSelectedLink = function (editor) {\n return function () {\n gotoLink(editor, getSelectedLink(editor));\n };\n };\n var leftClickedOnAHref = function (editor) {\n return function (elm) {\n var sel, rng, node;\n if (Settings.hasContextToolbar(editor.settings) && !isContextMenuVisible(editor) && Utils.isLink(elm)) {\n sel = editor.selection;\n rng = sel.getRng();\n node = rng.startContainer;\n if (node.nodeType === 3 && sel.isCollapsed() && rng.startOffset > 0 && rng.startOffset < node.data.length) {\n return true;\n }\n }\n return false;\n };\n };\n var setupGotoLinks = function (editor) {\n editor.on('click', function (e) {\n var link = getLink(editor, e.target);\n if (link && global$1.metaKeyPressed(e)) {\n e.preventDefault();\n gotoLink(editor, link);\n }\n });\n editor.on('keydown', function (e) {\n var link = getSelectedLink(editor);\n if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) {\n e.preventDefault();\n gotoLink(editor, link);\n }\n });\n };\n var toggleActiveState = function (editor) {\n return function () {\n var self = this;\n editor.on('nodechange', function (e) {\n self.active(!editor.readonly && !!Utils.getAnchorElement(editor, e.element));\n });\n };\n };\n var toggleViewLinkState = function (editor) {\n return function () {\n var self = this;\n var toggleVisibility = function (e) {\n if (Utils.hasLinks(e.parents)) {\n self.show();\n } else {\n self.hide();\n }\n };\n if (!Utils.hasLinks(editor.dom.getParents(editor.selection.getStart()))) {\n self.hide();\n }\n editor.on('nodechange', toggleVisibility);\n self.on('remove', function () {\n editor.off('nodechange', toggleVisibility);\n });\n };\n };\n var Actions = {\n openDialog: openDialog,\n gotoSelectedLink: gotoSelectedLink,\n leftClickedOnAHref: leftClickedOnAHref,\n setupGotoLinks: setupGotoLinks,\n toggleActiveState: toggleActiveState,\n toggleViewLinkState: toggleViewLinkState\n };\n\n var register = function (editor) {\n editor.addCommand('mceLink', Actions.openDialog(editor));\n };\n var Commands = { register: register };\n\n var setup = function (editor) {\n editor.addShortcut('Meta+K', '', Actions.openDialog(editor));\n };\n var Keyboard = { setup: setup };\n\n var setupButtons = function (editor) {\n editor.addButton('link', {\n active: false,\n icon: 'link',\n tooltip: 'Insert/edit link',\n onclick: Actions.openDialog(editor),\n onpostrender: Actions.toggleActiveState(editor)\n });\n editor.addButton('unlink', {\n active: false,\n icon: 'unlink',\n tooltip: 'Remove link',\n onclick: Utils.unlink(editor),\n onpostrender: Actions.toggleActiveState(editor)\n });\n if (editor.addContextToolbar) {\n editor.addButton('openlink', {\n icon: 'newtab',\n tooltip: 'Open link',\n onclick: Actions.gotoSelectedLink(editor)\n });\n }\n };\n var setupMenuItems = function (editor) {\n editor.addMenuItem('openlink', {\n text: 'Open link',\n icon: 'newtab',\n onclick: Actions.gotoSelectedLink(editor),\n onPostRender: Actions.toggleViewLinkState(editor),\n prependToContext: true\n });\n editor.addMenuItem('link', {\n icon: 'link',\n text: 'Link',\n shortcut: 'Meta+K',\n onclick: Actions.openDialog(editor),\n stateSelector: 'a[href]',\n context: 'insert',\n prependToContext: true\n });\n editor.addMenuItem('unlink', {\n icon: 'unlink',\n text: 'Remove link',\n onclick: Utils.unlink(editor),\n stateSelector: 'a[href]'\n });\n };\n var setupContextToolbars = function (editor) {\n if (editor.addContextToolbar) {\n editor.addContextToolbar(Actions.leftClickedOnAHref(editor), 'openlink | link unlink');\n }\n };\n var Controls = {\n setupButtons: setupButtons,\n setupMenuItems: setupMenuItems,\n setupContextToolbars: setupContextToolbars\n };\n\n global.add('link', function (editor) {\n Controls.setupButtons(editor);\n Controls.setupMenuItems(editor);\n Controls.setupContextToolbars(editor);\n Actions.setupGotoLinks(editor);\n Commands.register(editor);\n Keyboard.setup(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _SVGIcon = _interopRequireDefault(require(\"@instructure/ui-svg-images/lib/components/SVGIcon\"));\n\nvar _ref =\n/*#__PURE__*/\n_react.default.createElement(\"path\", {\n d: \"M1072.156 537.778c59.802-.707 116.561 14.29 157.774 56.99 36.644 37.974 50.015 91.327 43.72 142.908-9.128 74.877-30.737 144.983-56.093 215.657-27.129 75.623-54.66 151.09-82.332 226.512-44.263 120.685-88.874 241.237-132.65 362.1-10.877 30.018-18.635 62.072-21.732 93.784-3.376 34.532 21.462 51.526 52.648 36.203 24.977-12.278 49.288-28.992 68.845-48.768 31.952-32.31 63.766-64.776 94.805-97.98 15.515-16.605 30.86-33.397 45.912-50.438 11.993-13.583 24.318-34.02 40.779-42.28 31.17-15.642 55.226 22.846 49.582 49.794-6.008 28.736-27.377 53.54-45.014 75.973-54.87 69.795-115.044 137.088-183.308 193.977-67.103 55.77-141.607 103.216-223.428 133.98-26.65 10.016-53.957 18.253-81.713 24.563-53.585 12.192-112.798 11.283-167.56 3.333-40.151-5.828-76.246-31.44-93.264-68.707-29.544-64.698-8.98-144.595 6.295-210.45 20.37-87.77 51.85-170.961 83.13-255.163 33.253-89.517 67.435-178.676 101.726-267.797 31.294-81.296 62.72-162.537 93.69-243.95 8.718-22.923 21.183-45.255 24.845-68.963 6.109-39.537-22.406-74.738-61.985-51.947-92.46 53.244-153.538 141.534-224.52 218.4-16.089 17.43-35.243 39.04-62.907 19.07-29.521-21.308-20.765-48.637-3.987-71.785 93.18-128.58 205.056-248.86 350.86-316.783 60.932-28.386 146.113-57.285 225.882-58.233zM1440 205.244c-.008 169.189-182.758 284.908-335.53 212.455-78.956-37.446-117.358-126.202-98.219-227.002 26.494-139.598 183.78-227.203 315.717-175.87 76.703 29.846 118.04 96.533 118.032 190.417z\",\n fillRule: \"evenodd\",\n stroke: \"none\",\n strokeWidth: \"1\"\n});\n\nvar IconInfoBorderless =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(IconInfoBorderless, _Component);\n\n function IconInfoBorderless() {\n (0, _classCallCheck2.default)(this, IconInfoBorderless);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(IconInfoBorderless).apply(this, arguments));\n }\n\n (0, _createClass2.default)(IconInfoBorderless, [{\n key: \"render\",\n value: function render() {\n return _react.default.createElement(_SVGIcon.default, Object.assign({}, this.props, {\n name: \"IconInfoBorderless\",\n viewBox: \"0 0 1920 1920\"\n }), _ref);\n }\n }]);\n IconInfoBorderless.displayName = \"IconInfoBorderless\";\n return IconInfoBorderless;\n}(_react.Component);\n\nexports.default = IconInfoBorderless;\nIconInfoBorderless.glyphName = 'info-borderless';\nIconInfoBorderless.variant = 'Solid';\nIconInfoBorderless.propTypes = (0, _objectSpread2.default)({}, _SVGIcon.default.propTypes);","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = safeCloneElement;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _console = require(\"@instructure/console\");\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _createChainedFunction = _interopRequireDefault(require(\"../createChainedFunction\"));\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* category: utilities/react\n* ---\n* Clone a React element without overwriting refs.\n* @module safeCloneElement\n* @param {ReactElement} element\n* @param {object} props\n* @return {ReactElement}\n*/\nfunction safeCloneElement(element, props) {\n var cloneRef = props.ref;\n var originalRef = element.ref;\n var originalRefIsAFunction = typeof originalRef === 'function';\n var mergedProps = (0, _objectSpread2.default)({}, props);\n\n if (element.props.style && props.style) {\n // merge with existing styles\n mergedProps.style = (0, _objectSpread2.default)({}, element.props.style, props.style);\n } // prevent overriding existing keys\n\n\n mergedProps.key = element.key || props.key; // Add chained function to preserve existing event handlers\n\n Object.keys(props).forEach(function (prop) {\n // If prop looks like an event handler \"on*\" and either\n // props[props] or element.props[prop] is a function create a chained function.\n // If only one is a function it will just use that function with no extra overhead.\n // This is necessary in cases where props[prop] is `null` or `undefined` which would\n // otherwise unwantedly override element.props[prop].\n if (prop.indexOf('on') === 0 && (typeof props[prop] === 'function' || typeof element.props[prop] === 'function')) {\n mergedProps[prop] = (0, _createChainedFunction.default)(element.props[prop], props[prop]);\n }\n });\n\n for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n children[_key - 2] = arguments[_key];\n }\n\n if (originalRef == null || cloneRef == null) {\n return _react.default.cloneElement.apply(_react.default, [element, mergedProps].concat(children));\n }\n\n /*#__PURE__*/\n (\n /*#__PURE__*/\n 0, _console.warn)(originalRefIsAFunction, \"Cloning an element with a ref that will be overwritten because the ref is not a function. Use a composable callback-style ref instead. Ignoring ref: \".concat(originalRef));\n return _react.default.cloneElement.apply(_react.default, [element, (0, _objectSpread2.default)({}, mergedProps, {\n ref: function ref(component) {\n cloneRef(component);\n originalRef(component);\n }\n })].concat(children));\n}","\nmodule.exports = function chain(){\n var len = arguments.length\n var args = [];\n\n for (var i = 0; i < len; i++)\n args[i] = arguments[i]\n\n args = args.filter(function(fn){ return fn != null })\n\n if (args.length === 0) return undefined\n if (args.length === 1) return args[0]\n\n return args.reduce(function(current, next){\n return function chainedFunction() {\n current.apply(this, arguments);\n next.apply(this, arguments);\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 */\nimport { StyleSheet as GlamorStyleSheet } from 'glamor/lib/sheet';\nvar ENV = process.env.NODE_ENV || 'production';\nvar DEBUG = process.env.DEBUG || ENV === 'development';\nvar DISABLE_SPEEDY_STYLESHEET = Boolean(process.env.DISABLE_SPEEDY_STYLESHEET || DEBUG);\nvar STYLES = {};\nvar THEMEABLE_STYLESHEET;\n/**\n* ---\n* category: utilities/themes\n* ---\n* A utility for the [themeable](#themeable) component HOC that wraps a\n* [Glamor StyleSheet](https://github.com/threepointone/glamor/blob/master/src/sheet.js)\n* @module StyleSheet\n*/\n\nexport default {\n /**\n * Inject the `cssText` into the document\n * @param {String} id - a unique id for the set of styles\n * @param {String} rules - some CSS rules to inject into the document\n */\n mount: function mount(id, rules) {\n if (!STYLES[id]) {\n STYLES[id] = insert(rules);\n }\n },\n\n /**\n * Check if the stylesheet for the given `id` is already mounted\n * @param {String} id - a unique id for the set of styles\n */\n mounted: function mounted(id) {\n return id in STYLES;\n },\n flush: function flush() {\n var sheet = canUseDOM ? window.THEMEABLE_STYLESHEET : THEMEABLE_STYLESHEET;\n\n if (sheet) {\n sheet.flush();\n }\n\n STYLES = {};\n THEMEABLE_STYLESHEET = null;\n\n if (canUseDOM) {\n window.THEMEABLE_STYLESHEET = null;\n }\n }\n};\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction insert(rules) {\n var sheet = inject();\n var inserted = [];\n rules.forEach(function (rule) {\n if (rule) {\n inserted.push(sheet.insert(rule));\n }\n });\n}\n\nfunction inject() {\n var sheet = canUseDOM ? window.THEMEABLE_STYLESHEET : THEMEABLE_STYLESHEET;\n\n if (!sheet) {\n sheet = THEMEABLE_STYLESHEET = createSheet();\n\n if (canUseDOM) {\n window.THEMEABLE_STYLESHEET = sheet;\n }\n }\n\n return sheet;\n}\n\nfunction createSheet() {\n var sheet = new GlamorStyleSheet({\n speedy: !DISABLE_SPEEDY_STYLESHEET\n });\n sheet.inject();\n return sheet;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _dispatchInitEvent = _interopRequireDefault(require(\"./dispatchInitEvent\"));\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 .\n */\ntinymce.create(\"tinymce.plugins.InstructureExternalTools\", {\n init: function init(ed, url) {\n (0, _dispatchInitEvent.default)(ed, document, url);\n },\n getInfo: function getInfo() {\n return {\n longname: \"InstructureExternalTools\",\n author: \"Brian Whitmer\",\n authorurl: \"http://www.instructure.com\",\n infourl: \"http://www.instructure.com\",\n version: tinymce.majorVersion + \".\" + tinymce.minorVersion\n };\n }\n}); // Register plugin\n\ntinymce.PluginManager.add(\"instructure_external_tools\", tinymce.plugins.InstructureExternalTools);","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.renderLink = renderLink;\nexports.renderLinkedImage = renderLinkedImage;\nexports.constructJSXImageElement = constructJSXImageElement;\nexports.renderImage = renderImage;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _server = require(\"react-dom/server\");\n\nvar _formatMessage = _interopRequireDefault(require(\"../format-message\"));\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 .\n */\nfunction renderLink(link) {\n var href = link.href || link.url;\n var title = link.title || (0, _formatMessage.default)({\n default: \"Link\",\n description: \"Fallback title attribute on an unnamed link inserted from the sidebar.\"\n });\n var previewAlt = link[\"data-preview-alt\"];\n var contents = link.contents || title;\n return (0, _server.renderToStaticMarkup)(_react.default.createElement(\"a\", {\n href: href,\n title: title,\n \"data-preview-alt\": previewAlt,\n className: link[\"class\"],\n id: link[\"id\"]\n }, contents));\n}\n\nfunction renderLinkedImage(linkElem, image) {\n var linkHref = linkElem.getAttribute(\"href\");\n return (0, _server.renderToStaticMarkup)(_react.default.createElement(\"a\", {\n href: linkHref,\n \"data-mce-href\": linkHref\n }, constructJSXImageElement(image, {\n doNotLink: true\n })));\n}\n\nfunction constructJSXImageElement(image) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var href = image.href || image.url;\n\n var ret = _react.default.createElement(\"img\", {\n alt: image.title || image.display_name,\n src: href\n });\n\n if (image.alt_text) {\n if (image.alt_text.decorativeSelected) {\n ret = _react.default.createElement(\"img\", {\n alt: \"\",\n \"data-decorative\": \"true\",\n src: href\n });\n } else {\n ret = _react.default.createElement(\"img\", {\n alt: image.alt_text.altText,\n src: href\n });\n }\n }\n\n if (image.link && !opts.doNotLink) {\n ret = _react.default.createElement(\"a\", {\n href: image.link,\n target: \"_blank\"\n }, ret);\n }\n\n return ret;\n}\n\nfunction renderImage(image) {\n return (0, _server.renderToStaticMarkup)(constructJSXImageElement(image));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = generator;\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/* Global variables (colors, typography, spacing, etc.) are defined in lib/themes */\nfunction generator(_ref) {\n var colors = _ref.colors;\n return {\n primaryInverseColor: colors.textLightest,\n primaryColor: colors.textDarkest,\n secondaryColor: colors.textDark,\n secondaryInverseColor: colors.textLight,\n warningColor: colors.textWarning,\n brandColor: colors.textBrand,\n errorColor: colors.textDanger,\n successColor: colors.textSuccess\n };\n}\n\ngenerator.canvas = function (variables) {\n return {\n primaryColor: variables['ic-brand-font-color-dark'],\n brandColor: variables['ic-brand-primary']\n };\n};","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = imagesReducer;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _images = require(\"../actions/images\");\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 .\n */\nfunction imagesReducer() {\n var images = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _images.ADD_IMAGE:\n {\n var id = action.id,\n filename = action.filename,\n display_name = action.display_name,\n preview_url = action.preview_url,\n thumbnail_url = action.thumbnail_url;\n return (0, _objectSpread2.default)({}, images, {\n records: images.records.concat({\n id: id,\n filename: filename,\n display_name: display_name,\n preview_url: preview_url,\n thumbnail_url: thumbnail_url,\n href: preview_url\n })\n });\n }\n\n case _images.REQUEST_IMAGES:\n return (0, _objectSpread2.default)({}, images, {\n requested: true,\n isLoading: true\n });\n\n case _images.RECEIVE_IMAGES:\n {\n var receivedImages = action.imageRecords;\n return (0, _objectSpread2.default)({}, images, {\n records: images.records.concat(receivedImages),\n isLoading: false,\n bookmark: action.bookmark,\n hasMore: !!action.bookmark\n });\n }\n\n default:\n return images;\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mirrorShorthandEdges = mirrorShorthandEdges;\nexports.mirrorShorthandCorners = mirrorShorthandCorners;\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 * category: utilities/themes\n * ---\n * @module mirrorShorthand\n */\n\n/**\n * Mirror shorthand CSS properties for bidirectional text\n *\n * Given a string representing a CSS shorthand for edges,\n * swaps the values such that 4 value syntax is RTL instead\n * of LTR.\n *\n * See the following for further reference:\n * https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties\n *\n * @param {String} values - space delimited string values representing a CSS shorthand\n * @returns {String} a space delimited CSS shorthand string converted to RTL\n */\nfunction mirrorShorthandEdges(values) {\n if (typeof values !== 'string') {\n return;\n }\n\n var valuesArr = values.split(' ');\n\n if (valuesArr.length === 4) {\n // swap the 2nd and 4th values\n var _ref = [valuesArr[3], valuesArr[1]];\n valuesArr[1] = _ref[0];\n valuesArr[3] = _ref[1];\n }\n\n return valuesArr.join(' ');\n}\n/**\n * Convert shorthand CSS properties for corners to rtl\n *\n * Given a string representing a CSS shorthand for corners,\n * swaps the values such that 2,3 and 4 value syntax is rtl\n * instead of ltr.\n *\n * See the following for further reference:\n * https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties\n *\n * @param {String} values - space delimited string values representing a CSS shorthand\n * @returns {String} a space delimited CSS shorthand string converted to RTL\n */\n\n\nfunction mirrorShorthandCorners(values) {\n if (typeof values !== 'string') {\n return;\n }\n\n var valuesArr = values.split(' ');\n\n if (valuesArr.length === 2) {\n // swap the 1st and 2nd values\n var _ref2 = [valuesArr[1], valuesArr[0]];\n valuesArr[0] = _ref2[0];\n valuesArr[1] = _ref2[1];\n }\n\n if (valuesArr.length === 3) {\n // convert 3 value syntax to 4 value syntax\n valuesArr.push(valuesArr[1]);\n }\n\n if (valuesArr.length === 4) {\n var _ref3 = [valuesArr[1], valuesArr[0], valuesArr[3], valuesArr[2]];\n valuesArr[0] = _ref3[0];\n valuesArr[1] = _ref3[1];\n valuesArr[2] = _ref3[2];\n valuesArr[3] = _ref3[3];\n }\n\n return valuesArr.join(' ');\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = generator;\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 */\nfunction generator(_ref) {\n var spacing = _ref.spacing;\n return {\n topMargin: spacing.xxSmall\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _FormPropTypes.default;\n }\n});\n\nvar _FormPropTypes = _interopRequireDefault(require(\"@instructure/ui-form-field/lib/utils/FormPropTypes\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeTextDirectionContext = makeTextDirectionContext;\nexports.getTextDirectionContext = getTextDirectionContext;\nexports.TextDirectionContextTypes = exports.DIRECTION = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\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 * category: utilities/i18n\n * ---\n * @module TextDirectionContextTypes\n */\nvar CONTEXT_KEY = '@@bidirectional';\nvar DIRECTION = {\n ltr: 'ltr',\n rtl: 'rtl'\n /**\n * React context types for [bidirectional](#bidirectional) components and\n * the [ApplyTextDirection](#ApplyTextDirection) component.\n */\n\n};\nexports.DIRECTION = DIRECTION;\nvar TextDirectionContextTypes = (0, _defineProperty2.default)({}, CONTEXT_KEY, _propTypes.default.shape({\n dir: _propTypes.default.oneOf(Object.values(DIRECTION))\n}));\n/**\n * create direction context\n * @param {string} dir\n */\n\nexports.TextDirectionContextTypes = TextDirectionContextTypes;\n\nfunction makeTextDirectionContext(dir) {\n return (0, _defineProperty2.default)({}, CONTEXT_KEY, {\n dir: dir\n });\n}\n/**\n * get a direction context from a context object\n * @param {ReactContext} context React context object\n * @returns {Object} a direction context object\n */\n\n\nfunction getTextDirectionContext(context) {\n if (context) {\n return context[CONTEXT_KEY];\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = generator;\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 */\nfunction generator(_ref) {\n var colors = _ref.colors,\n spacing = _ref.spacing,\n borders = _ref.borders,\n typography = _ref.typography;\n return {\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightNormal,\n lineHeight: typography.lineHeight,\n textColor: colors.textDarkest,\n fontSizeSmall: typography.fontSizeSmall,\n fontSizeMedium: typography.fontSizeMedium,\n fontSizeLarge: typography.fontSizeLarge,\n smallIconSize: '0.5rem',\n mediumIconSize: '0.75rem',\n largeIconSize: '1rem',\n iconMargin: spacing.xxSmall,\n iconColor: colors.textDarkest,\n togglePadding: spacing.xxSmall,\n toggleBorderRadius: borders.radiusMedium,\n toggleBorderWidth: borders.widthMedium,\n toggleBorderStyle: borders.style,\n toggleFocusBorderColor: colors.borderBrand,\n filledBackgroundColor: colors.backgroundLight,\n filledBorderWidth: borders.widthSmall,\n filledBorderStyle: borders.style,\n filledBorderColor: colors.borderMedium,\n filledBorderRadius: borders.radiusMedium,\n filledPadding: spacing.small\n };\n}\n\ngenerator['canvas'] = function (variables) {\n return {\n toggleFocusBorderColor: variables['ic-brand-primary'],\n iconColor: variables['ic-brand-font-color-dark'],\n textColor: variables['ic-brand-font-color-dark']\n };\n};","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _bowser = _interopRequireDefault(require(\"bowser\"));\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 * category: utilities\n * ---\n * A wrapper for [bowser](https://www.npmjs.com/package/bowser) browser\n * detection library.\n */\nvar _default = _bowser.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _canUseDOM = _interopRequireDefault(require(\"@instructure/ui-utils/lib/dom/canUseDOM\"));\n\nvar _getComputedStyle = _interopRequireDefault(require(\"@instructure/ui-utils/lib/dom/getComputedStyle\"));\n\n/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2018 - 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 */\nvar observer;\n/**\n * ---\n * category: utilities/i18n\n * ---\n *\n * Return the direction ('ltr' or 'rtl') of an element\n * @param {Element} element will use the element by default\n * @returns {String} 'ltr' or 'rtl' (or `undefined` if no DOM is present)\n */\n\nvar _default = _canUseDOM.default ? function () {\n /**\n * use a cached value for the default of element's \"dir\" so we don't\n * have to call the expensive getComputedStyle to look it it up every time\n */\n var htmlEl = document.documentElement;\n var htmlElDir = htmlEl.getAttribute('dir') || (0, _getComputedStyle.default)(htmlEl).direction;\n\n if (!observer) {\n observer = new MutationObserver(function () {\n htmlElDir = htmlEl.getAttribute('dir');\n });\n observer.observe(htmlEl, {\n attributes: true\n });\n }\n\n return function (element) {\n if (typeof element === 'undefined' || element === htmlEl) return htmlElDir;\n return (0, _getComputedStyle.default)(element).direction;\n };\n}() : function () {};\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = generator;\n\nvar _color = require(\"@instructure/ui-themeable/lib/utils/color\");\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 */\nfunction generator(_ref) {\n var colors = _ref.colors,\n borders = _ref.borders,\n typography = _ref.typography,\n forms = _ref.forms,\n spacing = _ref.spacing;\n return {\n borderTopColor: colors.borderMedium,\n borderRightColor: colors.borderMedium,\n borderBottomColor: colors.borderMedium,\n borderLeftColor: colors.borderMedium,\n borderWidth: borders.widthSmall,\n borderStyle: borders.style,\n borderRadius: borders.radiusMedium,\n background: colors.backgroundLightest,\n color: colors.textDarkest,\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightNormal,\n padding: spacing.small,\n arrowColor: colors.textDarkest,\n smallHeight: forms.inputHeightSmall,\n smallFontSize: typography.fontSizeSmall,\n smallArrowWidth: '0.75rem',\n mediumHeight: forms.inputHeightMedium,\n mediumFontSize: typography.fontSizeMedium,\n mediumArrowWidth: '0.875rem',\n largeHeight: forms.inputHeightLarge,\n largeFontSize: typography.fontSizeLarge,\n largeArrowWidth: '1rem',\n focusBorderColor: colors.borderBrand,\n focusOutlineColor: (0, _color.alpha)(colors.borderBrand, 50),\n errorBorderColor: colors.borderDanger,\n errorOutlineColor: (0, _color.alpha)(colors.borderDanger, 50)\n };\n}\n\ngenerator.canvas = function (variables) {\n return {\n color: variables['ic-brand-font-color-dark'],\n arrowColor: variables['ic-brand-font-color-dark'],\n focusBorderColor: variables['ic-brand-primary'],\n focusOutlineColor: (0, _color.alpha)(variables['ic-brand-primary'], 50)\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rootFolderIdReducer;\n\nvar _files = require(\"../actions/files\");\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 .\n */\nfunction rootFolderIdReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _files.SET_ROOT:\n return action.id;\n\n default:\n return state;\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = shallowEqual;\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// https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/shallowEqual.js\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * ---\n * category: utilities\n * ---\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n *\n * @module shallowEqual\n *\n * @param {Object} objA\n * @param {Object} objB\n * @returns {Boolean} Returns true when the values of all keys are strictly equal\n*/\n\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n } // Test for A's keys different from B.\n\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n/*\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n\n\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y; // eslint-disable-line no-self-compare\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.changeTab = changeTab;\nexports.changeAccordion = changeAccordion;\nexports.resetUI = resetUI;\nexports.hideSidebar = hideSidebar;\nexports.showSidebar = showSidebar;\nexports.SHOW_SIDEBAR = exports.HIDE_SIDEBAR = exports.RESET_UI = exports.CHANGE_ACCORDION = exports.CHANGE_TAB = void 0;\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 .\n */\nvar CHANGE_TAB = \"CHANGE_TAB\";\nexports.CHANGE_TAB = \"CHANGE_TAB\";\nvar CHANGE_ACCORDION = \"CHANGE_ACCORDION\";\nexports.CHANGE_ACCORDION = \"CHANGE_ACCORDION\";\nvar RESET_UI = \"RESET_UI\";\nexports.RESET_UI = \"RESET_UI\";\nvar HIDE_SIDEBAR = \"HIDE_SIDEBAR\";\nexports.HIDE_SIDEBAR = \"HIDE_SIDEBAR\";\nvar SHOW_SIDEBAR = \"SHOW_SIDEBAR\";\nexports.SHOW_SIDEBAR = \"SHOW_SIDEBAR\";\n\nfunction changeTab(index) {\n return {\n type: CHANGE_TAB,\n index: index\n };\n}\n\nfunction changeAccordion(index) {\n return {\n type: CHANGE_ACCORDION,\n index: index\n };\n}\n\nfunction resetUI() {\n return {\n type: RESET_UI\n };\n}\n\nfunction hideSidebar() {\n return {\n type: HIDE_SIDEBAR\n };\n}\n\nfunction showSidebar() {\n return {\n type: SHOW_SIDEBAR\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = filesReducer;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _files = require(\"../actions/files\");\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 .\n */\nfunction filesReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _files.ADD_FILE:\n return (0, _objectSpread2.default)({}, state, (0, _defineProperty2.default)({}, action.id, {\n id: action.id,\n name: action.name,\n type: action.fileType,\n url: action.url,\n embed: action.embed\n }));\n\n default:\n return state;\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\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 .\n */\nfunction _default(ed, document) {\n var ev = document.createEvent(\"CustomEvent\");\n ev.initCustomEvent(\"tinyRCE/initRecord\", true, true, {\n ed: ed\n });\n document.dispatchEvent(ev);\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\n\nvar _console = require(\"@instructure/console\");\n\n/**\n * ---\n * category: utilities/react\n * ---\n * Get the React element type for a component.\n *\n * @module getElementType\n * @param {ReactComponent} Component\n * @param {Object} props\n * @param {Function} getDefault an optional function that returns the default element type\n * @returns {String} the element type\n */\nfunction _default(Component, props, getDefault) {\n if (props.as && props.as !== Component.defaultProps.as) {\n return props.as;\n }\n\n if (typeof getDefault === 'function') {\n return getDefault();\n }\n\n if (props.href) {\n return 'a';\n }\n\n if (props.to) {\n /*#__PURE__*/\n (\n /*#__PURE__*/\n 0, _console.warn)( // if to prop is used without as\n !props.as, \"[\".concat(Component.displayName, \"] `as` prop should be provided when using `to`\"));\n return 'a';\n }\n\n if (typeof props.onClick === 'function') {\n return 'button';\n }\n\n return Component.defaultProps.as || 'span';\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _escapeHtml = _interopRequireDefault(require(\"escape-html\"));\n\nvar _formatMessage = _interopRequireDefault(require(\"../../../format-message\"));\n\nvar _clickCallback = _interopRequireDefault(require(\"./clickCallback\"));\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 .\n */\ntinymce.create(\"tinymce.plugins.InstructureLinks\", {\n init: function init(ed) {\n ed.addCommand(\"instructureLinks\", _clickCallback.default.bind(this, ed, document));\n ed.addButton(\"instructure_links\", {\n title: (0, _escapeHtml.default)((0, _formatMessage.default)({\n default: \"Link to URL\",\n description: \"Title for RCE button to insert links to a URL\"\n })),\n cmd: \"instructureLinks\",\n icon: \"link\"\n });\n },\n getInfo: function getInfo() {\n return {\n longname: \"InstructureLinks\",\n author: \"Brian Whitmer\",\n authorurl: \"http://www.instructure.com\",\n infourl: \"http://www.instructure.com\",\n version: tinymce.majorVersion + \".\" + tinymce.minorVersion\n };\n }\n}); // Register plugin\n\ntinymce.PluginManager.add(\"instructure_links\", tinymce.plugins.InstructureLinks);","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.shorthandPropType = shorthandPropType;\nexports.default = exports.SPACING = exports.SIZES = exports.BACKGROUNDS = exports.BORDER_RADII = exports.BORDER_WIDTHS = exports.STACKING_TYPES = exports.SHADOW_TYPES = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\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 */\nvar SHADOW_TYPES = {\n resting: 'resting',\n above: 'above',\n topmost: 'topmost',\n none: 'none'\n};\nexports.SHADOW_TYPES = SHADOW_TYPES;\nvar STACKING_TYPES = {\n deepest: 'deepest',\n below: 'below',\n resting: 'resting',\n above: 'above',\n topmost: 'topmost'\n};\nexports.STACKING_TYPES = STACKING_TYPES;\nvar BORDER_WIDTHS = {\n '0': '0',\n none: 'none',\n small: 'small',\n medium: 'medium',\n large: 'large'\n};\nexports.BORDER_WIDTHS = BORDER_WIDTHS;\nvar BORDER_RADII = {\n '0': '0',\n none: 'none',\n small: 'small',\n medium: 'medium',\n large: 'large'\n};\nexports.BORDER_RADII = BORDER_RADII;\nvar BACKGROUNDS = {\n default: 'default',\n inverse: 'inverse',\n transparent: 'transparent'\n};\nexports.BACKGROUNDS = BACKGROUNDS;\nvar SIZES = {\n xSmall: 'x-small',\n small: 'small',\n medium: 'medium',\n large: 'large',\n xLarge: 'x-large'\n};\nexports.SIZES = SIZES;\nvar SPACING = {\n '0': '0',\n none: 'none',\n auto: 'auto',\n xxxSmall: 'xxx-small',\n xxSmall: 'xx-small',\n xSmall: 'x-small',\n small: 'small',\n medium: 'medium',\n large: 'large',\n xLarge: 'x-large',\n xxLarge: 'xx-large'\n /**\n * ---\n * category: utilities/themes\n * ---\n * Custom prop types for themeable React components.\n * @module ThemeablePropTypes\n */\n\n};\nexports.SPACING = SPACING;\nvar _default = {\n shadow: _propTypes.default.oneOf(Object.values(SHADOW_TYPES)),\n stacking: _propTypes.default.oneOf(Object.values(STACKING_TYPES)),\n borderWidth: shorthandPropType(Object.values(BORDER_WIDTHS)),\n borderRadius: shorthandPropType(Object.values(BORDER_RADII)),\n background: _propTypes.default.oneOf(Object.values(BACKGROUNDS)),\n size: _propTypes.default.oneOf(Object.values(SIZES)),\n spacing: shorthandPropType(Object.values(SPACING))\n};\nexports.default = _default;\n\nfunction shorthandPropType(validValues) {\n return function (props, propName, componentName, location) {\n var propValue = props[propName];\n\n if (typeof propValue === 'undefined') {\n return;\n }\n\n var propValueType = typeof propValue;\n\n if (propValueType !== 'string') {\n return new Error(\"Invalid \".concat(location, \" `\").concat(propName, \"` of type `\").concat(propValueType, \"` supplied to `\").concat(componentName, \"`, expected \") + \"a string.\");\n }\n\n var propValues = propValue.split(' ');\n var valuesLength = propValues.length;\n\n if (valuesLength > 0 && valuesLength < 5) {\n for (var i = 0; i < valuesLength; i++) {\n var valueIndex = validValues.indexOf(propValues[i]);\n\n if (valueIndex === -1) {\n return new Error(\"Invalid \".concat(location, \" `\").concat(propName, \"` `\").concat(propValues[i], \"` supplied to `\").concat(componentName, \"`, expected \") + \"a one of `\".concat(validValues.join(', '), \"`.\"));\n }\n }\n } else {\n return new Error(\"Invalid \".concat(location, \" `\").concat(propName, \"` `\").concat(propValue, \"` supplied to `\").concat(componentName, \"`, expected \") + \"between one and four of the following valid values: `\".concat(validValues.join(', '), \"`.\"));\n }\n };\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _formatMessage = _interopRequireDefault(require(\"../../format-message\"));\n\nvar _ScreenReaderContent = _interopRequireDefault(require(\"@instructure/ui-a11y/lib/components/ScreenReaderContent\"));\n\nvar _aphrodite = require(\"aphrodite\");\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 .\n */\nfunction Loading(props) {\n var className = ((0, _aphrodite.css)(styles.loading) + \" \" + props.className).trim();\n return _react.default.createElement(\"span\", {\n className: className\n }, _react.default.createElement(_ScreenReaderContent.default, null, (0, _formatMessage.default)(\"Loading...\")), _react.default.createElement(\"span\", {\n className: (0, _aphrodite.css)(styles.dot, styles.dot0)\n }), _react.default.createElement(\"span\", {\n className: (0, _aphrodite.css)(styles.dot, styles.dot1)\n }), _react.default.createElement(\"span\", {\n className: (0, _aphrodite.css)(styles.dot, styles.dot2)\n }));\n}\n\nLoading.propTypes = {\n className: _propTypes.default.string\n};\nLoading.defaultProps = {\n className: \"\"\n};\nvar opacityKeyframes = {\n \"0%\": {\n opacity: 0\n },\n \"50%\": {\n opacity: 1\n },\n \"100%\": {\n opacity: 0\n }\n};\n\nvar styles = _aphrodite.StyleSheet.create({\n loading: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"space-around\",\n width: \"48px\",\n height: \"10px\"\n },\n dot: {\n animationName: [opacityKeyframes],\n animationDuration: \"1.95s\",\n animationIterationCount: \"infinite\",\n animationDirection: \"linear\",\n background: \"#666\",\n borderRadius: \"8px\",\n width: \"10px\",\n height: \"10px\",\n flex: \"none\"\n },\n dot0: {\n animationDelay: \"-1.8s\"\n },\n dot1: {\n animationDelay: \"-1.6s\"\n },\n dot2: {\n animationDelay: \"-1.4s\"\n }\n});\n\nvar _default = Loading;\nexports.default = _default;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport _get from \"@babel/runtime/helpers/esm/get\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\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 */\nimport { findDOMNode } from 'react-dom';\nimport decorator from '@instructure/ui-decorator';\nexport default decorator(function (ComposedComponent) {\n var displayName = ComposedComponent.displayName || ComposedComponent.name;\n var locator = {\n attribute: 'data-cid',\n value: displayName\n };\n var selector = \"[\".concat(locator.attribute, \"~=\\\"\").concat(locator.value, \"\\\"]\");\n\n var TestableComponent =\n /*#__PURE__*/\n function (_ComposedComponent) {\n _inherits(TestableComponent, _ComposedComponent);\n\n function TestableComponent() {\n _classCallCheck(this, TestableComponent);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(TestableComponent).apply(this, arguments));\n }\n\n _createClass(TestableComponent, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (_get(_getPrototypeOf(TestableComponent.prototype), \"componentDidMount\", this)) {\n var _get2;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n (_get2 = _get(_getPrototypeOf(TestableComponent.prototype), \"componentDidMount\", this)).call.apply(_get2, [this].concat(args));\n }\n\n this.appendLocatorAttribute();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (_get(_getPrototypeOf(TestableComponent.prototype), \"componentDidUpdate\", this)) {\n var _get3;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n (_get3 = _get(_getPrototypeOf(TestableComponent.prototype), \"componentDidUpdate\", this)).call.apply(_get3, [this].concat(args));\n }\n\n this.appendLocatorAttribute();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._testableUnmounted = true;\n\n if (_get(_getPrototypeOf(TestableComponent.prototype), \"componentWillUnmount\", this)) {\n var _get4;\n\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n (_get4 = _get(_getPrototypeOf(TestableComponent.prototype), \"componentWillUnmount\", this)).call.apply(_get4, [this].concat(args));\n }\n\n clearTimeout(this.locatorTimeout);\n }\n }, {\n key: \"appendLocatorAttribute\",\n value: function appendLocatorAttribute() {\n var _this = this;\n\n this.locatorTimeout = setTimeout(function () {\n var node;\n\n if (_this._testableUnmounted) {\n return;\n }\n\n try {\n // Use this.DOMNode for components that render as non-native Portals...\n node = findDOMNode(_this) || _this.DOMNode;\n } catch (e) {}\n\n if (node && node.getAttribute) {\n var attribute = node.getAttribute(locator.attribute);\n var values = typeof attribute === 'string' ? attribute.split(/\\s+/) : [];\n\n if (!values.includes(locator.value)) {\n values.push(locator.value);\n }\n\n node.setAttribute(locator.attribute, values.join(' '));\n }\n });\n }\n }]);\n\n return TestableComponent;\n }(ComposedComponent);\n\n TestableComponent.selector = selector;\n return TestableComponent;\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// based on: https://github.com/ai/nanoid/blob/master/non-secure.js\nvar dictionary = 'getRandomVcryp0123456789bfhijklqsuvwxzABCDEFGHIJKLMNOPQSTUWXYZ';\nvar dictionaryLengthMinus1 = dictionary.length - 1;\n/**\n * ---\n * category: utilities\n * ---\n * Generate a unique (CSS-safe) id string\n *\n * @module uid\n * @param {String} prefix a string to prefix the id for debugging in non-production env\n * @param {Number} length id length (in characters, minus the prefix)\n * @returns {String} a unique id\n */\n\nexport default function uid() {\n var prefix = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : '';\n var length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 12;\n var id = \"u\".concat(_uid('', length - 1));\n\n if (prefix && process.env.NODE_ENV !== 'production') {\n return \"\".concat(prefix, \"__\").concat(id);\n } else {\n return id;\n }\n}\n\nfunction _random(size) {\n var result = [];\n\n while (0 < size--) {\n /* eslint-disable-line no-param-reassign */\n result.push(Math.floor(Math.random() * 256));\n }\n\n return result;\n}\n\nfunction _uid(_ignored) {\n var idLength = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 12;\n var id = '';\n\n var bytes = _random(idLength);\n\n while (0 < idLength--) {\n /* eslint-disable-line no-param-reassign */\n id += dictionary[bytes[idLength] & dictionaryLengthMinus1];\n }\n\n return id;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ms;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _parseUnit3 = _interopRequireDefault(require(\"./parseUnit\"));\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 * category: utilities\n * ---\n * Converts a unit value time combination (s, ms) to a number representing ms\n *\n * @module ms\n *\n * Example inputs:\n * - '100s'\n * - '20ms'\n *\n * @param {String} val\n * @returns {Number} Returns numerical representation of milliseconds\n*/\nfunction ms(val) {\n if (!val || typeof val === 'number') {\n return val;\n }\n\n var _parseUnit = (0, _parseUnit3.default)(val),\n _parseUnit2 = (0, _slicedToArray2.default)(_parseUnit, 2),\n num = _parseUnit2[0],\n unit = _parseUnit2[1];\n\n if (unit === 'ms') {\n return num;\n } else if (unit === 's') {\n return num * 1000;\n } else {\n return num;\n }\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _SVGIcon = _interopRequireDefault(require(\"@instructure/ui-svg-images/lib/components/SVGIcon\"));\n\nvar _ref =\n/*#__PURE__*/\n_react.default.createElement(\"path\", {\n d: \"M.08 568.062l176.13-176.13 783.988 783.865 783.74-783.864 176.13 176.13-959.87 960.118z\",\n fillRule: \"evenodd\",\n stroke: \"none\",\n strokeWidth: \"1\"\n});\n\nvar IconArrowOpenDown =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(IconArrowOpenDown, _Component);\n\n function IconArrowOpenDown() {\n (0, _classCallCheck2.default)(this, IconArrowOpenDown);\n return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(IconArrowOpenDown).apply(this, arguments));\n }\n\n (0, _createClass2.default)(IconArrowOpenDown, [{\n key: \"render\",\n value: function render() {\n return _react.default.createElement(_SVGIcon.default, Object.assign({}, this.props, {\n name: \"IconArrowOpenDown\",\n viewBox: \"0 0 1920 1920\"\n }), _ref);\n }\n }]);\n IconArrowOpenDown.displayName = \"IconArrowOpenDown\";\n return IconArrowOpenDown;\n}(_react.Component);\n\nexports.default = IconArrowOpenDown;\nIconArrowOpenDown.glyphName = 'arrow-open-down';\nIconArrowOpenDown.variant = 'Solid';\nIconArrowOpenDown.propTypes = (0, _objectSpread2.default)({}, _SVGIcon.default.propTypes);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = parseUnit;\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 * category: utilities\n * ---\n * Converts a CSS unit value combination into an array of type [ value, unit ]\n *\n * @module parseUnit\n *\n * Example inputs:\n * - '100px'\n * - '20rem'\n * - '10vh'\n * - '400vmin'\n *\n * @param {string} str\n * @returns {Array} Returns array of shape [ value, unit ]\n*/\nfunction parseUnit(str) {\n var value = \"\".concat(str);\n return [parseFloat(value, 10), // eslint-disable-next-line no-useless-escape\n value.match(/[\\d.\\-\\+]*\\s*(.*)/)[1] || ''];\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hasVisibleChildren;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _matchComponentTypes = _interopRequireDefault(require(\"@instructure/ui-utils/lib/react/matchComponentTypes\"));\n\nvar _ScreenReaderContent = _interopRequireDefault(require(\"../components/ScreenReaderContent\"));\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 * category: utilities/react\n * ---\n * Returns `true` if any of the children are not wrapped with [ScreenReaderContent](#ScreenReaderContent).\n * @param {ReactChildren} children - A react component's children prop\n * @return {boolean} whether any of the children are visible\n */\nfunction hasVisibleChildren(children) {\n var visible = false;\n\n _react.default.Children.forEach(children, function (child) {\n if (child && !(0, _matchComponentTypes.default)(child, [_ScreenReaderContent.default])) {\n visible = true;\n }\n });\n\n return visible;\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _chainFunction = require('chain-function');\n\nvar _chainFunction2 = _interopRequireDefault(_chainFunction);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _ChildMapping = require('./utils/ChildMapping');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n component: _propTypes2.default.any,\n childFactory: _propTypes2.default.func,\n children: _propTypes2.default.node\n};\n\nvar defaultProps = {\n component: 'span',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n\nvar TransitionGroup = function (_React$Component) {\n _inherits(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n _classCallCheck(this, TransitionGroup);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n _this.performAppear = function (key, component) {\n _this.currentlyTransitioningKeys[key] = true;\n\n if (component.componentWillAppear) {\n component.componentWillAppear(_this._handleDoneAppearing.bind(_this, key, component));\n } else {\n _this._handleDoneAppearing(key, component);\n }\n };\n\n _this._handleDoneAppearing = function (key, component) {\n if (component.componentDidAppear) {\n component.componentDidAppear();\n }\n\n delete _this.currentlyTransitioningKeys[key];\n\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n // This was removed before it had fully appeared. Remove it.\n _this.performLeave(key, component);\n }\n };\n\n _this.performEnter = function (key, component) {\n _this.currentlyTransitioningKeys[key] = true;\n\n if (component.componentWillEnter) {\n component.componentWillEnter(_this._handleDoneEntering.bind(_this, key, component));\n } else {\n _this._handleDoneEntering(key, component);\n }\n };\n\n _this._handleDoneEntering = function (key, component) {\n if (component.componentDidEnter) {\n component.componentDidEnter();\n }\n\n delete _this.currentlyTransitioningKeys[key];\n\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n // This was removed before it had fully entered. Remove it.\n _this.performLeave(key, component);\n }\n };\n\n _this.performLeave = function (key, component) {\n _this.currentlyTransitioningKeys[key] = true;\n\n if (component.componentWillLeave) {\n component.componentWillLeave(_this._handleDoneLeaving.bind(_this, key, component));\n } else {\n // Note that this is somewhat dangerous b/c it calls setState()\n // again, effectively mutating the component before all the work\n // is done.\n _this._handleDoneLeaving(key, component);\n }\n };\n\n _this._handleDoneLeaving = function (key, component) {\n if (component.componentDidLeave) {\n component.componentDidLeave();\n }\n\n delete _this.currentlyTransitioningKeys[key];\n\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(_this.props.children);\n\n if (currentChildMapping && currentChildMapping.hasOwnProperty(key)) {\n // This entered again before it fully left. Add it again.\n _this.keysToEnter.push(key);\n } else {\n _this.setState(function (state) {\n var newChildren = _extends({}, state.children);\n delete newChildren[key];\n return { children: newChildren };\n });\n }\n };\n\n _this.childRefs = Object.create(null);\n\n _this.state = {\n children: (0, _ChildMapping.getChildMapping)(props.children)\n };\n return _this;\n }\n\n TransitionGroup.prototype.componentWillMount = function componentWillMount() {\n this.currentlyTransitioningKeys = {};\n this.keysToEnter = [];\n this.keysToLeave = [];\n };\n\n TransitionGroup.prototype.componentDidMount = function componentDidMount() {\n var initialChildMapping = this.state.children;\n for (var key in initialChildMapping) {\n if (initialChildMapping[key]) {\n this.performAppear(key, this.childRefs[key]);\n }\n }\n };\n\n TransitionGroup.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var nextChildMapping = (0, _ChildMapping.getChildMapping)(nextProps.children);\n var prevChildMapping = this.state.children;\n\n this.setState({\n children: (0, _ChildMapping.mergeChildMappings)(prevChildMapping, nextChildMapping)\n });\n\n for (var key in nextChildMapping) {\n var hasPrev = prevChildMapping && prevChildMapping.hasOwnProperty(key);\n if (nextChildMapping[key] && !hasPrev && !this.currentlyTransitioningKeys[key]) {\n this.keysToEnter.push(key);\n }\n }\n\n for (var _key in prevChildMapping) {\n var hasNext = nextChildMapping && nextChildMapping.hasOwnProperty(_key);\n if (prevChildMapping[_key] && !hasNext && !this.currentlyTransitioningKeys[_key]) {\n this.keysToLeave.push(_key);\n }\n }\n\n // If we want to someday check for reordering, we could do it here.\n };\n\n TransitionGroup.prototype.componentDidUpdate = function componentDidUpdate() {\n var _this2 = this;\n\n var keysToEnter = this.keysToEnter;\n this.keysToEnter = [];\n keysToEnter.forEach(function (key) {\n return _this2.performEnter(key, _this2.childRefs[key]);\n });\n\n var keysToLeave = this.keysToLeave;\n this.keysToLeave = [];\n keysToLeave.forEach(function (key) {\n return _this2.performLeave(key, _this2.childRefs[key]);\n });\n };\n\n TransitionGroup.prototype.render = function render() {\n var _this3 = this;\n\n // TODO: we could get rid of the need for the wrapper node\n // by cloning a single child\n var childrenToRender = [];\n\n var _loop = function _loop(key) {\n var child = _this3.state.children[key];\n if (child) {\n var isCallbackRef = typeof child.ref !== 'string';\n var factoryChild = _this3.props.childFactory(child);\n var ref = function ref(r) {\n _this3.childRefs[key] = r;\n };\n\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(isCallbackRef, 'string refs are not supported on children of TransitionGroup and will be ignored. ' + 'Please use a callback ref instead: https://facebook.github.io/react/docs/refs-and-the-dom.html#the-ref-callback-attribute') : void 0;\n\n // Always chaining the refs leads to problems when the childFactory\n // wraps the child. The child ref callback gets called twice with the\n // wrapper and the child. So we only need to chain the ref if the\n // factoryChild is not different from child.\n if (factoryChild === child && isCallbackRef) {\n ref = (0, _chainFunction2.default)(child.ref, ref);\n }\n\n // You may need to apply reactive updates to a child as it is leaving.\n // The normal React way to do it won't work since the child will have\n // already been removed. In case you need this behavior you can provide\n // a childFactory function to wrap every child, even the ones that are\n // leaving.\n childrenToRender.push(_react2.default.cloneElement(factoryChild, {\n key: key,\n ref: ref\n }));\n }\n };\n\n for (var key in this.state.children) {\n _loop(key);\n }\n\n // Do not forward TransitionGroup props to primitive DOM nodes\n var props = _extends({}, this.props);\n delete props.transitionLeave;\n delete props.transitionName;\n delete props.transitionAppear;\n delete props.transitionEnter;\n delete props.childFactory;\n delete props.transitionLeaveTimeout;\n delete props.transitionEnterTimeout;\n delete props.transitionAppearTimeout;\n delete props.component;\n\n return _react2.default.createElement(this.props.component, props, childrenToRender);\n };\n\n return TransitionGroup;\n}(_react2.default.Component);\n\nTransitionGroup.displayName = 'TransitionGroup';\n\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\nTransitionGroup.defaultProps = defaultProps;\n\nexports.default = TransitionGroup;\nmodule.exports = exports['default'];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _classnames2 = _interopRequireDefault(require(\"classnames\"));\n\nvar _uiThemeable = _interopRequireDefault(require(\"@instructure/ui-themeable\"));\n\nvar _uid = _interopRequireDefault(require(\"@instructure/uid\"));\n\nvar _passthroughProps = require(\"@instructure/ui-utils/lib/react/passthroughProps\");\n\nvar _uiTestable = _interopRequireDefault(require(\"@instructure/ui-testable\"));\n\nvar _theme = _interopRequireDefault(require(\"./theme\"));\n\nvar _dec, _dec2, _class, _class2, _temp;\n\nvar styles = {\n componentId: 'fTsnK',\n template: function template(theme) {\n return \"\\n\\n.fTsnK_bGBk{color:inherit;fill:currentColor}\\n\\n.fTsnK_eXrk{display:inline-block}\\n\\n.fTsnK_cRbP{display:block}\\n\\n.fTsnK_eCSh{color:\".concat(theme.primaryColor || 'inherit', \"}\\n\\n.fTsnK_buuG{color:\").concat(theme.secondaryColor || 'inherit', \"}\\n\\n.fTsnK_bFtJ{color:\").concat(theme.primaryInverseColor || 'inherit', \"}\\n\\n.fTsnK_dsSB{color:\").concat(theme.secondaryInverseColor || 'inherit', \"}\\n\\n.fTsnK_eZal{color:\").concat(theme.successColor || 'inherit', \"}\\n\\n.fTsnK_cVUo{color:\").concat(theme.brandColor || 'inherit', \"}\\n\\n.fTsnK_eScd{color:\").concat(theme.warningColor || 'inherit', \"}\\n\\n.fTsnK_cpQl{color:\").concat(theme.errorColor || 'inherit', \"}\");\n },\n 'root': 'fTsnK_bGBk',\n 'inline': 'fTsnK_eXrk',\n 'block': 'fTsnK_cRbP',\n 'color--primary': 'fTsnK_eCSh',\n 'color--secondary': 'fTsnK_buuG',\n 'color--primary-inverse': 'fTsnK_bFtJ',\n 'color--secondary-inverse': 'fTsnK_dsSB',\n 'color--success': 'fTsnK_eZal',\n 'color--brand': 'fTsnK_cVUo',\n 'color--warning': 'fTsnK_eScd',\n 'color--error': 'fTsnK_cpQl'\n};\nvar InlineSVG = (\n/**\n---\ncategory: components/utilities\n---\n**/\n_dec = (0, _uiTestable.default)(), _dec2 = (0, _uiThemeable.default)(_theme.default, styles), _dec(_class = _dec2(_class = (_temp = _class2 =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(InlineSVG, _Component);\n\n function InlineSVG() {\n var _this;\n\n (0, _classCallCheck2.default)(this, InlineSVG);\n _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(InlineSVG).call(this));\n _this.titleId = (0, _uid.default)('InlineSVG-title');\n _this.descId = (0, _uid.default)('InlineSVG-desc');\n return _this;\n }\n\n (0, _createClass2.default)(InlineSVG, [{\n key: \"renderTitle\",\n value: function renderTitle() {\n var title = this.props.title;\n return title ? _react.default.createElement(\"title\", {\n id: this.titleId\n }, title) : null;\n }\n }, {\n key: \"renderDesc\",\n value: function renderDesc(desc) {\n return desc ? _react.default.createElement(\"desc\", {\n id: this.descId\n }, desc) : null;\n }\n }, {\n key: \"renderContent\",\n value: function renderContent() {\n if (this.props.src) {\n var src = InlineSVG.prepareSrc(this.props.src);\n return _react.default.createElement(\"g\", {\n role: \"presentation\",\n dangerouslySetInnerHTML: {\n __html: src\n } // eslint-disable-line react/no-danger\n\n });\n } else {\n return _react.default.createElement(\"g\", {\n role: \"presentation\"\n }, this.props.children);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classnames;\n\n var _this$props = this.props,\n style = _this$props.style,\n width = _this$props.width,\n height = _this$props.height,\n title = _this$props.title,\n description = _this$props.description,\n focusable = _this$props.focusable,\n children = _this$props.children,\n src = _this$props.src,\n color = _this$props.color,\n props = (0, _objectWithoutProperties2.default)(_this$props, [\"style\", \"width\", \"height\", \"title\", \"description\", \"focusable\", \"children\", \"src\", \"color\"]);\n return _react.default.createElement(\"svg\", Object.assign({}, parseAttributes(this.props.src), (0, _passthroughProps.omitProps)(this.props, InlineSVG.propTypes, ['inline']), {\n style: (0, _objectSpread2.default)({}, style, {\n width: width,\n height: height\n }),\n width: width || '1em',\n height: height || '1em',\n \"aria-hidden\": title ? null : 'true',\n \"aria-labelledby\": this.labelledBy,\n role: this.role,\n focusable: focusable ? 'true' : 'false',\n className: (0, _classnames2.default)((_classnames = {}, (0, _defineProperty2.default)(_classnames, styles.root, true), (0, _defineProperty2.default)(_classnames, styles.inline, this.props.inline), (0, _defineProperty2.default)(_classnames, styles.block, !this.props.inline), (0, _defineProperty2.default)(_classnames, props.className, props.className), (0, _defineProperty2.default)(_classnames, styles[\"color--\".concat(color)], color !== 'inherit'), _classnames))\n }), this.renderTitle(), this.renderDesc(description), this.renderContent());\n }\n }, {\n key: \"role\",\n get: function get() {\n if (this.props.title) {\n return 'img';\n } else {\n return 'presentation';\n }\n }\n }, {\n key: \"labelledBy\",\n get: function get() {\n var ids = [];\n\n if (this.props.title) {\n ids.push(this.titleId);\n }\n\n if (this.props.description) {\n ids.push(this.descId);\n }\n\n return ids.length > 0 ? ids.join(' ') : null;\n }\n }]);\n InlineSVG.displayName = \"InlineSVG\";\n return InlineSVG;\n}(_react.Component), _class2.propTypes = {\n children: _propTypes.default.node,\n src: _propTypes.default.string,\n title: _propTypes.default.string,\n description: _propTypes.default.string,\n focusable: _propTypes.default.bool,\n width: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n height: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),\n inline: _propTypes.default.bool,\n color: _propTypes.default.oneOf(['inherit', 'primary', 'secondary', 'primary-inverse', 'secondary-inverse', 'success', 'error', 'warning', 'brand'])\n}, _class2.defaultProps = {\n focusable: false,\n src: '',\n title: '',\n description: '',\n inline: true,\n children: null,\n width: void 0,\n height: void 0,\n color: 'inherit'\n}, _class2.prepareSrc = function (src) {\n var pattern = /]*>((.|[\\n\\r])*)<\\/svg>/;\n var matches = pattern.exec(src);\n return matches ? matches[1] : src;\n}, _temp)) || _class) || _class);\nexports.default = InlineSVG;\n\nfunction parseAttributes(src) {\n var attributes = {};\n var SVGAttributesRegExp = /]*)\\s*>/;\n var namesAndValuesRegExp = /(\\S+)=[\"']?((?:.(?![\"']?\\s+(?:\\S+)=|[>\"']))+.)[\"']?/g;\n\n if (typeof src === 'string') {\n var attributesMatches = SVGAttributesRegExp.exec(src);\n var attributesString = attributesMatches ? attributesMatches[1] : '';\n var excludes = ['xmlns', 'xmlns:xlink', 'version'];\n var match = namesAndValuesRegExp.exec(attributesString);\n\n while (match != null) {\n if (excludes.indexOf(match[1]) === -1) {\n attributes[match[1]] = match[2] || (match[3] ? match[3] : match[4] ? match[4] : match[5]) || match[1]; // eslint-disable-line no-nested-ternary, max-len\n }\n\n match = namesAndValuesRegExp.exec(attributesString);\n }\n }\n\n return attributes;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = generator;\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 */\nfunction generator(_ref) {\n var colors = _ref.colors,\n typography = _ref.typography;\n return {\n colorHint: colors.textDarkest,\n colorError: colors.textDanger,\n colorSuccess: colors.textSuccess,\n fontFamily: typography.fontFamily,\n fontWeight: typography.fontWeightNormal,\n fontSize: typography.fontSizeSmall,\n lineHeight: typography.lineHeight\n };\n}\n\ngenerator.canvas = function (variables) {\n return {\n colorHint: variables['ic-brand-font-color-dark']\n };\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\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 * category: utilities/form\n * ---\n * Custom prop types for React components.\n * @module FormPropTypes\n */\nvar _default = {\n message: _propTypes.default.shape({\n text: _propTypes.default.string,\n type: _propTypes.default.oneOf(['error', 'hint', 'success', 'screenreader-only'])\n })\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = pickOverrides;\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* category: utilities/themes\n* ---\n* Return only the theme variables that are different from the default\n* @param {Object} defaultTheme\n* @param {Object} theme\n* @returns {Object} variables that are different from the defaults\n*/\nfunction pickOverrides(defaultTheme, theme) {\n var overrides = {}; // shortcut if possible\n\n if (defaultTheme === theme || !theme) return overrides; // filter out any properties that have values that are the same as in defaults\n\n Object.keys(theme).forEach(function (key) {\n if (defaultTheme[key] !== theme[key]) {\n overrides[key] = theme[key];\n }\n });\n return overrides;\n}","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _Loading = _interopRequireDefault(require(\"./Loading\"));\n\nvar _formatMessage = _interopRequireDefault(require(\"../../format-message\"));\n\nvar _Button = _interopRequireDefault(require(\"@instructure/ui-buttons/lib/components/Button\"));\n\nvar _aphrodite = require(\"aphrodite\");\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 .\n */\nvar LoadMore =\n/*#__PURE__*/\nfunction (_Component) {\n (0, _inherits2.default)(LoadMore, _Component);\n\n function LoadMore(props) {\n var _this;\n\n (0, _classCallCheck2.default)(this, LoadMore);\n _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(LoadMore).call(this, props));\n\n _this.loadMore = function (ev) {\n _this.setState({\n nextFocus: _this.focusableElements().length\n });\n\n _this.props.loadMore(ev);\n };\n\n _this.state = {\n nextFocus: Infinity\n };\n return _this;\n }\n\n (0, _createClass2.default)(LoadMore, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var focusable = this.focusableElements();\n\n if (focusable.length > this.state.nextFocus) {\n var next = focusable[this.state.nextFocus];\n\n if (next) {\n next.focus();\n }\n }\n }\n }, {\n key: \"focusableElements\",\n value: function focusableElements() {\n if (!this.props.focusSelector) {\n return [];\n }\n\n return this.refs.parent.querySelectorAll(this.props.focusSelector);\n }\n }, {\n key: \"render\",\n value: function render() {\n var hasChildren = _react.default.Children.count(this.props.children) > 0;\n var opacity = this.props.isLoading ? 1 : 0;\n return _react.default.createElement(\"div\", {\n ref: \"parent\"\n }, this.props.children, this.props.hasMore && !this.props.isLoading && _react.default.createElement(\"div\", {\n className: (0, _aphrodite.css)(styles.button)\n }, _react.default.createElement(_Button.default, {\n variant: \"link\",\n onClick: this.loadMore,\n fluidWidth: true\n }, (0, _formatMessage.default)(\"Load more results\"))), hasChildren && this.props.hasMore && _react.default.createElement(\"div\", {\n \"aria-hidden\": !this.props.isLoading,\n className: (0, _aphrodite.css)(styles.loader),\n style: {\n opacity: opacity\n }\n }, _react.default.createElement(_Loading.default, null)));\n }\n }]);\n LoadMore.displayName = \"LoadMore\";\n return LoadMore;\n}(_react.Component);\n\nLoadMore.propTypes = {\n hasMore: _propTypes.default.bool.isRequired,\n loadMore: _propTypes.default.func.isRequired,\n isLoading: _propTypes.default.bool,\n focusSelector: _propTypes.default.string,\n children: _propTypes.default.any\n /* Immutable.List is not a valid 'node' */\n\n};\n\nvar styles = _aphrodite.StyleSheet.create({\n loader: {\n display: \"block\",\n margin: \"20px 0 40px 0\",\n clear: \"both\",\n paddingRight: \"30px\"\n /* needed for centering */\n ,\n textAlign: \"center\",\n fontSize: \"13px\",\n height: \"15px\",\n color: \"#666\"\n },\n button: {\n textAlign: \"center\",\n marginTop: \"1em\",\n clear: \"both\"\n }\n});\n\nexports.styles = styles;\nvar _default = LoadMore;\nexports.default = _default;","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"tinymce-light-skin\"] = factory();\n\telse\n\t\troot[\"tinymce-light-skin\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 14);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function() {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\tvar result = [];\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar item = this[i];\n\t\t\tif(item[2]) {\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\n\t\t\t} else {\n\t\t\t\tresult.push(item[1]);\n\t\t\t}\n\t\t}\n\t\treturn result.join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nvar stylesInDom = {},\n\tmemoize = function(fn) {\n\t\tvar memo;\n\t\treturn function () {\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\treturn memo;\n\t\t};\n\t},\n\tisOldIE = memoize(function() {\n\t\treturn /msie [6-9]\\b/.test(self.navigator.userAgent.toLowerCase());\n\t}),\n\tgetHeadElement = memoize(function () {\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t}),\n\tsingletonElement = null,\n\tsingletonCounter = 0,\n\tstyleElementsInsertedAtTop = [];\n\nmodule.exports = function(list, options) {\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of