Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,7 @@ tinymce:

| Bundle version | TinyMCE version | TinyMCE Web Component version |
|----------------|-----------------|-------------------------------|
| **3.1** | 7.6.1 | 2.1.0 |
| **3.0** | 7.5.1 | 2.1.0 |
| **2.1** | 6.8.5 | 2.1.0 |
| **2.0** | 6.8.3 | 2.1.0 |
Expand Down
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 31 additions & 0 deletions public/ext/tinymce/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,37 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
and is generated by [Changie](https://github.com/miniscruff/changie).

## 7.6.1 - 2025-01-22

### Fixed
- Text input was prevented in form elements in the contents of the editor. #TINY-11446
- Opening a notification when the toolbar is positioned at the bottom of the editor threw an error. #TINY-11498
- Table resize bars were not properly aligned for inline editors inside scrollable containers. #TINY-11215

## 7.6.0 - 2024-12-11

### Added
- It is now possible to create labeled groups in context toolbars. #TINY-11095
- New `contextsliderform` and `contextsizeinput` context form types. #TINY-11342
- New `back` function in `ContextFormApi` to go back to the previous toolbar. #TINY-11344
- New `QuickbarInsertImage` command that is executed by the `quickimage` button. #TINY-11399
- New `onSetup` function to the context form API. #TINY-11494
- New `placeholder` to the context form input field API. #TINY-11459
- New `disabled` option to restore the previous `readonly` mode behavior, allowing the editor to be displayed in a disabled state. #TINY-11488

### Improved
- Base64 data was not properly decoded due to unhandled URL-encoded characters. #TINY-9548
- The `latin` list style type is now recognized as an alias for the `alpha` list style type. #TINY-11515

### Fixed
- Image selection was removed when calling `editor.nodeChanged()` while having focus inside the editor UI. #TINY-11437
- Tooltip would not show for group toolbar button. #TINY-11391
- Changing the table row type when a `contenteditable=false` cell was selected would not work as expected. #TINY-11383
- The `samp` format was being applied as a `block` level format, instead of an `inline` format. #TINY-11390
- Removed title attribute from dialog tree elements as they already have a tooltip. #TINY-11470
- Fixed CSS bundling for skin UI content CSS. #TINY-11558
- Fixed incorrect resource keys for CSS bundling JS files. #TINY-11558

## 7.5.0 - 2024-11-06

### Added
Expand Down
2 changes: 1 addition & 1 deletion public/ext/tinymce/composer.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "tinymce/tinymce",
"version": "7.5.1",
"version": "7.6.1",
"description": "Web based JavaScript HTML WYSIWYG editor control.",
"license": [
"GPL-2.0-or-later"
Expand Down
27 changes: 27 additions & 0 deletions public/ext/tinymce/icons/default/icons.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/ext/tinymce/icons/default/icons.min.js

Large diffs are not rendered by default.

123 changes: 91 additions & 32 deletions public/ext/tinymce/models/dom/model.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* TinyMCE version 7.5.1 (TBD)
* TinyMCE version 7.6.1 (2025-01-22)
*/

(function () {
Expand Down Expand Up @@ -1512,7 +1512,7 @@
});
return columnsGroup;
};
const generate$1 = list => {
const generate$2 = list => {
const access = {};
const cells = [];
const tableOpt = head(list).map(rowData => rowData.element).bind(table);
Expand Down Expand Up @@ -1570,15 +1570,15 @@
};
const fromTable = table => {
const list = fromTable$1(table);
return generate$1(list);
return generate$2(list);
};
const justCells = warehouse => bind$2(warehouse.all, w => w.cells);
const justColumns = warehouse => values(warehouse.columns);
const hasColumns = warehouse => keys(warehouse.columns).length > 0;
const getColumnAt = (warehouse, columnIndex) => Optional.from(warehouse.columns[columnIndex]);
const Warehouse = {
fromTable,
generate: generate$1,
generate: generate$2,
getAt,
findItem,
filterItems,
Expand Down Expand Up @@ -2499,6 +2499,26 @@
return options.isSet('table_default_styles') ? defaultStyles : determineDefaultTableStyles(editor, defaultStyles);
};
const tableUseColumnGroup = option('table_use_colgroups');
const fixedContainerSelector = option('fixed_toolbar_container');
const fixedToolbarContainerTarget = option('fixed_toolbar_container_target');
const fixedContainerTarget = editor => {
var _a;
if (!editor.inline) {
return Optional.none();
}
const selector = (_a = fixedContainerSelector(editor)) !== null && _a !== void 0 ? _a : '';
if (selector.length > 0) {
return descendant(body$1(), selector);
}
const element = fixedToolbarContainerTarget(editor);
if (isNonNullable(element)) {
return Optional.some(SugarElement.fromDom(element));
}
return Optional.none();
};
const useFixedContainer = editor => editor.inline && fixedContainerTarget(editor).isSome();
const getUiMode = option('ui_mode');
const isSplitUiMode = editor => !useFixedContainer(editor) && getUiMode(editor) === 'split';

const closest = target => closest$1(target, '[contenteditable]');
const isEditable$1 = (element, assumeEditable = false) => {
Expand Down Expand Up @@ -4043,7 +4063,7 @@
return replaceIn(grid, targetCells, comparator, substitution, replace, Optional.none, always);
};

const generate = cases => {
const generate$1 = cases => {
if (!isArray(cases)) {
throw new Error('cases must be an array');
}
Expand Down Expand Up @@ -4106,7 +4126,7 @@
});
return adt;
};
const Adt = { generate };
const Adt = { generate: generate$1 };

const adt$6 = Adt.generate([
{ none: [] },
Expand Down Expand Up @@ -4728,9 +4748,9 @@
const eraseRows = run(opEraseRows, onCells, noop, prune, Generators.modification);
const makeColumnsHeader = run(opMakeColumnsHeader, onUnlockedCells, noop, noop, headerCellGenerator);
const unmakeColumnsHeader = run(opUnmakeColumnsHeader, onUnlockedCells, noop, noop, bodyCellGenerator);
const makeRowsHeader = run(opMakeRowsHeader, onUnlockedCells, noop, noop, headerCellGenerator);
const makeRowsBody = run(opMakeRowsBody, onUnlockedCells, noop, noop, bodyCellGenerator);
const makeRowsFooter = run(opMakeRowsFooter, onUnlockedCells, noop, noop, bodyCellGenerator);
const makeRowsHeader = run(opMakeRowsHeader, onCells, noop, noop, headerCellGenerator);
const makeRowsBody = run(opMakeRowsBody, onCells, noop, noop, bodyCellGenerator);
const makeRowsFooter = run(opMakeRowsFooter, onCells, noop, noop, bodyCellGenerator);
const makeCellsHeader = run(opMakeCellsHeader, onUnlockedCells, noop, noop, headerCellGenerator);
const unmakeCellsHeader = run(opUnmakeCellsHeader, onUnlockedCells, noop, noop, bodyCellGenerator);
const mergeCells = run(opMergeCells, onUnlockedMergable, resize, noop, Generators.merging);
Expand Down Expand Up @@ -7729,7 +7749,7 @@
set$2(target, 'data-initial-' + dir, getCssValue(target, dir));
add(target, resizeBarDragging);
set$1(target, 'opacity', '0.2');
resizing.go(wire.parent());
resizing.go(wire.dragContainer());
};
const mousedown = bind(wire.parent(), 'mousedown', event => {
if (isRowBar(event.target)) {
Expand Down Expand Up @@ -7833,11 +7853,23 @@
};
const TableResize = { create };

const random = () => window.crypto.getRandomValues(new Uint32Array(1))[0] / 4294967295;

let unique = 0;
const generate = prefix => {
const date = new Date();
const time = date.getTime();
const random$1 = Math.floor(random() * 1000000000);
unique++;
return prefix + '_' + random$1 + unique + String(time);
};

const only = (element, isResizable) => {
const parent = isDocument(element) ? documentElement(element) : element;
return {
parent: constant(parent),
view: constant(element),
dragContainer: constant(parent),
origin: constant(SugarPosition(0, 0)),
isResizable
};
Expand All @@ -7847,6 +7879,7 @@
return {
parent: constant(chrome),
view: constant(editable),
dragContainer: constant(chrome),
origin,
isResizable
};
Expand All @@ -7855,31 +7888,58 @@
return {
parent: constant(chrome),
view: constant(editable),
dragContainer: constant(chrome),
origin: constant(SugarPosition(0, 0)),
isResizable
};
};
const scrollable = (editable, chrome, dragContainer, isResizable) => {
return {
parent: constant(chrome),
view: constant(editable),
dragContainer: constant(dragContainer),
origin: () => absolute(chrome),
isResizable
};
};
const ResizeWire = {
only,
detached,
body
body,
scrollable
};

const createContainer = () => {
const createContainer = position => {
const id = generate('resizer-container');
const container = SugarElement.fromTag('div');
set$2(container, 'id', id);
setAll(container, {
position: 'static',
position,
height: '0',
width: '0',
padding: '0',
margin: '0',
border: '0'
});
append$1(body$1(), container);
return container;
};
const getInlineResizeWire = (editor, isResizable) => {
const isSplitUiMode$1 = isSplitUiMode(editor);
const editorBody = SugarElement.fromDom(editor.getBody());
const container = createContainer(isSplitUiMode$1 ? 'relative' : 'static');
const body = body$1();
if (isSplitUiMode$1) {
after$5(editorBody, container);
return ResizeWire.scrollable(editorBody, container, body, isResizable);
}
append$1(body, container);
return ResizeWire.body(editorBody, container, isResizable);
};
const get = (editor, isResizable) => {
return editor.inline ? ResizeWire.body(SugarElement.fromDom(editor.getBody()), createContainer(), isResizable) : ResizeWire.only(SugarElement.fromDom(editor.getDoc()), isResizable);
if (editor.inline) {
return getInlineResizeWire(editor, isResizable);
}
return ResizeWire.only(SugarElement.fromDom(editor.getDoc()), isResizable);
};
const remove = (editor, wire) => {
if (editor.inline) {
Expand Down Expand Up @@ -8015,27 +8075,26 @@
fireTableModified(editor, table.dom, styleModified);
}
});
editor.on('SwitchMode', () => {
const showResizeBars = () => {
tableResize.on(resize => {
if (editor.mode.isReadOnly()) {
resize.off();
resize.hideBars();
} else {
resize.on();
resize.showBars();
}
resize.on();
resize.showBars();
});
});
editor.on('dragstart dragend', e => {
};
const hideResizeBars = () => {
tableResize.on(resize => {
if (e.type === 'dragstart') {
resize.hideBars();
resize.off();
} else {
resize.on();
resize.showBars();
}
resize.off();
resize.hideBars();
});
};
editor.on('DisabledStateChange', e => {
e.state ? hideResizeBars() : showResizeBars();
});
editor.on('SwitchMode', () => {
editor.mode.isReadOnly() ? hideResizeBars() : showResizeBars();
});
editor.on('dragstart dragend', e => {
e.type === 'dragstart' ? hideResizeBars() : showResizeBars();
});
editor.on('remove', () => {
destroy();
Expand Down
4 changes: 2 additions & 2 deletions public/ext/tinymce/models/dom/model.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion public/ext/tinymce/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "tinymce",
"version": "7.5.1",
"version": "7.6.1",
"repository": {
"type": "git",
"url": "https://github.com/tinymce/tinymce.git",
Expand Down
2 changes: 1 addition & 1 deletion public/ext/tinymce/plugins/accordion/plugin.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* TinyMCE version 7.5.1 (TBD)
* TinyMCE version 7.6.1 (2025-01-22)
*/

(function () {
Expand Down
Loading
Loading