@instructure/canvas-rce 7.3.1 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +65 -0
- package/{es/rce/plugins/shared/ai_tools/index.js → __mocks__/@instructure/ui-media-player/_mockUiMediaPlayer.js} +4 -4
- package/__tests__/common/mimeClass.test.js +25 -1
- package/__tests__/rcs/api.test.js +280 -251
- package/es/canvasFileBrowser/FileBrowser.d.ts +2 -2
- package/es/canvasFileBrowser/FileBrowser.js +8 -7
- package/es/common/mimeClass.js +3 -1
- package/es/defaultTinymceConfig.js +47 -49
- package/es/enhance-user-content/enhance_user_content.js +6 -8
- package/es/enhance-user-content/index.d.ts +3 -1
- package/es/enhance-user-content/index.js +3 -1
- package/es/enhance-user-content/youtube_overlay.js +18 -0
- package/es/getThemeVars.d.ts +1 -1
- package/es/getThemeVars.js +23 -26
- package/es/rce/KeyboardShortcutModal.js +1 -1
- package/es/rce/RCE.d.ts +9 -0
- package/es/rce/RCE.js +4 -0
- package/es/rce/RCEGlobals.d.ts +2 -0
- package/es/rce/RCEGlobals.js +1 -0
- package/es/rce/RCEVariants.d.ts +1 -2
- package/es/rce/RCEVariants.js +1 -2
- package/es/rce/RCEWrapper.d.ts +6 -16
- package/es/rce/RCEWrapper.js +18 -87
- package/es/rce/RCEWrapper.utils.d.ts +1 -1
- package/es/rce/RCEWrapperProps.d.ts +2 -1
- package/es/rce/RCEWrapperProps.js +2 -1
- package/es/rce/StatusBar.d.ts +0 -1
- package/es/rce/StatusBar.js +3 -28
- package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.d.ts +2 -1
- package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +3 -1
- package/es/rce/plugins/instructure_equation/EquationEditorModal/index.d.ts +1 -0
- package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +12 -2
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +2 -2
- package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +3 -3
- package/es/rce/plugins/instructure_icon_maker/svg/constants.d.ts +20 -5
- package/es/rce/plugins/instructure_icon_maker/svg/utils.d.ts +1 -1
- package/es/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +2 -2
- package/es/rce/plugins/instructure_image/ImageEmbedOptions.d.ts +0 -2
- package/es/rce/plugins/instructure_image/ImageEmbedOptions.js +2 -9
- package/es/rce/plugins/instructure_paste/plugin.js +18 -12
- package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.d.ts +1 -1
- package/es/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.d.ts +4 -0
- package/es/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +4 -0
- package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.d.ts +11 -2
- package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +92 -10
- package/es/rce/plugins/instructure_record/AudioOptionsTray/index.d.ts +13 -1
- package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +216 -24
- package/es/rce/plugins/instructure_record/MediaPanel/index.js +16 -5
- package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.d.ts +14 -13
- package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +110 -39
- package/es/rce/plugins/instructure_record/VideoOptionsTray/index.d.ts +11 -1
- package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +242 -67
- package/es/rce/plugins/instructure_record/clickCallback.js +19 -4
- package/es/rce/plugins/instructure_record/mediaTranslations.js +1 -1
- package/es/rce/plugins/instructure_record/playerLayoutOptions.d.ts +25 -0
- package/es/rce/plugins/instructure_record/playerLayoutOptions.js +91 -0
- package/es/rce/plugins/instructure_record/plugin.js +2 -5
- package/es/rce/plugins/instructure_record/utils.d.ts +3 -0
- package/es/rce/plugins/instructure_record/utils.js +31 -0
- package/es/rce/plugins/instructure_studio_media_options/plugin.js +82 -26
- package/es/rce/plugins/shared/ContentSelection.d.ts +6 -1
- package/es/rce/plugins/shared/ContentSelection.js +15 -6
- package/es/rce/plugins/shared/DimensionsInput/DimensionInput.js +1 -2
- package/es/rce/plugins/shared/DimensionsInput/index.js +11 -12
- package/es/rce/plugins/shared/DimensionsInput/useDimensionsState.d.ts +1 -1
- package/es/rce/plugins/shared/DimensionsInput/useDimensionsState.js +4 -3
- package/es/rce/plugins/shared/StudioLtiSupportUtils.d.ts +27 -6
- package/es/rce/plugins/shared/StudioLtiSupportUtils.js +82 -13
- package/es/rce/plugins/shared/Upload/UploadFile.js +1 -8
- package/es/rce/style.d.ts +2 -1
- package/es/rce/style.js +4 -2
- package/es/rcs/api.d.ts +5 -10
- package/es/rcs/api.js +15 -21
- package/es/rcs/fake.d.ts +1 -7
- package/es/rcs/fake.js +1 -47
- package/es/sidebar/actions/media.d.ts +19 -6
- package/es/sidebar/actions/media.js +17 -4
- package/es/sidebar/actions/upload.d.ts +3 -3
- package/es/sidebar/actions/upload.js +9 -9
- package/es/sidebar/containers/Sidebar.js +0 -2
- package/es/sidebar/containers/sidebarHandlers.d.ts +2 -4
- package/es/sidebar/containers/sidebarHandlers.js +2 -5
- package/es/sidebar/reducers/index.d.ts +0 -1
- package/es/sidebar/reducers/index.js +0 -2
- package/es/sidebar/store/initialState.d.ts +0 -1
- package/es/sidebar/store/initialState.js +0 -5
- package/es/translations/locales/ar.js +65 -80
- package/es/translations/locales/ca.js +65 -80
- package/es/translations/locales/cy.js +65 -80
- package/es/translations/locales/da-x-k12.js +65 -80
- package/es/translations/locales/da.js +65 -80
- package/es/translations/locales/de.js +65 -80
- package/es/translations/locales/el.js +0 -9
- package/es/translations/locales/en-AU-x-unimelb.js +65 -80
- package/es/translations/locales/en-GB-x-ukhe.js +65 -80
- package/es/translations/locales/en.js +61 -79
- package/es/translations/locales/en_AU.js +65 -80
- package/es/translations/locales/en_CA.js +65 -80
- package/es/translations/locales/en_CY.js +65 -80
- package/es/translations/locales/en_GB.js +65 -80
- package/es/translations/locales/es.js +65 -80
- package/es/translations/locales/es_ES.js +65 -80
- package/es/translations/locales/fa_IR.js +0 -9
- package/es/translations/locales/fi.js +65 -80
- package/es/translations/locales/fr.js +65 -80
- package/es/translations/locales/fr_CA.js +65 -80
- package/es/translations/locales/ga.js +65 -80
- package/es/translations/locales/he.js +0 -9
- package/es/translations/locales/hi.js +65 -80
- package/es/translations/locales/ht.js +65 -80
- package/es/translations/locales/hu.js +0 -36
- package/es/translations/locales/hy.js +0 -9
- package/es/translations/locales/id.js +65 -80
- package/es/translations/locales/is.js +65 -80
- package/es/translations/locales/it.js +65 -80
- package/es/translations/locales/ja.js +65 -80
- package/es/translations/locales/ko.js +2455 -133
- package/es/translations/locales/mi.js +65 -80
- package/es/translations/locales/ms.js +65 -80
- package/es/translations/locales/nb-x-k12.js +65 -80
- package/es/translations/locales/nb.js +65 -80
- package/es/translations/locales/nl.js +66 -81
- package/es/translations/locales/nn.js +0 -36
- package/es/translations/locales/pl.js +65 -80
- package/es/translations/locales/pt.js +65 -80
- package/es/translations/locales/pt_BR.js +65 -80
- package/es/translations/locales/ru.js +65 -80
- package/es/translations/locales/sl.js +65 -80
- package/es/translations/locales/sv-x-k12.js +65 -80
- package/es/translations/locales/sv.js +65 -80
- package/es/translations/locales/th.js +65 -80
- package/es/translations/locales/tr.js +1962 -18
- package/es/translations/locales/uk_UA.js +0 -9
- package/es/translations/locales/vi.js +65 -80
- package/es/translations/locales/zh-Hans.js +65 -80
- package/es/translations/locales/zh-Hant.js +65 -80
- package/es/translations/locales/zh.js +65 -80
- package/es/translations/locales/zh_HK.js +65 -80
- package/eslint.config.js +16 -147
- package/jest/jest-setup.js +1 -0
- package/jest.config.js +2 -0
- package/oxlint.json +84 -0
- package/package.json +86 -62
- package/tsconfig.json +3 -2
- package/es/rce/plugins/shared/ai_tools/AIResponseModal.d.ts +0 -10
- package/es/rce/plugins/shared/ai_tools/AIResponseModal.js +0 -67
- package/es/rce/plugins/shared/ai_tools/AIToolsTray.d.ts +0 -18
- package/es/rce/plugins/shared/ai_tools/AIToolsTray.js +0 -489
- package/es/rce/plugins/shared/ai_tools/aiicons.d.ts +0 -7
- package/es/rce/plugins/shared/ai_tools/aiicons.js +0 -60
- package/es/rce/plugins/shared/ai_tools/index.d.ts +0 -3
- package/es/sidebar/actions/flickr.d.ts +0 -20
- package/es/sidebar/actions/flickr.js +0 -60
- package/es/sidebar/reducers/flickr.d.ts +0 -1
- package/es/sidebar/reducers/flickr.js +0 -49
|
@@ -42,7 +42,8 @@ declare class FileBrowser extends React.Component<any, any, any> {
|
|
|
42
42
|
decreaseLoadingCount(): void;
|
|
43
43
|
getRootFolderData(context: any, contextId: any, opts?: {}): void;
|
|
44
44
|
populateRootFolder(data: any, opts?: {}): void;
|
|
45
|
-
|
|
45
|
+
/** @type {(id: number) => void} */
|
|
46
|
+
fetchSubFolders: (id: number) => void;
|
|
46
47
|
fetchFiles(id: any): void;
|
|
47
48
|
getFolderData(id: any): void;
|
|
48
49
|
populateCollectionsList: (folderList: any, opts?: {}) => void;
|
|
@@ -76,5 +77,4 @@ declare class FileBrowser extends React.Component<any, any, any> {
|
|
|
76
77
|
render(): React.JSX.Element;
|
|
77
78
|
}
|
|
78
79
|
import React from 'react';
|
|
79
|
-
import _ from 'lodash';
|
|
80
80
|
import PropTypes from 'prop-types';
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
|
|
17
17
|
import React from 'react';
|
|
18
18
|
import formatMessage from '../format-message';
|
|
19
|
-
import
|
|
20
|
-
import minimatch from 'minimatch';
|
|
19
|
+
import { cloneDeep, memoize } from 'es-toolkit/compat';
|
|
20
|
+
import { minimatch } from 'minimatch';
|
|
21
21
|
import { TreeBrowser } from '@instructure/ui-tree-browser';
|
|
22
22
|
import { Text } from '@instructure/ui-text';
|
|
23
23
|
import { Spinner } from '@instructure/ui-spinner';
|
|
@@ -32,7 +32,8 @@ class FileBrowser extends React.Component {
|
|
|
32
32
|
super(_props2);
|
|
33
33
|
// Memoized function to fetch all subfolders
|
|
34
34
|
// of the given folder ID, handing pagination
|
|
35
|
-
|
|
35
|
+
/** @type {(id: number) => void} */
|
|
36
|
+
this.fetchSubFolders = memoize(id => {
|
|
36
37
|
this.source.fetchBookmarkedData(this.source.fetchSubFolders.bind(this.source), {
|
|
37
38
|
folderId: id,
|
|
38
39
|
perPage: 50
|
|
@@ -46,7 +47,7 @@ class FileBrowser extends React.Component {
|
|
|
46
47
|
});
|
|
47
48
|
this.populateCollectionsList = (folderList, opts = {}) => {
|
|
48
49
|
this.setState((state, props) => {
|
|
49
|
-
const newCollections =
|
|
50
|
+
const newCollections = cloneDeep(state.collections);
|
|
50
51
|
folderList.forEach(folder => {
|
|
51
52
|
const collection = this.formatFolderInfo(folder, {
|
|
52
53
|
...opts,
|
|
@@ -67,8 +68,8 @@ class FileBrowser extends React.Component {
|
|
|
67
68
|
};
|
|
68
69
|
this.populateItemsList = fileList => {
|
|
69
70
|
this.setState((state, _props) => {
|
|
70
|
-
const newItems =
|
|
71
|
-
const newCollections =
|
|
71
|
+
const newItems = cloneDeep(state.items);
|
|
72
|
+
const newCollections = cloneDeep(state.collections);
|
|
72
73
|
fileList.forEach(file => {
|
|
73
74
|
if (this.contentTypeIsAllowed(file.type)) {
|
|
74
75
|
const item = this.formatFileInfo(file);
|
|
@@ -101,7 +102,7 @@ class FileBrowser extends React.Component {
|
|
|
101
102
|
} else if (!collection.locked) {
|
|
102
103
|
newFolders = newFolders.concat(openFolders);
|
|
103
104
|
newFolders.push(folderId);
|
|
104
|
-
newCollections =
|
|
105
|
+
newCollections = cloneDeep(state.collections);
|
|
105
106
|
newCollections[folderId] = collection;
|
|
106
107
|
}
|
|
107
108
|
return {
|
package/es/common/mimeClass.js
CHANGED
|
@@ -41,8 +41,10 @@ export function mimeClass(file) {
|
|
|
41
41
|
return file.mime_class;
|
|
42
42
|
} else {
|
|
43
43
|
const contentType = getContentType(file);
|
|
44
|
+
// Strip MIME parameters (charset, boundary, etc.) before lookup
|
|
44
45
|
// NOTE: Keep this list in sync with what's in canvas-lms/app/models/attachment.rb
|
|
45
|
-
|
|
46
|
+
const baseType = contentType?.split(';')[0]?.trim();
|
|
47
|
+
return contentMapping(baseType) || file.mime_class || 'file';
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
export function contentMapping(contentType) {
|
|
@@ -172,9 +172,9 @@ const defaultTinymceConfig = {
|
|
|
172
172
|
acronym: [],
|
|
173
173
|
del: ['datetime', 'cite'],
|
|
174
174
|
ins: ['datetime', 'cite'],
|
|
175
|
-
object: ['classid', '
|
|
175
|
+
object: ['classid', 'codebase', 'data', 'height', 'type', 'width'],
|
|
176
176
|
param: ['name', 'value', '_value'],
|
|
177
|
-
embed: ['
|
|
177
|
+
embed: ['allowfullscreen', 'allowscriptaccess', 'height', 'name', 'pluginspage', 'src', 'type', 'width', 'wmode'],
|
|
178
178
|
map: ['name'],
|
|
179
179
|
area: ['shape', 'coords', 'href', 'alt', 'target'],
|
|
180
180
|
bdo: [],
|
|
@@ -222,56 +222,54 @@ const defaultTinymceConfig = {
|
|
|
222
222
|
'-ul': ['compact'],
|
|
223
223
|
video: ['name', 'src', 'allowfullscreen', 'muted', 'poster', 'width', 'height', 'controls', 'playsinline'],
|
|
224
224
|
audio: ['name', 'src', 'muted', 'controls'],
|
|
225
|
-
annotation: ['href', 'xref', 'definitionURL', 'encoding', 'cd', 'name', 'src'],
|
|
226
|
-
'annotation-xml': ['href', 'xref', 'definitionURL', 'encoding', 'cd', 'name', 'src'],
|
|
227
|
-
maction: ['href', 'xref', 'mathcolor', 'mathbackground', 'actiontype', 'selection'],
|
|
228
|
-
maligngroup: ['href', 'xref', 'mathcolor', 'mathbackground', 'groupalign'],
|
|
229
|
-
malignmark: ['href', 'xref', 'mathcolor', 'mathbackground', 'edge'],
|
|
230
|
-
math: ['xmlns', 'href', 'xref', 'display', 'maxwidth', 'overflow', 'altimg', 'altimg-width', 'altimg-height', 'altimg-valign', 'alttext', 'cdgroup', 'mathcolor', 'mathbackground', 'scriptlevel', 'displaystyle', 'scriptsizemultiplier', 'scriptminsize', 'infixlinebreakstyle', 'decimalpoint', 'mathvariant', 'mathsize', 'width', 'height', 'valign', 'form', 'fence', 'separator', 'lspace', 'rspace', 'stretchy', 'symmetric', 'maxsize', 'minsize', 'largeop', 'movablelimits', 'accent', 'linebreak', 'lineleading', 'linebreakstyle', 'linebreakmultchar', 'indentalign', 'indentshift', 'indenttarget', 'indentalignfirst', 'indentshiftfirst', 'indentalignlast', 'indentshiftlast', 'depth', 'lquote', 'rquote', 'linethickness', '
|
|
231
|
-
menclose: ['href', 'xref', 'mathcolor', 'mathbackground', 'notation'],
|
|
232
|
-
merror: ['href', 'xref', 'mathcolor', 'mathbackground'],
|
|
233
|
-
mfenced: ['href', 'xref', 'mathcolor', 'mathbackground', 'open', 'close', 'separators'],
|
|
234
|
-
mfrac: ['href', 'xref', 'mathcolor', 'mathbackground', 'linethickness', '
|
|
235
|
-
mglyph: ['href', 'xref', 'mathcolor', 'mathbackground', 'src', 'alt', 'width', 'height', 'valign'],
|
|
236
|
-
mi: ['href', 'xref', 'mathcolor', 'mathbackground', 'mathvariant', 'mathsize'],
|
|
237
|
-
mlabeledtr: ['href', 'xref', 'mathcolor', 'mathbackground'],
|
|
238
|
-
mlongdiv: ['href', 'xref', 'mathcolor', 'mathbackground', 'longdivstyle', 'align', 'stackalign', 'charalign', 'charspacing'],
|
|
239
|
-
mmultiscripts: ['href', 'xref', 'mathcolor', 'mathbackground', 'subscriptshift', 'superscriptshift'],
|
|
240
|
-
mn: ['href', 'xref', 'mathcolor', 'mathbackground', 'mathvariant', 'mathsize'],
|
|
241
|
-
mo: ['href', 'xref', 'mathcolor', 'mathbackground', 'mathvariant', 'mathsize', 'form', 'fence', 'separator', 'lspace', 'rspace', 'stretchy', 'symmetric', 'maxsize', 'minsize', 'largeop', 'movablelimits', 'accent', 'linebreak', 'lineleading', 'linebreakstyle', 'linebreakmultchar', 'indentalign', 'indentshift', 'indenttarget', 'indentalignfirst', 'indentshiftfirst', 'indentalignlast', 'indentshiftlast'],
|
|
242
|
-
mover: ['href', 'xref', 'mathcolor', 'mathbackground', 'accent', 'align'],
|
|
243
|
-
mpadded: ['href', 'xref', 'mathcolor', 'mathbackground', 'height', 'depth', 'width', 'lspace', 'voffset'],
|
|
244
|
-
mphantom: ['href', 'xref', 'mathcolor', 'mathbackground'],
|
|
245
|
-
mprescripts: ['href', 'xref', 'mathcolor', 'mathbackground'],
|
|
246
|
-
mroot: ['href', 'xref', 'mathcolor', 'mathbackground'],
|
|
247
|
-
mrow: ['href', 'xref', 'mathcolor', 'mathbackground'],
|
|
248
|
-
ms: ['href', 'xref', 'mathcolor', 'mathbackground', 'mathvariant', 'mathsize', 'lquote', 'rquote'],
|
|
249
|
-
mscarries: ['href', 'xref', 'mathcolor', 'mathbackground', 'position', 'location', 'crossout', 'scriptsizemultiplier'],
|
|
250
|
-
mscarry: ['href', 'xref', 'mathcolor', 'mathbackground', 'location', 'crossout'],
|
|
251
|
-
msgroup: ['href', 'xref', 'mathcolor', 'mathbackground', 'position', 'shift'],
|
|
252
|
-
msline: ['href', 'xref', 'mathcolor', 'mathbackground', 'position', 'length', 'leftoverhang', 'rightoverhang', 'mslinethickness'],
|
|
253
|
-
mspace: ['href', 'xref', 'mathcolor', 'mathbackground', 'mathvariant', 'mathsize'],
|
|
254
|
-
msqrt: ['href', 'xref', 'mathcolor', 'mathbackground'],
|
|
255
|
-
msrow: ['href', 'xref', 'mathcolor', 'mathbackground', 'position'],
|
|
256
|
-
mstack: ['href', 'xref', 'mathcolor', 'mathbackground', 'align', 'stackalign', 'charalign', 'charspacing'],
|
|
257
|
-
mstyle: ['href', 'xref', 'mathcolor', 'mathbackground', 'scriptlevel', 'displaystyle', 'scriptsizemultiplier', 'scriptminsize', 'infixlinebreakstyle', 'decimalpoint', 'mathvariant', 'mathsize', 'width', 'height', 'valign', 'form', 'fence', 'separator', 'lspace', 'rspace', 'stretchy', 'symmetric', 'maxsize', 'minsize', 'largeop', 'movablelimits', 'accent', 'linebreak', 'lineleading', 'linebreakstyle', 'linebreakmultchar', 'indentalign', 'indentshift', 'indenttarget', 'indentalignfirst', 'indentshiftfirst', 'indentalignlast', 'indentshiftlast', 'depth', 'lquote', 'rquote', 'linethickness', '
|
|
258
|
-
msub: ['href', 'xref', 'mathcolor', 'mathbackground', 'subscriptshift'],
|
|
259
|
-
msubsup: ['href', 'xref', 'mathcolor', 'mathbackground', 'subscriptshift', 'superscriptshift'],
|
|
260
|
-
msup: ['href', 'xref', 'mathcolor', 'mathbackground', 'superscriptshift'],
|
|
261
|
-
mtable: ['href', 'xref', 'mathcolor', 'mathbackground', 'align', 'rowalign', 'columnalign', 'groupalign', 'alignmentscope', 'columnwidth', 'width', 'rowspacing', 'columnspacing', 'rowlines', 'columnlines', 'frame', 'framespacing', 'equalrows', 'equalcolumns', 'displaystyle', 'side', 'minlabelspacing'],
|
|
262
|
-
mtd: ['href', 'xref', 'mathcolor', 'mathbackground', 'rowspan', 'columnspan', 'rowalign', 'columnalign', 'groupalign'],
|
|
263
|
-
mtext: ['href', 'xref', 'mathcolor', 'mathbackground', 'mathvariant', 'mathsize', 'width', 'height', 'depth', 'linebreak'],
|
|
264
|
-
mtr: ['href', 'xref', 'mathcolor', 'mathbackground', 'rowalign', 'columnalign', 'groupalign'],
|
|
265
|
-
munder: ['href', 'xref', 'mathcolor', 'mathbackground', 'accentunder', 'align'],
|
|
266
|
-
munderover: ['href', 'xref', 'mathcolor', 'mathbackground', 'accent', 'accentunder', 'align'],
|
|
267
|
-
none: ['href', 'xref', 'mathcolor', 'mathbackground'],
|
|
268
|
-
semantics: ['href', 'xref', 'definitionURL', 'encoding'],
|
|
225
|
+
annotation: ['href', 'xref', 'intent', 'arg', 'definitionURL', 'encoding', 'cd', 'name', 'src'],
|
|
226
|
+
'annotation-xml': ['href', 'xref', 'intent', 'arg', 'definitionURL', 'encoding', 'cd', 'name', 'src'],
|
|
227
|
+
maction: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'actiontype', 'selection'],
|
|
228
|
+
maligngroup: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'groupalign'],
|
|
229
|
+
malignmark: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'edge'],
|
|
230
|
+
math: ['xmlns', 'href', 'xref', 'display', 'maxwidth', 'overflow', 'altimg', 'altimg-width', 'altimg-height', 'altimg-valign', 'alttext', 'cdgroup', 'intent', 'arg', 'mathcolor', 'mathbackground', 'scriptlevel', 'displaystyle', 'scriptsizemultiplier', 'scriptminsize', 'infixlinebreakstyle', 'decimalpoint', 'mathvariant', 'mathsize', 'width', 'height', 'valign', 'form', 'fence', 'separator', 'lspace', 'rspace', 'stretchy', 'symmetric', 'maxsize', 'minsize', 'largeop', 'movablelimits', 'accent', 'linebreak', 'lineleading', 'linebreakstyle', 'linebreakmultchar', 'indentalign', 'indentshift', 'indenttarget', 'indentalignfirst', 'indentshiftfirst', 'indentalignlast', 'indentshiftlast', 'depth', 'lquote', 'rquote', 'linethickness', 'numalign', 'denomalign', 'bevelled', 'voffset', 'open', 'close', 'separators', 'notation', 'subscriptshift', 'superscriptshift', 'accentunder', 'align', 'rowalign', 'columnalign', 'groupalign', 'alignmentscope', 'columnwidth', 'rowspacing', 'columnspacing', 'rowlines', 'columnlines', 'frame', 'framespacing', 'equalrows', 'equalcolumns', 'side', 'minlabelspacing', 'rowspan', 'columnspan', 'edge', 'stackalign', 'charalign', 'charspacing', 'longdivstyle', 'position', 'shift', 'location', 'crossout', 'length', 'leftoverhang', 'rightoverhang', 'mslinethickness', 'selection'],
|
|
231
|
+
menclose: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'notation'],
|
|
232
|
+
merror: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg'],
|
|
233
|
+
mfenced: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'open', 'close', 'separators'],
|
|
234
|
+
mfrac: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'linethickness', 'numalign', 'denomalign', 'bevelled'],
|
|
235
|
+
mglyph: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'src', 'alt', 'width', 'height', 'valign'],
|
|
236
|
+
mi: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'mathvariant', 'mathsize'],
|
|
237
|
+
mlabeledtr: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg'],
|
|
238
|
+
mlongdiv: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'longdivstyle', 'align', 'stackalign', 'charalign', 'charspacing'],
|
|
239
|
+
mmultiscripts: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'subscriptshift', 'superscriptshift'],
|
|
240
|
+
mn: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'mathvariant', 'mathsize'],
|
|
241
|
+
mo: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'mathvariant', 'mathsize', 'form', 'fence', 'separator', 'lspace', 'rspace', 'stretchy', 'symmetric', 'maxsize', 'minsize', 'largeop', 'movablelimits', 'accent', 'linebreak', 'lineleading', 'linebreakstyle', 'linebreakmultchar', 'indentalign', 'indentshift', 'indenttarget', 'indentalignfirst', 'indentshiftfirst', 'indentalignlast', 'indentshiftlast'],
|
|
242
|
+
mover: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'accent', 'align'],
|
|
243
|
+
mpadded: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'height', 'depth', 'width', 'lspace', 'voffset'],
|
|
244
|
+
mphantom: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg'],
|
|
245
|
+
mprescripts: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg'],
|
|
246
|
+
mroot: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg'],
|
|
247
|
+
mrow: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg'],
|
|
248
|
+
ms: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'mathvariant', 'mathsize', 'lquote', 'rquote'],
|
|
249
|
+
mscarries: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'position', 'location', 'crossout', 'scriptsizemultiplier'],
|
|
250
|
+
mscarry: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'location', 'crossout'],
|
|
251
|
+
msgroup: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'position', 'shift'],
|
|
252
|
+
msline: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'position', 'length', 'leftoverhang', 'rightoverhang', 'mslinethickness'],
|
|
253
|
+
mspace: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'mathvariant', 'mathsize'],
|
|
254
|
+
msqrt: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg'],
|
|
255
|
+
msrow: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'position'],
|
|
256
|
+
mstack: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'align', 'stackalign', 'charalign', 'charspacing'],
|
|
257
|
+
mstyle: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'scriptlevel', 'displaystyle', 'scriptsizemultiplier', 'scriptminsize', 'infixlinebreakstyle', 'decimalpoint', 'mathvariant', 'mathsize', 'width', 'height', 'valign', 'form', 'fence', 'separator', 'lspace', 'rspace', 'stretchy', 'symmetric', 'maxsize', 'minsize', 'largeop', 'movablelimits', 'accent', 'linebreak', 'lineleading', 'linebreakstyle', 'linebreakmultchar', 'indentalign', 'indentshift', 'indenttarget', 'indentalignfirst', 'indentshiftfirst', 'indentalignlast', 'indentshiftlast', 'depth', 'lquote', 'rquote', 'linethickness', 'numalign', 'denomalign', 'bevelled', 'voffset', 'open', 'close', 'separators', 'notation', 'subscriptshift', 'superscriptshift', 'accentunder', 'align', 'rowalign', 'columnalign', 'groupalign', 'alignmentscope', 'columnwidth', 'rowspacing', 'columnspacing', 'rowlines', 'columnlines', 'frame', 'framespacing', 'equalrows', 'equalcolumns', 'side', 'minlabelspacing', 'rowspan', 'columnspan', 'edge', 'stackalign', 'charalign', 'charspacing', 'longdivstyle', 'position', 'shift', 'location', 'crossout', 'length', 'leftoverhang', 'rightoverhang', 'mslinethickness', 'selection'],
|
|
258
|
+
msub: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'subscriptshift'],
|
|
259
|
+
msubsup: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'subscriptshift', 'superscriptshift'],
|
|
260
|
+
msup: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'superscriptshift'],
|
|
261
|
+
mtable: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'align', 'rowalign', 'columnalign', 'groupalign', 'alignmentscope', 'columnwidth', 'width', 'rowspacing', 'columnspacing', 'rowlines', 'columnlines', 'frame', 'framespacing', 'equalrows', 'equalcolumns', 'displaystyle', 'side', 'minlabelspacing'],
|
|
262
|
+
mtd: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'rowspan', 'columnspan', 'rowalign', 'columnalign', 'groupalign'],
|
|
263
|
+
mtext: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'mathvariant', 'mathsize', 'width', 'height', 'depth', 'linebreak'],
|
|
264
|
+
mtr: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'rowalign', 'columnalign', 'groupalign'],
|
|
265
|
+
munder: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'accentunder', 'align'],
|
|
266
|
+
munderover: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg', 'accent', 'accentunder', 'align'],
|
|
267
|
+
none: ['href', 'xref', 'mathcolor', 'mathbackground', 'intent', 'arg'],
|
|
268
|
+
semantics: ['href', 'xref', 'intent', 'arg', 'definitionURL', 'encoding'],
|
|
269
269
|
picture: [],
|
|
270
270
|
ruby: [],
|
|
271
271
|
rp: [],
|
|
272
|
-
rt: []
|
|
273
|
-
g: ['*'],
|
|
274
|
-
circle: ['*']
|
|
272
|
+
rt: []
|
|
275
273
|
}),
|
|
276
274
|
non_empty_elements: 'td th iframe video audio object script a i area base basefont br col frame hr img input isindex link meta param embed source wbr track ruby',
|
|
277
275
|
// tiny's external link create/edit dialog config
|
|
@@ -104,7 +104,7 @@ function previewId() {
|
|
|
104
104
|
function buildUrl(url) {
|
|
105
105
|
try {
|
|
106
106
|
return new URL(url);
|
|
107
|
-
} catch (
|
|
107
|
+
} catch (_e) {
|
|
108
108
|
// Don't raise an error
|
|
109
109
|
}
|
|
110
110
|
}
|
|
@@ -124,7 +124,7 @@ const addResourceIdentifiersToStudioContent = content => {
|
|
|
124
124
|
};
|
|
125
125
|
export function enhanceUserContent(container = document, opts = {}) {
|
|
126
126
|
const {
|
|
127
|
-
|
|
127
|
+
customEnhance,
|
|
128
128
|
canvasOrigin,
|
|
129
129
|
kalturaSettings,
|
|
130
130
|
disableGooglePreviews,
|
|
@@ -163,7 +163,7 @@ export function enhanceUserContent(container = document, opts = {}) {
|
|
|
163
163
|
}
|
|
164
164
|
content.querySelectorAll('.user_content:not(.enhanced)').forEach(elem => {
|
|
165
165
|
elem.classList.add('unenhanced');
|
|
166
|
-
explicit_latex_typesetting
|
|
166
|
+
if (explicit_latex_typesetting) elem.classList.add(MathJaxDirective.Process);
|
|
167
167
|
});
|
|
168
168
|
const mathml = new Mathml({
|
|
169
169
|
new_math_equation_handling,
|
|
@@ -172,7 +172,7 @@ export function enhanceUserContent(container = document, opts = {}) {
|
|
|
172
172
|
locale
|
|
173
173
|
});
|
|
174
174
|
content.querySelectorAll('.unenhanced').forEach(unenhanced_elem => {
|
|
175
|
-
explicit_latex_typesetting
|
|
175
|
+
if (explicit_latex_typesetting) mathml.processNewMathInElem(unenhanced_elem);
|
|
176
176
|
unenhanced_elem.querySelectorAll('img').forEach(img => {
|
|
177
177
|
const src = img.getAttribute('src');
|
|
178
178
|
if (!/^\/[^/]/.test(src)) {
|
|
@@ -269,7 +269,7 @@ export function enhanceUserContent(container = document, opts = {}) {
|
|
|
269
269
|
|
|
270
270
|
// Don't attempt to enhance links with no href
|
|
271
271
|
if (!href) return;
|
|
272
|
-
const matchesCanvasFile = href.pathname.match(/(?:\/(courses|groups|users|assessment_questions)\/\d+)?\/files\/([\d~]+)(?=[!*'()
|
|
272
|
+
const matchesCanvasFile = href.pathname.match(/(?:\/(courses|groups|users|assessment_questions)\/\d+)?\/files\/([\d~]+)(?=[!*'();:@&=+$,/?#[\]]|$)/);
|
|
273
273
|
if (!matchesCanvasFile) {
|
|
274
274
|
// a bug in the new RCE added instructure_file_link class name to all links
|
|
275
275
|
// only proceed if this is a canvas file link
|
|
@@ -346,9 +346,7 @@ export function enhanceUserContent(container = document, opts = {}) {
|
|
|
346
346
|
handleYoutubeLink($anchor);
|
|
347
347
|
}
|
|
348
348
|
});
|
|
349
|
-
if (
|
|
350
|
-
customEnhanceFunc();
|
|
351
|
-
}
|
|
349
|
+
if (typeof customEnhance === 'function') customEnhance();
|
|
352
350
|
content.querySelectorAll('.user_content.unenhanced').forEach($elem => {
|
|
353
351
|
$elem.classList.remove('unenhanced');
|
|
354
352
|
$elem.classList.add('enhanced');
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { enhanceUserContent } from "./enhance_user_content";
|
|
2
|
+
export { makeAllExternalLinksExternalLinks } from "./external_links";
|
|
3
|
+
export { Mathml } from "./mathml";
|
|
2
4
|
export { mediaCommentThumbnail };
|
|
3
5
|
import mediaCommentThumbnail from './media_comment_thumbnail';
|
|
4
6
|
export { isPreviewable, loadDocPreview } from "./doc_previews";
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import mediaCommentThumbnail from './media_comment_thumbnail';
|
|
20
|
-
export
|
|
20
|
+
export { enhanceUserContent } from './enhance_user_content';
|
|
21
21
|
export { isPreviewable, loadDocPreview } from './doc_previews';
|
|
22
|
+
export { makeAllExternalLinksExternalLinks } from './external_links';
|
|
23
|
+
export { Mathml } from './mathml';
|
|
22
24
|
export { mediaCommentThumbnail };
|
|
@@ -1,4 +1,22 @@
|
|
|
1
1
|
import _pt from "prop-types";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (C) 2026 - present Instructure, Inc.
|
|
4
|
+
*
|
|
5
|
+
* This file is part of Canvas.
|
|
6
|
+
*
|
|
7
|
+
* Canvas is free software: you can redistribute it and/or modify it under
|
|
8
|
+
* the terms of the GNU Affero General Public License as published by the Free
|
|
9
|
+
* Software Foundation, version 3 of the License.
|
|
10
|
+
*
|
|
11
|
+
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
12
|
+
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
13
|
+
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
14
|
+
* details.
|
|
15
|
+
*
|
|
16
|
+
* You should have received a copy of the GNU Affero General Public License along
|
|
17
|
+
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
+
*/
|
|
19
|
+
|
|
2
20
|
import React, { useRef, useEffect, useState, useCallback } from 'react';
|
|
3
21
|
import { createRoot } from 'react-dom/client';
|
|
4
22
|
import { Text } from '@instructure/ui-text';
|
package/es/getThemeVars.d.ts
CHANGED
package/es/getThemeVars.js
CHANGED
|
@@ -16,33 +16,30 @@
|
|
|
16
16
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const themeKey = currentThemeKey || 'canvas';
|
|
40
|
-
const variables = cloneDeep(themes[themeKey]);
|
|
41
|
-
merge(variables, overrides);
|
|
42
|
-
memoizedVariables = {
|
|
19
|
+
import { canvas, canvasHighContrast } from '@instructure/ui-themes';
|
|
20
|
+
import { cloneDeep } from 'es-toolkit/compat';
|
|
21
|
+
const cache = new Map();
|
|
22
|
+
function getThemeVars(useHighContrast = false, fontFamily) {
|
|
23
|
+
const cacheKey = `${useHighContrast}:${fontFamily !== null && fontFamily !== void 0 ? fontFamily : ''}`;
|
|
24
|
+
if (cache.has(cacheKey)) return cache.get(cacheKey);
|
|
25
|
+
const baseTheme = useHighContrast ? canvasHighContrast : canvas;
|
|
26
|
+
const key = useHighContrast ? 'canvas-high-contrast' : 'canvas';
|
|
27
|
+
const brandVars = !useHighContrast && typeof window !== 'undefined' ? window.CANVAS_ACTIVE_BRAND_VARIABLES || {} : {};
|
|
28
|
+
const variables = {
|
|
29
|
+
...cloneDeep(baseTheme),
|
|
30
|
+
...brandVars
|
|
31
|
+
};
|
|
32
|
+
if (fontFamily) {
|
|
33
|
+
variables.typography = {
|
|
34
|
+
...variables.typography,
|
|
35
|
+
fontFamily
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const result = {
|
|
43
39
|
variables,
|
|
44
|
-
key
|
|
40
|
+
key
|
|
45
41
|
};
|
|
46
|
-
|
|
42
|
+
cache.set(cacheKey, result);
|
|
43
|
+
return result;
|
|
47
44
|
}
|
|
48
45
|
export { getThemeVars };
|
|
@@ -47,7 +47,7 @@ export default function KeyboardShortcutModal(props) {
|
|
|
47
47
|
offset: "medium",
|
|
48
48
|
color: "primary",
|
|
49
49
|
onClick: props.onDismiss,
|
|
50
|
-
screenReaderLabel: formatMessage('Close')
|
|
50
|
+
screenReaderLabel: formatMessage('Close Keyboard Shortcuts Modal')
|
|
51
51
|
}), /*#__PURE__*/React.createElement(Heading, null, formatMessage('Keyboard Shortcuts'))), /*#__PURE__*/React.createElement(Modal.Body, null, /*#__PURE__*/React.createElement(View, {
|
|
52
52
|
as: "div",
|
|
53
53
|
padding: "x-small xx-large large x-large"
|
package/es/rce/RCE.d.ts
CHANGED
|
@@ -46,6 +46,15 @@ export interface RCEPropTypes {
|
|
|
46
46
|
* array of URLs to high-contrast css
|
|
47
47
|
*/
|
|
48
48
|
highContrastCSS?: string[];
|
|
49
|
+
/**
|
|
50
|
+
* whether high contrast mode is enabled
|
|
51
|
+
*/
|
|
52
|
+
useHighContrast?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* CSS font-family string for the RCE chrome (toolbar, menus).
|
|
55
|
+
* Built by the host to include Lato Extended, dyslexic font, K5 font, etc.
|
|
56
|
+
*/
|
|
57
|
+
fontFamily?: string;
|
|
49
58
|
/**
|
|
50
59
|
* if true, do not load the plugin that provides the media toolbar and menu items
|
|
51
60
|
*/
|
package/es/rce/RCE.js
CHANGED
|
@@ -46,6 +46,8 @@ const RCE = /*#__PURE__*/forwardRef(function RCE(props, rceRef) {
|
|
|
46
46
|
// tinymce config
|
|
47
47
|
height,
|
|
48
48
|
highContrastCSS,
|
|
49
|
+
useHighContrast,
|
|
50
|
+
fontFamily,
|
|
49
51
|
instRecordDisabled,
|
|
50
52
|
language,
|
|
51
53
|
liveRegion,
|
|
@@ -87,6 +89,8 @@ const RCE = /*#__PURE__*/forwardRef(function RCE(props, rceRef) {
|
|
|
87
89
|
canvasOrigin,
|
|
88
90
|
defaultContent,
|
|
89
91
|
highContrastCSS,
|
|
92
|
+
useHighContrast,
|
|
93
|
+
fontFamily,
|
|
90
94
|
instRecordDisabled,
|
|
91
95
|
language: normalizeLocale(language),
|
|
92
96
|
liveRegion,
|
package/es/rce/RCEGlobals.d.ts
CHANGED
|
@@ -2,12 +2,14 @@ export default instance;
|
|
|
2
2
|
export type Features = {
|
|
3
3
|
file_verifiers_for_quiz_links: boolean;
|
|
4
4
|
rce_studio_embed_improvements: boolean;
|
|
5
|
+
rce_asr_captioning_improvements: boolean;
|
|
5
6
|
};
|
|
6
7
|
declare const instance: RCEGlobals;
|
|
7
8
|
/**
|
|
8
9
|
* @typedef {Object} Features
|
|
9
10
|
* @property {boolean} file_verifiers_for_quiz_links
|
|
10
11
|
* @property {boolean} rce_studio_embed_improvements
|
|
12
|
+
* @property {boolean} rce_asr_captioning_improvements
|
|
11
13
|
*/
|
|
12
14
|
declare class RCEGlobals {
|
|
13
15
|
_data: {
|
package/es/rce/RCEGlobals.js
CHANGED
|
@@ -22,6 +22,7 @@ const isEmpty = obj => Object.keys(obj).length === 0;
|
|
|
22
22
|
* @typedef {Object} Features
|
|
23
23
|
* @property {boolean} file_verifiers_for_quiz_links
|
|
24
24
|
* @property {boolean} rce_studio_embed_improvements
|
|
25
|
+
* @property {boolean} rce_asr_captioning_improvements
|
|
25
26
|
*/
|
|
26
27
|
|
|
27
28
|
class RCEGlobals {
|
package/es/rce/RCEVariants.d.ts
CHANGED
|
@@ -7,11 +7,10 @@ interface ToolbarGroupSetting {
|
|
|
7
7
|
name: string;
|
|
8
8
|
items: string[];
|
|
9
9
|
}
|
|
10
|
-
type StatusBarFeature = '
|
|
10
|
+
type StatusBarFeature = 'keyboard_shortcuts' | 'a11y_checker' | 'word_count' | 'html_view' | 'fullscreen' | 'resize_handle' | 'a11y_resize_handlers';
|
|
11
11
|
export declare const RCEVariantValues: readonly ["full", "lite", "text-only", "text-block", "block-content-editor"];
|
|
12
12
|
export type RCEVariant = (typeof RCEVariantValues)[number];
|
|
13
13
|
export type StatusBarOptions = {
|
|
14
|
-
aiTextTools?: boolean;
|
|
15
14
|
isDesktop?: boolean;
|
|
16
15
|
a11yResizers?: boolean;
|
|
17
16
|
};
|
package/es/rce/RCEVariants.js
CHANGED
|
@@ -144,7 +144,6 @@ const MOBILE_FEATURES = ['a11y_checker', 'word_count'];
|
|
|
144
144
|
const EXTENDED_FEATURES = ['html_view', 'fullscreen', 'resize_handle'];
|
|
145
145
|
const A11Y_RESIZERS = ['a11y_resize_handlers'];
|
|
146
146
|
export function getStatusBarFeaturesForVariant(variant, options = {
|
|
147
|
-
aiTextTools: false,
|
|
148
147
|
isDesktop: true,
|
|
149
148
|
a11yResizers: false
|
|
150
149
|
}) {
|
|
@@ -158,5 +157,5 @@ export function getStatusBarFeaturesForVariant(variant, options = {
|
|
|
158
157
|
if (variant === 'lite' || variant === 'text-only') {
|
|
159
158
|
return platformFeatures;
|
|
160
159
|
}
|
|
161
|
-
return [...platformFeatures, ...EXTENDED_FEATURES, ...(options.a11yResizers ? A11Y_RESIZERS : [])
|
|
160
|
+
return [...platformFeatures, ...EXTENDED_FEATURES, ...(options.a11yResizers ? A11Y_RESIZERS : [])];
|
|
162
161
|
}
|
package/es/rce/RCEWrapper.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { Editor } from '@tinymce/tinymce-react';
|
|
3
3
|
import tinymce from 'tinymce';
|
|
4
4
|
import type { Editor as TinyMCEEditor } from 'tinymce';
|
|
@@ -9,7 +9,6 @@ import { mergeMenu, mergeMenuItems, mergePlugins, mergeToolbar, parsePluginsToEx
|
|
|
9
9
|
import { AlertMessage, EditorOptions, RCETrayProps } from './types';
|
|
10
10
|
export declare function storageAvailable(): boolean | null;
|
|
11
11
|
interface RCEWrapperProps {
|
|
12
|
-
ai_text_tools?: boolean;
|
|
13
12
|
autosave?: {
|
|
14
13
|
enabled?: boolean;
|
|
15
14
|
maxAge?: number;
|
|
@@ -38,12 +37,12 @@ interface RCEWrapperProps {
|
|
|
38
37
|
tinymce: typeof tinymce;
|
|
39
38
|
trayProps: RCETrayProps;
|
|
40
39
|
use_rce_icon_maker?: boolean;
|
|
40
|
+
useHighContrast?: boolean;
|
|
41
|
+
fontFamily?: string;
|
|
41
42
|
userCacheKey?: string;
|
|
42
43
|
}
|
|
43
44
|
interface RCEWrapperState {
|
|
44
45
|
a11yErrorsCount: number;
|
|
45
|
-
AIToolsOpen: boolean;
|
|
46
|
-
AITToolsFocusReturn: unknown;
|
|
47
46
|
alertId?: number;
|
|
48
47
|
announcement: string | null;
|
|
49
48
|
autoSavedContent: string;
|
|
@@ -75,7 +74,6 @@ declare class RCEWrapper extends React.Component<RCEWrapperProps, RCEWrapperStat
|
|
|
75
74
|
_statusBarId: string;
|
|
76
75
|
_textareaEl?: HTMLTextAreaElement;
|
|
77
76
|
_effectiveContainingContext: RCETrayProps['containingContext'];
|
|
78
|
-
AIToolsTray?: ReactNode;
|
|
79
77
|
editor: TinyMCEEditor | null;
|
|
80
78
|
initialContent?: string;
|
|
81
79
|
intersectionObserver?: IntersectionObserver;
|
|
@@ -175,6 +173,8 @@ declare class RCEWrapper extends React.Component<RCEWrapperProps, RCEWrapperStat
|
|
|
175
173
|
}>;
|
|
176
174
|
instRecordDisabled: import("prop-types").Requireable<boolean>;
|
|
177
175
|
highContrastCSS: import("prop-types").Requireable<(string | null | undefined)[]>;
|
|
176
|
+
useHighContrast: import("prop-types").Requireable<boolean>;
|
|
177
|
+
fontFamily: import("prop-types").Requireable<string>;
|
|
178
178
|
maxInitRenderedRCEs: import("prop-types").Requireable<number>;
|
|
179
179
|
use_rce_icon_maker: import("prop-types").Requireable<boolean>;
|
|
180
180
|
features: import("prop-types").Requireable<{
|
|
@@ -190,7 +190,6 @@ declare class RCEWrapper extends React.Component<RCEWrapperProps, RCEWrapperStat
|
|
|
190
190
|
isA2StudentView: import("prop-types").Requireable<boolean>;
|
|
191
191
|
maxMruTools: import("prop-types").Requireable<number>;
|
|
192
192
|
}>>;
|
|
193
|
-
ai_text_tools: import("prop-types").Requireable<boolean>;
|
|
194
193
|
variant: import("prop-types").Requireable<"full" | "lite" | "text-only" | "text-block" | "block-content-editor">;
|
|
195
194
|
};
|
|
196
195
|
static defaultProps: {
|
|
@@ -215,9 +214,9 @@ declare class RCEWrapper extends React.Component<RCEWrapperProps, RCEWrapperStat
|
|
|
215
214
|
explicit_latex_typesetting: unknown;
|
|
216
215
|
rce_transform_loaded_content: unknown;
|
|
217
216
|
rce_studio_embed_improvements: unknown;
|
|
217
|
+
rce_asr_captioning_improvements: unknown;
|
|
218
218
|
file_verifiers_for_quiz_links: unknown;
|
|
219
219
|
rce_find_replace: unknown;
|
|
220
|
-
consolidated_media_player: unknown;
|
|
221
220
|
};
|
|
222
221
|
getRequiredConfigValues(): {
|
|
223
222
|
locale: string;
|
|
@@ -340,15 +339,6 @@ declare class RCEWrapper extends React.Component<RCEWrapperProps, RCEWrapperStat
|
|
|
340
339
|
openKBShortcutModal: () => void;
|
|
341
340
|
closeKBShortcutModal: () => void;
|
|
342
341
|
KBShortcutModalExited: () => void;
|
|
343
|
-
handleAIClick: () => void;
|
|
344
|
-
closeAITools: () => void;
|
|
345
|
-
AIToolsExited: () => void;
|
|
346
|
-
handleInsertAIContent: (content: string) => void;
|
|
347
|
-
handleReplaceAIContent: (content: string) => void;
|
|
348
|
-
getCurrentContentForAI: () => {
|
|
349
|
-
type: string;
|
|
350
|
-
content: string;
|
|
351
|
-
};
|
|
352
342
|
componentWillUnmount(): void;
|
|
353
343
|
wrapOptions(options?: {}): {
|
|
354
344
|
readonly: boolean | undefined;
|