mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 20:42:22 +02:00
Merge branch 'MDL-81663-main' of https://github.com/safatshahin/moodle
This commit is contained in:
commit
031edf2ab3
2
lib/editor/tiny/amd/build/editor.min.js
vendored
2
lib/editor/tiny/amd/build/editor.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -323,6 +323,11 @@ const getStandardConfig = (target, tinyMCE, options, plugins) => {
|
||||
// eslint-disable-next-line camelcase
|
||||
browser_spellcheck: true,
|
||||
|
||||
// Set the license_key to gpl.
|
||||
// https://www.tiny.cloud/docs/tinymce/latest/license-key/
|
||||
// eslint-disable-next-line camelcase
|
||||
license_key: 'gpl',
|
||||
|
||||
setup: (editor) => {
|
||||
Options.register(editor, options);
|
||||
|
||||
|
@ -440,14 +440,6 @@ class manager {
|
||||
'tabledeleterow' => 'table',
|
||||
],
|
||||
],
|
||||
'template' => [
|
||||
'buttons' => [
|
||||
'template',
|
||||
],
|
||||
'menuitems' => [
|
||||
'template' => 'insert',
|
||||
],
|
||||
],
|
||||
'visualblocks' => [
|
||||
'buttons' => [
|
||||
'visualblocks',
|
||||
@ -492,9 +484,6 @@ class manager {
|
||||
// Use the Moodle autosave plugin instead.
|
||||
'autosave',
|
||||
|
||||
// Disable the Template plugin for now.
|
||||
'template',
|
||||
|
||||
// Disable the preview plugin as it does not support Moodle filters.
|
||||
'preview',
|
||||
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
The world's #1 open source rich text editor.
|
||||
|
||||
**Using an old version of TinyMCE?** We recommend you to upgrade to TinyMCE 6 to continue receiving security updates, or consider [TinyMCE 5 LTS](https://www.tiny.cloud/long-term-support/) if you need more time to upgrade.
|
||||
**Using an old version of TinyMCE?** We recommend you to upgrade to TinyMCE 7 to continue receiving security updates, or consider [TinyMCE 5 LTS](https://www.tiny.cloud/long-term-support/) if you need more time to upgrade.
|
||||
|
||||
Used and trusted by millions of developers, TinyMCE is the world’s most customizable, scalable, and flexible rich text editor. We’ve helped launch the likes of Atlassian, Medium, Evernote (and lots more that we can’t tell you), by empowering them to create exceptional content and experiences for their users.
|
||||
|
||||
With more than 350M+ downloads every year, we’re also one of the most trusted enterprise-grade open source HTML editors on the internet. There’s currently more than 100M+ products worldwide, powered by Tiny. As a high powered WYSIWYG editor, TinyMCE is built to scale, designed to innovate, and thrives on delivering results to difficult edge-cases.
|
||||
|
||||
You can access a [full featured demo of TinyMCE](https://www.tiny.cloud/docs/tinymce/6/premium-full-featured/) in the docs on the TinyMCE website.
|
||||
You can access a [full featured demo of TinyMCE](https://www.tiny.cloud/docs/tinymce/7/premium-full-featured/) in the docs on the TinyMCE website.
|
||||
|
||||
<p align="center">
|
||||
<img alt="Screenshot of the TinyMCE Editor" src="https://www.tiny.cloud/storage/github-readme-images/tinymce-editor-6x.png"\>
|
||||
@ -18,17 +18,17 @@ You can access a [full featured demo of TinyMCE](https://www.tiny.cloud/docs/tin
|
||||
|
||||
Getting started with the TinyMCE rich text editor is easy, and for simple configurations can be done in less than 5 minutes.
|
||||
|
||||
[TinyMCE Cloud Deployment Quick Start Guide](https://www.tiny.cloud/docs/tinymce/6/cloud-quick-start/)
|
||||
[TinyMCE Cloud Deployment Quick Start Guide](https://www.tiny.cloud/docs/tinymce/7/cloud-quick-start/)
|
||||
|
||||
[TinyMCE Self-hosted Deployment Guide](https://www.tiny.cloud/docs/tinymce/6/npm-projects/)
|
||||
[TinyMCE Self-hosted Deployment Guide](https://www.tiny.cloud/docs/tinymce/7/npm-projects/)
|
||||
|
||||
TinyMCE provides a range of configuration options that allow you to integrate it into your application. Start customizing with a [basic setup](https://www.tiny.cloud/docs/tinymce/6/basic-setup/).
|
||||
TinyMCE provides a range of configuration options that allow you to integrate it into your application. Start customizing with a [basic setup](https://www.tiny.cloud/docs/tinymce/7/basic-setup/).
|
||||
|
||||
Configure it for one of three modes of editing:
|
||||
|
||||
- [TinyMCE classic editing mode](https://www.tiny.cloud/docs/tinymce/6/use-tinymce-classic/).
|
||||
- [TinyMCE inline editing mode](https://www.tiny.cloud/docs/tinymce/6/use-tinymce-inline/).
|
||||
- [TinyMCE distraction-free editing mode](https://www.tiny.cloud/docs/tinymce/6/use-tinymce-distraction-free/).
|
||||
- [TinyMCE classic editing mode](https://www.tiny.cloud/docs/tinymce/7/use-tinymce-classic/).
|
||||
- [TinyMCE inline editing mode](https://www.tiny.cloud/docs/tinymce/7/use-tinymce-inline/).
|
||||
- [TinyMCE distraction-free editing mode](https://www.tiny.cloud/docs/tinymce/7/use-tinymce-distraction-free/).
|
||||
|
||||
## Features
|
||||
|
||||
@ -40,11 +40,11 @@ TinyMCE is easily integrated into your projects with the help of components such
|
||||
- [tinymce-vue](https://github.com/tinymce/tinymce-vue)
|
||||
- [tinymce-angular](https://github.com/tinymce/tinymce-angular)
|
||||
|
||||
With over 29 integrations, and 400+ APIs, see the TinyMCE docs for a full list of editor [integrations](https://www.tiny.cloud/docs/tinymce/6/integrations/).
|
||||
With over 29 integrations, and 400+ APIs, see the TinyMCE docs for a full list of editor [integrations](https://www.tiny.cloud/docs/tinymce/7/integrations/).
|
||||
|
||||
### Customization
|
||||
|
||||
It is easy to [configure the UI](https://www.tiny.cloud/docs/tinymce/6/customize-ui/) of your rich text editor to match the design of your site, product or application. Due to its flexibility, you can [configure the editor](https://www.tiny.cloud/docs/tinymce/6/basic-setup/) with as much or as little functionality as you like, depending on your requirements.
|
||||
It is easy to [configure the UI](https://www.tiny.cloud/docs/tinymce/7/customize-ui/) of your rich text editor to match the design of your site, product or application. Due to its flexibility, you can [configure the editor](https://www.tiny.cloud/docs/tinymce/7/basic-setup/) with as much or as little functionality as you like, depending on your requirements.
|
||||
|
||||
With [50+ powerful plugins available](https://www.tiny.cloud/tinymce/features/), and content editable as the basis of TinyMCE, adding additional functionality is as simple as including a single line of code.
|
||||
|
||||
@ -54,7 +54,7 @@ Realizing the full power of most plugins requires only a few lines more.
|
||||
|
||||
Sometimes your editor requirements can be quite unique, and you need the freedom and flexibility to innovate. Thanks to TinyMCE being open source, you can view the source code and develop your own extensions for custom functionality to meet your own requirements.
|
||||
|
||||
The TinyMCE [API](https://www.tiny.cloud/docs/tinymce/6/apis/tinymce.root/) is exposed to make it easier for you to write custom functionality that fits within the existing framework of TinyMCE [UI components](https://www.tiny.cloud/docs/tinymce/6/custom-ui-components/).
|
||||
The TinyMCE [API](https://www.tiny.cloud/docs/tinymce/7/apis/tinymce.root/) is exposed to make it easier for you to write custom functionality that fits within the existing framework of TinyMCE [UI components](https://www.tiny.cloud/docs/tinymce/7/custom-ui-components/).
|
||||
|
||||
### Extended Features and Support
|
||||
|
||||
@ -71,3 +71,7 @@ As an open source product, we encourage and support the active development of ou
|
||||
## Want more information?
|
||||
|
||||
Visit the [TinyMCE website](https://tiny.cloud/) and check out the [TinyMCE documentation](https://www.tiny.cloud/docs/).
|
||||
|
||||
## License
|
||||
|
||||
Licensed under the terms of GNU General Public License Version 2 or later. For full details about the license, please check the LICENSE.md file.
|
||||
|
@ -62,6 +62,7 @@ tinymce.IconManager.add('default', {
|
||||
'flip-horizontally': '<svg width="24" height="24"><path d="M14 19h2v-2h-2v2Zm4-8h2V9h-2v2ZM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 0 0-2 2Zm14-2v2h2a2 2 0 0 0-2-2Zm-7 16h2V3h-2v18Zm7-6h2v-2h-2v2Zm-4-8h2V5h-2v2Zm4 12a2 2 0 0 0 2-2h-2v2Z" fill-rule="nonzero"/></svg>',
|
||||
'flip-vertically': '<svg width="24" height="24"><path d="M5 14v2h2v-2H5Zm8 4v2h2v-2h-2Zm4-14H7a2 2 0 0 0-2 2v3h2V6h10v3h2V6a2 2 0 0 0-2-2Zm2 14h-2v2a2 2 0 0 0 2-2ZM3 11v2h18v-2H3Zm6 7v2h2v-2H9Zm8-4v2h2v-2h-2ZM5 18c0 1.1.9 2 2 2v-2H5Z" fill-rule="nonzero"/></svg>',
|
||||
'footnote': '<svg width="24" height="24"><path d="M19 13c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2h14Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M19 4v6h-1V5h-1.5V4h2.6Z"/><path d="M12 18c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2h7ZM14 8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2h9Z"/></svg>',
|
||||
'format-code': '<svg width="24" height="24"><path d="m10 22 2-7H6l9-13h2l-2 8h7L12 22h-2ZM6 2h7l-1.4 2H6V2Zm4.2 4H4v2h4.8l1.4-2Zm-2.7 4H2v2h4l1.5-2Z"/></svg>',
|
||||
'format-painter': '<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 0 0-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3Z" fill-rule="nonzero"/></svg>',
|
||||
'format': '<svg width="24" height="24"><path fill-rule="evenodd" d="M17 5a1 1 0 0 1 0 2h-4v11a1 1 0 0 1-2 0V7H7a1 1 0 1 1 0-2h10Z"/></svg>',
|
||||
'fullscreen': '<svg width="24" height="24"><path d="m15.3 10-1.2-1.3 2.9-3h-2.3a.9.9 0 1 1 0-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 1 1-1.8 0V7l-2.9 3Zm0 4 3 3v-2.3a.9.9 0 1 1 1.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 1 1 0-1.8H17l-3-2.9 1.3-1.2ZM10 15.4l-2.9 3h2.3a.9.9 0 1 1 0 1.7H5a.9.9 0 0 1-.9-.9v-4.4a.9.9 0 1 1 1.8 0V17l2.9-3 1.2 1.3ZM8.7 10 5.7 7v2.3a.9.9 0 0 1-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 0 1 0 1.8H7l3 2.9-1.3 1.2Z" fill-rule="nonzero"/></svg>',
|
||||
@ -100,6 +101,7 @@ tinymce.IconManager.add('default', {
|
||||
'list-num-upper-roman': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15Zm0 10v-1.2h1.3V27H15Zm0 10v-1.2h1.3V37H15Z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>',
|
||||
'lock': '<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3ZM10 8v3h4V8a1 1 0 0 0-.3-.7A1 1 0 0 0 13 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7Z" fill-rule="evenodd"/></svg>',
|
||||
'ltr': '<svg width="24" height="24"><path d="M11 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 7.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L11 5ZM4.4 16.2 6.2 15l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6Z" fill-rule="evenodd"/></svg>',
|
||||
'math-equation': '<svg width="24" height="24"><path fill-rule="evenodd" clip-rule="evenodd" d="M9 4.8c.1-.5.5-.8 1-.8h10a1 1 0 1 1 0 2h-9.2L8.3 19.2a1 1 0 0 1-1.7.4l-3.4-4.2a1 1 0 0 1 1.6-1.2l2 2.5L9 4.8Zm9.7 5.5c.4.4.4 1 0 1.4L17 13.5l1.8 1.8a1 1 0 1 1-1.4 1.4L15.5 15l-1.8 1.8a1 1 0 0 1-1.4-1.4l1.8-1.8-1.8-1.8a1 1 0 0 1 1.4-1.4l1.8 1.8 1.8-1.8a1 1 0 0 1 1.4 0Z"/></svg>',
|
||||
'minus': '<svg width="24" height="24"><path d="M19 11a1 1 0 0 1 .1 2H5a1 1 0 0 1-.1-2H19Z"/></svg>',
|
||||
'more-drawer': '<svg width="24" height="24"><path d="M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2Z" fill-rule="nonzero"/></svg>',
|
||||
'new-document': '<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3ZM17 19H7V5h6v4h4v10Z" fill-rule="nonzero"/></svg>',
|
||||
@ -110,6 +112,9 @@ tinymce.IconManager.add('default', {
|
||||
'ordered-list': '<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2Zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 1 1 0-2ZM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 0 1-.5-.5V5h-.5a.5.5 0 0 1 0-1H6Zm-1 8.8.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2H4.5a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3ZM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 0 1 0-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 1 1 0-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 1 1 0-1H6c.6 0 1 .4 1 1Z" fill-rule="evenodd"/></svg>',
|
||||
'orientation': '<svg width="24" height="24"><path d="M7.3 6.4 1 13l6.4 6.5 6.5-6.5-6.5-6.5ZM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7ZM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 0 1 0-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 1 1-4.3 16.9l1.5-1.5A7 7 0 1 0 13 6h-1Z" fill-rule="nonzero"/></svg>',
|
||||
'outdent': '<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2Zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2Zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2Zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2Zm1.6-3.8a1 1 0 0 1-1.2 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 0 1 1.2 1.6L6.8 12l1.8 1.2Z" fill-rule="evenodd"/></svg>',
|
||||
'export-pdf': '<svg width="24" height="24"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 3h7.4L19 7.6V17h-2V9h-4V5H7v3H5V5c0-1.1.9-2 2-2Z"/><path d="M2.6 15.2v-1.9h1c.6 0 1-.2 1.4-.5.3-.3.5-.7.5-1.2s-.2-.9-.5-1.2a2 2 0 0 0-1.3-.4H1v5.2h1.6Zm.4-3h-.4v-1.1h.5l.6.1.2.5c0 .1 0 .3-.2.4l-.7.1Zm5.7 3 1-.1c.3 0 .5-.2.7-.4l.5-.8c.2-.3.2-.7.2-1.3v-1l-.5-.8c-.2-.3-.4-.5-.7-.6L8.7 10H6.3v5.2h2.4Zm-.4-1.1H8v-3h.4c.5 0 .8.2 1 .4l.2 1.1-.1 1-.3.3-.8.2Zm5.3 1.2V13h2v-1h-2v-1H16V10h-4v5.2h1.6Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M15 17a1 1 0 1 0-2 0v3.1l-1.4-1a1 1 0 1 0-1.2 1.7l3.6 2.4 3.6-2.4a1 1 0 0 0-1.2-1.6l-1.4 1V17Z"/></svg>',
|
||||
'export-word': '<svg width="24" height="24"><path d="M9.5 7A1.5 1.5 0 0 1 11 8.4v7.1A1.5 1.5 0 0 1 9.6 17H2.5A1.5 1.5 0 0 1 1 15.6V8.5A1.5 1.5 0 0 1 2.4 7h7.1Zm-1 2.8-1 2.6-1-2.5v-.1a.6.6 0 0 0-1 0l-.1.1-.9 2.5-1-2.5v-.1a.6.6 0 0 0-1 .4v.1l1.5 4v.1a.6.6 0 0 0 1 0v-.1l1-2.5.9 2.5v.1a.6.6 0 0 0 1 0H8l1.6-4v-.2a.6.6 0 0 0-1.1-.4Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M7 3h7.4L19 7.6V17h-2V9h-4V5H5c0-1.1.9-2 2-2ZM15 17a1 1 0 1 0-2 0v3.1l-1.4-1a1 1 0 1 0-1.2 1.7l3.6 2.4 3.6-2.4a1 1 0 0 0-1.2-1.6l-1.4 1V17Z"/></svg>',
|
||||
'import-word': '<svg width="24" height="24"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 3h7.4L19 7.6V15h-2V9h-4V5H5c0-1.1.9-2 2-2Z"/><path d="M9.5 7A1.5 1.5 0 0 1 11 8.4v7.1A1.5 1.5 0 0 1 9.6 17H2.5A1.5 1.5 0 0 1 1 15.6V8.5A1.5 1.5 0 0 1 2.4 7h7.1Zm-1 2.8-1 2.6-1-2.5v-.1a.6.6 0 0 0-1 0l-.1.1-.9 2.5-1-2.5v-.1a.6.6 0 0 0-1 .4v.1l1.5 4v.1a.6.6 0 0 0 1 0v-.1l1-2.5.9 2.5v.1a.6.6 0 0 0 1 0H8l1.6-4v-.2a.6.6 0 0 0-1.1-.4Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M11.4 18.2a1 1 0 0 0 1.2 1.6l1.4-1V22a1 1 0 1 0 2 0v-3.1l1.4 1a1 1 0 0 0 1.2-1.7L15 15.8l-3.6 2.4Z"/></svg>',
|
||||
'page-break': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2Zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2Zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2Zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 0 1 0-2Zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2ZM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1ZM6 22a1 1 0 0 1-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5H7v5c0 .6-.4 1-1 1Z"/></g></svg>',
|
||||
'paragraph': '<svg width="24" height="24"><path fill-rule="evenodd" d="M10 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 6.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L10 5Z"/></svg>',
|
||||
'paste-column-after': '<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 0 1 2.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0 1 12 1Zm8 7v12h-6V8h6Zm-1.5 1.5h-3v9h3v-9ZM12 3a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"/></svg>',
|
||||
@ -131,6 +136,7 @@ tinymce.IconManager.add('default', {
|
||||
'resize-handle': '<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 1 1 9 2l-7 7A.5.5 0 1 1 1 8l7-7ZM8.1 5.1A.5.5 0 1 1 9 6l-3 3A.5.5 0 1 1 5 8l3-3Z"/></g></svg>',
|
||||
'resize': '<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-6a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3A1 1 0 0 1 4 11V5Z" fill-rule="evenodd"/></svg>',
|
||||
'restore-draft': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1Z"/><path d="M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10Z" fill-rule="nonzero"/></g></svg>',
|
||||
'revision-history': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1Z"/><path d="M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10Z" fill-rule="nonzero"/></g></svg>',
|
||||
'rotate-left': '<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10Z" fill-rule="nonzero"/></svg>',
|
||||
'rotate-right': '<svg width="24" height="24"><path d="M20 8V5a1 1 0 0 1 2 0v6c0 .6-.4 1-1 1h-6a1 1 0 0 1 0-2h4.3L16 7A7.2 7.2 0 0 0 7.7 6a7 7 0 0 0 3 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 0 1 1.4 1.5A9.2 9.2 0 0 1 2.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8Z" fill-rule="nonzero"/></svg>',
|
||||
'rtl': '<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 4.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L8 5Zm12 11.2a1 1 0 1 1-1 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 1 1 1 1.6L18.4 15l1.8 1.2Z" fill-rule="evenodd"/></svg>',
|
||||
|
File diff suppressed because one or more lines are too long
6
lib/editor/tiny/js/tinymce/license.md
Normal file
6
lib/editor/tiny/js/tinymce/license.md
Normal file
@ -0,0 +1,6 @@
|
||||
# Software License Agreement
|
||||
|
||||
**TinyMCE** – [<https://github.com/tinymce/tinymce>](https://github.com/tinymce/tinymce)
|
||||
Copyright (c) 2024, Ephox Corporation DBA Tiny Technologies, Inc.
|
||||
|
||||
Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html).
|
@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 Ephox Corporation DBA Tiny Technologies, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -749,16 +749,14 @@
|
||||
});
|
||||
|
||||
const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);
|
||||
const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);
|
||||
const isSupported$1 = constant(supported);
|
||||
const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;
|
||||
const getRootNode = e => SugarElement.fromDom(e.dom.getRootNode());
|
||||
const getShadowRoot = e => {
|
||||
const r = getRootNode(e);
|
||||
return isShadowRoot(r) ? Optional.some(r) : Optional.none();
|
||||
};
|
||||
const getShadowHost = e => SugarElement.fromDom(e.dom.host);
|
||||
const getOriginalEventTarget = event => {
|
||||
if (isSupported$1() && isNonNullable(event.target)) {
|
||||
if (isNonNullable(event.target)) {
|
||||
const el = SugarElement.fromDom(event.target);
|
||||
if (isElement(el) && isOpenShadowHost(el)) {
|
||||
if (event.composed && event.composedPath) {
|
||||
@ -879,7 +877,14 @@
|
||||
const bindFrom = (a, f) => a !== undefined && a !== null ? f(a) : Optional.none();
|
||||
const someIf = (b, a) => b ? Optional.some(a) : Optional.none();
|
||||
|
||||
const removeFromStart = (str, numChars) => {
|
||||
return str.substring(numChars);
|
||||
};
|
||||
|
||||
const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr;
|
||||
const removeLeading = (str, prefix) => {
|
||||
return startsWith(str, prefix) ? removeFromStart(str, prefix.length) : str;
|
||||
};
|
||||
const contains = (str, substr, start = 0, end) => {
|
||||
const idx = str.indexOf(substr, start);
|
||||
if (idx !== -1) {
|
||||
@ -1364,7 +1369,7 @@
|
||||
const PlatformDetection = { detect: detect$3 };
|
||||
|
||||
const mediaMatch = query => window.matchMedia(query).matches;
|
||||
let platform = cached(() => PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch));
|
||||
let platform = cached(() => PlatformDetection.detect(window.navigator.userAgent, Optional.from(window.navigator.userAgentData), mediaMatch));
|
||||
const detect$2 = () => platform();
|
||||
|
||||
const Dimension = (name, getOffset) => {
|
||||
@ -1835,6 +1840,7 @@
|
||||
const rPercentageBasedSizeRegex = /(\d+(\.\d+)?)%/;
|
||||
const rPixelBasedSizeRegex = /(\d+(\.\d+)?)px|em/;
|
||||
const isCol$2 = isTag('col');
|
||||
const isRow$2 = isTag('tr');
|
||||
const getPercentSize = (elm, outerGetter, innerGetter) => {
|
||||
const relativeParent = parentElement(elm).getOrThunk(() => getBody$1(owner(elm)));
|
||||
return outerGetter(elm) / innerGetter(relativeParent) * 100;
|
||||
@ -1848,6 +1854,9 @@
|
||||
const setHeight = (cell, amount) => {
|
||||
set$1(cell, 'height', amount + 'px');
|
||||
};
|
||||
const removeHeight = cell => {
|
||||
remove$5(cell, 'height');
|
||||
};
|
||||
const getHeightValue = cell => getRuntime(cell) + 'px';
|
||||
const convert = (cell, number, getter, setter) => {
|
||||
const newSize = table(cell).map(table => {
|
||||
@ -1879,11 +1888,11 @@
|
||||
});
|
||||
};
|
||||
const getRawWidth$1 = element => getRaw$1(element, 'width');
|
||||
const getRawHeight = element => getRaw$1(element, 'height');
|
||||
const getRawHeight$1 = element => getRaw$1(element, 'height');
|
||||
const getPercentageWidth = cell => getPercentSize(cell, get$9, getInner);
|
||||
const getPixelWidth$1 = cell => isCol$2(cell) ? get$9(cell) : getRuntime$1(cell);
|
||||
const getHeight = cell => {
|
||||
return get$7(cell, 'rowspan', getTotalHeight);
|
||||
return isRow$2(cell) ? get$8(cell) : get$7(cell, 'rowspan', getTotalHeight);
|
||||
};
|
||||
const getGenericWidth = cell => {
|
||||
const width = getRawWidth$1(cell);
|
||||
@ -1897,6 +1906,7 @@
|
||||
set$1(cell, 'width', amount + unit);
|
||||
};
|
||||
const getPixelTableWidth = table => get$9(table) + 'px';
|
||||
const getPixelTableHeight = table => get$8(table) + 'px';
|
||||
const getPercentTableWidth = table => getPercentSize(table, get$9, getInner) + '%';
|
||||
const isPercentSizing$1 = table => getRawWidth$1(table).exists(size => rPercentageBasedSizeRegex.test(size));
|
||||
const isPixelSizing$1 = table => getRawWidth$1(table).exists(size => rPixelBasedSizeRegex.test(size));
|
||||
@ -1908,7 +1918,7 @@
|
||||
return getRawWidth$1(cell).getOrThunk(() => getPixelWidth$1(cell) + 'px');
|
||||
};
|
||||
const getRawH = cell => {
|
||||
return getRawHeight(cell).getOrThunk(() => getHeight(cell) + 'px');
|
||||
return getRawHeight$1(cell).getOrThunk(() => getHeight(cell) + 'px');
|
||||
};
|
||||
const justCols = warehouse => map$1(Warehouse.justColumns(warehouse), column => Optional.from(column.element));
|
||||
const isValidColumn = cell => {
|
||||
@ -1955,20 +1965,19 @@
|
||||
return deduced.getOrThunk(tableSize.minCellWidth);
|
||||
});
|
||||
};
|
||||
const getHeightFrom = (warehouse, table, direction, getHeight, fallback) => {
|
||||
const rows$1 = rows(warehouse);
|
||||
const backups = [Optional.some(direction.edge(table))].concat(map$1(direction.positions(rows$1, table), pos => pos.map(p => p.y)));
|
||||
return map$1(rows$1, (cellOption, c) => {
|
||||
return getDimension(cellOption, c, backups, not(hasRowspan), getHeight, fallback);
|
||||
});
|
||||
const getHeightFrom = (warehouse, table, getHeight, fallback) => {
|
||||
const rowCells = rows(warehouse);
|
||||
const rows$1 = map$1(warehouse.all, r => Optional.some(r.element));
|
||||
const backups = [Optional.some(height.edge(table))].concat(map$1(height.positions(rowCells, table), pos => pos.map(p => p.y)));
|
||||
return map$1(rows$1, (row, i) => getDimension(row, i, backups, always, getHeight, fallback));
|
||||
};
|
||||
const getPixelHeights = (warehouse, table, direction) => {
|
||||
return getHeightFrom(warehouse, table, direction, getHeight, deduced => {
|
||||
const getPixelHeights = (warehouse, table) => {
|
||||
return getHeightFrom(warehouse, table, getHeight, deduced => {
|
||||
return deduced.getOrThunk(minHeight);
|
||||
});
|
||||
};
|
||||
const getRawHeights = (warehouse, table, direction) => {
|
||||
return getHeightFrom(warehouse, table, direction, getRawH, getDeduced);
|
||||
const getRawHeights = (warehouse, table) => {
|
||||
return getHeightFrom(warehouse, table, getRawH, getDeduced);
|
||||
};
|
||||
|
||||
const widthLookup = (table, getter) => () => {
|
||||
@ -2512,10 +2521,12 @@
|
||||
const getSelectionStart = editor => SugarElement.fromDom(editor.selection.getStart());
|
||||
const getPixelWidth = elm => elm.getBoundingClientRect().width;
|
||||
const getPixelHeight = elm => elm.getBoundingClientRect().height;
|
||||
const getRawWidth = (editor, elm) => {
|
||||
const raw = editor.dom.getStyle(elm, 'width') || editor.dom.getAttrib(elm, 'width');
|
||||
const getRawValue = prop => (editor, elm) => {
|
||||
const raw = editor.dom.getStyle(elm, prop) || editor.dom.getAttrib(elm, prop);
|
||||
return Optional.from(raw).filter(isNotEmpty);
|
||||
};
|
||||
const getRawWidth = getRawValue('width');
|
||||
const getRawHeight = getRawValue('height');
|
||||
const isPercentage$1 = value => /^(\d+(\.\d+)?)%$/.test(value);
|
||||
const isPixel = value => /^(\d+(\.\d+)?)px$/.test(value);
|
||||
const isInEditableContext$1 = cell => closest$2(cell, isTag('table')).exists(isEditable$1);
|
||||
@ -4157,17 +4168,6 @@
|
||||
colspan: column.colspan
|
||||
}));
|
||||
};
|
||||
const recalculateHeightForCells = (warehouse, heights) => {
|
||||
const all = Warehouse.justCells(warehouse);
|
||||
return map$1(all, cell => {
|
||||
const height = total(cell.row, cell.row + cell.rowspan, heights);
|
||||
return {
|
||||
element: cell.element,
|
||||
height,
|
||||
rowspan: cell.rowspan
|
||||
};
|
||||
});
|
||||
};
|
||||
const matchRowHeight = (warehouse, heights) => {
|
||||
return map$1(warehouse.all, (row, i) => {
|
||||
return {
|
||||
@ -4202,17 +4202,16 @@
|
||||
recalculateAndApply(warehouse, newWidths, tableSize);
|
||||
resizing.resizeTable(tableSize.adjustTableWidth, clampedStep, isLastColumn);
|
||||
};
|
||||
const adjustHeight = (table, delta, index, direction) => {
|
||||
const adjustHeight = (table, delta, index) => {
|
||||
const warehouse = Warehouse.fromTable(table);
|
||||
const heights = getPixelHeights(warehouse, table, direction);
|
||||
const heights = getPixelHeights(warehouse, table);
|
||||
const newHeights = map$1(heights, (dy, i) => index === i ? Math.max(delta + dy, minHeight()) : dy);
|
||||
const newCellSizes = recalculateHeightForCells(warehouse, newHeights);
|
||||
const newRowSizes = matchRowHeight(warehouse, newHeights);
|
||||
each$2(newRowSizes, row => {
|
||||
setHeight(row.element, row.height);
|
||||
});
|
||||
each$2(newCellSizes, cell => {
|
||||
setHeight(cell.element, cell.height);
|
||||
each$2(Warehouse.justCells(warehouse), cell => {
|
||||
removeHeight(cell.element);
|
||||
});
|
||||
const total = sumUp(newHeights);
|
||||
setHeight(table, total);
|
||||
@ -4581,7 +4580,7 @@
|
||||
const opEraseRows = (grid, details, _comparator, _genWrappers) => {
|
||||
const rows = uniqueRows(details);
|
||||
const newGrid = deleteRowsAt(grid, rows[0].row, rows[rows.length - 1].row);
|
||||
const maxRowIndex = newGrid.length > 0 ? newGrid.length - 1 : 0;
|
||||
const maxRowIndex = Math.max(extractGridDetails(newGrid).rows.length - 1, 0);
|
||||
return bundle(newGrid, Math.min(details[0].row, maxRowIndex), details[0].column);
|
||||
};
|
||||
const opMergeCells = (grid, mergable, comparator, genWrappers) => {
|
||||
@ -4626,7 +4625,7 @@
|
||||
const context = rows[pasteDetails.cells[0].row];
|
||||
const gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);
|
||||
const mergedGrid = insertCols(index, grid, gridB, pasteDetails.generators, comparator);
|
||||
return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);
|
||||
return bundle(mergedGrid, pasteDetails.cells[0].row, index);
|
||||
};
|
||||
const opPasteRowsBefore = (grid, pasteDetails, comparator, _genWrappers) => {
|
||||
const rows = extractGridDetails(grid).rows;
|
||||
@ -4642,7 +4641,7 @@
|
||||
const context = rows[pasteDetails.cells[0].row];
|
||||
const gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context);
|
||||
const mergedGrid = insertRows(index, grid, gridB, pasteDetails.generators, comparator);
|
||||
return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column);
|
||||
return bundle(mergedGrid, index, pasteDetails.cells[0].column);
|
||||
};
|
||||
const opGetColumnsType = (table, target) => {
|
||||
const house = Warehouse.fromTable(table);
|
||||
@ -5110,11 +5109,9 @@
|
||||
set$1(column.element, 'width', width + unit);
|
||||
});
|
||||
};
|
||||
const redistributeToH = (newHeights, rows, cells, unit) => {
|
||||
const redistributeToH = (newHeights, rows, cells) => {
|
||||
each$2(cells, cell => {
|
||||
const heights = newHeights.slice(cell.row, cell.rowspan + cell.row);
|
||||
const h = sum(heights, minHeight());
|
||||
set$1(cell.element, 'height', h + unit);
|
||||
remove$5(cell.element, 'height');
|
||||
});
|
||||
each$2(rows, (row, i) => {
|
||||
set$1(row.element, 'height', newHeights[i]);
|
||||
@ -5141,11 +5138,10 @@
|
||||
set$1(table, 'width', newWidth);
|
||||
});
|
||||
optHeight.each(newHeight => {
|
||||
const hUnit = getUnit(newHeight);
|
||||
const totalHeight = get$8(table);
|
||||
const oldHeights = getRawHeights(warehouse, table, height);
|
||||
const oldHeights = getRawHeights(warehouse, table);
|
||||
const nuHeights = redistribute$1(oldHeights, totalHeight, newHeight);
|
||||
redistributeToH(nuHeights, rows, cells, hUnit);
|
||||
redistributeToH(nuHeights, rows, cells);
|
||||
set$1(table, 'height', newHeight);
|
||||
});
|
||||
};
|
||||
@ -5155,18 +5151,24 @@
|
||||
|
||||
const cleanupLegacyAttributes = element => {
|
||||
remove$7(element, 'width');
|
||||
remove$7(element, 'height');
|
||||
};
|
||||
const convertToPercentSize = table => {
|
||||
const convertToPercentSizeWidth = table => {
|
||||
const newWidth = getPercentTableWidth(table);
|
||||
redistribute(table, Optional.some(newWidth), Optional.none());
|
||||
cleanupLegacyAttributes(table);
|
||||
};
|
||||
const convertToPixelSize = table => {
|
||||
const convertToPixelSizeWidth = table => {
|
||||
const newWidth = getPixelTableWidth(table);
|
||||
redistribute(table, Optional.some(newWidth), Optional.none());
|
||||
cleanupLegacyAttributes(table);
|
||||
};
|
||||
const convertToNoneSize = table => {
|
||||
const convertToPixelSizeHeight = table => {
|
||||
const newHeight = getPixelTableHeight(table);
|
||||
redistribute(table, Optional.none(), Optional.some(newHeight));
|
||||
cleanupLegacyAttributes(table);
|
||||
};
|
||||
const convertToNoneSizeWidth = table => {
|
||||
remove$5(table, 'width');
|
||||
const columns = columns$1(table);
|
||||
const rowElements = columns.length > 0 ? columns : cells$1(table);
|
||||
@ -5274,11 +5276,11 @@
|
||||
});
|
||||
return descendant(getBody(editor), 'table[data-mce-id="__mce"]').map(table => {
|
||||
if (isTablePixelsForced(editor)) {
|
||||
convertToPixelSize(table);
|
||||
convertToPixelSizeWidth(table);
|
||||
} else if (isTableResponsiveForced(editor)) {
|
||||
convertToNoneSize(table);
|
||||
convertToNoneSizeWidth(table);
|
||||
} else if (isTablePercentagesForced(editor) || isPercentage(defaultStyles.width)) {
|
||||
convertToPercentSize(table);
|
||||
convertToPercentSizeWidth(table);
|
||||
}
|
||||
removeDataStyle(table);
|
||||
remove$7(table, 'data-mce-id');
|
||||
@ -5355,11 +5357,11 @@
|
||||
if (!isForcedSizing) {
|
||||
table(cellOrCaption, isRoot).each(table => {
|
||||
if (sizing === 'relative' && !isPercentSizing(table)) {
|
||||
convertToPercentSize(table);
|
||||
convertToPercentSizeWidth(table);
|
||||
} else if (sizing === 'fixed' && !isPixelSizing(table)) {
|
||||
convertToPixelSize(table);
|
||||
convertToPixelSizeWidth(table);
|
||||
} else if (sizing === 'responsive' && !isNoneSizing(table)) {
|
||||
convertToNoneSize(table);
|
||||
convertToNoneSizeWidth(table);
|
||||
}
|
||||
removeDataStyle(table);
|
||||
fireTableModified(editor, table.dom, structureModified);
|
||||
@ -6314,7 +6316,6 @@
|
||||
const isCellClosestContentEditable = is(closest(event.target), singleCell, eq$1);
|
||||
if (isNonEditableCell && isCellClosestContentEditable) {
|
||||
annotations.selectRange(container, boxes, singleCell, singleCell);
|
||||
bridge.selectContents(singleCell);
|
||||
}
|
||||
} else if (boxes.length > 1) {
|
||||
annotations.selectRange(container, boxes, cellSel.start, cellSel.finish);
|
||||
@ -6432,32 +6433,32 @@
|
||||
};
|
||||
|
||||
const caretPositionFromPoint = (doc, x, y) => {
|
||||
var _a, _b;
|
||||
return Optional.from((_b = (_a = doc.dom).caretPositionFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y)).bind(pos => {
|
||||
var _a;
|
||||
return Optional.from((_a = doc.caretPositionFromPoint) === null || _a === void 0 ? void 0 : _a.call(doc, x, y)).bind(pos => {
|
||||
if (pos.offsetNode === null) {
|
||||
return Optional.none();
|
||||
}
|
||||
const r = doc.dom.createRange();
|
||||
const r = doc.createRange();
|
||||
r.setStart(pos.offsetNode, pos.offset);
|
||||
r.collapse();
|
||||
return Optional.some(r);
|
||||
});
|
||||
};
|
||||
const caretRangeFromPoint = (doc, x, y) => {
|
||||
var _a, _b;
|
||||
return Optional.from((_b = (_a = doc.dom).caretRangeFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y));
|
||||
var _a;
|
||||
return Optional.from((_a = doc.caretRangeFromPoint) === null || _a === void 0 ? void 0 : _a.call(doc, x, y));
|
||||
};
|
||||
const availableSearch = (() => {
|
||||
if (document.caretPositionFromPoint) {
|
||||
return caretPositionFromPoint;
|
||||
} else if (document.caretRangeFromPoint) {
|
||||
return caretRangeFromPoint;
|
||||
const availableSearch = (doc, x, y) => {
|
||||
if (doc.caretPositionFromPoint) {
|
||||
return caretPositionFromPoint(doc, x, y);
|
||||
} else if (doc.caretRangeFromPoint) {
|
||||
return caretRangeFromPoint(doc, x, y);
|
||||
} else {
|
||||
return Optional.none;
|
||||
return Optional.none();
|
||||
}
|
||||
})();
|
||||
};
|
||||
const fromPoint = (win, x, y) => {
|
||||
const doc = SugarElement.fromDom(win.document);
|
||||
const doc = win.document;
|
||||
return availableSearch(doc, x, y).map(rng => SimRange.create(SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset));
|
||||
};
|
||||
|
||||
@ -6995,11 +6996,12 @@
|
||||
const onSelection = (cells, start, finish) => {
|
||||
const tableOpt = table(start);
|
||||
tableOpt.each(table => {
|
||||
const cellsDom = map$1(cells, cell => cell.dom);
|
||||
const cloneFormats = getTableCloneElements(editor);
|
||||
const generators = cellOperations(noop, SugarElement.fromDom(editor.getDoc()), cloneFormats);
|
||||
const selectedCells = getCellsFromSelection(editor);
|
||||
const otherCells = getOtherCells(table, { selection: selectedCells }, generators);
|
||||
fireTableSelectionChange(editor, cells, start, finish, otherCells);
|
||||
const otherCellsDom = getOtherCells(table, { selection: selectedCells }, generators).map(otherCells => map(otherCells, cellArr => map$1(cellArr, cell => cell.dom))).getOrUndefined();
|
||||
fireTableSelectionChange(editor, cellsDom, start.dom, finish.dom, otherCellsDom);
|
||||
});
|
||||
};
|
||||
const onClear = () => fireTableSelectionClear(editor);
|
||||
@ -7785,7 +7787,7 @@
|
||||
const table = event.table;
|
||||
events.trigger.beforeResize(table, 'row');
|
||||
const delta = hdirection.delta(event.delta, table);
|
||||
adjustHeight(table, delta, event.row, hdirection);
|
||||
adjustHeight(table, delta, event.row);
|
||||
events.trigger.afterResize(table, 'row');
|
||||
});
|
||||
manager.events.startAdjust.bind(_event => {
|
||||
@ -7868,7 +7870,7 @@
|
||||
const isTable = node => isNonNullable(node) && node.nodeName === 'TABLE';
|
||||
const barResizerPrefix = 'bar-';
|
||||
const isResizable = elm => get$b(elm, 'data-mce-resize') !== 'false';
|
||||
const syncPixels = table => {
|
||||
const syncTableCellPixels = table => {
|
||||
const warehouse = Warehouse.fromTable(table);
|
||||
if (!Warehouse.hasColumns(warehouse)) {
|
||||
each$2(cells$1(table), cell => {
|
||||
@ -7878,19 +7880,29 @@
|
||||
});
|
||||
}
|
||||
};
|
||||
const isCornerResize = origin => startsWith(origin, 'corner-');
|
||||
const getCornerLocation = origin => removeLeading(origin, 'corner-');
|
||||
const TableResizeHandler = editor => {
|
||||
const selectionRng = value();
|
||||
const tableResize = value();
|
||||
const resizeWire = value();
|
||||
let startW;
|
||||
let startRawW;
|
||||
let startH;
|
||||
let startRawH;
|
||||
const lazySizing = table => get$5(editor, table);
|
||||
const lazyResizingBehaviour = () => isPreserveTableColumnResizing(editor) ? preserveTable() : resizeTable();
|
||||
const getNumColumns = table => getGridSize(table).columns;
|
||||
const afterCornerResize = (table, origin, width) => {
|
||||
const isRightEdgeResize = endsWith(origin, 'e');
|
||||
const getNumRows = table => getGridSize(table).rows;
|
||||
const afterCornerResize = (table, origin, width, height) => {
|
||||
const location = getCornerLocation(origin);
|
||||
const isRightEdgeResize = endsWith(location, 'e');
|
||||
const isNorthEdgeResize = startsWith(location, 'n');
|
||||
if (startRawW === '') {
|
||||
convertToPercentSize(table);
|
||||
convertToPercentSizeWidth(table);
|
||||
}
|
||||
if (startRawH === '') {
|
||||
convertToPixelSizeHeight(table);
|
||||
}
|
||||
if (width !== startW && startRawW !== '') {
|
||||
set$1(table, 'width', startRawW);
|
||||
@ -7904,7 +7916,12 @@
|
||||
set$1(table, 'width', targetPercentW + '%');
|
||||
}
|
||||
if (isPixel(startRawW)) {
|
||||
syncPixels(table);
|
||||
syncTableCellPixels(table);
|
||||
}
|
||||
if (height !== startH && startRawH !== '') {
|
||||
set$1(table, 'height', startRawH);
|
||||
const idx = isNorthEdgeResize ? 0 : getNumRows(table) - 1;
|
||||
adjustHeight(table, height - startH, idx);
|
||||
}
|
||||
};
|
||||
const destroy = () => {
|
||||
@ -7951,15 +7968,17 @@
|
||||
editor.dom.addClass(clone, 'mce-' + getTableColumnResizingBehaviour(editor) + '-columns');
|
||||
});
|
||||
if (!isPixelSizing(table) && isTablePixelsForced(editor)) {
|
||||
convertToPixelSize(table);
|
||||
convertToPixelSizeWidth(table);
|
||||
} else if (!isPercentSizing(table) && isTablePercentagesForced(editor)) {
|
||||
convertToPercentSize(table);
|
||||
convertToPercentSizeWidth(table);
|
||||
}
|
||||
if (isNoneSizing(table) && startsWith(e.origin, barResizerPrefix)) {
|
||||
convertToPercentSize(table);
|
||||
convertToPercentSizeWidth(table);
|
||||
}
|
||||
startW = e.width;
|
||||
startRawW = isTableResponsiveForced(editor) ? '' : getRawWidth(editor, targetElm).getOr('');
|
||||
startH = e.height;
|
||||
startRawH = getRawHeight(editor, targetElm).getOr('');
|
||||
}
|
||||
});
|
||||
editor.on('ObjectResized', e => {
|
||||
@ -7967,8 +7986,8 @@
|
||||
if (isTable(targetElm)) {
|
||||
const table = SugarElement.fromDom(targetElm);
|
||||
const origin = e.origin;
|
||||
if (startsWith(origin, 'corner-')) {
|
||||
afterCornerResize(table, origin, e.width);
|
||||
if (isCornerResize(origin)) {
|
||||
afterCornerResize(table, origin, e.width, e.height);
|
||||
}
|
||||
removeDataStyle(table);
|
||||
fireTableModified(editor, table.dom, styleModified);
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -7,13 +7,15 @@
|
||||
|
||||
var global$4 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
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 = Math.floor(Math.random() * 1000000000);
|
||||
const random$1 = Math.floor(random() * 1000000000);
|
||||
unique++;
|
||||
return prefix + '_' + random + unique + String(time);
|
||||
return prefix + '_' + random$1 + unique + String(time);
|
||||
};
|
||||
|
||||
const hasProto = (v, constructor, predicate) => {
|
||||
@ -348,8 +350,7 @@
|
||||
const firstChild = element => child(element, 0);
|
||||
|
||||
const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);
|
||||
const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);
|
||||
const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;
|
||||
const getRootNode = e => SugarElement.fromDom(e.dom.getRootNode());
|
||||
const getShadowRoot = e => {
|
||||
const r = getRootNode(e);
|
||||
return isShadowRoot(r) ? Optional.some(r) : Optional.none();
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -249,7 +249,7 @@
|
||||
register(editor);
|
||||
register$2(editor);
|
||||
} else {
|
||||
console.error('Please use the Lists plugin together with the Advanced List plugin.');
|
||||
console.error('Please use the Lists plugin together with the List Styles plugin.');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=(t,e,s)=>{const r="UL"===e?"InsertUnorderedList":"InsertOrderedList";t.execCommand(r,!1,!1===s?null:{"list-style-type":s})},s=t=>e=>e.options.get(t),r=s("advlist_number_styles"),n=s("advlist_bullet_styles"),i=t=>null==t,l=t=>!i(t);var o=tinymce.util.Tools.resolve("tinymce.util.Tools");class a{constructor(t,e){this.tag=t,this.value=e}static some(t){return new a(!0,t)}static none(){return a.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?a.some(t(this.value)):a.none()}bind(t){return this.tag?t(this.value):a.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:a.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(null!=t?t:"Called getOrDie on None")}static from(t){return l(t)?a.some(t):a.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}a.singletonNone=new a(!1);const u=t=>e=>l(e)&&t.test(e.nodeName),d=u(/^(OL|UL|DL)$/),g=u(/^(TH|TD)$/),c=t=>i(t)||"default"===t?"":t,h=(t,e)=>s=>((t,e)=>{const s=t.selection.getNode();return e({parents:t.dom.getParents(s),element:s}),t.on("NodeChange",e),()=>t.off("NodeChange",e)})(t,(r=>((t,r)=>{const n=t.selection.getStart(!0);s.setActive(((t,e,s)=>((t,e,s)=>{for(let e=0,n=t.length;e<n;e++){const n=t[e];if(d(r=n)&&!/\btox\-/.test(r.className))return a.some(n);if(s(n,e))break}var r;return a.none()})(e,0,g).exists((e=>e.nodeName===s&&((t,e)=>t.dom.isChildOf(e,t.getBody()))(t,e))))(t,r,e)),s.setEnabled(!((t,e)=>{const s=t.dom.getParent(e,"ol,ul,dl");return((t,e)=>null!==e&&!t.dom.isEditable(e))(t,s)&&t.selection.isEditable()})(t,n)&&t.selection.isEditable())})(t,r.parents))),m=(t,s,r,n,i,l)=>{l.length>1?((t,s,r,n,i,l)=>{t.ui.registry.addSplitButton(s,{tooltip:r,icon:"OL"===i?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:t=>{t(o.map(l,(t=>{const e="OL"===i?"num":"bull",s="disc"===t||"decimal"===t?"default":t,r=c(t),n=(t=>t.replace(/\-/g," ").replace(/\b\w/g,(t=>t.toUpperCase())))(t);return{type:"choiceitem",value:r,icon:"list-"+e+"-"+s,text:n}})))},onAction:()=>t.execCommand(n),onItemAction:(s,r)=>{e(t,i,r)},select:e=>{const s=(t=>{const e=t.dom.getParent(t.selection.getNode(),"ol,ul"),s=t.dom.getStyle(e,"listStyleType");return a.from(s)})(t);return s.map((t=>e===t)).getOr(!1)},onSetup:h(t,i)})})(t,s,r,n,i,l):((t,s,r,n,i,l)=>{t.ui.registry.addToggleButton(s,{active:!1,tooltip:r,icon:"OL"===i?"ordered-list":"unordered-list",onSetup:h(t,i),onAction:()=>t.queryCommandState(n)||""===l?t.execCommand(n):e(t,i,l)})})(t,s,r,n,i,c(l[0]))};t.add("advlist",(t=>{t.hasPlugin("lists")?((t=>{const e=t.options.register;e("advlist_number_styles",{processor:"string[]",default:"default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman".split(",")}),e("advlist_bullet_styles",{processor:"string[]",default:"default,circle,square".split(",")})})(t),(t=>{m(t,"numlist","Numbered list","InsertOrderedList","OL",r(t)),m(t,"bullist","Bullet list","InsertUnorderedList","UL",n(t))})(t),(t=>{t.addCommand("ApplyUnorderedListStyle",((s,r)=>{e(t,"UL",r["list-style-type"])})),t.addCommand("ApplyOrderedListStyle",((s,r)=>{e(t,"OL",r["list-style-type"])}))})(t)):console.error("Please use the Lists plugin together with the Advanced List plugin.")}))}();
|
||||
!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=(t,e,s)=>{const r="UL"===e?"InsertUnorderedList":"InsertOrderedList";t.execCommand(r,!1,!1===s?null:{"list-style-type":s})},s=t=>e=>e.options.get(t),r=s("advlist_number_styles"),n=s("advlist_bullet_styles"),i=t=>null==t,l=t=>!i(t);var o=tinymce.util.Tools.resolve("tinymce.util.Tools");class a{constructor(t,e){this.tag=t,this.value=e}static some(t){return new a(!0,t)}static none(){return a.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?a.some(t(this.value)):a.none()}bind(t){return this.tag?t(this.value):a.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:a.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(null!=t?t:"Called getOrDie on None")}static from(t){return l(t)?a.some(t):a.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}a.singletonNone=new a(!1);const u=t=>e=>l(e)&&t.test(e.nodeName),d=u(/^(OL|UL|DL)$/),g=u(/^(TH|TD)$/),c=t=>i(t)||"default"===t?"":t,h=(t,e)=>s=>((t,e)=>{const s=t.selection.getNode();return e({parents:t.dom.getParents(s),element:s}),t.on("NodeChange",e),()=>t.off("NodeChange",e)})(t,(r=>((t,r)=>{const n=t.selection.getStart(!0);s.setActive(((t,e,s)=>((t,e,s)=>{for(let e=0,n=t.length;e<n;e++){const n=t[e];if(d(r=n)&&!/\btox\-/.test(r.className))return a.some(n);if(s(n,e))break}var r;return a.none()})(e,0,g).exists((e=>e.nodeName===s&&((t,e)=>t.dom.isChildOf(e,t.getBody()))(t,e))))(t,r,e)),s.setEnabled(!((t,e)=>{const s=t.dom.getParent(e,"ol,ul,dl");return((t,e)=>null!==e&&!t.dom.isEditable(e))(t,s)&&t.selection.isEditable()})(t,n)&&t.selection.isEditable())})(t,r.parents))),m=(t,s,r,n,i,l)=>{l.length>1?((t,s,r,n,i,l)=>{t.ui.registry.addSplitButton(s,{tooltip:r,icon:"OL"===i?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:t=>{t(o.map(l,(t=>{const e="OL"===i?"num":"bull",s="disc"===t||"decimal"===t?"default":t,r=c(t),n=(t=>t.replace(/\-/g," ").replace(/\b\w/g,(t=>t.toUpperCase())))(t);return{type:"choiceitem",value:r,icon:"list-"+e+"-"+s,text:n}})))},onAction:()=>t.execCommand(n),onItemAction:(s,r)=>{e(t,i,r)},select:e=>{const s=(t=>{const e=t.dom.getParent(t.selection.getNode(),"ol,ul"),s=t.dom.getStyle(e,"listStyleType");return a.from(s)})(t);return s.map((t=>e===t)).getOr(!1)},onSetup:h(t,i)})})(t,s,r,n,i,l):((t,s,r,n,i,l)=>{t.ui.registry.addToggleButton(s,{active:!1,tooltip:r,icon:"OL"===i?"ordered-list":"unordered-list",onSetup:h(t,i),onAction:()=>t.queryCommandState(n)||""===l?t.execCommand(n):e(t,i,l)})})(t,s,r,n,i,c(l[0]))};t.add("advlist",(t=>{t.hasPlugin("lists")?((t=>{const e=t.options.register;e("advlist_number_styles",{processor:"string[]",default:"default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman".split(",")}),e("advlist_bullet_styles",{processor:"string[]",default:"default,circle,square".split(",")})})(t),(t=>{m(t,"numlist","Numbered list","InsertOrderedList","OL",r(t)),m(t,"bullist","Bullet list","InsertUnorderedList","UL",n(t))})(t),(t=>{t.addCommand("ApplyUnorderedListStyle",((s,r)=>{e(t,"UL",r["list-style-type"])})),t.addCommand("ApplyOrderedListStyle",((s,r)=>{e(t,"OL",r["list-style-type"])}))})(t)):console.error("Please use the Lists plugin together with the List Styles plugin.")}))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),o=tinymce.util.Tools.resolve("tinymce.util.Tools");const n=("allow_html_in_named_anchor",e=>e.options.get("allow_html_in_named_anchor"));const a="a:not([href])",r=e=>!e,i=e=>e.getAttribute("id")||e.getAttribute("name")||"",l=e=>(e=>"a"===e.nodeName.toLowerCase())(e)&&!e.getAttribute("href")&&""!==i(e),s=e=>e.dom.getParent(e.selection.getStart(),a),d=(e,a)=>{const r=s(e);r?((e,t,o)=>{o.removeAttribute("name"),o.id=t,e.addVisual(),e.undoManager.add()})(e,a,r):((e,a)=>{e.undoManager.transact((()=>{n(e)||e.selection.collapse(!0),e.selection.isCollapsed()?e.insertContent(e.dom.createHTML("a",{id:a})):((e=>{const n=e.dom;t(n).walk(e.selection.getRng(),(e=>{o.each(e,(e=>{var t;l(t=e)&&!t.firstChild&&n.remove(e,!1)}))}))})(e),e.formatter.remove("namedAnchor",void 0,void 0,!0),e.formatter.apply("namedAnchor",{value:a}),e.addVisual())}))})(e,a),e.focus()},c=e=>(e=>r(e.attr("href"))&&!r(e.attr("id")||e.attr("name")))(e)&&!e.firstChild,m=e=>t=>{for(let o=0;o<t.length;o++){const n=t[o];c(n)&&n.attr("contenteditable",e)}},u=e=>t=>{const o=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",o),o(),()=>{e.off("NodeChange",o)}};e.add("anchor",(e=>{(e=>{(0,e.options.register)("allow_html_in_named_anchor",{processor:"boolean",default:!1})})(e),(e=>{e.on("PreInit",(()=>{e.parser.addNodeFilter("a",m("false")),e.serializer.addNodeFilter("a",m(null))}))})(e),(e=>{e.addCommand("mceAnchor",(()=>{(e=>{const t=(e=>{const t=s(e);return t?i(t):""})(e);e.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:t=>{((e,t)=>/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)?(d(e,t),!0):(e.windowManager.alert("ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),!1))(e,t.getData().id)&&t.close()}})})(e)}))})(e),(e=>{const t=()=>e.execCommand("mceAnchor");e.ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:t,onSetup:t=>{const o=e.selection.selectorChangedWithUnbind("a:not([href])",t.setActive).unbind,n=u(e)(t);return()=>{o(),n()}}}),e.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:t,onSetup:u(e)})})(e),e.on("PreInit",(()=>{(e=>{e.formatter.register("namedAnchor",{inline:"a",selector:a,remove:"all",split:!0,deep:!0,attributes:{id:"%value"},onmatch:(e,t,o)=>l(e)})})(e)}))}))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>t.options.get(e),n=t("autolink_pattern"),o=t("link_default_target"),r=t("link_default_protocol"),a=t("allow_unsafe_link_target"),s=("string",e=>"string"===(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(n=o=e,(r=String).prototype.isPrototypeOf(n)||(null===(a=o.constructor)||void 0===a?void 0:a.name)===r.name)?"string":t;var n,o,r,a})(e));const l=(void 0,e=>undefined===e);const i=e=>!(e=>null==e)(e),c=Object.hasOwnProperty,d=e=>"\ufeff"===e;var u=tinymce.util.Tools.resolve("tinymce.dom.TextSeeker");const f=e=>/^[(\[{ \u00a0]$/.test(e),g=(e,t,n)=>{for(let o=t-1;o>=0;o--){const t=e.charAt(o);if(!d(t)&&n(t))return o}return-1},m=(e,t)=>{var o;const a=e.schema.getVoidElements(),s=n(e),{dom:i,selection:d}=e;if(null!==i.getParent(d.getNode(),"a[href]"))return null;const m=d.getRng(),k=u(i,(e=>{return i.isBlock(e)||(t=a,n=e.nodeName.toLowerCase(),c.call(t,n))||"false"===i.getContentEditable(e);var t,n})),{container:p,offset:y}=((e,t)=>{let n=e,o=t;for(;1===n.nodeType&&n.childNodes[o];)n=n.childNodes[o],o=3===n.nodeType?n.data.length:n.childNodes.length;return{container:n,offset:o}})(m.endContainer,m.endOffset),w=null!==(o=i.getParent(p,i.isBlock))&&void 0!==o?o:i.getRoot(),h=k.backwards(p,y+t,((e,t)=>{const n=e.data,o=g(n,t,(r=f,e=>!r(e)));var r,a;return-1===o||(a=n[o],/[?!,.;:]/.test(a))?o:o+1}),w);if(!h)return null;let v=h.container;const _=k.backwards(h.container,h.offset,((e,t)=>{v=e;const n=g(e.data,t,f);return-1===n?n:n+1}),w),A=i.createRng();_?A.setStart(_.container,_.offset):A.setStart(v,0),A.setEnd(h.container,h.offset);const C=A.toString().replace(/\uFEFF/g,"").match(s);if(C){let t=C[0];return $="www.",(b=t).length>=4&&b.substr(0,4)===$?t=r(e)+"://"+t:((e,t,n=0,o)=>{const r=e.indexOf(t,n);return-1!==r&&(!!l(o)||r+t.length<=o)})(t,"@")&&!(e=>/^([A-Za-z][A-Za-z\d.+-]*:\/\/)|mailto:/.test(e))(t)&&(t="mailto:"+t),{rng:A,url:t}}var b,$;return null},k=(e,t)=>{const{dom:n,selection:r}=e,{rng:l,url:i}=t,c=r.getBookmark();r.setRng(l);const d="createlink",u={command:d,ui:!1,value:i};if(!e.dispatch("BeforeExecCommand",u).isDefaultPrevented()){e.getDoc().execCommand(d,!1,i),e.dispatch("ExecCommand",u);const t=o(e);if(s(t)){const o=r.getNode();n.setAttrib(o,"target",t),"_blank"!==t||a(e)||n.setAttrib(o,"rel","noopener")}}r.moveToBookmark(c),e.nodeChanged()},p=e=>{const t=m(e,-1);i(t)&&k(e,t)},y=p;e.add("autolink",(e=>{(e=>{const t=e.options.register;t("autolink_pattern",{processor:"regexp",default:new RegExp("^"+/(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)[A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*(?::\d+)?(?:\/(?:[-.~*+=!;:'%@$(),\/\w]*[-~*+=%@$()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?/g.source+"$","i")}),t("link_default_target",{processor:"string"}),t("link_default_protocol",{processor:"string",default:"https"})})(e),(e=>{e.on("keydown",(t=>{13!==t.keyCode||t.isDefaultPrevented()||(e=>{const t=m(e,0);i(t)&&k(e,t)})(e)})),e.on("keyup",(t=>{32===t.keyCode?p(e):(48===t.keyCode&&t.shiftKey||221===t.keyCode)&&y(e)}))})(e)}))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -21,12 +21,6 @@
|
||||
|
||||
var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
const constant = value => {
|
||||
return () => {
|
||||
return value;
|
||||
};
|
||||
};
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.Env');
|
||||
|
||||
const fireResizeEditor = editor => editor.dispatch('ResizeEditor');
|
||||
@ -105,10 +99,19 @@
|
||||
} else {
|
||||
toggleScrolling(editor, false);
|
||||
}
|
||||
if (resizeHeight !== oldSize.get()) {
|
||||
const deltaSize = resizeHeight - oldSize.get();
|
||||
const old = oldSize.get();
|
||||
if (old.set) {
|
||||
editor.dom.setStyles(editor.getDoc().documentElement, { 'min-height': 0 });
|
||||
editor.dom.setStyles(editor.getBody(), { 'min-height': 'inherit' });
|
||||
}
|
||||
if (resizeHeight !== old.totalHeight && (contentHeight - resizeBottomMargin !== old.contentHeight || !old.set)) {
|
||||
const deltaSize = resizeHeight - old.totalHeight;
|
||||
dom.setStyle(editor.getContainer(), 'height', resizeHeight + 'px');
|
||||
oldSize.set(resizeHeight);
|
||||
oldSize.set({
|
||||
totalHeight: resizeHeight,
|
||||
contentHeight,
|
||||
set: true
|
||||
});
|
||||
fireResizeEditor(editor);
|
||||
if (global.browser.isSafari() && (global.os.isMacOS() || global.os.isiOS())) {
|
||||
const win = editor.getWin();
|
||||
@ -123,11 +126,8 @@
|
||||
}
|
||||
};
|
||||
const setup = (editor, oldSize) => {
|
||||
let getExtraMarginBottom = () => getAutoResizeBottomMargin(editor);
|
||||
let resizeCounter;
|
||||
let sizeAfterFirstResize;
|
||||
const getExtraMarginBottom = () => getAutoResizeBottomMargin(editor);
|
||||
editor.on('init', e => {
|
||||
resizeCounter = 0;
|
||||
const overflowPadding = getAutoResizeOverflowPadding(editor);
|
||||
const dom = editor.dom;
|
||||
dom.setStyles(editor.getDoc().documentElement, { height: 'auto' });
|
||||
@ -144,26 +144,9 @@
|
||||
});
|
||||
}
|
||||
resize(editor, oldSize, e, getExtraMarginBottom);
|
||||
resizeCounter += 1;
|
||||
});
|
||||
editor.on('NodeChange SetContent keyup FullscreenStateChanged ResizeContent', e => {
|
||||
if (resizeCounter === 1) {
|
||||
sizeAfterFirstResize = editor.getContainer().offsetHeight;
|
||||
resize(editor, oldSize, e, getExtraMarginBottom);
|
||||
resizeCounter += 1;
|
||||
} else if (resizeCounter === 2) {
|
||||
const isLooping = sizeAfterFirstResize < editor.getContainer().offsetHeight;
|
||||
if (isLooping) {
|
||||
const dom = editor.dom;
|
||||
const doc = editor.getDoc();
|
||||
dom.setStyles(doc.documentElement, { 'min-height': 0 });
|
||||
dom.setStyles(editor.getBody(), { 'min-height': 'inherit' });
|
||||
}
|
||||
getExtraMarginBottom = isLooping ? constant(0) : getExtraMarginBottom;
|
||||
resizeCounter += 1;
|
||||
} else {
|
||||
resize(editor, oldSize, e, getExtraMarginBottom);
|
||||
}
|
||||
resize(editor, oldSize, e, getExtraMarginBottom);
|
||||
});
|
||||
};
|
||||
|
||||
@ -180,7 +163,11 @@
|
||||
editor.options.set('resize', false);
|
||||
}
|
||||
if (!editor.inline) {
|
||||
const oldSize = Cell(0);
|
||||
const oldSize = Cell({
|
||||
totalHeight: 0,
|
||||
contentHeight: 0,
|
||||
set: false
|
||||
});
|
||||
register(editor, oldSize);
|
||||
setup(editor, oldSize);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env");const o=e=>t=>t.options.get(e),s=o("min_height"),i=o("max_height"),n=o("autoresize_overflow_padding"),r=o("autoresize_bottom_margin"),l=(e,t)=>{const o=e.getBody();o&&(o.style.overflowY=t?"":"hidden",t||(o.scrollTop=0))},g=(e,t,o,s)=>{var i;const n=parseInt(null!==(i=e.getStyle(t,o,s))&&void 0!==i?i:"",10);return isNaN(n)?0:n},a=(e,o,r,c)=>{var d;const f=e.dom,u=e.getDoc();if(!u)return;if((e=>e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen())(e))return void l(e,!0);const m=u.documentElement,h=c?c():n(e),p=null!==(d=s(e))&&void 0!==d?d:e.getElement().offsetHeight;let y=p;const S=g(f,m,"margin-top",!0),v=g(f,m,"margin-bottom",!0);let C=m.offsetHeight+S+v+h;C<0&&(C=0);const b=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight;C+b>p&&(y=C+b);const w=i(e);if(w&&y>w?(y=w,l(e,!0)):l(e,!1),y!==o.get()){const s=y-o.get();if(f.setStyle(e.getContainer(),"height",y+"px"),o.set(y),(e=>{e.dispatch("ResizeEditor")})(e),t.browser.isSafari()&&(t.os.isMacOS()||t.os.isiOS())){const t=e.getWin();t.scrollTo(t.pageXOffset,t.pageYOffset)}e.hasFocus()&&(e=>{if("setcontent"===(null==e?void 0:e.type.toLowerCase())){const t=e;return!0===t.selection||!0===t.paste}return!1})(r)&&e.selection.scrollIntoView(),(t.browser.isSafari()||t.browser.isChromium())&&s<0&&a(e,o,r,c)}};e.add("autoresize",(e=>{if((e=>{const t=e.options.register;t("autoresize_overflow_padding",{processor:"number",default:1}),t("autoresize_bottom_margin",{processor:"number",default:50})})(e),e.options.isSet("resize")||e.options.set("resize",!1),!e.inline){const o=(e=>{let t=0;return{get:()=>t,set:e=>{t=e}}})();((e,t)=>{e.addCommand("mceAutoResize",(()=>{a(e,t)}))})(e,o),((e,o)=>{let s,i,l=()=>r(e);e.on("init",(i=>{s=0;const r=n(e),g=e.dom;g.setStyles(e.getDoc().documentElement,{height:"auto"}),t.browser.isEdge()||t.browser.isIE()?g.setStyles(e.getBody(),{paddingLeft:r,paddingRight:r,"min-height":0}):g.setStyles(e.getBody(),{paddingLeft:r,paddingRight:r}),a(e,o,i,l),s+=1})),e.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",(t=>{if(1===s)i=e.getContainer().offsetHeight,a(e,o,t,l),s+=1;else if(2===s){const t=i<e.getContainer().offsetHeight;if(t){const t=e.dom,o=e.getDoc();t.setStyles(o.documentElement,{"min-height":0}),t.setStyles(e.getBody(),{"min-height":"inherit"})}l=t?(0,()=>0):l,s+=1}else a(e,o,t,l)}))})(e,o)}}))}();
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env");const o=e=>t=>t.options.get(e),n=o("min_height"),s=o("max_height"),i=o("autoresize_overflow_padding"),r=o("autoresize_bottom_margin"),g=(e,t)=>{const o=e.getBody();o&&(o.style.overflowY=t?"":"hidden",t||(o.scrollTop=0))},l=(e,t,o,n)=>{var s;const i=parseInt(null!==(s=e.getStyle(t,o,n))&&void 0!==s?s:"",10);return isNaN(i)?0:i},a=(e,o,r,c)=>{var d;const u=e.dom,h=e.getDoc();if(!h)return;if((e=>e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen())(e))return void g(e,!0);const m=h.documentElement,f=c?c():i(e),p=null!==(d=n(e))&&void 0!==d?d:e.getElement().offsetHeight;let y=p;const S=l(u,m,"margin-top",!0),v=l(u,m,"margin-bottom",!0);let C=m.offsetHeight+S+v+f;C<0&&(C=0);const H=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight;C+H>p&&(y=C+H);const b=s(e);b&&y>b?(y=b,g(e,!0)):g(e,!1);const w=o.get();if(w.set&&(e.dom.setStyles(e.getDoc().documentElement,{"min-height":0}),e.dom.setStyles(e.getBody(),{"min-height":"inherit"})),y!==w.totalHeight&&(C-f!==w.contentHeight||!w.set)){const n=y-w.totalHeight;if(u.setStyle(e.getContainer(),"height",y+"px"),o.set({totalHeight:y,contentHeight:C,set:!0}),(e=>{e.dispatch("ResizeEditor")})(e),t.browser.isSafari()&&(t.os.isMacOS()||t.os.isiOS())){const t=e.getWin();t.scrollTo(t.pageXOffset,t.pageYOffset)}e.hasFocus()&&(e=>{if("setcontent"===(null==e?void 0:e.type.toLowerCase())){const t=e;return!0===t.selection||!0===t.paste}return!1})(r)&&e.selection.scrollIntoView(),(t.browser.isSafari()||t.browser.isChromium())&&n<0&&a(e,o,r,c)}};e.add("autoresize",(e=>{if((e=>{const t=e.options.register;t("autoresize_overflow_padding",{processor:"number",default:1}),t("autoresize_bottom_margin",{processor:"number",default:50})})(e),e.options.isSet("resize")||e.options.set("resize",!1),!e.inline){const o=(e=>{let t={totalHeight:0,contentHeight:0,set:!1};return{get:()=>t,set:e=>{t=e}}})();((e,t)=>{e.addCommand("mceAutoResize",(()=>{a(e,t)}))})(e,o),((e,o)=>{const n=()=>r(e);e.on("init",(s=>{const r=i(e),g=e.dom;g.setStyles(e.getDoc().documentElement,{height:"auto"}),t.browser.isEdge()||t.browser.isIE()?g.setStyles(e.getBody(),{paddingLeft:r,paddingRight:r,"min-height":0}):g.setStyles(e.getBody(),{paddingLeft:r,paddingRight:r}),a(e,o,s,n)})),e.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",(t=>{a(e,o,t,n)}))})(e,o)}}))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=("string",t=>"string"===(t=>{const e=typeof t;return null===t?"null":"object"===e&&Array.isArray(t)?"array":"object"===e&&(r=o=t,(a=String).prototype.isPrototypeOf(r)||(null===(s=o.constructor)||void 0===s?void 0:s.name)===a.name)?"string":e;var r,o,a,s})(t));const r=(void 0,t=>undefined===t);var o=tinymce.util.Tools.resolve("tinymce.util.Delay"),a=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),s=tinymce.util.Tools.resolve("tinymce.util.Tools");const n=t=>{const e=/^(\d+)([ms]?)$/.exec(t);return(e&&e[2]?{s:1e3,m:6e4}[e[2]]:1)*parseInt(t,10)},i=t=>e=>e.options.get(t),u=i("autosave_ask_before_unload"),l=i("autosave_restore_when_empty"),c=i("autosave_interval"),d=i("autosave_retention"),m=t=>{const e=document.location;return t.options.get("autosave_prefix").replace(/{path}/g,e.pathname).replace(/{query}/g,e.search).replace(/{hash}/g,e.hash).replace(/{id}/g,t.id)},v=(t,e)=>{if(r(e))return t.dom.isEmpty(t.getBody());{const r=s.trim(e);if(""===r)return!0;{const e=(new DOMParser).parseFromString(r,"text/html");return t.dom.isEmpty(e)}}},f=t=>{var e;const r=parseInt(null!==(e=a.getItem(m(t)+"time"))&&void 0!==e?e:"0",10)||0;return!((new Date).getTime()-r>d(t)&&(p(t,!1),1))},p=(t,e)=>{const r=m(t);a.removeItem(r+"draft"),a.removeItem(r+"time"),!1!==e&&(t=>{t.dispatch("RemoveDraft")})(t)},g=t=>{const e=m(t);!v(t)&&t.isDirty()&&(a.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),a.setItem(e+"time",(new Date).getTime().toString()),(t=>{t.dispatch("StoreDraft")})(t))},y=t=>{var e;const r=m(t);f(t)&&(t.setContent(null!==(e=a.getItem(r+"draft"))&&void 0!==e?e:"",{format:"raw"}),(t=>{t.dispatch("RestoreDraft")})(t))};var D=tinymce.util.Tools.resolve("tinymce.EditorManager");const h=t=>e=>{e.setEnabled(f(t));const r=()=>e.setEnabled(f(t));return t.on("StoreDraft RestoreDraft RemoveDraft",r),()=>t.off("StoreDraft RestoreDraft RemoveDraft",r)};t.add("autosave",(t=>((t=>{const r=t.options.register,o=t=>{const r=e(t);return r?{value:n(t),valid:r}:{valid:!1,message:"Must be a string."}};r("autosave_ask_before_unload",{processor:"boolean",default:!0}),r("autosave_prefix",{processor:"string",default:"tinymce-autosave-{path}{query}{hash}-{id}-"}),r("autosave_restore_when_empty",{processor:"boolean",default:!1}),r("autosave_interval",{processor:o,default:"30s"}),r("autosave_retention",{processor:o,default:"20m"})})(t),(t=>{t.editorManager.on("BeforeUnload",(t=>{let e;s.each(D.get(),(t=>{t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&u(t)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))})),e&&(t.preventDefault(),t.returnValue=e)}))})(t),(t=>{(t=>{const e=c(t);o.setEditorInterval(t,(()=>{g(t)}),e)})(t);const e=()=>{(t=>{t.undoManager.transact((()=>{y(t),p(t)})),t.focus()})(t)};t.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:e,onSetup:h(t)}),t.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:e,onSetup:h(t)})})(t),t.on("init",(()=>{l(t)&&t.dom.isEmpty(t.getBody())&&y(t)})),(t=>({hasDraft:()=>f(t),storeDraft:()=>g(t),restoreDraft:()=>y(t),removeDraft:e=>p(t,e),isEmpty:e=>v(t,e)}))(t))))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("code",(e=>((e=>{e.addCommand("mceCodeEditor",(()=>{(e=>{const o=(e=>e.getContent({source_view:!0}))(e);e.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:o},onSubmit:o=>{((e,o)=>{e.focus(),e.undoManager.transact((()=>{e.setContent(o)})),e.selection.setCursorLocation(),e.nodeChanged()})(e,o.getData().code),o.close()}})})(e)}))})(e),(e=>{const o=()=>e.execCommand("mceCodeEditor");e.ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:o}),e.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:o})})(e),{})))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -163,7 +163,6 @@
|
||||
return r;
|
||||
};
|
||||
|
||||
const DOCUMENT = 9;
|
||||
const DOCUMENT_FRAGMENT = 11;
|
||||
const ELEMENT = 1;
|
||||
const TEXT = 3;
|
||||
@ -234,12 +233,9 @@
|
||||
const isType = t => element => type(element) === t;
|
||||
const isElement = isType(ELEMENT);
|
||||
const isText = isType(TEXT);
|
||||
const isDocument = isType(DOCUMENT);
|
||||
const isDocumentFragment = isType(DOCUMENT_FRAGMENT);
|
||||
const isTag = tag => e => isElement(e) && name(e) === tag;
|
||||
|
||||
const owner = element => SugarElement.fromDom(element.dom.ownerDocument);
|
||||
const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);
|
||||
const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);
|
||||
const children$2 = element => map(element.dom.childNodes, SugarElement.fromDom);
|
||||
|
||||
@ -259,8 +255,7 @@
|
||||
};
|
||||
|
||||
const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);
|
||||
const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);
|
||||
const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;
|
||||
const getRootNode = e => SugarElement.fromDom(e.dom.getRootNode());
|
||||
const getShadowRoot = e => {
|
||||
const r = getRootNode(e);
|
||||
return isShadowRoot(r) ? Optional.some(r) : Optional.none();
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=t=>e=>typeof e===t,o=t=>"string"===(t=>{const e=typeof t;return null===t?"null":"object"===e&&Array.isArray(t)?"array":"object"===e&&(o=r=t,(n=String).prototype.isPrototypeOf(o)||(null===(i=r.constructor)||void 0===i?void 0:i.name)===n.name)?"string":e;var o,r,n,i})(t),r=e("boolean"),n=t=>!(t=>null==t)(t),i=e("function"),s=e("number"),l=(!1,()=>false);class a{constructor(t,e){this.tag=t,this.value=e}static some(t){return new a(!0,t)}static none(){return a.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?a.some(t(this.value)):a.none()}bind(t){return this.tag?t(this.value):a.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:a.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(null!=t?t:"Called getOrDie on None")}static from(t){return n(t)?a.some(t):a.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}a.singletonNone=new a(!1);const u=(t,e)=>{for(let o=0,r=t.length;o<r;o++)e(t[o],o)},c=t=>{if(null==t)throw new Error("Node cannot be null or undefined");return{dom:t}},d=c,h=(t,e)=>{const o=t.dom;if(1!==o.nodeType)return!1;{const t=o;if(void 0!==t.matches)return t.matches(e);if(void 0!==t.msMatchesSelector)return t.msMatchesSelector(e);if(void 0!==t.webkitMatchesSelector)return t.webkitMatchesSelector(e);if(void 0!==t.mozMatchesSelector)return t.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}};"undefined"!=typeof window?window:Function("return this;")();const m=t=>e=>(t=>t.dom.nodeType)(e)===t,g=m(1),f=m(3),v=m(9),y=m(11),p=(t,e)=>{t.dom.removeAttribute(e)},w=i(Element.prototype.attachShadow)&&i(Node.prototype.getRootNode)?t=>d(t.dom.getRootNode()):t=>v(t)?t:d(t.dom.ownerDocument),b=t=>d(t.dom.host),N=t=>{const e=f(t)?t.dom.parentNode:t.dom;if(null==e||null===e.ownerDocument)return!1;const o=e.ownerDocument;return(t=>{const e=w(t);return y(o=e)&&n(o.dom.host)?a.some(e):a.none();var o})(d(e)).fold((()=>o.body.contains(e)),(r=N,i=b,t=>r(i(t))));var r,i},S=t=>"rtl"===((t,e)=>{const o=t.dom,r=window.getComputedStyle(o).getPropertyValue(e);return""!==r||N(t)?r:((t,e)=>(t=>void 0!==t.style&&i(t.style.getPropertyValue))(t)?t.style.getPropertyValue(e):"")(o,e)})(t,"direction")?"rtl":"ltr",A=(t,e)=>((t,o)=>((t,e)=>{const o=[];for(let r=0,n=t.length;r<n;r++){const n=t[r];e(n,r)&&o.push(n)}return o})(((t,e)=>{const o=t.length,r=new Array(o);for(let n=0;n<o;n++){const o=t[n];r[n]=e(o,n)}return r})(t.dom.childNodes,d),(t=>h(t,e))))(t),E=("li",t=>g(t)&&"li"===t.dom.nodeName.toLowerCase());const T=(t,e,n)=>{u(e,(e=>{const c=d(e),m=E(c),f=((t,e)=>{return(e?(o=t,r="ol,ul",((t,e,o)=>{let n=t.dom;const s=i(o)?o:l;for(;n.parentNode;){n=n.parentNode;const t=d(n);if(h(t,r))return a.some(t);if(s(t))break}return a.none()})(o,0,n)):a.some(t)).getOr(t);var o,r,n})(c,m);var v;(v=f,(t=>a.from(t.dom.parentNode).map(d))(v).filter(g)).each((e=>{if(t.setStyle(f.dom,"direction",null),S(e)===n?p(f,"dir"):((t,e,n)=>{((t,e,n)=>{if(!(o(n)||r(n)||s(n)))throw console.error("Invalid call to Attribute.set. Key ",e,":: Value ",n,":: Element ",t),new Error("Attribute value was not simple");t.setAttribute(e,n+"")})(t.dom,e,n)})(f,"dir",n),S(f)!==n&&t.setStyle(f.dom,"direction",n),m){const e=A(f,"li[dir],li[style]");u(e,(e=>{p(e,"dir"),t.setStyle(e.dom,"direction",null)}))}}))}))},C=(t,e)=>{t.selection.isEditable()&&(T(t.dom,t.selection.getSelectedBlocks(),e),t.nodeChanged())},D=(t,e)=>o=>{const r=r=>{const n=d(r.element);o.setActive(S(n)===e),o.setEnabled(t.selection.isEditable())};return t.on("NodeChange",r),o.setEnabled(t.selection.isEditable()),()=>t.off("NodeChange",r)};t.add("directionality",(t=>{(t=>{t.addCommand("mceDirectionLTR",(()=>{C(t,"ltr")})),t.addCommand("mceDirectionRTL",(()=>{C(t,"rtl")}))})(t),(t=>{t.ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:()=>t.execCommand("mceDirectionLTR"),onSetup:D(t,"ltr")}),t.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:()=>t.execCommand("mceDirectionRTL"),onSetup:D(t,"rtl")})})(t)}))}();
|
||||
!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=t=>e=>typeof e===t,o=t=>"string"===(t=>{const e=typeof t;return null===t?"null":"object"===e&&Array.isArray(t)?"array":"object"===e&&(o=r=t,(n=String).prototype.isPrototypeOf(o)||(null===(i=r.constructor)||void 0===i?void 0:i.name)===n.name)?"string":e;var o,r,n,i})(t),r=e("boolean"),n=t=>!(t=>null==t)(t),i=e("function"),s=e("number"),l=(!1,()=>false);class a{constructor(t,e){this.tag=t,this.value=e}static some(t){return new a(!0,t)}static none(){return a.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?a.some(t(this.value)):a.none()}bind(t){return this.tag?t(this.value):a.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:a.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(null!=t?t:"Called getOrDie on None")}static from(t){return n(t)?a.some(t):a.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}a.singletonNone=new a(!1);const u=(t,e)=>{for(let o=0,r=t.length;o<r;o++)e(t[o],o)},c=t=>{if(null==t)throw new Error("Node cannot be null or undefined");return{dom:t}},d=c,h=(t,e)=>{const o=t.dom;if(1!==o.nodeType)return!1;{const t=o;if(void 0!==t.matches)return t.matches(e);if(void 0!==t.msMatchesSelector)return t.msMatchesSelector(e);if(void 0!==t.webkitMatchesSelector)return t.webkitMatchesSelector(e);if(void 0!==t.mozMatchesSelector)return t.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}};"undefined"!=typeof window?window:Function("return this;")();const m=t=>e=>(t=>t.dom.nodeType)(e)===t,g=m(1),f=m(3),v=m(11),y=(t,e)=>{t.dom.removeAttribute(e)},p=t=>d(t.dom.host),w=t=>{const e=f(t)?t.dom.parentNode:t.dom;if(null==e||null===e.ownerDocument)return!1;const o=e.ownerDocument;return(t=>{const e=(t=>d(t.dom.getRootNode()))(t);return v(o=e)&&n(o.dom.host)?a.some(e):a.none();var o})(d(e)).fold((()=>o.body.contains(e)),(r=w,i=p,t=>r(i(t))));var r,i},b=t=>"rtl"===((t,e)=>{const o=t.dom,r=window.getComputedStyle(o).getPropertyValue(e);return""!==r||w(t)?r:((t,e)=>(t=>void 0!==t.style&&i(t.style.getPropertyValue))(t)?t.style.getPropertyValue(e):"")(o,e)})(t,"direction")?"rtl":"ltr",S=(t,e)=>((t,o)=>((t,e)=>{const o=[];for(let r=0,n=t.length;r<n;r++){const n=t[r];e(n,r)&&o.push(n)}return o})(((t,e)=>{const o=t.length,r=new Array(o);for(let n=0;n<o;n++){const o=t[n];r[n]=e(o,n)}return r})(t.dom.childNodes,d),(t=>h(t,e))))(t),N=("li",t=>g(t)&&"li"===t.dom.nodeName.toLowerCase());const A=(t,e,n)=>{u(e,(e=>{const c=d(e),m=N(c),f=((t,e)=>{return(e?(o=t,r="ol,ul",((t,e,o)=>{let n=t.dom;const s=i(o)?o:l;for(;n.parentNode;){n=n.parentNode;const t=d(n);if(h(t,r))return a.some(t);if(s(t))break}return a.none()})(o,0,n)):a.some(t)).getOr(t);var o,r,n})(c,m);var v;(v=f,(t=>a.from(t.dom.parentNode).map(d))(v).filter(g)).each((e=>{if(t.setStyle(f.dom,"direction",null),b(e)===n?y(f,"dir"):((t,e,n)=>{((t,e,n)=>{if(!(o(n)||r(n)||s(n)))throw console.error("Invalid call to Attribute.set. Key ",e,":: Value ",n,":: Element ",t),new Error("Attribute value was not simple");t.setAttribute(e,n+"")})(t.dom,e,n)})(f,"dir",n),b(f)!==n&&t.setStyle(f.dom,"direction",n),m){const e=S(f,"li[dir],li[style]");u(e,(e=>{y(e,"dir"),t.setStyle(e.dom,"direction",null)}))}}))}))},T=(t,e)=>{t.selection.isEditable()&&(A(t.dom,t.selection.getSelectedBlocks(),e),t.nodeChanged())},C=(t,e)=>o=>{const r=r=>{const n=d(r.element);o.setActive(b(n)===e),o.setEnabled(t.selection.isEditable())};return t.on("NodeChange",r),o.setEnabled(t.selection.isEditable()),()=>t.off("NodeChange",r)};t.add("directionality",(t=>{(t=>{t.addCommand("mceDirectionLTR",(()=>{T(t,"ltr")})),t.addCommand("mceDirectionRTL",(()=>{T(t,"rtl")}))})(t),(t=>{t.ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:()=>t.execCommand("mceDirectionLTR"),onSetup:C(t,"ltr")}),t.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:()=>t.execCommand("mceDirectionRTL"),onSetup:C(t,"rtl")})})(t)}))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -293,7 +293,7 @@
|
||||
});
|
||||
registerOption('emoticons_images_url', {
|
||||
processor: 'string',
|
||||
default: 'https://twemoji.maxcdn.com/v/13.0.1/72x72/'
|
||||
default: 'https://cdnjs.cloudflare.com/ajax/libs/twemoji/15.1.0/72x72/'
|
||||
});
|
||||
};
|
||||
const getEmojiDatabase = option('emoticons_database');
|
||||
@ -587,6 +587,7 @@
|
||||
register(editor);
|
||||
init(editor, database);
|
||||
setup(editor);
|
||||
return { getAllEmojis: () => database.waitForLoad().then(() => database.listAll()) };
|
||||
});
|
||||
};
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -19,7 +19,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
var global$3 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
const get$5 = fullscreenState => ({ isFullscreen: () => fullscreenState.get() !== null });
|
||||
|
||||
@ -343,7 +343,6 @@
|
||||
const isHTMLElement = element => isElement(element) && isPrototypeOf(element.dom);
|
||||
const isElement = isType(ELEMENT);
|
||||
const isText = isType(TEXT);
|
||||
const isDocument = isType(DOCUMENT);
|
||||
const isDocumentFragment = isType(DOCUMENT_FRAGMENT);
|
||||
|
||||
const rawSet = (dom, key, value) => {
|
||||
@ -378,7 +377,7 @@
|
||||
}
|
||||
};
|
||||
|
||||
const isSupported$1 = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);
|
||||
const isSupported = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue);
|
||||
|
||||
const fromHtml = (html, scope) => {
|
||||
const doc = scope || document;
|
||||
@ -444,7 +443,6 @@
|
||||
const eq = (e1, e2) => e1.dom === e2.dom;
|
||||
|
||||
const owner = element => SugarElement.fromDom(element.dom.ownerDocument);
|
||||
const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);
|
||||
const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);
|
||||
const parents = (element, isRoot) => {
|
||||
const stop = isFunction(isRoot) ? isRoot : never;
|
||||
@ -470,16 +468,14 @@
|
||||
const children = element => map(element.dom.childNodes, SugarElement.fromDom);
|
||||
|
||||
const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);
|
||||
const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);
|
||||
const isSupported = constant(supported);
|
||||
const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;
|
||||
const getRootNode = e => SugarElement.fromDom(e.dom.getRootNode());
|
||||
const getShadowRoot = e => {
|
||||
const r = getRootNode(e);
|
||||
return isShadowRoot(r) ? Optional.some(r) : Optional.none();
|
||||
};
|
||||
const getShadowHost = e => SugarElement.fromDom(e.dom.host);
|
||||
const getOriginalEventTarget = event => {
|
||||
if (isSupported() && isNonNullable(event.target)) {
|
||||
if (isNonNullable(event.target)) {
|
||||
const el = SugarElement.fromDom(event.target);
|
||||
if (isElement(el) && isOpenShadowHost(el)) {
|
||||
if (event.composed && event.composedPath) {
|
||||
@ -515,7 +511,7 @@
|
||||
console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);
|
||||
throw new Error('CSS value must be a string: ' + value);
|
||||
}
|
||||
if (isSupported$1(dom)) {
|
||||
if (isSupported(dom)) {
|
||||
dom.style.setProperty(property, value);
|
||||
}
|
||||
};
|
||||
@ -535,7 +531,7 @@
|
||||
const r = styles.getPropertyValue(property);
|
||||
return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;
|
||||
};
|
||||
const getUnsafeProperty = (dom, property) => isSupported$1(dom) ? dom.style.getPropertyValue(property) : '';
|
||||
const getUnsafeProperty = (dom, property) => isSupported(dom) ? dom.style.getPropertyValue(property) : '';
|
||||
|
||||
const mkEvent = (target, x, y, stop, prevent, kill, raw) => ({
|
||||
target,
|
||||
@ -896,7 +892,7 @@
|
||||
const PlatformDetection = { detect: detect$1 };
|
||||
|
||||
const mediaMatch = query => window.matchMedia(query).matches;
|
||||
let platform = cached(() => PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch));
|
||||
let platform = cached(() => PlatformDetection.detect(window.navigator.userAgent, Optional.from(window.navigator.userAgentData), mediaMatch));
|
||||
const detect = () => platform();
|
||||
|
||||
const r = (left, top) => {
|
||||
@ -949,9 +945,9 @@
|
||||
return { unbind: () => visualViewport.removeEventListener(name, handler) };
|
||||
}).getOrThunk(() => ({ unbind: noop }));
|
||||
|
||||
var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
|
||||
var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.Env');
|
||||
var global$1 = tinymce.util.Tools.resolve('tinymce.Env');
|
||||
|
||||
const fireFullscreenStateChanged = (editor, state) => {
|
||||
editor.dispatch('FullscreenStateChanged', { state });
|
||||
@ -1028,7 +1024,7 @@
|
||||
const ancestorPosition = 'position:absolute!important;';
|
||||
const ancestorStyles = 'top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;';
|
||||
const bgFallback = 'background-color:rgb(255,255,255)!important;';
|
||||
const isAndroid = global.os.isAndroid();
|
||||
const isAndroid = global$1.os.isAndroid();
|
||||
const matchColor = editorBody => {
|
||||
const color = get$2(editorBody, 'background-color');
|
||||
return color !== undefined && color !== '' ? 'background-color:' + color + '!important' : bgFallback;
|
||||
@ -1068,7 +1064,7 @@
|
||||
});
|
||||
};
|
||||
|
||||
const DOM = global$1.DOM;
|
||||
const DOM = global$2.DOM;
|
||||
const getScrollPos = () => getBounds(window);
|
||||
const setScrollPos = pos => window.scrollTo(pos.x, pos.y);
|
||||
const viewportUpdate = get().fold(() => ({
|
||||
@ -1123,7 +1119,7 @@
|
||||
const fullscreenRoot = getFullscreenRoot(editor);
|
||||
const fullscreenInfo = fullscreenState.get();
|
||||
const editorBody = SugarElement.fromDom(editor.getBody());
|
||||
const isTouch = global.deviceType.isTouch();
|
||||
const isTouch = global$1.deviceType.isTouch();
|
||||
const editorContainerStyle = editorContainer.style;
|
||||
const iframe = editor.iframeElement;
|
||||
const iframeStyle = iframe === null || iframe === void 0 ? void 0 : iframe.style;
|
||||
@ -1207,6 +1203,18 @@
|
||||
});
|
||||
};
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.util.VK');
|
||||
|
||||
const setup = (editor, fullscreenState) => {
|
||||
editor.on('init', () => {
|
||||
editor.on('keydown', e => {
|
||||
if (e.keyCode === global.TAB && !(e.metaKey || e.ctrlKey) && fullscreenState.get()) {
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const makeSetupHandler = (editor, fullscreenState) => api => {
|
||||
api.setActive(fullscreenState.get() !== null);
|
||||
const editorEventCallback = e => api.setActive(e.state);
|
||||
@ -1226,12 +1234,13 @@
|
||||
tooltip: 'Fullscreen',
|
||||
icon: 'fullscreen',
|
||||
onAction,
|
||||
onSetup: makeSetupHandler(editor, fullscreenState)
|
||||
onSetup: makeSetupHandler(editor, fullscreenState),
|
||||
shortcut: 'Meta+Shift+F'
|
||||
});
|
||||
};
|
||||
|
||||
var Plugin = () => {
|
||||
global$2.add('fullscreen', editor => {
|
||||
global$3.add('fullscreen', editor => {
|
||||
const fullscreenState = Cell(null);
|
||||
if (editor.inline) {
|
||||
return get$5(fullscreenState);
|
||||
@ -1239,6 +1248,7 @@
|
||||
register$2(editor);
|
||||
register$1(editor, fullscreenState);
|
||||
register(editor, fullscreenState);
|
||||
setup(editor, fullscreenState);
|
||||
editor.addShortcut('Meta+Shift+F', '', 'mceFullScreen');
|
||||
return get$5(fullscreenState);
|
||||
});
|
||||
|
File diff suppressed because one or more lines are too long
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.ar',
|
||||
' <dt>التركيز على التذييل</dt>\n' +
|
||||
' <dd>نظاما التشغيل Windows أو Linux: Alt + F11</dd>\n' +
|
||||
' <dd>نظام التشغيل macOS: ⌥F11</dd>\n' +
|
||||
' <dt>تركيز الإشعارات</dt>\n' +
|
||||
' <dd>نظاما التشغيل Windows أو Linux: Alt + F12</dd>\n' +
|
||||
' <dd>نظام التشغيل macOS: ⌥F12</dd>\n' +
|
||||
' <dt>التركيز على شريط أدوات السياق</dt>\n' +
|
||||
' <dd>أنظمة التشغيل Windows أو Linux أو macOS: Ctrl+F9\n' +
|
||||
' <dd>أنظمة التشغيل Windows أو Linux أو macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>سيبدأ التنقل عند عنصر واجهة المستخدم الأول، والذي سيتم تمييزه أو تسطيره في حالة العنصر الأول في\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.bg_BG',
|
||||
' <dt>Фокусиране върху долния колонтитул</dt>\n' +
|
||||
' <dd>Windows или Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Фокусиране на известието</dt>\n' +
|
||||
' <dd>Windows или Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Фокусиране върху контекстуалната лента с инструменти</dt>\n' +
|
||||
' <dd>Windows, Linux или macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux или macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Навигацията ще започне с първия елемент на ПИ, който ще бъде маркиран или подчертан в случая на първия елемент в\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.ca',
|
||||
' <dt>Enfocar el peu de pàgina</dt>\n' +
|
||||
' <dd>Windows o Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Enfocar la notificació</dt>\n' +
|
||||
' <dd>Windows o Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
" <dt>Enfocar una barra d'eines contextual</dt>\n" +
|
||||
' <dd>Windows, Linux o macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux o macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
"<p>La navegació començarà en el primer element de la interfície d'usuari, que es ressaltarà o subratllarà per al primer element a\n" +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.cs',
|
||||
' <dt>Přejít na zápatí</dt>\n' +
|
||||
' <dd>Windows nebo Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Přejít na oznámení</dt>\n' +
|
||||
' <dd>Windows nebo Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Přejít na kontextový panel nástrojů</dt>\n' +
|
||||
' <dd>Windows, Linux nebo macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux nebo macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Navigace začne u první položky uživatelského rozhraní, která bude zvýrazněna nebo v případě první položky\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.da',
|
||||
' <dt>Fokuser på sidefoden</dt>\n' +
|
||||
' <dd>Windows eller Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Fokuser på meddelelsen</dt>\n' +
|
||||
' <dd>Windows eller Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Fokuser på kontekstuel værktøjslinje</dt>\n' +
|
||||
' <dd>Windows, Linux eller macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux eller macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Navigationen starter ved det første UI-element, som fremhæves eller understreges hvad angår det første element i\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.de',
|
||||
' <dt>Fokus auf Fußzeile</dt>\n' +
|
||||
' <dd>Windows oder Linux: ALT+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Benachrichtigung fokussieren</dt>\n' +
|
||||
' <dd>Windows oder Linux: ALT+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Fokus auf kontextbezogene Symbolleiste</dt>\n' +
|
||||
' <dd>Windows, Linux oder macOS: STRG+F9\n' +
|
||||
' <dd>Windows, Linux oder macOS: STRG+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Die Navigation beginnt beim ersten Benutzeroberflächenelement, welches hervorgehoben ist. Falls sich das erste Element im Pfad der Fußzeile befindet,\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.el',
|
||||
' <dt>Εστίαση στο υποσέλιδο</dt>\n' +
|
||||
' <dd>Windows ή Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Εστίαση στην ειδοποίηση</dt>\n' +
|
||||
' <dd>Windows ή Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Εστίαση σε γραμμή εργαλείων βάσει περιεχομένου</dt>\n' +
|
||||
' <dd>Windows, Linux ή macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux ή macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Η πλοήγηση θα ξεκινήσει από το πρώτο στοιχείο περιβάλλοντος χρήστη, που θα επισημαίνεται ή θα είναι υπογραμμισμένο,\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.en',
|
||||
' <dt>Focus the footer</dt>\n' +
|
||||
' <dd>Windows or Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Focus the notification</dt>\n' +
|
||||
' <dd>Windows or Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Focus a contextual toolbar</dt>\n' +
|
||||
' <dd>Windows, Linux or macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux or macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Navigation will start at the first UI item, which will be highlighted, or underlined in the case of the first item in\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.es',
|
||||
' <dt>Enfocar el pie de página</dt>\n' +
|
||||
' <dd>Windows o Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Enfocar la notificación</dt>\n' +
|
||||
' <dd>Windows o Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Enfocar una barra de herramientas contextual</dt>\n' +
|
||||
' <dd>Windows, Linux o macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux o macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>La navegación comenzará por el primer elemento de la interfaz de usuario (IU), de tal manera que se resaltará, o bien se subrayará si se trata del primer elemento de\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.eu',
|
||||
' <dt>Fokuratu orri-oina</dt>\n' +
|
||||
' <dd>Windows edo Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Fokuratu jakinarazpena</dt>\n' +
|
||||
' <dd>Windows edo Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Fokuratu testuinguruaren tresna-barra</dt>\n' +
|
||||
' <dd>Windows, Linux edo macOS: Ktrl+F9\n' +
|
||||
' <dd>Windows, Linux edo macOS: Ktrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Nabigazioa EIko lehen elementuan hasiko da: elementu hori nabarmendu egingo da, edo azpimarratu lehen elementua bada\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.fa',
|
||||
' <dt>تمرکز بر پانویس</dt>\n' +
|
||||
' <dd>Windows یا Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>تمرکز اعلان</dt>\n' +
|
||||
' <dd>ویندوز یا لینوکس: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>تمرکز بر نوار ابزار بافتاری</dt>\n' +
|
||||
' <dd>Windows ،Linux یا macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows ،Linux یا macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>پیمایش در اولین مورد رابط کاربری شروع میشود و درخصوص اولین مورد در\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.fi',
|
||||
' <dt>Siirrä kohdistus alatunnisteeseen</dt>\n' +
|
||||
' <dd>Windows tai Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Keskitä ilmoitukseen</dt>\n' +
|
||||
' <dd>Windows ja Linux: Alt + F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Siirrä kohdistus kontekstuaaliseen työkalupalkkiin</dt>\n' +
|
||||
' <dd>Windows, Linux tai macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux tai macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Navigointi aloitetaan ensimmäisestä käyttöliittymän kohteesta, joka joko korostetaan tai alleviivataan, jos\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.fr_FR',
|
||||
' <dt>Cibler le pied de page</dt>\n' +
|
||||
' <dd>Windows ou Linux : Alt+F11</dd>\n' +
|
||||
' <dd>macOS : ⌥F11</dd>\n' +
|
||||
' <dt>Cibler la notification</dt>\n' +
|
||||
' <dd>Windows ou Linux : Alt+F12</dd>\n' +
|
||||
' <dd>macOS : ⌥F12</dd>\n' +
|
||||
" <dt>Cibler une barre d'outils contextuelle</dt>\n" +
|
||||
' <dd>Windows, Linux ou macOS : Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux ou macOS : Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
"<p>La navigation débutera sur le premier élément de l'interface utilisateur, qui sera mis en surbrillance ou bien souligné dans le cas du premier élément du\n" +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.he_IL',
|
||||
' <dt>העבר מיקוד לכותרת התחתונה</dt>\n' +
|
||||
' <dd>Windows או Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>העבר מיקוד להודעה</dt>\n' +
|
||||
' <dd>Windows או Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>העבר מיקוד לסרגל כלים הקשרי</dt>\n' +
|
||||
' <dd>Windows, Linux או macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux או macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>הניווט יתחיל ברכיב הראשון במשך, שיודגש או שיהיה מתחתיו קו תחתון במקרה של הפריט הראשון\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.hi',
|
||||
' <dt>फ़ुटर पर फ़ोकस करें</dt>\n' +
|
||||
' <dd>Windows या Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>नोटिफ़िकेशन फ़ोकस</dt>\n' +
|
||||
' <dd>Windows या Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>प्रासंगिक टूलबार पर फ़ोकस करें</dt>\n' +
|
||||
' <dd>Windows, Linux या macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux या macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>नेविगेशन पहले UI आइटम पर शुरू होगा, जिसे हाइलाइट किया जाएगा या पहले आइटम के मामले में फ़ुटर तत्व पथ में\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.hr',
|
||||
' <dt>Fokusiranje podnožja</dt>\n' +
|
||||
' <dd>Windows ili Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Fokusiranje obavijesti</dt>\n' +
|
||||
' <dd>Windows ili Linux: Alt + F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Fokusiranje kontekstne alatne trake</dt>\n' +
|
||||
' <dd>Windows, Linux ili macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux ili macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Navigacija će započeti kod prve stavke na korisničkom sučelju, koja će biti istaknuta ili podcrtana ako se radi o prvoj stavci u\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.hu_HU',
|
||||
' <dt>Fókusz a láblécre</dt>\n' +
|
||||
' <dd>Windows és Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Ráközelítés az értesítésre</dt>\n' +
|
||||
' <dd>Windows vagy Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Fókusz egy környezetfüggő eszköztárra</dt>\n' +
|
||||
' <dd>Windows, Linux és macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux és macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>A navigáció az első felhasználói felületi elemnél kezdődik, amelyet a rendszer kiemel, illetve aláhúz, amennyiben az az első elem\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.id',
|
||||
' <dt>Fokus pada footer</dt>\n' +
|
||||
' <dd>Windows atau Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Fokuskan pemberitahuan</dt>\n' +
|
||||
' <dd>Windows atau Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Fokus pada bilah alat kontekstual</dt>\n' +
|
||||
' <dd>Windows, Linux, atau macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux, atau macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Navigasi akan dimulai dari item pertama UI, yang akan disorot atau digarisbawahi di\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.it',
|
||||
' <dt>Impostare lo stato attivo per il piè di pagina</dt>\n' +
|
||||
' <dd>Windows o Linux: ALT+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Metti a fuoco la notifica</dt>\n' +
|
||||
' <dd>Windows o Linux: ALT+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Impostare lo stato attivo per la barra degli strumenti contestuale</dt>\n' +
|
||||
' <dd>Windows, Linux o macOS: CTRL+F9\n' +
|
||||
' <dd>Windows, Linux o macOS: CTRL+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
"<p>La navigazione inizierà dalla prima voce dell'interfaccia utente, che sarà evidenziata o sottolineata nel caso della prima voce\n" +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.ja',
|
||||
' <dt>フッターをフォーカス</dt>\n' +
|
||||
' <dd>Windows または Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>通知にフォーカス</dt>\n' +
|
||||
' <dd>Windows または Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>コンテキスト ツール バーをフォーカス</dt>\n' +
|
||||
' <dd>Windows、Linux または macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows、Linux または macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>ナビゲーションは最初の UI 項目から開始され、強調表示されるか、フッターの要素パスにある最初の項目の場合は\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.kk',
|
||||
' <dt>Төменгі деректемені фокустау</dt>\n' +
|
||||
' <dd>Windows немесе Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Хабарландыруды белгілеу</dt>\n' +
|
||||
' <dd>Windows немесе Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Мәтінмәндік құралдар тақтасын фокустау</dt>\n' +
|
||||
' <dd>Windows, Linux немесе macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux немесе macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Навигация бөлектелетін немесе Төменгі деректеме элементінің жолындағы бірінші элемент жағдайында асты сызылатын\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.ko_KR',
|
||||
' <dt>푸터 포커스 표시</dt>\n' +
|
||||
' <dd>Windows 또는 Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>알림 포커스</dt>\n' +
|
||||
' <dd>Windows 또는 Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>컨텍스트 도구 모음에 포커스 표시</dt>\n' +
|
||||
' <dd>Windows, Linux 또는 macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux 또는 macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>첫 번째 UI 항목에서 탐색이 시작되며, 이때 첫 번째 항목이 강조 표시되거나 푸터 요소 경로에 있는\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.ms',
|
||||
' <dt>Fokus pengaki</dt>\n' +
|
||||
' <dd>Windows atau Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Tumpu kepada pemberitahuan</dt>\n' +
|
||||
' <dd>Windows atau Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Fokus bar alat kontekstual</dt>\n' +
|
||||
' <dd>Windows, Linux atau macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux atau macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Navigasi akan bermula pada item UI pertama, yang akan diserlahkan atau digaris bawah dalam saiz item pertama dalam\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.nb_NO',
|
||||
' <dt>Utheve bunnteksten</dt>\n' +
|
||||
' <dd>Windows eller Linux: Alt + F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Fokuser på varselet</dt>\n' +
|
||||
' <dd>Windows eller Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Utheve en kontekstuell verktøylinje</dt>\n' +
|
||||
' <dd>Windows, Linux eller macOS: Ctrl + F9\n' +
|
||||
' <dd>Windows, Linux eller macOS: Ctrl + F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Navigeringen starter ved det første grensesnittelementet, som utheves, eller understrekes når det gjelder det første elementet i\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.nl',
|
||||
' <dt>Focus op de voettekst instellen</dt>\n' +
|
||||
' <dd>Windows of Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Focus op de melding instellen</dt>\n' +
|
||||
' <dd>Windows of Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Focus op een contextuele werkbalk instellen</dt>\n' +
|
||||
' <dd>Windows, Linux of macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux of macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>De navigatie start bij het eerste UI-item, dat wordt gemarkeerd of onderstreept als het eerste item zich in\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.pl',
|
||||
' <dt>Ustaw fokus na sekcję Footer</dt>\n' +
|
||||
' <dd>Windows lub Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Skup się na powiadomieniu</dt>\n' +
|
||||
' <dd>Windows lub Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Ustaw fokus na kontekstowy pasek narzędzi</dt>\n' +
|
||||
' <dd>Windows, Linux lub macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux lub macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Nawigacja zostanie rozpoczęta od pierwszego elementu interfejsu użytkownika, który jest podświetlony lub — w przypadku pierwszego elementu\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.pt_BR',
|
||||
' <dt>Foco no rodapé</dt>\n' +
|
||||
' <dd>Windows ou Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Foco na notificação</dt>\n' +
|
||||
' <dd>Windows ou Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Foco na barra de ferramentas contextual</dt>\n' +
|
||||
' <dd>Windows, Linux ou macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux ou macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>A navegação inicia no primeiro item da IU, que será destacado ou sublinhado no caso do primeiro item no\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.pt_PT',
|
||||
' <dt>Foco no rodapé</dt>\n' +
|
||||
' <dd>Windows ou Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Focar a notificação</dt>\n' +
|
||||
' <dd>Windows ou Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Foco numa barra de ferramentas contextual</dt>\n' +
|
||||
' <dd>Windows, Linux ou macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux ou macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>A navegação começará no primeiro item de IU, que estará realçado ou sublinhado, no caso do primeiro item no\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.ro',
|
||||
' <dt>Focalizare pe subsol</dt>\n' +
|
||||
' <dd>Windows sau Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Focalizare pe notificare</dt>\n' +
|
||||
' <dd>Windows sau Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Focalizare pe o bară de instrumente contextuală</dt>\n' +
|
||||
' <dd>Windows, Linux sau macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux sau macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Navigarea va începe de la primul element al interfeței cu utilizatorul, care va fi evidențiat sau subliniat în cazul primului element din\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.ru',
|
||||
' <dt>Фокус на нижнем колонтитуле</dt>\n' +
|
||||
' <dd>Windows или Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Фокус на уведомлении</dt>\n' +
|
||||
' <dd>Windows или Linux: Alt+12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Фокус на контекстной панели инструментов</dt>\n' +
|
||||
' <dd>Windows, Linux или macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux или macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Первый доступный для управления элемент интерфейса будет выделен цветом или подчеркнут (если он находится\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.sk',
|
||||
' <dt>Prejsť na pätičku</dt>\n' +
|
||||
' <dd>Windows alebo Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Zaostriť na oznámenie</dt>\n' +
|
||||
' <dd>Windows alebo Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Prejsť na kontextový panel nástrojov</dt>\n' +
|
||||
' <dd>Windows, Linux alebo macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux alebo macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Navigácia začne pri prvej položke používateľského rozhrania, ktorá bude zvýraznená alebo v prípade prvej položky\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.sl_SI',
|
||||
' <dt>Fokus na nogo</dt>\n' +
|
||||
' <dd>Windows ali Linux: Alt + F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Označitev obvestila</dt>\n' +
|
||||
' <dd>Windows ali Linux: Alt + F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Fokus na kontekstualno orodno vrstico</dt>\n' +
|
||||
' <dd>Windows, Linux ali macOS: Ctrl + F9\n' +
|
||||
' <dd>Windows, Linux ali macOS: Ctrl + F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Krmarjenje se bo začelo s prvim elementom uporabniškega vmesnika, ki bo izpostavljena ali podčrtan, če gre za prvi element na\n' +
|
||||
@ -39,7 +42,7 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.sl_SI',
|
||||
'<p>Če razdelek uporabniškega vmesnika ni prisoten, je preskočen.</p>\n' +
|
||||
'\n' +
|
||||
'<p>Če ima noga fokus za krmarjenje s tipkovnico in ni vidne stranske vrstice, s pritiskom na <strong>shift + tabulatorko</strong>\n' +
|
||||
' fokus premaknete na prvo skupino orodne vrstice, ne zadnjo</p>.\n' +
|
||||
' fokus premaknete na prvo skupino orodne vrstice, ne zadnjo.</p>\n' +
|
||||
'\n' +
|
||||
'<h1>Krmarjenje v razdelkih uporabniškega vmesnika</h1>\n' +
|
||||
'\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.sv_SE',
|
||||
' <dt>Fokusera på verktygsraden</dt>\n' +
|
||||
' <dd>Windows eller Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Fokusera aviseringen</dt>\n' +
|
||||
' <dd>Windows eller Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Fokusera på en snabbverktygsrad</dt>\n' +
|
||||
' <dd>Windows, Linux eller macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux eller macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Navigeringen börjar vid det första gränssnittsobjektet, vilket är markerat eller understruket om det gäller det första objektet i\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.th_TH',
|
||||
' <dt>โฟกัสที่ส่วนท้าย</dt>\n' +
|
||||
' <dd>Windows หรือ Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>โฟกัสไปที่การแจ้งเตือน</dt>\n' +
|
||||
' <dd>Windows หรือ Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>โฟกัสที่แถบเครื่องมือตามบริบท</dt>\n' +
|
||||
' <dd>Windows, Linux หรือ macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux หรือ macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>การนำทางจะเริ่มที่รายการ UI แรก ซึ่งจะมีการไฮไลต์หรือขีดเส้นใต้ไว้ในกรณีที่รายการแรกอยู่ใน\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.tr',
|
||||
' <dt>Alt bilgiye odaklan</dt>\n' +
|
||||
' <dd>Windows veya Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Bildirime odakla</dt>\n' +
|
||||
' <dd>Windows veya Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Bağlamsal araç çubuğuna odaklan</dt>\n' +
|
||||
' <dd>Windows, Linux veya macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux veya macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Gezinti ilk kullanıcı arabirimi öğesinden başlar, bu öğe vurgulanır ya da ilk öğe, Alt bilgi elemanı\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.uk',
|
||||
' <dt>Фокус на розділі "Нижній колонтитул"</dt>\n' +
|
||||
' <dd>Windows або Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Фокус на сповіщення</dt>\n' +
|
||||
' <dd>Windows або Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Фокус на контекстній панелі інструментів</dt>\n' +
|
||||
' <dd>Windows, Linux або macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux або macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Навігація почнеться з першого елемента інтерфейсу користувача, який буде виділено або підкреслено в разі, якщо перший елемент знаходиться в\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.vi',
|
||||
' <dt>Tập trung vào chân trang</dt>\n' +
|
||||
' <dd>Windows hoặc Linux: Alt+F11</dd>\n' +
|
||||
' <dd>macOS: ⌥F11</dd>\n' +
|
||||
' <dt>Tập trung vào thông báo</dt>\n' +
|
||||
' <dd>Windows hoặc Linux: Alt+F12</dd>\n' +
|
||||
' <dd>macOS: ⌥F12</dd>\n' +
|
||||
' <dt>Tập trung vào thanh công cụ ngữ cảnh</dt>\n' +
|
||||
' <dd>Windows, Linux hoặc macOS: Ctrl+F9\n' +
|
||||
' <dd>Windows, Linux hoặc macOS: Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>Điều hướng sẽ bắt đầu từ mục UI đầu tiên. Mục này sẽ được tô sáng hoặc có gạch dưới (nếu là mục đầu tiên trong\n' +
|
||||
|
@ -2,17 +2,20 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.zh_CN',
|
||||
'<h1>开始键盘导航</h1>\n' +
|
||||
'\n' +
|
||||
'<dl>\n' +
|
||||
' <dt>聚焦于菜单栏</dt>\n' +
|
||||
' <dt>使菜单栏处于焦点</dt>\n' +
|
||||
' <dd>Windows 或 Linux:Alt+F9</dd>\n' +
|
||||
' <dd>macOS:⌥F9</dd>\n' +
|
||||
' <dt>聚焦于工具栏</dt>\n' +
|
||||
' <dt>使工具栏处于焦点</dt>\n' +
|
||||
' <dd>Windows 或 Linux:Alt+F10</dd>\n' +
|
||||
' <dd>macOS:⌥F10</dd>\n' +
|
||||
' <dt>聚焦于页脚</dt>\n' +
|
||||
' <dt>使页脚处于焦点</dt>\n' +
|
||||
' <dd>Windows 或 Linux:Alt+F11</dd>\n' +
|
||||
' <dd>macOS:⌥F11</dd>\n' +
|
||||
' <dt>聚焦于上下文工具栏</dt>\n' +
|
||||
' <dd>Windows、Linux 或 macOS:Ctrl+F9\n' +
|
||||
' <dt>使通知处于焦点</dt>\n' +
|
||||
' <dd>Windows 或 Linux:Alt+F12</dd>\n' +
|
||||
' <dd>macOS:⌥F12</dd>\n' +
|
||||
' <dt>使上下文工具栏处于焦点</dt>\n' +
|
||||
' <dd>Windows、Linux 或 macOS:Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>导航将在第一个 UI 项上开始,其中突出显示该项,或者对于页脚元素路径中的第一项,将为其添加下划线。</p>\n' +
|
||||
|
@ -11,8 +11,11 @@ tinymce.Resource.add('tinymce.html-i18n.help-keynav.zh_TW',
|
||||
' <dt>跳至頁尾</dt>\n' +
|
||||
' <dd>Windows 或 Linux:Alt+F11</dd>\n' +
|
||||
' <dd>macOS:⌥F11</dd>\n' +
|
||||
' <dt>跳至通知</dt>\n' +
|
||||
' <dd>Windows 或 Linux:Alt+F12</dd>\n' +
|
||||
' <dd>macOS:⌥F12</dd>\n' +
|
||||
' <dt>跳至關聯式工具列</dt>\n' +
|
||||
' <dd>Windows、Linux 或 macOS:Ctrl+F9\n' +
|
||||
' <dd>Windows、Linux 或 macOS:Ctrl+F9</dd>\n' +
|
||||
'</dl>\n' +
|
||||
'\n' +
|
||||
'<p>瀏覽會從第一個 UI 項目開始,該項目會反白顯示,但如果是「頁尾」元素路徑的第一項,\n' +
|
||||
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -21,13 +21,15 @@
|
||||
|
||||
var global$4 = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
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 = Math.floor(Math.random() * 1000000000);
|
||||
const random$1 = Math.floor(random() * 1000000000);
|
||||
unique++;
|
||||
return prefix + '_' + random + unique + String(time);
|
||||
return prefix + '_' + random$1 + unique + String(time);
|
||||
};
|
||||
|
||||
const get$1 = customTabs => {
|
||||
@ -386,6 +388,10 @@
|
||||
shortcuts: ['Alt + F11'],
|
||||
action: 'Focus to element path'
|
||||
},
|
||||
{
|
||||
shortcuts: ['Alt + F12'],
|
||||
action: 'Focus to notification'
|
||||
},
|
||||
{
|
||||
shortcuts: ['Ctrl + F9'],
|
||||
action: 'Focus to contextual toolbar'
|
||||
@ -440,10 +446,6 @@
|
||||
key: 'accordion',
|
||||
name: 'Accordion'
|
||||
},
|
||||
{
|
||||
key: 'advlist',
|
||||
name: 'Advanced List'
|
||||
},
|
||||
{
|
||||
key: 'anchor',
|
||||
name: 'Anchor'
|
||||
@ -512,6 +514,10 @@
|
||||
key: 'lists',
|
||||
name: 'Lists'
|
||||
},
|
||||
{
|
||||
key: 'advlist',
|
||||
name: 'List Styles'
|
||||
},
|
||||
{
|
||||
key: 'media',
|
||||
name: 'Media'
|
||||
@ -544,10 +550,6 @@
|
||||
key: 'table',
|
||||
name: 'Table'
|
||||
},
|
||||
{
|
||||
key: 'template',
|
||||
name: 'Template'
|
||||
},
|
||||
{
|
||||
key: 'textcolor',
|
||||
name: 'Text Color'
|
||||
@ -570,20 +572,10 @@
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'advcode',
|
||||
name: 'Advanced Code Editor',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'advtable',
|
||||
name: 'Advanced Tables',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'advtemplate',
|
||||
name: 'Advanced Templates',
|
||||
key: 'typography',
|
||||
name: 'Advanced Typography',
|
||||
type: 'premium',
|
||||
slug: 'advanced-templates'
|
||||
slug: 'advanced-typography'
|
||||
},
|
||||
{
|
||||
key: 'ai',
|
||||
@ -601,21 +593,10 @@
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'editimage',
|
||||
name: 'Enhanced Image Editing',
|
||||
key: 'advcode',
|
||||
name: 'Enhanced Code Editor',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'footnotes',
|
||||
name: 'Footnotes',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'typography',
|
||||
name: 'Advanced Typography',
|
||||
type: 'premium',
|
||||
slug: 'advanced-typography'
|
||||
},
|
||||
{
|
||||
key: 'mediaembed',
|
||||
name: 'Enhanced Media Embed',
|
||||
@ -623,8 +604,23 @@
|
||||
slug: 'introduction-to-mediaembed'
|
||||
},
|
||||
{
|
||||
key: 'export',
|
||||
name: 'Export',
|
||||
key: 'advtable',
|
||||
name: 'Enhanced Tables',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'exportpdf',
|
||||
name: 'Export to PDF',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'exportword',
|
||||
name: 'Export to Word',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'footnotes',
|
||||
name: 'Footnotes',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
@ -632,6 +628,16 @@
|
||||
name: 'Format Painter',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'editimage',
|
||||
name: 'Image Editing',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'importword',
|
||||
name: 'Import from Word',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'inlinecss',
|
||||
name: 'Inline CSS',
|
||||
@ -643,6 +649,16 @@
|
||||
name: 'Link Checker',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'math',
|
||||
name: 'Math',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'markdown',
|
||||
name: 'Markdown',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'mentions',
|
||||
name: 'Mentions',
|
||||
@ -670,14 +686,13 @@
|
||||
slug: 'introduction-to-powerpaste'
|
||||
},
|
||||
{
|
||||
key: 'rtc',
|
||||
name: 'Real-Time Collaboration',
|
||||
type: 'premium',
|
||||
slug: 'rtc-introduction'
|
||||
key: 'revisionhistory',
|
||||
name: 'Revision History',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'tinymcespellchecker',
|
||||
name: 'Spell Checker Pro',
|
||||
name: 'Spell Checker',
|
||||
type: 'premium',
|
||||
slug: 'introduction-to-tiny-spellchecker'
|
||||
},
|
||||
@ -691,6 +706,12 @@
|
||||
name: 'Table of Contents',
|
||||
type: 'premium'
|
||||
},
|
||||
{
|
||||
key: 'advtemplate',
|
||||
name: 'Templates',
|
||||
type: 'premium',
|
||||
slug: 'advanced-templates'
|
||||
},
|
||||
{
|
||||
key: 'tinycomments',
|
||||
name: 'Tiny Comments',
|
||||
@ -742,7 +763,7 @@
|
||||
const name = x.type === 'premium' ? `${ x.name }*` : x.name;
|
||||
const html = makeLink({
|
||||
name,
|
||||
url: `https://www.tiny.cloud/docs/tinymce/6/${ x.slug }/`
|
||||
url: `https://www.tiny.cloud/docs/tinymce/7/${ x.slug }/`
|
||||
});
|
||||
return {
|
||||
name,
|
||||
@ -794,7 +815,7 @@
|
||||
const tab = () => {
|
||||
const getVersion = (major, minor) => major.indexOf('@') === 0 ? 'X.X.X' : major + '.' + minor;
|
||||
const version = getVersion(global.majorVersion, global.minorVersion);
|
||||
const changeLogLink = '<a data-alloy-tabstop="true" tabindex="-1" href="https://www.tiny.cloud/docs/tinymce/6/changelog/?utm_campaign=help_dialog_version_tab&utm_source=tiny&utm_medium=referral" rel="noopener" target="_blank">TinyMCE ' + version + '</a>';
|
||||
const changeLogLink = '<a data-alloy-tabstop="true" tabindex="-1" href="https://www.tiny.cloud/docs/tinymce/7/changelog/?utm_campaign=help_dialog_version_tab&utm_source=tiny&utm_medium=referral" rel="noopener" target="_blank">TinyMCE ' + version + '</a>';
|
||||
const htmlPanel = {
|
||||
type: 'htmlpanel',
|
||||
html: '<p>' + global$2.translate([
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -1279,6 +1279,7 @@
|
||||
});
|
||||
api.showTab('general');
|
||||
changeSrc(helpers, info, state, api);
|
||||
api.focus('src');
|
||||
};
|
||||
blobToDataUri(file).then(dataUrl => {
|
||||
const blobInfo = helpers.createBlobCache(file, blobUri, dataUrl);
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -141,7 +141,8 @@
|
||||
const skinUrlBase = getSkinUrl(editor);
|
||||
const skinUrl = skinUrlBase ? editor.documentBaseURI.toAbsolute(skinUrlBase) : global$2.baseURL + '/skins/ui/' + skin;
|
||||
const contentSkinUrlPart = global$2.baseURL + '/skins/content/';
|
||||
return href === skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css' || href.indexOf(contentSkinUrlPart) !== -1;
|
||||
const suffix = editor.editorManager.suffix;
|
||||
return href === skinUrl + '/content' + (editor.inline ? '.inline' : '') + `${ suffix }.css` || href.indexOf(contentSkinUrlPart) !== -1;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(s=r=e,(o=String).prototype.isPrototypeOf(s)||(null===(n=r.constructor)||void 0===n?void 0:n.name)===o.name)?"string":t;var s,r,o,n})(t)===e,s=t("string"),r=t("object"),o=t("array"),n=("function",e=>"function"==typeof e);var c=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.EditorManager"),l=tinymce.util.Tools.resolve("tinymce.Env"),a=tinymce.util.Tools.resolve("tinymce.util.Tools");const p=e=>t=>t.options.get(e),u=p("importcss_merge_classes"),m=p("importcss_exclusive"),f=p("importcss_selector_converter"),y=p("importcss_selector_filter"),d=p("importcss_groups"),h=p("importcss_append"),_=p("importcss_file_filter"),g=p("skin"),v=p("skin_url"),b=Array.prototype.push,x=/^\.(?:ephox|tiny-pageembed|mce)(?:[.-]+\w+)+$/,T=e=>s(e)?t=>-1!==t.indexOf(e):e instanceof RegExp?t=>e.test(t):e,S=(e,t)=>{let s={};const r=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(t);if(!r)return;const o=r[1],n=r[2].substr(1).split(".").join(" "),c=a.makeMap("a,img");return r[1]?(s={title:t},e.schema.getTextBlockElements()[o]?s.block=o:e.schema.getBlockElements()[o]||c[o.toLowerCase()]?s.selector=o:s.inline=o):r[2]&&(s={inline:"span",title:t.substr(1),classes:n}),u(e)?s.classes=n:s.attributes={class:n},s},k=(e,t)=>null===t||m(e),w=e=>{e.on("init",(()=>{const t=(()=>{const e=[],t=[],s={};return{addItemToGroup:(e,r)=>{s[e]?s[e].push(r):(t.push(e),s[e]=[r])},addItem:t=>{e.push(t)},toFormats:()=>{return(r=t,n=e=>{const t=s[e];return 0===t.length?[]:[{title:e,items:t}]},(e=>{const t=[];for(let s=0,r=e.length;s<r;++s){if(!o(e[s]))throw new Error("Arr.flatten item "+s+" was not an array, input: "+e);b.apply(t,e[s])}return t})(((e,t)=>{const s=e.length,r=new Array(s);for(let o=0;o<s;o++){const s=e[o];r[o]=t(s,o)}return r})(r,n))).concat(e);var r,n}}})(),r={},n=T(y(e)),p=(e=>a.map(e,(e=>a.extend({},e,{original:e,selectors:{},filter:T(e.filter)}))))(d(e)),u=(t,s)=>{if(((e,t,s,r)=>!(k(e,s)?t in r:t in s.selectors))(e,t,s,r)){((e,t,s,r)=>{k(e,s)?r[t]=!0:s.selectors[t]=!0})(e,t,s,r);const o=((e,t,s,r)=>{let o;const n=f(e);return o=r&&r.selector_converter?r.selector_converter:n||(()=>S(e,s)),o.call(t,s,r)})(e,e.plugins.importcss,t,s);if(o){const t=o.name||c.DOM.uniqueId();return e.formatter.register(t,o),{title:o.title,format:t}}}return null};a.each(((e,t,r)=>{const o=[],n={},c=(t,n)=>{let p,u=t.href;if(u=(e=>{const t=l.cacheSuffix;return s(e)&&(e=e.replace("?"+t,"").replace("&"+t,"")),e})(u),u&&(!r||r(u,n))&&!((e,t)=>{const s=g(e);if(s){const r=v(e),o=r?e.documentBaseURI.toAbsolute(r):i.baseURL+"/skins/ui/"+s,n=i.baseURL+"/skins/content/";return t===o+"/content"+(e.inline?".inline":"")+".min.css"||-1!==t.indexOf(n)}return!1})(e,u)){a.each(t.imports,(e=>{c(e,!0)}));try{p=t.cssRules||t.rules}catch(e){}a.each(p,(e=>{e.styleSheet&&e.styleSheet?c(e.styleSheet,!0):e.selectorText&&a.each(e.selectorText.split(","),(e=>{o.push(a.trim(e))}))}))}};a.each(e.contentCSS,(e=>{n[e]=!0})),r||(r=(e,t)=>t||n[e]);try{a.each(t.styleSheets,(e=>{c(e)}))}catch(e){}return o})(e,e.getDoc(),T(_(e))),(e=>{if(!x.test(e)&&(!n||n(e))){const s=((e,t)=>a.grep(e,(e=>!e.filter||e.filter(t))))(p,e);if(s.length>0)a.each(s,(s=>{const r=u(e,s);r&&t.addItemToGroup(s.title,r)}));else{const s=u(e,null);s&&t.addItem(s)}}}));const m=t.toFormats();e.dispatch("addStyleModifications",{items:m,replace:!h(e)})}))};e.add("importcss",(e=>((e=>{const t=e.options.register,o=e=>s(e)||n(e)||r(e);t("importcss_merge_classes",{processor:"boolean",default:!0}),t("importcss_exclusive",{processor:"boolean",default:!0}),t("importcss_selector_converter",{processor:"function"}),t("importcss_selector_filter",{processor:o}),t("importcss_file_filter",{processor:o}),t("importcss_groups",{processor:"object[]"}),t("importcss_append",{processor:"boolean",default:!1})})(e),w(e),(e=>({convertSelectorToFormat:t=>S(e,t)}))(e))))}();
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(s=r=e,(o=String).prototype.isPrototypeOf(s)||(null===(n=r.constructor)||void 0===n?void 0:n.name)===o.name)?"string":t;var s,r,o,n})(t)===e,s=t("string"),r=t("object"),o=t("array"),n=("function",e=>"function"==typeof e);var c=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.EditorManager"),l=tinymce.util.Tools.resolve("tinymce.Env"),a=tinymce.util.Tools.resolve("tinymce.util.Tools");const p=e=>t=>t.options.get(e),u=p("importcss_merge_classes"),m=p("importcss_exclusive"),f=p("importcss_selector_converter"),y=p("importcss_selector_filter"),d=p("importcss_groups"),h=p("importcss_append"),g=p("importcss_file_filter"),_=p("skin"),v=p("skin_url"),b=Array.prototype.push,x=/^\.(?:ephox|tiny-pageembed|mce)(?:[.-]+\w+)+$/,T=e=>s(e)?t=>-1!==t.indexOf(e):e instanceof RegExp?t=>e.test(t):e,S=(e,t)=>{let s={};const r=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(t);if(!r)return;const o=r[1],n=r[2].substr(1).split(".").join(" "),c=a.makeMap("a,img");return r[1]?(s={title:t},e.schema.getTextBlockElements()[o]?s.block=o:e.schema.getBlockElements()[o]||c[o.toLowerCase()]?s.selector=o:s.inline=o):r[2]&&(s={inline:"span",title:t.substr(1),classes:n}),u(e)?s.classes=n:s.attributes={class:n},s},k=(e,t)=>null===t||m(e),M=e=>{e.on("init",(()=>{const t=(()=>{const e=[],t=[],s={};return{addItemToGroup:(e,r)=>{s[e]?s[e].push(r):(t.push(e),s[e]=[r])},addItem:t=>{e.push(t)},toFormats:()=>{return(r=t,n=e=>{const t=s[e];return 0===t.length?[]:[{title:e,items:t}]},(e=>{const t=[];for(let s=0,r=e.length;s<r;++s){if(!o(e[s]))throw new Error("Arr.flatten item "+s+" was not an array, input: "+e);b.apply(t,e[s])}return t})(((e,t)=>{const s=e.length,r=new Array(s);for(let o=0;o<s;o++){const s=e[o];r[o]=t(s,o)}return r})(r,n))).concat(e);var r,n}}})(),r={},n=T(y(e)),p=(e=>a.map(e,(e=>a.extend({},e,{original:e,selectors:{},filter:T(e.filter)}))))(d(e)),u=(t,s)=>{if(((e,t,s,r)=>!(k(e,s)?t in r:t in s.selectors))(e,t,s,r)){((e,t,s,r)=>{k(e,s)?r[t]=!0:s.selectors[t]=!0})(e,t,s,r);const o=((e,t,s,r)=>{let o;const n=f(e);return o=r&&r.selector_converter?r.selector_converter:n||(()=>S(e,s)),o.call(t,s,r)})(e,e.plugins.importcss,t,s);if(o){const t=o.name||c.DOM.uniqueId();return e.formatter.register(t,o),{title:o.title,format:t}}}return null};a.each(((e,t,r)=>{const o=[],n={},c=(t,n)=>{let p,u=t.href;if(u=(e=>{const t=l.cacheSuffix;return s(e)&&(e=e.replace("?"+t,"").replace("&"+t,"")),e})(u),u&&(!r||r(u,n))&&!((e,t)=>{const s=_(e);if(s){const r=v(e),o=r?e.documentBaseURI.toAbsolute(r):i.baseURL+"/skins/ui/"+s,n=i.baseURL+"/skins/content/",c=e.editorManager.suffix;return t===o+"/content"+(e.inline?".inline":"")+`${c}.css`||-1!==t.indexOf(n)}return!1})(e,u)){a.each(t.imports,(e=>{c(e,!0)}));try{p=t.cssRules||t.rules}catch(e){}a.each(p,(e=>{e.styleSheet&&e.styleSheet?c(e.styleSheet,!0):e.selectorText&&a.each(e.selectorText.split(","),(e=>{o.push(a.trim(e))}))}))}};a.each(e.contentCSS,(e=>{n[e]=!0})),r||(r=(e,t)=>t||n[e]);try{a.each(t.styleSheets,(e=>{c(e)}))}catch(e){}return o})(e,e.getDoc(),T(g(e))),(e=>{if(!x.test(e)&&(!n||n(e))){const s=((e,t)=>a.grep(e,(e=>!e.filter||e.filter(t))))(p,e);if(s.length>0)a.each(s,(s=>{const r=u(e,s);r&&t.addItemToGroup(s.title,r)}));else{const s=u(e,null);s&&t.addItem(s)}}}));const m=t.toFormats();e.dispatch("addStyleModifications",{items:m,replace:!h(e)})}))};e.add("importcss",(e=>((e=>{const t=e.options.register,o=e=>s(e)||n(e)||r(e);t("importcss_merge_classes",{processor:"boolean",default:!0}),t("importcss_exclusive",{processor:"boolean",default:!0}),t("importcss_selector_converter",{processor:"function"}),t("importcss_selector_filter",{processor:o}),t("importcss_file_filter",{processor:o}),t("importcss_groups",{processor:"object[]"}),t("importcss_append",{processor:"boolean",default:!1})})(e),M(e),(e=>({convertSelectorToFormat:t=>S(e,t)}))(e))))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>t.options.get(e),a=t("insertdatetime_dateformat"),n=t("insertdatetime_timeformat"),r=t("insertdatetime_formats"),s=t("insertdatetime_element"),i="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),o="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),l="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),m="January February March April May June July August September October November December".split(" "),c=(e,t)=>{if((e=""+e).length<t)for(let a=0;a<t-e.length;a++)e="0"+e;return e},d=(e,t,a=new Date)=>(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+a.getFullYear())).replace("%y",""+a.getYear())).replace("%m",c(a.getMonth()+1,2))).replace("%d",c(a.getDate(),2))).replace("%H",""+c(a.getHours(),2))).replace("%M",""+c(a.getMinutes(),2))).replace("%S",""+c(a.getSeconds(),2))).replace("%I",""+((a.getHours()+11)%12+1))).replace("%p",a.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(m[a.getMonth()]))).replace("%b",""+e.translate(l[a.getMonth()]))).replace("%A",""+e.translate(o[a.getDay()]))).replace("%a",""+e.translate(i[a.getDay()]))).replace("%%","%"),u=(e,t)=>{if(s(e)){const a=d(e,t);let n;n=/%[HMSIp]/.test(t)?d(e,"%Y-%m-%dT%H:%M"):d(e,"%Y-%m-%d");const r=e.dom.getParent(e.selection.getStart(),"time");r?((e,t,a,n)=>{const r=e.dom.create("time",{datetime:a},n);e.dom.replace(r,t),e.selection.select(r,!0),e.selection.collapse(!1)})(e,r,n,a):e.insertContent('<time datetime="'+n+'">'+a+"</time>")}else e.insertContent(d(e,t))};var p=tinymce.util.Tools.resolve("tinymce.util.Tools");const g=e=>t=>{const a=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",a),a(),()=>{e.off("NodeChange",a)}};e.add("insertdatetime",(e=>{(e=>{const t=e.options.register;t("insertdatetime_dateformat",{processor:"string",default:e.translate("%Y-%m-%d")}),t("insertdatetime_timeformat",{processor:"string",default:e.translate("%H:%M:%S")}),t("insertdatetime_formats",{processor:"string[]",default:["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"]}),t("insertdatetime_element",{processor:"boolean",default:!1})})(e),(e=>{e.addCommand("mceInsertDate",((t,n)=>{u(e,null!=n?n:a(e))})),e.addCommand("mceInsertTime",((t,a)=>{u(e,null!=a?a:n(e))}))})(e),(e=>{const t=r(e),a=(e=>{let t=e;return{get:()=>t,set:e=>{t=e}}})((e=>{const t=r(e);return t.length>0?t[0]:n(e)})(e)),s=t=>e.execCommand("mceInsertDate",!1,t);e.ui.registry.addSplitButton("insertdatetime",{icon:"insert-time",tooltip:"Insert date/time",select:e=>e===a.get(),fetch:a=>{a(p.map(t,(t=>({type:"choiceitem",text:d(e,t),value:t}))))},onAction:e=>{s(a.get())},onItemAction:(e,t)=>{a.set(t),s(t)},onSetup:g(e)});const i=e=>()=>{a.set(e),s(e)};e.ui.registry.addNestedMenuItem("insertdatetime",{icon:"insert-time",text:"Date/time",getSubmenuItems:()=>p.map(t,(t=>({type:"menuitem",text:d(e,t),onAction:i(t)}))),onSetup:g(e)})})(e)}))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -292,53 +292,6 @@
|
||||
const allowUnsafeLinkTarget = option('allow_unsafe_link_target');
|
||||
const useQuickLink = option('link_quicklink');
|
||||
|
||||
var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');
|
||||
|
||||
const getValue = item => isString(item.value) ? item.value : '';
|
||||
const getText = item => {
|
||||
if (isString(item.text)) {
|
||||
return item.text;
|
||||
} else if (isString(item.title)) {
|
||||
return item.title;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
};
|
||||
const sanitizeList = (list, extractValue) => {
|
||||
const out = [];
|
||||
global$4.each(list, item => {
|
||||
const text = getText(item);
|
||||
if (item.menu !== undefined) {
|
||||
const items = sanitizeList(item.menu, extractValue);
|
||||
out.push({
|
||||
text,
|
||||
items
|
||||
});
|
||||
} else {
|
||||
const value = extractValue(item);
|
||||
out.push({
|
||||
text,
|
||||
value
|
||||
});
|
||||
}
|
||||
});
|
||||
return out;
|
||||
};
|
||||
const sanitizeWith = (extracter = getValue) => list => Optional.from(list).map(list => sanitizeList(list, extracter));
|
||||
const sanitize = list => sanitizeWith(getValue)(list);
|
||||
const createUi = (name, label) => items => ({
|
||||
name,
|
||||
type: 'listbox',
|
||||
label,
|
||||
items
|
||||
});
|
||||
const ListOptions = {
|
||||
sanitize,
|
||||
sanitizeWith,
|
||||
createUi,
|
||||
getValue
|
||||
};
|
||||
|
||||
const keys = Object.keys;
|
||||
const hasOwnProperty = Object.hasOwnProperty;
|
||||
const each = (obj, f) => {
|
||||
@ -365,9 +318,11 @@
|
||||
const has = (obj, key) => hasOwnProperty.call(obj, key);
|
||||
const hasNonNullableKey = (obj, key) => has(obj, key) && obj[key] !== undefined && obj[key] !== null;
|
||||
|
||||
var global$4 = tinymce.util.Tools.resolve('tinymce.util.URI');
|
||||
|
||||
var global$3 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');
|
||||
|
||||
var global$2 = tinymce.util.Tools.resolve('tinymce.util.URI');
|
||||
var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');
|
||||
|
||||
const isAnchor = elm => isNonNullable(elm) && elm.nodeName.toLowerCase() === 'a';
|
||||
const isLink = elm => isAnchor(elm) && !!getHref(elm);
|
||||
@ -396,12 +351,12 @@
|
||||
const applyRelTargetRules = (rel, isUnsafe) => {
|
||||
const rules = ['noopener'];
|
||||
const rels = rel ? rel.split(/\s+/) : [];
|
||||
const toString = rels => global$4.trim(rels.sort().join(' '));
|
||||
const toString = rels => global$2.trim(rels.sort().join(' '));
|
||||
const addTargetRules = rels => {
|
||||
rels = removeTargetRules(rels);
|
||||
return rels.length > 0 ? rels.concat(rules) : rules;
|
||||
};
|
||||
const removeTargetRules = rels => rels.filter(val => global$4.inArray(rules, val) === -1);
|
||||
const removeTargetRules = rels => rels.filter(val => global$2.inArray(rules, val) === -1);
|
||||
const newRels = isUnsafe ? addTargetRules(rels) : removeTargetRules(rels);
|
||||
return newRels.length > 0 ? toString(newRels) : '';
|
||||
};
|
||||
@ -420,7 +375,7 @@
|
||||
return trimCaretContainers(text);
|
||||
};
|
||||
const getLinksInSelection = rng => collectNodesInRange(rng, isLink);
|
||||
const getLinks$1 = elements => global$4.grep(elements, isLink);
|
||||
const getLinks$1 = elements => global$2.grep(elements, isLink);
|
||||
const hasLinks = elements => getLinks$1(elements).length > 0;
|
||||
const hasLinksInSelection = rng => getLinksInSelection(rng).length > 0;
|
||||
const isOnlyTextSelected = editor => {
|
||||
@ -439,6 +394,7 @@
|
||||
}
|
||||
};
|
||||
const isImageFigure = elm => isNonNullable(elm) && elm.nodeName === 'FIGURE' && /\bimage\b/i.test(elm.className);
|
||||
|
||||
const getLinkAttrs = data => {
|
||||
const attrs = [
|
||||
'title',
|
||||
@ -565,7 +521,7 @@
|
||||
const href = data.href;
|
||||
return {
|
||||
...data,
|
||||
href: global$2.isDomSafe(href, 'a', uriOptions) ? href : ''
|
||||
href: global$4.isDomSafe(href, 'a', uriOptions) ? href : ''
|
||||
};
|
||||
};
|
||||
const link = (editor, attachState, data) => {
|
||||
@ -596,6 +552,51 @@
|
||||
}
|
||||
};
|
||||
|
||||
const getValue = item => isString(item.value) ? item.value : '';
|
||||
const getText = item => {
|
||||
if (isString(item.text)) {
|
||||
return item.text;
|
||||
} else if (isString(item.title)) {
|
||||
return item.title;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
};
|
||||
const sanitizeList = (list, extractValue) => {
|
||||
const out = [];
|
||||
global$2.each(list, item => {
|
||||
const text = getText(item);
|
||||
if (item.menu !== undefined) {
|
||||
const items = sanitizeList(item.menu, extractValue);
|
||||
out.push({
|
||||
text,
|
||||
items
|
||||
});
|
||||
} else {
|
||||
const value = extractValue(item);
|
||||
out.push({
|
||||
text,
|
||||
value
|
||||
});
|
||||
}
|
||||
});
|
||||
return out;
|
||||
};
|
||||
const sanitizeWith = (extracter = getValue) => list => Optional.from(list).map(list => sanitizeList(list, extracter));
|
||||
const sanitize = list => sanitizeWith(getValue)(list);
|
||||
const createUi = (name, label) => items => ({
|
||||
name,
|
||||
type: 'listbox',
|
||||
label,
|
||||
items
|
||||
});
|
||||
const ListOptions = {
|
||||
sanitize,
|
||||
sanitizeWith,
|
||||
createUi,
|
||||
getValue
|
||||
};
|
||||
|
||||
const isListGroup = item => hasNonNullableKey(item, 'items');
|
||||
const findTextByValue = (value, catalog) => findMap(catalog, item => {
|
||||
if (isListGroup(item)) {
|
||||
@ -961,7 +962,7 @@
|
||||
onSubmit
|
||||
};
|
||||
};
|
||||
const open$1 = editor => {
|
||||
const open = editor => {
|
||||
const data = collectData(editor);
|
||||
data.then(info => {
|
||||
const onSubmit = handleSubmit(editor, info);
|
||||
@ -974,13 +975,62 @@
|
||||
const register = editor => {
|
||||
editor.addCommand('mceLink', (_ui, value) => {
|
||||
if ((value === null || value === void 0 ? void 0 : value.dialog) === true || !useQuickLink(editor)) {
|
||||
open$1(editor);
|
||||
open(editor);
|
||||
} else {
|
||||
editor.dispatch('contexttoolbar-show', { toolbarKey: 'quicklink' });
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const setup$2 = editor => {
|
||||
editor.addShortcut('Meta+K', '', () => {
|
||||
editor.execCommand('mceLink');
|
||||
});
|
||||
};
|
||||
|
||||
const Cell = initial => {
|
||||
let value = initial;
|
||||
const get = () => {
|
||||
return value;
|
||||
};
|
||||
const set = v => {
|
||||
value = v;
|
||||
};
|
||||
return {
|
||||
get,
|
||||
set
|
||||
};
|
||||
};
|
||||
|
||||
const singleton = doRevoke => {
|
||||
const subject = Cell(Optional.none());
|
||||
const revoke = () => subject.get().each(doRevoke);
|
||||
const clear = () => {
|
||||
revoke();
|
||||
subject.set(Optional.none());
|
||||
};
|
||||
const isSet = () => subject.get().isSome();
|
||||
const get = () => subject.get();
|
||||
const set = s => {
|
||||
revoke();
|
||||
subject.set(Optional.some(s));
|
||||
};
|
||||
return {
|
||||
clear,
|
||||
isSet,
|
||||
get,
|
||||
set
|
||||
};
|
||||
};
|
||||
const value = () => {
|
||||
const subject = singleton(noop);
|
||||
const on = f => subject.get().each(f);
|
||||
return {
|
||||
...subject,
|
||||
on
|
||||
};
|
||||
};
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.util.VK');
|
||||
|
||||
const appendClickRemove = (link, evt) => {
|
||||
@ -988,18 +1038,19 @@
|
||||
link.dispatchEvent(evt);
|
||||
document.body.removeChild(link);
|
||||
};
|
||||
const open = url => {
|
||||
const openLink = url => {
|
||||
const link = document.createElement('a');
|
||||
link.target = '_blank';
|
||||
link.href = url;
|
||||
link.rel = 'noreferrer noopener';
|
||||
const evt = document.createEvent('MouseEvents');
|
||||
evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
|
||||
const evt = new MouseEvent('click', {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
view: window
|
||||
});
|
||||
document.dispatchEvent(evt);
|
||||
appendClickRemove(link, evt);
|
||||
};
|
||||
|
||||
const getLink = (editor, elm) => editor.dom.getParent(elm, 'a[href]');
|
||||
const getSelectedLink = editor => getLink(editor, editor.selection.getStart());
|
||||
const hasOnlyAltModifier = e => {
|
||||
return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;
|
||||
};
|
||||
@ -1012,33 +1063,58 @@
|
||||
editor.selection.scrollIntoView(targetEl[0], true);
|
||||
}
|
||||
} else {
|
||||
open(a.href);
|
||||
openLink(a.href);
|
||||
}
|
||||
}
|
||||
};
|
||||
const openDialog = editor => () => {
|
||||
editor.execCommand('mceLink', false, { dialog: true });
|
||||
const isSelectionOnImageWithEmbeddedLink = editor => {
|
||||
const rng = editor.selection.getRng();
|
||||
const node = rng.startContainer;
|
||||
return isLink(node) && rng.startContainer === rng.endContainer && editor.dom.select('img', node).length === 1;
|
||||
};
|
||||
const gotoSelectedLink = editor => () => {
|
||||
gotoLink(editor, getSelectedLink(editor));
|
||||
const getLinkFromElement = (editor, element) => {
|
||||
const links = getLinks$1(editor.dom.getParents(element));
|
||||
return someIf(links.length === 1, links[0]);
|
||||
};
|
||||
const setupGotoLinks = editor => {
|
||||
const getLinkInSelection = editor => {
|
||||
const links = getLinksInSelection(editor.selection.getRng());
|
||||
return someIf(links.length > 0, links[0]).or(getLinkFromElement(editor, editor.selection.getNode()));
|
||||
};
|
||||
const getLinkFromSelection = editor => editor.selection.isCollapsed() || isSelectionOnImageWithEmbeddedLink(editor) ? getLinkFromElement(editor, editor.selection.getStart()) : getLinkInSelection(editor);
|
||||
const setup$1 = editor => {
|
||||
const selectedLink = value();
|
||||
const getSelectedLink = () => selectedLink.get().or(getLinkFromSelection(editor));
|
||||
const gotoSelectedLink = () => getSelectedLink().each(link => gotoLink(editor, link));
|
||||
editor.on('contextmenu', e => {
|
||||
getLinkFromElement(editor, e.target).each(selectedLink.set);
|
||||
});
|
||||
editor.on('SelectionChange', () => {
|
||||
if (!selectedLink.isSet()) {
|
||||
getLinkFromSelection(editor).each(selectedLink.set);
|
||||
}
|
||||
});
|
||||
editor.on('click', e => {
|
||||
const link = getLink(editor, e.target);
|
||||
if (link && global.metaKeyPressed(e)) {
|
||||
selectedLink.clear();
|
||||
const links = getLinks$1(editor.dom.getParents(e.target));
|
||||
if (links.length === 1 && global.metaKeyPressed(e)) {
|
||||
e.preventDefault();
|
||||
gotoLink(editor, link);
|
||||
gotoLink(editor, links[0]);
|
||||
}
|
||||
});
|
||||
editor.on('keydown', e => {
|
||||
selectedLink.clear();
|
||||
if (!e.isDefaultPrevented() && e.keyCode === 13 && hasOnlyAltModifier(e)) {
|
||||
const link = getSelectedLink(editor);
|
||||
if (link) {
|
||||
getSelectedLink().each(link => {
|
||||
e.preventDefault();
|
||||
gotoLink(editor, link);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
return { gotoSelectedLink };
|
||||
};
|
||||
|
||||
const openDialog = editor => () => {
|
||||
editor.execCommand('mceLink', false, { dialog: true });
|
||||
};
|
||||
const toggleState = (editor, toggler) => {
|
||||
editor.on('NodeChange', toggler);
|
||||
@ -1059,16 +1135,7 @@
|
||||
updateState();
|
||||
return toggleState(editor, updateState);
|
||||
};
|
||||
const hasExactlyOneLinkInSelection = editor => {
|
||||
const links = editor.selection.isCollapsed() ? getLinks$1(editor.dom.getParents(editor.selection.getStart())) : getLinksInSelection(editor.selection.getRng());
|
||||
return links.length === 1;
|
||||
};
|
||||
const toggleGotoLinkState = editor => api => {
|
||||
const updateState = () => api.setEnabled(hasExactlyOneLinkInSelection(editor));
|
||||
updateState();
|
||||
return toggleState(editor, updateState);
|
||||
};
|
||||
const toggleUnlinkState = editor => api => {
|
||||
const toggleRequiresLinkState = editor => api => {
|
||||
const hasLinks$1 = parents => hasLinks(parents) || hasLinksInSelection(editor.selection.getRng());
|
||||
const parents = editor.dom.getParents(editor.selection.getStart());
|
||||
const updateEnabled = parents => {
|
||||
@ -1077,52 +1144,46 @@
|
||||
updateEnabled(parents);
|
||||
return toggleState(editor, e => updateEnabled(e.parents));
|
||||
};
|
||||
|
||||
const setup = editor => {
|
||||
editor.addShortcut('Meta+K', '', () => {
|
||||
editor.execCommand('mceLink');
|
||||
});
|
||||
};
|
||||
|
||||
const setupButtons = editor => {
|
||||
const setupButtons = (editor, openLink) => {
|
||||
editor.ui.registry.addToggleButton('link', {
|
||||
icon: 'link',
|
||||
tooltip: 'Insert/edit link',
|
||||
shortcut: 'Meta+K',
|
||||
onAction: openDialog(editor),
|
||||
onSetup: toggleLinkState(editor)
|
||||
});
|
||||
editor.ui.registry.addButton('openlink', {
|
||||
icon: 'new-tab',
|
||||
tooltip: 'Open link',
|
||||
onAction: gotoSelectedLink(editor),
|
||||
onSetup: toggleGotoLinkState(editor)
|
||||
onAction: openLink.gotoSelectedLink,
|
||||
onSetup: toggleRequiresLinkState(editor)
|
||||
});
|
||||
editor.ui.registry.addButton('unlink', {
|
||||
icon: 'unlink',
|
||||
tooltip: 'Remove link',
|
||||
onAction: () => unlink(editor),
|
||||
onSetup: toggleUnlinkState(editor)
|
||||
onSetup: toggleRequiresLinkState(editor)
|
||||
});
|
||||
};
|
||||
const setupMenuItems = editor => {
|
||||
const setupMenuItems = (editor, openLink) => {
|
||||
editor.ui.registry.addMenuItem('openlink', {
|
||||
text: 'Open link',
|
||||
icon: 'new-tab',
|
||||
onAction: gotoSelectedLink(editor),
|
||||
onSetup: toggleGotoLinkState(editor)
|
||||
onAction: openLink.gotoSelectedLink,
|
||||
onSetup: toggleRequiresLinkState(editor)
|
||||
});
|
||||
editor.ui.registry.addMenuItem('link', {
|
||||
icon: 'link',
|
||||
text: 'Link...',
|
||||
shortcut: 'Meta+K',
|
||||
onSetup: toggleLinkMenuState(editor),
|
||||
onAction: openDialog(editor)
|
||||
onAction: openDialog(editor),
|
||||
onSetup: toggleLinkMenuState(editor)
|
||||
});
|
||||
editor.ui.registry.addMenuItem('unlink', {
|
||||
icon: 'unlink',
|
||||
text: 'Remove link',
|
||||
onAction: () => unlink(editor),
|
||||
onSetup: toggleUnlinkState(editor)
|
||||
onSetup: toggleRequiresLinkState(editor)
|
||||
});
|
||||
};
|
||||
const setupContextMenu = editor => {
|
||||
@ -1138,7 +1199,7 @@
|
||||
}
|
||||
});
|
||||
};
|
||||
const setupContextToolbars = editor => {
|
||||
const setupContextToolbars = (editor, openLink) => {
|
||||
const collapseSelectionToEnd = editor => {
|
||||
editor.selection.collapse(false);
|
||||
};
|
||||
@ -1193,7 +1254,7 @@
|
||||
text,
|
||||
title: Optional.none(),
|
||||
rel: Optional.none(),
|
||||
target: Optional.none(),
|
||||
target: Optional.from(getDefaultLinkTarget(editor)),
|
||||
class: Optional.none()
|
||||
});
|
||||
collapseSelectionToEnd(editor);
|
||||
@ -1216,24 +1277,27 @@
|
||||
tooltip: 'Open link',
|
||||
onSetup: onSetupLink,
|
||||
onAction: formApi => {
|
||||
gotoSelectedLink(editor)();
|
||||
openLink.gotoSelectedLink();
|
||||
formApi.hide();
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
};
|
||||
const setup = editor => {
|
||||
const openLink = setup$1(editor);
|
||||
setupButtons(editor, openLink);
|
||||
setupMenuItems(editor, openLink);
|
||||
setupContextMenu(editor);
|
||||
setupContextToolbars(editor, openLink);
|
||||
};
|
||||
|
||||
var Plugin = () => {
|
||||
global$5.add('link', editor => {
|
||||
register$1(editor);
|
||||
setupButtons(editor);
|
||||
setupMenuItems(editor);
|
||||
setupContextMenu(editor);
|
||||
setupContextToolbars(editor);
|
||||
setupGotoLinks(editor);
|
||||
register(editor);
|
||||
setup(editor);
|
||||
setup$2(editor);
|
||||
});
|
||||
};
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -269,7 +269,6 @@
|
||||
const lift2 = (oa, ob, f) => oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none();
|
||||
|
||||
const COMMENT = 8;
|
||||
const DOCUMENT = 9;
|
||||
const DOCUMENT_FRAGMENT = 11;
|
||||
const ELEMENT = 1;
|
||||
const TEXT = 3;
|
||||
@ -382,12 +381,9 @@
|
||||
const isHTMLElement = element => isElement$1(element) && isPrototypeOf(element.dom);
|
||||
const isElement$1 = isType(ELEMENT);
|
||||
const isText = isType(TEXT);
|
||||
const isDocument = isType(DOCUMENT);
|
||||
const isDocumentFragment = isType(DOCUMENT_FRAGMENT);
|
||||
const isTag = tag => e => isElement$1(e) && name(e) === tag;
|
||||
|
||||
const owner = element => SugarElement.fromDom(element.dom.ownerDocument);
|
||||
const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos);
|
||||
const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom);
|
||||
const parentElement = element => Optional.from(element.dom.parentElement).map(SugarElement.fromDom);
|
||||
const nextSibling = element => Optional.from(element.dom.nextSibling).map(SugarElement.fromDom);
|
||||
@ -400,8 +396,7 @@
|
||||
const lastChild = element => child(element, element.dom.childNodes.length - 1);
|
||||
|
||||
const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host);
|
||||
const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode);
|
||||
const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner;
|
||||
const getRootNode = e => SugarElement.fromDom(e.dom.getRootNode());
|
||||
const getShadowRoot = e => {
|
||||
const r = getRootNode(e);
|
||||
return isShadowRoot(r) ? Optional.some(r) : Optional.none();
|
||||
@ -631,7 +626,7 @@
|
||||
const getForcedRootBlock = option('forced_root_block');
|
||||
const getForcedRootBlockAttrs = option('forced_root_block_attrs');
|
||||
|
||||
const createTextBlock = (editor, contentNode) => {
|
||||
const createTextBlock = (editor, contentNode, attrs = {}) => {
|
||||
const dom = editor.dom;
|
||||
const blockElements = editor.schema.getBlockElements();
|
||||
const fragment = dom.createFragment();
|
||||
@ -640,7 +635,10 @@
|
||||
let node;
|
||||
let textBlock;
|
||||
let hasContentNode = false;
|
||||
textBlock = dom.create(blockName, blockAttrs);
|
||||
textBlock = dom.create(blockName, {
|
||||
...blockAttrs,
|
||||
...attrs.style ? { style: attrs.style } : {}
|
||||
});
|
||||
if (!isBlock(contentNode.firstChild, blockElements)) {
|
||||
fragment.appendChild(textBlock);
|
||||
}
|
||||
@ -805,7 +803,8 @@
|
||||
const isListHost = (schema, node) => !isListNode(node) && !isListItemNode(node) && exists(listNames, listName => schema.isValidChild(node.nodeName, listName));
|
||||
const getClosestListHost = (editor, elm) => {
|
||||
const parentBlocks = editor.dom.getParents(elm, editor.dom.isBlock);
|
||||
const parentBlock = find(parentBlocks, elm => isListHost(editor.schema, elm));
|
||||
const isNotForcedRootBlock = elm => elm.nodeName.toLowerCase() !== getForcedRootBlock(editor);
|
||||
const parentBlock = find(parentBlocks, elm => isNotForcedRootBlock(elm) && isListHost(editor.schema, elm));
|
||||
return parentBlock.getOr(editor.getBody());
|
||||
};
|
||||
const isListInsideAnLiWithFirstAndLastNotListElement = list => parent(list).exists(parent => isListItemNode(parent.dom) && firstChild(parent).exists(firstChild => !isListNode(firstChild.dom)) && lastChild(parent).exists(lastChild => !isListNode(lastChild.dom)));
|
||||
@ -1132,7 +1131,8 @@
|
||||
const normalizedEntries = normalizeEntries(entries);
|
||||
return map(normalizedEntries, entry => {
|
||||
const content = !isEntryComment(entry) ? fromElements(entry.content) : fromElements([SugarElement.fromHtml(`<!--${ entry.content }-->`)]);
|
||||
return SugarElement.fromDom(createTextBlock(editor, content.dom));
|
||||
const listItemAttrs = isEntryList(entry) ? entry.itemAttributes : {};
|
||||
return SugarElement.fromDom(createTextBlock(editor, content.dom, listItemAttrs));
|
||||
});
|
||||
};
|
||||
const indentedComposer = (editor, entries) => {
|
||||
@ -1792,7 +1792,7 @@
|
||||
const selectionStartElm = editor.selection.getStart();
|
||||
const root = getClosestEditingHost(editor, selectionStartElm);
|
||||
const block = dom.getParent(selectionStartElm, dom.isBlock, root);
|
||||
if (block && dom.isEmpty(block)) {
|
||||
if (block && dom.isEmpty(block, undefined, { checkRootAsContent: true })) {
|
||||
const rng = normalizeRange(editor.selection.getRng());
|
||||
const otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);
|
||||
if (otherLi) {
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -587,6 +587,12 @@
|
||||
|
||||
const isMediaElement = element => element.hasAttribute('data-mce-object') || element.hasAttribute('data-ephox-embed-iri');
|
||||
const setup$2 = editor => {
|
||||
editor.on('mousedown', e => {
|
||||
const previewObj = editor.dom.getParent(e.target, '.mce-preview-object');
|
||||
if (previewObj && editor.dom.getAttrib(previewObj, 'data-mce-selected') === '2') {
|
||||
e.stopImmediatePropagation();
|
||||
}
|
||||
});
|
||||
editor.on('click keyup touchend', () => {
|
||||
const selectedNode = editor.selection.getNode();
|
||||
if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) {
|
||||
@ -625,7 +631,7 @@
|
||||
if (cache[data.source]) {
|
||||
wrappedResolve(cache[data.source]);
|
||||
} else {
|
||||
handler({ url: data.source }, wrappedResolve, rej);
|
||||
handler({ url: data.source }).then(wrappedResolve).catch(rej);
|
||||
}
|
||||
});
|
||||
};
|
||||
@ -992,7 +998,8 @@
|
||||
previewNode.attr({
|
||||
allowfullscreen: node.attr('allowfullscreen'),
|
||||
frameborder: '0',
|
||||
sandbox: node.attr('sandbox')
|
||||
sandbox: node.attr('sandbox'),
|
||||
referrerpolicy: node.attr('referrerpolicy')
|
||||
});
|
||||
} else {
|
||||
const attrs = [
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=n=>e=>typeof e===n,o=e("boolean"),a=e("number"),t=n=>e=>e.options.get(n),i=t("nonbreaking_force_tab"),s=t("nonbreaking_wrap"),r=(n,e)=>{let o="";for(let a=0;a<e;a++)o+=n;return o},c=(n,e)=>{const o=s(n)||n.plugins.visualchars?`<span class="${(n=>!!n.plugins.visualchars&&n.plugins.visualchars.isEnabled())(n)?"mce-nbsp-wrap mce-nbsp":"mce-nbsp-wrap"}" contenteditable="false">${r(" ",e)}</span>`:r(" ",e);n.undoManager.transact((()=>n.insertContent(o)))};var l=tinymce.util.Tools.resolve("tinymce.util.VK");const u=n=>e=>{const o=()=>{e.setEnabled(n.selection.isEditable())};return n.on("NodeChange",o),o(),()=>{n.off("NodeChange",o)}};n.add("nonbreaking",(n=>{(n=>{const e=n.options.register;e("nonbreaking_force_tab",{processor:n=>o(n)?{value:n?3:0,valid:!0}:a(n)?{value:n,valid:!0}:{valid:!1,message:"Must be a boolean or number."},default:!1}),e("nonbreaking_wrap",{processor:"boolean",default:!0})})(n),(n=>{n.addCommand("mceNonBreaking",(()=>{c(n,1)}))})(n),(n=>{const e=()=>n.execCommand("mceNonBreaking");n.ui.registry.addButton("nonbreaking",{icon:"non-breaking",tooltip:"Nonbreaking space",onAction:e,onSetup:u(n)}),n.ui.registry.addMenuItem("nonbreaking",{icon:"non-breaking",text:"Nonbreaking space",onAction:e,onSetup:u(n)})})(n),(n=>{const e=i(n);e>0&&n.on("keydown",(o=>{if(o.keyCode===l.TAB&&!o.isDefaultPrevented()){if(o.shiftKey)return;o.preventDefault(),o.stopImmediatePropagation(),c(n,e)}}))})(n)}))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.Env");const t=e=>a=>a.options.get(e),n=t("pagebreak_separator"),o=t("pagebreak_split_block"),r="mce-pagebreak",s=e=>{const t=`<img src="${a.transparentSrc}" class="${r}" data-mce-resize="false" data-mce-placeholder />`;return e?`<p>${t}</p>`:t},c=e=>a=>{const t=()=>{a.setEnabled(e.selection.isEditable())};return e.on("NodeChange",t),t(),()=>{e.off("NodeChange",t)}};e.add("pagebreak",(e=>{(e=>{const a=e.options.register;a("pagebreak_separator",{processor:"string",default:"\x3c!-- pagebreak --\x3e"}),a("pagebreak_split_block",{processor:"boolean",default:!1})})(e),(e=>{e.addCommand("mcePageBreak",(()=>{e.insertContent(s(o(e)))}))})(e),(e=>{const a=()=>e.execCommand("mcePageBreak");e.ui.registry.addButton("pagebreak",{icon:"page-break",tooltip:"Page break",onAction:a,onSetup:c(e)}),e.ui.registry.addMenuItem("pagebreak",{text:"Page break",icon:"page-break",onAction:a,onSetup:c(e)})})(e),(e=>{const a=n(e),t=()=>o(e),c=new RegExp(a.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,(e=>"\\"+e)),"gi");e.on("BeforeSetContent",(e=>{e.content=e.content.replace(c,s(t()))})),e.on("PreInit",(()=>{e.serializer.addNodeFilter("img",(n=>{let o,s,c=n.length;for(;c--;)if(o=n[c],s=o.attr("class"),s&&-1!==s.indexOf(r)){const n=o.parent;if(n&&e.schema.getBlockElements()[n.name]&&t()){n.type=3,n.value=a,n.raw=!0,o.remove();continue}o.type=3,o.value=a,o.raw=!0}}))}))})(e),(e=>{e.on("ResolveName",(a=>{"IMG"===a.target.nodeName&&e.dom.hasClass(a.target,r)&&(a.name="pagebreak")}))})(e)}))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),o=tinymce.util.Tools.resolve("tinymce.util.Tools");const n=e=>t=>t.options.get(e),i=n("content_style"),s=n("content_css_cors"),c=n("body_class"),r=n("body_id");e.add("preview",(e=>{(e=>{e.addCommand("mcePreview",(()=>{(e=>{const n=(e=>{var n;let l="";const a=e.dom.encode,d=null!==(n=i(e))&&void 0!==n?n:"";l+='<base href="'+a(e.documentBaseURI.getURI())+'">';const m=s(e)?' crossorigin="anonymous"':"";o.each(e.contentCSS,(t=>{l+='<link type="text/css" rel="stylesheet" href="'+a(e.documentBaseURI.toAbsolute(t))+'"'+m+">"})),d&&(l+='<style type="text/css">'+d+"</style>");const y=r(e),u=c(e),v='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A" && !('+(t.os.isMacOS()||t.os.isiOS()?"e.metaKey":"e.ctrlKey && !e.altKey")+")) {e.preventDefault();}}}, false);<\/script> ",p=e.getBody().dir,w=p?' dir="'+a(p)+'"':"";return"<!DOCTYPE html><html><head>"+l+'</head><body id="'+a(y)+'" class="mce-content-body '+a(u)+'"'+w+">"+e.getContent()+v+"</body></html>"})(e);e.windowManager.open({title:"Preview",size:"large",body:{type:"panel",items:[{name:"preview",type:"iframe",sandboxed:!0,transparent:!1}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{preview:n}}).focus("close")})(e)}))})(e),(e=>{const t=()=>e.execCommand("mcePreview");e.ui.registry.addButton("preview",{icon:"preview",tooltip:"Preview",onAction:t}),e.ui.registry.addMenuItem("preview",{icon:"preview",text:"Preview",onAction:t})})(e)}))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -79,13 +79,15 @@
|
||||
const getInsertToolbarItems = option('quickbars_insert_toolbar');
|
||||
const getImageToolbarItems = option('quickbars_image_toolbar');
|
||||
|
||||
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 = Math.floor(Math.random() * 1000000000);
|
||||
const random$1 = Math.floor(random() * 1000000000);
|
||||
unique++;
|
||||
return prefix + '_' + random + unique + String(time);
|
||||
return prefix + '_' + random$1 + unique + String(time);
|
||||
};
|
||||
|
||||
const insertTable = (editor, columns, rows) => {
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -93,7 +93,8 @@
|
||||
tooltip: 'Save',
|
||||
enabled: false,
|
||||
onAction: () => editor.execCommand('mceSave'),
|
||||
onSetup: stateToggle(editor)
|
||||
onSetup: stateToggle(editor),
|
||||
shortcut: 'Meta+S'
|
||||
});
|
||||
editor.ui.registry.addButton('cancel', {
|
||||
icon: 'cancel',
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const n=("function",e=>"function"==typeof e);var o=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),t=tinymce.util.Tools.resolve("tinymce.util.Tools");const a=e=>n=>n.options.get(e),c=a("save_enablewhendirty"),i=a("save_onsavecallback"),s=a("save_oncancelcallback"),r=(e,n)=>{e.notificationManager.open({text:n,type:"error"})},l=e=>n=>{const o=()=>{n.setEnabled(!c(e)||e.isDirty())};return o(),e.on("NodeChange dirty",o),()=>e.off("NodeChange dirty",o)};e.add("save",(e=>{(e=>{const n=e.options.register;n("save_enablewhendirty",{processor:"boolean",default:!0}),n("save_onsavecallback",{processor:"function"}),n("save_oncancelcallback",{processor:"function"})})(e),(e=>{e.ui.registry.addButton("save",{icon:"save",tooltip:"Save",enabled:!1,onAction:()=>e.execCommand("mceSave"),onSetup:l(e)}),e.ui.registry.addButton("cancel",{icon:"cancel",tooltip:"Cancel",enabled:!1,onAction:()=>e.execCommand("mceCancel"),onSetup:l(e)}),e.addShortcut("Meta+S","","mceSave")})(e),(e=>{e.addCommand("mceSave",(()=>{(e=>{const t=o.DOM.getParent(e.id,"form");if(c(e)&&!e.isDirty())return;e.save();const a=i(e);if(n(a))return a.call(e,e),void e.nodeChanged();t?(e.setDirty(!1),t.onsubmit&&!t.onsubmit()||("function"==typeof t.submit?t.submit():r(e,"Error: Form submit field collision.")),e.nodeChanged()):r(e,"Error: No form element found.")})(e)})),e.addCommand("mceCancel",(()=>{(e=>{const o=t.trim(e.startContent),a=s(e);n(a)?a.call(e,e):e.resetContent(o)})(e)}))})(e)}))}();
|
||||
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const o=("function",e=>"function"==typeof e);var n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),t=tinymce.util.Tools.resolve("tinymce.util.Tools");const a=e=>o=>o.options.get(e),c=a("save_enablewhendirty"),i=a("save_onsavecallback"),s=a("save_oncancelcallback"),r=(e,o)=>{e.notificationManager.open({text:o,type:"error"})},l=e=>o=>{const n=()=>{o.setEnabled(!c(e)||e.isDirty())};return n(),e.on("NodeChange dirty",n),()=>e.off("NodeChange dirty",n)};e.add("save",(e=>{(e=>{const o=e.options.register;o("save_enablewhendirty",{processor:"boolean",default:!0}),o("save_onsavecallback",{processor:"function"}),o("save_oncancelcallback",{processor:"function"})})(e),(e=>{e.ui.registry.addButton("save",{icon:"save",tooltip:"Save",enabled:!1,onAction:()=>e.execCommand("mceSave"),onSetup:l(e),shortcut:"Meta+S"}),e.ui.registry.addButton("cancel",{icon:"cancel",tooltip:"Cancel",enabled:!1,onAction:()=>e.execCommand("mceCancel"),onSetup:l(e)}),e.addShortcut("Meta+S","","mceSave")})(e),(e=>{e.addCommand("mceSave",(()=>{(e=>{const t=n.DOM.getParent(e.id,"form");if(c(e)&&!e.isDirty())return;e.save();const a=i(e);if(o(a))return a.call(e,e),void e.nodeChanged();t?(e.setDirty(!1),t.onsubmit&&!t.onsubmit()||("function"==typeof t.submit?t.submit():r(e,"Error: Form submit field collision.")),e.nodeChanged()):r(e,"Error: No form element found.")})(e)})),e.addCommand("mceCancel",(()=>{(e=>{const n=t.trim(e.startContent),a=s(e);o(a)?a.call(e,e):e.resetContent(n)})(e)}))})(e)}))}();
|
@ -1,5 +1,5 @@
|
||||
/**
|
||||
* TinyMCE version 6.8.3 (2024-02-08)
|
||||
* TinyMCE version 7.3.0 (2024-08-07)
|
||||
*/
|
||||
|
||||
(function () {
|
||||
@ -896,37 +896,41 @@
|
||||
const getPanelItems = error => {
|
||||
const items = [
|
||||
{
|
||||
type: 'bar',
|
||||
items: [
|
||||
{
|
||||
type: 'input',
|
||||
name: 'findtext',
|
||||
placeholder: 'Find',
|
||||
maximized: true,
|
||||
inputMode: 'search'
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
name: 'prev',
|
||||
text: 'Previous',
|
||||
icon: 'action-prev',
|
||||
enabled: false,
|
||||
borderless: true
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
name: 'next',
|
||||
text: 'Next',
|
||||
icon: 'action-next',
|
||||
enabled: false,
|
||||
borderless: true
|
||||
}
|
||||
]
|
||||
type: 'label',
|
||||
label: 'Find',
|
||||
for: 'findtext',
|
||||
items: [{
|
||||
type: 'bar',
|
||||
items: [
|
||||
{
|
||||
type: 'input',
|
||||
name: 'findtext',
|
||||
maximized: true,
|
||||
inputMode: 'search'
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
name: 'prev',
|
||||
text: 'Previous',
|
||||
icon: 'action-prev',
|
||||
enabled: false,
|
||||
borderless: true
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
name: 'next',
|
||||
text: 'Next',
|
||||
icon: 'action-next',
|
||||
enabled: false,
|
||||
borderless: true
|
||||
}
|
||||
]
|
||||
}]
|
||||
},
|
||||
{
|
||||
type: 'input',
|
||||
name: 'replacetext',
|
||||
placeholder: 'Replace with',
|
||||
label: 'Replace with',
|
||||
inputMode: 'search'
|
||||
}
|
||||
];
|
||||
@ -1067,7 +1071,8 @@
|
||||
editor.ui.registry.addButton('searchreplace', {
|
||||
tooltip: 'Find and replace',
|
||||
onAction: showDialog(editor, currentSearchState),
|
||||
icon: 'search'
|
||||
icon: 'search',
|
||||
shortcut: 'Meta+F'
|
||||
});
|
||||
editor.shortcuts.add('Meta+F', '', showDialog(editor, currentSearchState));
|
||||
};
|
||||
|
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user