jodit-pro 4.18.3 → 4.18.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +2 -0
- package/config.js +1 -0
- package/es2015/jodit.css +1 -1
- package/es2015/jodit.fat.min.css +1 -1
- package/es2015/jodit.fat.min.js +21 -9
- package/es2015/jodit.js +2 -2
- package/es2015/jodit.min.js +2 -2
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2015/plugins/autocomplete/autocomplete.css +1 -1
- package/es2015/plugins/autocomplete/autocomplete.js +1 -1
- package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2015/plugins/backup/backup.css +1 -1
- package/es2015/plugins/backup/backup.js +1 -1
- package/es2015/plugins/backup/backup.min.js +1 -1
- package/es2015/plugins/button-generator/button-generator.css +1 -1
- package/es2015/plugins/button-generator/button-generator.js +1 -1
- package/es2015/plugins/button-generator/button-generator.min.js +1 -1
- package/es2015/plugins/change-case/change-case.js +1 -1
- package/es2015/plugins/change-case/change-case.min.js +1 -1
- package/es2015/plugins/chart/chart.css +173 -0
- package/es2015/plugins/chart/chart.js +1479 -0
- package/es2015/plugins/chart/chart.min.css +1 -0
- package/es2015/plugins/chart/chart.min.js +20 -0
- package/es2015/plugins/color-picker/color-picker.css +1 -1
- package/es2015/plugins/color-picker/color-picker.js +1 -1
- package/es2015/plugins/color-picker/color-picker.min.js +1 -1
- package/es2015/plugins/emoji/emoji.css +1 -1
- package/es2015/plugins/emoji/emoji.js +1 -1
- package/es2015/plugins/emoji/emoji.min.js +1 -1
- package/es2015/plugins/export-docs/export-docs.js +1 -1
- package/es2015/plugins/export-docs/export-docs.min.js +1 -1
- package/es2015/plugins/finder/finder.css +1 -1
- package/es2015/plugins/finder/finder.js +1 -1
- package/es2015/plugins/finder/finder.min.js +1 -1
- package/es2015/plugins/google-maps/google-maps.css +1 -1
- package/es2015/plugins/google-maps/google-maps.js +1 -1
- package/es2015/plugins/google-maps/google-maps.min.js +1 -1
- package/es2015/plugins/google-search/google-search.js +1 -1
- package/es2015/plugins/google-search/google-search.min.js +1 -1
- package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2015/plugins/keyboard/keyboard.css +1 -1
- package/es2015/plugins/keyboard/keyboard.js +1 -1
- package/es2015/plugins/keyboard/keyboard.min.js +1 -1
- package/es2015/plugins/mobile-view/mobile-view.js +1 -1
- package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2015/plugins/page-break/page-break.js +1 -1
- package/es2015/plugins/page-break/page-break.min.js +1 -1
- package/es2015/plugins/paste-code/paste-code.css +1 -1
- package/es2015/plugins/paste-code/paste-code.js +1 -1
- package/es2015/plugins/paste-code/paste-code.min.js +1 -1
- package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2015/plugins/show-blocks/show-blocks.js +1 -1
- package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2015/plugins/style/style.css +1 -1
- package/es2015/plugins/style/style.js +1 -1
- package/es2015/plugins/style/style.min.js +1 -1
- package/es2015/plugins/templates/templates.css +1 -1
- package/es2015/plugins/templates/templates.js +1 -1
- package/es2015/plugins/templates/templates.min.js +1 -1
- package/es2015/plugins/todo-list/todo-list.css +1 -1
- package/es2015/plugins/todo-list/todo-list.js +1 -1
- package/es2015/plugins/todo-list/todo-list.min.js +1 -1
- package/es2015/plugins/translate/translate.css +1 -1
- package/es2015/plugins/translate/translate.js +1 -1
- package/es2015/plugins/translate/translate.min.js +1 -1
- package/es2015/plugins/tune-block/tune-block.css +1 -1
- package/es2015/plugins/tune-block/tune-block.js +2 -1
- package/es2015/plugins/tune-block/tune-block.min.js +2 -2
- package/es2018/jodit.fat.min.css +1 -1
- package/es2018/jodit.fat.min.js +75 -63
- package/es2018/jodit.min.js +2 -2
- package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2018/plugins/backup/backup.min.js +1 -1
- package/es2018/plugins/button-generator/button-generator.min.js +1 -1
- package/es2018/plugins/change-case/change-case.min.js +1 -1
- package/es2018/plugins/chart/chart.min.css +1 -0
- package/es2018/plugins/chart/chart.min.js +20 -0
- package/es2018/plugins/color-picker/color-picker.min.js +1 -1
- package/es2018/plugins/emoji/emoji.min.js +1 -1
- package/es2018/plugins/export-docs/export-docs.min.js +1 -1
- package/es2018/plugins/finder/finder.min.js +1 -1
- package/es2018/plugins/google-maps/google-maps.min.js +1 -1
- package/es2018/plugins/google-search/google-search.min.js +1 -1
- package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2018/plugins/keyboard/keyboard.min.js +1 -1
- package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2018/plugins/page-break/page-break.min.js +1 -1
- package/es2018/plugins/paste-code/paste-code.min.js +1 -1
- package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2018/plugins/style/style.min.js +1 -1
- package/es2018/plugins/templates/templates.min.js +1 -1
- package/es2018/plugins/todo-list/todo-list.min.js +1 -1
- package/es2018/plugins/translate/translate.min.js +1 -1
- package/es2018/plugins/tune-block/tune-block.min.js +2 -2
- package/es2021/jodit.css +1 -1
- package/es2021/jodit.fat.min.css +1 -1
- package/es2021/jodit.fat.min.js +18 -6
- package/es2021/jodit.js +2 -2
- package/es2021/jodit.min.js +2 -2
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2021/plugins/autocomplete/autocomplete.css +1 -1
- package/es2021/plugins/autocomplete/autocomplete.js +1 -1
- package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2021/plugins/backup/backup.css +1 -1
- package/es2021/plugins/backup/backup.js +1 -1
- package/es2021/plugins/backup/backup.min.js +1 -1
- package/es2021/plugins/button-generator/button-generator.css +1 -1
- package/es2021/plugins/button-generator/button-generator.js +1 -1
- package/es2021/plugins/button-generator/button-generator.min.js +1 -1
- package/es2021/plugins/change-case/change-case.js +1 -1
- package/es2021/plugins/change-case/change-case.min.js +1 -1
- package/es2021/plugins/chart/chart.css +173 -0
- package/es2021/plugins/chart/chart.js +1424 -0
- package/es2021/plugins/chart/chart.min.css +1 -0
- package/es2021/plugins/chart/chart.min.js +20 -0
- package/es2021/plugins/color-picker/color-picker.css +1 -1
- package/es2021/plugins/color-picker/color-picker.js +1 -1
- package/es2021/plugins/color-picker/color-picker.min.js +1 -1
- package/es2021/plugins/emoji/emoji.css +1 -1
- package/es2021/plugins/emoji/emoji.js +1 -1
- package/es2021/plugins/emoji/emoji.min.js +1 -1
- package/es2021/plugins/export-docs/export-docs.js +1 -1
- package/es2021/plugins/export-docs/export-docs.min.js +1 -1
- package/es2021/plugins/finder/finder.css +1 -1
- package/es2021/plugins/finder/finder.js +1 -1
- package/es2021/plugins/finder/finder.min.js +1 -1
- package/es2021/plugins/google-maps/google-maps.css +1 -1
- package/es2021/plugins/google-maps/google-maps.js +1 -1
- package/es2021/plugins/google-maps/google-maps.min.js +1 -1
- package/es2021/plugins/google-search/google-search.js +1 -1
- package/es2021/plugins/google-search/google-search.min.js +1 -1
- package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2021/plugins/keyboard/keyboard.css +1 -1
- package/es2021/plugins/keyboard/keyboard.js +1 -1
- package/es2021/plugins/keyboard/keyboard.min.js +1 -1
- package/es2021/plugins/mobile-view/mobile-view.js +1 -1
- package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2021/plugins/page-break/page-break.js +1 -1
- package/es2021/plugins/page-break/page-break.min.js +1 -1
- package/es2021/plugins/paste-code/paste-code.css +1 -1
- package/es2021/plugins/paste-code/paste-code.js +1 -1
- package/es2021/plugins/paste-code/paste-code.min.js +1 -1
- package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2021/plugins/show-blocks/show-blocks.js +1 -1
- package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2021/plugins/style/style.css +1 -1
- package/es2021/plugins/style/style.js +1 -1
- package/es2021/plugins/style/style.min.js +1 -1
- package/es2021/plugins/templates/templates.css +1 -1
- package/es2021/plugins/templates/templates.js +1 -1
- package/es2021/plugins/templates/templates.min.js +1 -1
- package/es2021/plugins/todo-list/todo-list.css +1 -1
- package/es2021/plugins/todo-list/todo-list.js +1 -1
- package/es2021/plugins/todo-list/todo-list.min.js +1 -1
- package/es2021/plugins/translate/translate.css +1 -1
- package/es2021/plugins/translate/translate.js +1 -1
- package/es2021/plugins/translate/translate.min.js +1 -1
- package/es2021/plugins/tune-block/tune-block.css +1 -1
- package/es2021/plugins/tune-block/tune-block.js +2 -1
- package/es2021/plugins/tune-block/tune-block.min.js +2 -2
- package/es2021.en/jodit.css +1 -1
- package/es2021.en/jodit.fat.min.css +1 -1
- package/es2021.en/jodit.fat.min.js +21 -9
- package/es2021.en/jodit.js +2 -2
- package/es2021.en/jodit.min.js +2 -2
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
- package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
- package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2021.en/plugins/backup/backup.css +1 -1
- package/es2021.en/plugins/backup/backup.js +1 -1
- package/es2021.en/plugins/backup/backup.min.js +1 -1
- package/es2021.en/plugins/button-generator/button-generator.css +1 -1
- package/es2021.en/plugins/button-generator/button-generator.js +1 -1
- package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
- package/es2021.en/plugins/change-case/change-case.js +1 -1
- package/es2021.en/plugins/change-case/change-case.min.js +1 -1
- package/es2021.en/plugins/chart/chart.css +173 -0
- package/es2021.en/plugins/chart/chart.js +1424 -0
- package/es2021.en/plugins/chart/chart.min.css +1 -0
- package/es2021.en/plugins/chart/chart.min.js +20 -0
- package/es2021.en/plugins/color-picker/color-picker.css +1 -1
- package/es2021.en/plugins/color-picker/color-picker.js +1 -1
- package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
- package/es2021.en/plugins/emoji/emoji.css +1 -1
- package/es2021.en/plugins/emoji/emoji.js +1 -1
- package/es2021.en/plugins/emoji/emoji.min.js +1 -1
- package/es2021.en/plugins/export-docs/export-docs.js +1 -1
- package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
- package/es2021.en/plugins/finder/finder.css +1 -1
- package/es2021.en/plugins/finder/finder.js +1 -1
- package/es2021.en/plugins/finder/finder.min.js +1 -1
- package/es2021.en/plugins/google-maps/google-maps.css +1 -1
- package/es2021.en/plugins/google-maps/google-maps.js +1 -1
- package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
- package/es2021.en/plugins/google-search/google-search.js +1 -1
- package/es2021.en/plugins/google-search/google-search.min.js +1 -1
- package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2021.en/plugins/keyboard/keyboard.css +1 -1
- package/es2021.en/plugins/keyboard/keyboard.js +1 -1
- package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
- package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
- package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2021.en/plugins/page-break/page-break.js +1 -1
- package/es2021.en/plugins/page-break/page-break.min.js +1 -1
- package/es2021.en/plugins/paste-code/paste-code.css +1 -1
- package/es2021.en/plugins/paste-code/paste-code.js +1 -1
- package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
- package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
- package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2021.en/plugins/style/style.css +1 -1
- package/es2021.en/plugins/style/style.js +1 -1
- package/es2021.en/plugins/style/style.min.js +1 -1
- package/es2021.en/plugins/templates/templates.css +1 -1
- package/es2021.en/plugins/templates/templates.js +1 -1
- package/es2021.en/plugins/templates/templates.min.js +1 -1
- package/es2021.en/plugins/todo-list/todo-list.css +1 -1
- package/es2021.en/plugins/todo-list/todo-list.js +1 -1
- package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
- package/es2021.en/plugins/translate/translate.css +1 -1
- package/es2021.en/plugins/translate/translate.js +1 -1
- package/es2021.en/plugins/translate/translate.min.js +1 -1
- package/es2021.en/plugins/tune-block/tune-block.css +1 -1
- package/es2021.en/plugins/tune-block/tune-block.js +2 -1
- package/es2021.en/plugins/tune-block/tune-block.min.js +2 -2
- package/es5/jodit.css +2 -2
- package/es5/jodit.fat.min.css +1 -1
- package/es5/jodit.fat.min.js +2 -2
- package/es5/jodit.js +2 -2
- package/es5/jodit.min.css +2 -2
- package/es5/jodit.min.js +2 -2
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es5/plugins/autocomplete/autocomplete.css +1 -1
- package/es5/plugins/autocomplete/autocomplete.js +1 -1
- package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es5/plugins/backup/backup.css +1 -1
- package/es5/plugins/backup/backup.js +1 -1
- package/es5/plugins/backup/backup.min.js +1 -1
- package/es5/plugins/button-generator/button-generator.css +1 -1
- package/es5/plugins/button-generator/button-generator.js +1 -1
- package/es5/plugins/button-generator/button-generator.min.js +1 -1
- package/es5/plugins/change-case/change-case.js +1 -1
- package/es5/plugins/change-case/change-case.min.js +1 -1
- package/es5/plugins/chart/chart.css +173 -0
- package/es5/plugins/chart/chart.js +1661 -0
- package/es5/plugins/chart/chart.min.css +1 -0
- package/es5/plugins/chart/chart.min.js +8 -0
- package/es5/plugins/color-picker/color-picker.css +1 -1
- package/es5/plugins/color-picker/color-picker.js +1 -1
- package/es5/plugins/color-picker/color-picker.min.js +1 -1
- package/es5/plugins/emoji/emoji.css +1 -1
- package/es5/plugins/emoji/emoji.js +1 -1
- package/es5/plugins/emoji/emoji.min.js +1 -1
- package/es5/plugins/export-docs/export-docs.js +1 -1
- package/es5/plugins/export-docs/export-docs.min.js +1 -1
- package/es5/plugins/finder/finder.css +1 -1
- package/es5/plugins/finder/finder.js +1 -1
- package/es5/plugins/finder/finder.min.js +1 -1
- package/es5/plugins/google-maps/google-maps.css +1 -1
- package/es5/plugins/google-maps/google-maps.js +1 -1
- package/es5/plugins/google-maps/google-maps.min.js +1 -1
- package/es5/plugins/google-search/google-search.js +1 -1
- package/es5/plugins/google-search/google-search.min.js +1 -1
- package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es5/plugins/keyboard/keyboard.css +1 -1
- package/es5/plugins/keyboard/keyboard.js +1 -1
- package/es5/plugins/keyboard/keyboard.min.js +1 -1
- package/es5/plugins/mobile-view/mobile-view.js +1 -1
- package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es5/plugins/page-break/page-break.js +1 -1
- package/es5/plugins/page-break/page-break.min.js +1 -1
- package/es5/plugins/paste-code/paste-code.css +1 -1
- package/es5/plugins/paste-code/paste-code.js +1 -1
- package/es5/plugins/paste-code/paste-code.min.js +1 -1
- package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es5/plugins/show-blocks/show-blocks.js +1 -1
- package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es5/plugins/style/style.css +1 -1
- package/es5/plugins/style/style.js +1 -1
- package/es5/plugins/style/style.min.js +1 -1
- package/es5/plugins/templates/templates.css +1 -1
- package/es5/plugins/templates/templates.js +1 -1
- package/es5/plugins/templates/templates.min.js +1 -1
- package/es5/plugins/todo-list/todo-list.css +1 -1
- package/es5/plugins/todo-list/todo-list.js +1 -1
- package/es5/plugins/todo-list/todo-list.min.js +1 -1
- package/es5/plugins/translate/translate.css +1 -1
- package/es5/plugins/translate/translate.js +1 -1
- package/es5/plugins/translate/translate.min.js +1 -1
- package/es5/plugins/tune-block/tune-block.css +1 -1
- package/es5/plugins/tune-block/tune-block.js +2 -1
- package/es5/plugins/tune-block/tune-block.min.js +2 -2
- package/es5/polyfills.fat.min.js +1 -1
- package/es5/polyfills.js +1 -1
- package/es5/polyfills.min.js +1 -1
- package/esm/config.d.ts +27 -1
- package/esm/plugins/all.js +1 -1
- package/esm/plugins/chart/assets/chart.svg.js +1 -0
- package/esm/plugins/chart/chart.d.ts +56 -0
- package/esm/plugins/chart/chart.js +1 -0
- package/esm/plugins/chart/config.d.ts +33 -0
- package/esm/plugins/chart/config.js +1 -0
- package/esm/plugins/chart/helpers.d.ts +22 -0
- package/esm/plugins/chart/helpers.js +1 -0
- package/esm/plugins/chart/interface.d.ts +34 -0
- package/esm/plugins/chart/interface.js +0 -0
- package/esm/plugins/chart/render/bar.d.ts +8 -0
- package/esm/plugins/chart/render/bar.js +1 -0
- package/esm/plugins/chart/render/common.d.ts +40 -0
- package/esm/plugins/chart/render/common.js +1 -0
- package/esm/plugins/chart/render/index.d.ts +7 -0
- package/esm/plugins/chart/render/index.js +1 -0
- package/esm/plugins/chart/render/line.d.ts +7 -0
- package/esm/plugins/chart/render/line.js +1 -0
- package/esm/plugins/chart/render/pie.d.ts +7 -0
- package/esm/plugins/chart/render/pie.js +1 -0
- package/esm/plugins/chart/render/radar.d.ts +7 -0
- package/esm/plugins/chart/render/radar.js +1 -0
- package/esm/plugins/chart/ui/editor/editor.d.ts +52 -0
- package/esm/plugins/chart/ui/editor/editor.js +13 -0
- package/esm/plugins/tune-block/config.js +1 -1
- package/package.json +1 -1
- package/types/config.d.ts +27 -1
- package/types/plugins/chart/chart.d.ts +56 -0
- package/types/plugins/chart/config.d.ts +33 -0
- package/types/plugins/chart/helpers.d.ts +22 -0
- package/types/plugins/chart/interface.d.ts +34 -0
- package/types/plugins/chart/render/bar.d.ts +8 -0
- package/types/plugins/chart/render/common.d.ts +40 -0
- package/types/plugins/chart/render/index.d.ts +7 -0
- package/types/plugins/chart/render/line.d.ts +7 -0
- package/types/plugins/chart/render/pie.d.ts +7 -0
- package/types/plugins/chart/render/radar.d.ts +7 -0
- package/types/plugins/chart/ui/editor/editor.d.ts +52 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* jodit-pro - PRO Version of Jodit Editor
|
|
3
3
|
* Author: Chupurnov Valerii <chupurnov@gmail.com>
|
|
4
|
-
* Version: v4.18.
|
|
4
|
+
* Version: v4.18.6
|
|
5
5
|
* Url: https://xdsoft.net/jodit/pro/
|
|
6
6
|
* License(s): SEE LICENSE IN LICENSE.md
|
|
7
7
|
*/
|
|
@@ -55,6 +55,7 @@ jodit_esm_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.tuneBlock = {
|
|
|
55
55
|
img: common,
|
|
56
56
|
blockquote: common,
|
|
57
57
|
div: common,
|
|
58
|
+
figure: common,
|
|
58
59
|
pre: [
|
|
59
60
|
'tune.editPre'
|
|
60
61
|
].concat((0,_swc_helpers_to_consumable_array__WEBPACK_IMPORTED_MODULE_0__._)(common)),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* jodit-pro - PRO Version of Jodit Editor
|
|
3
3
|
* Author: Chupurnov Valerii <chupurnov@gmail.com>
|
|
4
|
-
* Version: v4.18.
|
|
4
|
+
* Version: v4.18.6
|
|
5
5
|
* Url: https://xdsoft.net/jodit/pro/
|
|
6
6
|
* License(s): SEE LICENSE IN LICENSE.md
|
|
7
7
|
*/
|
|
8
|
-
"use strict";!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var o=t();for(var n in o)("object"==typeof exports?exports:e)[n]=o[n]}}(self,function(){return(self.webpackChunkjodit_pro=self.webpackChunkjodit_pro||[]).push([[576],{8256:function(e,t,o){var n=o(94899),i=o(6441),r=o(22732),c=o(21537),u=["tune.up","tune.remove","tune.down"],s=["tune.h1","tune.h2","tune.h3","\n","tune.h4","tune.h5","tune.h6","\n"].concat((0,n._)(u));function l(e){return{icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><text dominant-baseline="text-before-edge" style="font: 45px sans-serif" x="0" y="0">'+e.toUpperCase()+"</text></svg>",isActive:function(t,o){var n;return(null==o||null==(n=o.target)?void 0:n.tagName.toLowerCase())===e},exec:function(t,o){if(o){t.selection.save();var n=r.Dom.replace(o,e,t.createInside);t.selection.restore(),t.e.fire("synchro"),t.e.fire("afterExecTune.tune",n)}return!0}}}function a(e){var t=e?"previousSibling":"nextSibling";return{icon:e?"angle-up":"angle-down",isDisabled:function(e,o){var n;return!(null==o||null==(n=o.target)?void 0:n[t])},exec:function(o,n){var i=null==n?void 0:n[t];return n&&i&&(o.selection.save(),(0,c.call)(e?r.Dom.before:r.Dom.after,i,n),o.selection.restore()),o.e.fire("synchro"),o.e.fire("afterExecTune.tune"),!0}}}i.Config.prototype.tuneBlock={popup:{p:u,table:u,img:u,blockquote:u,div:u,pre:["tune.editPre"].concat((0,n._)(u)),h1:s,h2:s,h3:s,h4:s,h5:s,h6:s}},i.Config.prototype.controls.tune={h1:l("h1"),h2:l("h2"),h3:l("h3"),h4:l("h4"),h5:l("h5"),h6:l("h6"),up:a(!0),down:a(!1),editPre:{icon:"pencil",exec:function(e,t){e.e.fire("editPreInPasteCode",t)}},remove:{icon:"bin",exec:function(e,t){r.Dom.safeRemove(t),e.e.fire("synchro"),e.e.fire("closeTuner.tune"),e.e.fire("hideTuner.tune")}}}},13152:function(e,t,o){o.r(t),o.d(t,{tuneBlock:function(){return f}});var n=o(80294),i=o(20616),r=o(67709),c=o(82749),u=o(18766),s=o(31635),l=o(23078);o(8256);var a=o(40104),h=o(65478),p=o(50911),d=o(2692),f=function(e){function t(){var e;return(0,i._)(this,t),e=(0,n._)(this,t,arguments),(0,c._)(e,"tuner",void 0),e}return(0,u._)(t,e),(0,r._)(t,[{key:"afterInit",value:function(e){this.tuner=new a.UITuner(e)}},{key:"hideTuner",value:function(){this.tuner.hide()}},{key:"onChangeSelection",value:function(){this.j.s.isCollapsed()||this.hideTuner()}},{key:"onClickInBlock",value:function(e){this.j.s.isCollapsed()&&this.tuner.show()}},{key:"beforeDestruct",value:function(e){this.tuner.destruct()}}]),t}((0,l._)(p.Plugin));(0,c._)(f,"requires",["license"]),(0,s.__decorate)([(0,h.watch)(":outsideClick :keydown")],f.prototype,"hideTuner",null),(0,s.__decorate)([(0,h.watch)("j.ed:selectionchange"),(0,h.debounce)()],f.prototype,"onChangeSelection",null),(0,s.__decorate)([(0,h.watch)(":click")],f.prototype,"onClickInBlock",null),d.JoditPro.plugins.add("tune-block",f)},40104:function(e,t,o){o.d(t,{UITuner:function(){return f}});var n=o(80294),i=o(20616),r=o(67709),c=o(82749),u=o(18766),s=o(31635),l=o(65478),a=o(22732),h=o(21537),p=o(67510),d=o(21491),f=function(e){function t(){var e;return(0,i._)(this,t),e=(0,n._)(this,t,arguments),(0,c._)(e,"isShown",!1),(0,c._)(e,"toolbar",(0,d.makeCollection)(e.j,e)),(0,c._)(e,"popup",new p.Popup(e.j,!1)),(0,c._)(e,"currentBlock",void 0),e}return(0,u._)(t,e),(0,r._)(t,[{key:"className",value:function(){return"UITuner"}},{key:"render",value:function(){return"<div>\n <div class='&__handle' title='~Click to tune~'/>\n </div>"}},{key:"show",value:function(){var e=this,t=this.j.s.current();if(!t)return this.hide();var o=a.Dom.isBlock(t)?t:a.Dom.closest(t,function(t){return!!(t&&e.j.o.tuneBlock.popup[t.nodeName.toLowerCase()])},this.j.editor);if(!o||o===this.j.editor||!this.j.o.tuneBlock.popup[o.tagName.toLowerCase()])return this.hide();this.currentBlock=o,this.isShown=!0,this.closeToolbar(),this.calcPosition(),this.container.parentNode||this.j.workplace.append(this.container)}},{key:"hide",value:function(){this.isShown&&(this.isShown=!1,a.Dom.safeRemove(this.container),this.closeToolbar())}},{key:"onEditorScroll",value:function(){this.isShown&&this.calcPosition()}},{key:"calcPosition",value:function(){var e=(0,h.css)(this.j.editor,"marginLeft"),t=(0,h.css)(this.j.editor,"paddingLeft"),o=(0,h.css)(this.j.editor,"marginTop"),n=this.currentBlock.offsetWidth-15+e+t,i=this.currentBlock.offsetTop-this.j.editor.scrollTop+o;(0,h.css)(this.container,{transform:"translate3d(".concat(n,"px, ").concat(i,"px, 0)")}),this.popup.isOpened&&this.popup.updatePosition()}},{key:"onAfterExecTune",value:function(e){e&&(this.currentBlock=e),this.calcPosition(),this.openToolbar()}},{key:"onClickPrevent",value:function(e){e.preventDefault(),e.stopPropagation()}},{key:"onTargetClick",value:function(){this.toggleToolbar()}},{key:"openToolbar",value:function(){if(this.setMod("opened",!0),this.toolbar.build(this.j.o.tuneBlock.popup[this.currentBlock.tagName.toLowerCase()],this.currentBlock),this.popup.setContent(this.toolbar.container),!this.popup.isOpened){var e=this.getElm("handle");(0,h.assert)(null!=e,"Handle element does not exist"),this.popup.open(function(){return(0,h.position)(e)})}}},{key:"closeToolbar",value:function(){this.setMod("opened",!1),this.popup.close()}},{key:"toggleToolbar",value:function(){this.getMod("opened")?this.closeToolbar():this.openToolbar()}}]),t}(p.UIElement);(0,s.__decorate)([(0,l.watch)(":hideTuner.tune")],f.prototype,"hide",null),(0,s.__decorate)([(0,l.watch)("j.editor:scroll"),(0,l.throttle)(10)],f.prototype,"onEditorScroll",null),(0,s.__decorate)([(0,l.watch)(":afterExecTune.tune"),(0,l.idle)()],f.prototype,"onAfterExecTune",null),(0,s.__decorate)([(0,l.watch)("container:click container:mousedown")],f.prototype,"onClickPrevent",null),(0,s.__decorate)([(0,l.watch)("handle:click")],f.prototype,"onTargetClick",null),(0,s.__decorate)([(0,l.watch)(":closeTuner.tune")],f.prototype,"closeToolbar",null),f=(0,s.__decorate)([l.component],f)}},function(e){return e(13152)}])});
|
|
8
|
+
"use strict";!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var o=t();for(var n in o)("object"==typeof exports?exports:e)[n]=o[n]}}(self,function(){return(self.webpackChunkjodit_pro=self.webpackChunkjodit_pro||[]).push([[576],{8256:function(e,t,o){var n=o(94899),i=o(6441),r=o(22732),c=o(21537),u=["tune.up","tune.remove","tune.down"],s=["tune.h1","tune.h2","tune.h3","\n","tune.h4","tune.h5","tune.h6","\n"].concat((0,n._)(u));function l(e){return{icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><text dominant-baseline="text-before-edge" style="font: 45px sans-serif" x="0" y="0">'+e.toUpperCase()+"</text></svg>",isActive:function(t,o){var n;return(null==o||null==(n=o.target)?void 0:n.tagName.toLowerCase())===e},exec:function(t,o){if(o){t.selection.save();var n=r.Dom.replace(o,e,t.createInside);t.selection.restore(),t.e.fire("synchro"),t.e.fire("afterExecTune.tune",n)}return!0}}}function a(e){var t=e?"previousSibling":"nextSibling";return{icon:e?"angle-up":"angle-down",isDisabled:function(e,o){var n;return!(null==o||null==(n=o.target)?void 0:n[t])},exec:function(o,n){var i=null==n?void 0:n[t];return n&&i&&(o.selection.save(),(0,c.call)(e?r.Dom.before:r.Dom.after,i,n),o.selection.restore()),o.e.fire("synchro"),o.e.fire("afterExecTune.tune"),!0}}}i.Config.prototype.tuneBlock={popup:{p:u,table:u,img:u,blockquote:u,div:u,figure:u,pre:["tune.editPre"].concat((0,n._)(u)),h1:s,h2:s,h3:s,h4:s,h5:s,h6:s}},i.Config.prototype.controls.tune={h1:l("h1"),h2:l("h2"),h3:l("h3"),h4:l("h4"),h5:l("h5"),h6:l("h6"),up:a(!0),down:a(!1),editPre:{icon:"pencil",exec:function(e,t){e.e.fire("editPreInPasteCode",t)}},remove:{icon:"bin",exec:function(e,t){r.Dom.safeRemove(t),e.e.fire("synchro"),e.e.fire("closeTuner.tune"),e.e.fire("hideTuner.tune")}}}},13152:function(e,t,o){o.r(t),o.d(t,{tuneBlock:function(){return f}});var n=o(80294),i=o(20616),r=o(67709),c=o(82749),u=o(18766),s=o(31635),l=o(23078);o(8256);var a=o(40104),h=o(65478),p=o(50911),d=o(2692),f=function(e){function t(){var e;return(0,i._)(this,t),e=(0,n._)(this,t,arguments),(0,c._)(e,"tuner",void 0),e}return(0,u._)(t,e),(0,r._)(t,[{key:"afterInit",value:function(e){this.tuner=new a.UITuner(e)}},{key:"hideTuner",value:function(){this.tuner.hide()}},{key:"onChangeSelection",value:function(){this.j.s.isCollapsed()||this.hideTuner()}},{key:"onClickInBlock",value:function(e){this.j.s.isCollapsed()&&this.tuner.show()}},{key:"beforeDestruct",value:function(e){this.tuner.destruct()}}]),t}((0,l._)(p.Plugin));(0,c._)(f,"requires",["license"]),(0,s.__decorate)([(0,h.watch)(":outsideClick :keydown")],f.prototype,"hideTuner",null),(0,s.__decorate)([(0,h.watch)("j.ed:selectionchange"),(0,h.debounce)()],f.prototype,"onChangeSelection",null),(0,s.__decorate)([(0,h.watch)(":click")],f.prototype,"onClickInBlock",null),d.JoditPro.plugins.add("tune-block",f)},40104:function(e,t,o){o.d(t,{UITuner:function(){return f}});var n=o(80294),i=o(20616),r=o(67709),c=o(82749),u=o(18766),s=o(31635),l=o(65478),a=o(22732),h=o(21537),p=o(67510),d=o(21491),f=function(e){function t(){var e;return(0,i._)(this,t),e=(0,n._)(this,t,arguments),(0,c._)(e,"isShown",!1),(0,c._)(e,"toolbar",(0,d.makeCollection)(e.j,e)),(0,c._)(e,"popup",new p.Popup(e.j,!1)),(0,c._)(e,"currentBlock",void 0),e}return(0,u._)(t,e),(0,r._)(t,[{key:"className",value:function(){return"UITuner"}},{key:"render",value:function(){return"<div>\n <div class='&__handle' title='~Click to tune~'/>\n </div>"}},{key:"show",value:function(){var e=this,t=this.j.s.current();if(!t)return this.hide();var o=a.Dom.isBlock(t)?t:a.Dom.closest(t,function(t){return!!(t&&e.j.o.tuneBlock.popup[t.nodeName.toLowerCase()])},this.j.editor);if(!o||o===this.j.editor||!this.j.o.tuneBlock.popup[o.tagName.toLowerCase()])return this.hide();this.currentBlock=o,this.isShown=!0,this.closeToolbar(),this.calcPosition(),this.container.parentNode||this.j.workplace.append(this.container)}},{key:"hide",value:function(){this.isShown&&(this.isShown=!1,a.Dom.safeRemove(this.container),this.closeToolbar())}},{key:"onEditorScroll",value:function(){this.isShown&&this.calcPosition()}},{key:"calcPosition",value:function(){var e=(0,h.css)(this.j.editor,"marginLeft"),t=(0,h.css)(this.j.editor,"paddingLeft"),o=(0,h.css)(this.j.editor,"marginTop"),n=this.currentBlock.offsetWidth-15+e+t,i=this.currentBlock.offsetTop-this.j.editor.scrollTop+o;(0,h.css)(this.container,{transform:"translate3d(".concat(n,"px, ").concat(i,"px, 0)")}),this.popup.isOpened&&this.popup.updatePosition()}},{key:"onAfterExecTune",value:function(e){e&&(this.currentBlock=e),this.calcPosition(),this.openToolbar()}},{key:"onClickPrevent",value:function(e){e.preventDefault(),e.stopPropagation()}},{key:"onTargetClick",value:function(){this.toggleToolbar()}},{key:"openToolbar",value:function(){if(this.setMod("opened",!0),this.toolbar.build(this.j.o.tuneBlock.popup[this.currentBlock.tagName.toLowerCase()],this.currentBlock),this.popup.setContent(this.toolbar.container),!this.popup.isOpened){var e=this.getElm("handle");(0,h.assert)(null!=e,"Handle element does not exist"),this.popup.open(function(){return(0,h.position)(e)})}}},{key:"closeToolbar",value:function(){this.setMod("opened",!1),this.popup.close()}},{key:"toggleToolbar",value:function(){this.getMod("opened")?this.closeToolbar():this.openToolbar()}}]),t}(p.UIElement);(0,s.__decorate)([(0,l.watch)(":hideTuner.tune")],f.prototype,"hide",null),(0,s.__decorate)([(0,l.watch)("j.editor:scroll"),(0,l.throttle)(10)],f.prototype,"onEditorScroll",null),(0,s.__decorate)([(0,l.watch)(":afterExecTune.tune"),(0,l.idle)()],f.prototype,"onAfterExecTune",null),(0,s.__decorate)([(0,l.watch)("container:click container:mousedown")],f.prototype,"onClickPrevent",null),(0,s.__decorate)([(0,l.watch)("handle:click")],f.prototype,"onTargetClick",null),(0,s.__decorate)([(0,l.watch)(":closeTuner.tune")],f.prototype,"closeToolbar",null),f=(0,s.__decorate)([l.component],f)}},function(e){return e(13152)}])});
|
package/es5/polyfills.fat.min.js
CHANGED
package/es5/polyfills.js
CHANGED
package/es5/polyfills.min.js
CHANGED
package/esm/config.d.ts
CHANGED
|
@@ -3,6 +3,9 @@ import type { AutoCompleteDisplayMode } from "./plugins/autocomplete/interface";
|
|
|
3
3
|
import type { IAutoCompleteItem } from "./plugins/autocomplete/interface";
|
|
4
4
|
import type { AutoCompleteSource } from "./plugins/autocomplete/interface";
|
|
5
5
|
import type { ISnapshotStorage } from "./plugins/backup/interface";
|
|
6
|
+
import type { ChartType } from "./plugins/chart/interface";
|
|
7
|
+
import type { IChartPoint } from "./plugins/chart/interface";
|
|
8
|
+
import type { IControlType } from "jodit/esm/types/index";
|
|
6
9
|
import type { IEmojiData } from "./plugins/emoji/interface";
|
|
7
10
|
import type { AjaxOptions } from "jodit/esm/types/index";
|
|
8
11
|
import type { DeepPartial } from "jodit/esm/types/index";
|
|
@@ -20,7 +23,6 @@ import type { ButtonGroup } from "jodit/esm/types/index";
|
|
|
20
23
|
import type { ILayoutKeys } from "./plugins/keyboard/interface";
|
|
21
24
|
import type { CanPromise } from "jodit/esm/types/index";
|
|
22
25
|
import type { IUIOption } from "jodit/esm/types/index";
|
|
23
|
-
import type { IControlType } from "jodit/esm/types/index";
|
|
24
26
|
import type { IStyleDefinition } from "./plugins/style/interface";
|
|
25
27
|
import type { ITemplateDefinition } from "./plugins/templates/interface";
|
|
26
28
|
import type { ITranslateProviderFactory } from "./plugins/translate/interface";
|
|
@@ -58,6 +60,30 @@ interface Config {
|
|
|
58
60
|
formatDate?: (timestamp: string | Date) => string;
|
|
59
61
|
};
|
|
60
62
|
}
|
|
63
|
+
interface Config {
|
|
64
|
+
chart: {
|
|
65
|
+
className: string;
|
|
66
|
+
types: ChartType[];
|
|
67
|
+
defaultType: ChartType;
|
|
68
|
+
defaultTitle: string;
|
|
69
|
+
defaultPoints: IChartPoint[];
|
|
70
|
+
colors: string[];
|
|
71
|
+
defaultBackground: string;
|
|
72
|
+
defaultTextColor: string;
|
|
73
|
+
defaultBorderColor: string;
|
|
74
|
+
allowChangeBackground: boolean;
|
|
75
|
+
allowChangeTextColor: boolean;
|
|
76
|
+
allowChangeBorderColor: boolean;
|
|
77
|
+
fontFamily: string;
|
|
78
|
+
width: number;
|
|
79
|
+
height: number;
|
|
80
|
+
popup: Array<IControlType | string>;
|
|
81
|
+
dialog: {
|
|
82
|
+
width: number;
|
|
83
|
+
height: number;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
}
|
|
61
87
|
interface Config {
|
|
62
88
|
emoji: {
|
|
63
89
|
data: () => Promise<IEmojiData>;
|
package/esm/plugins/all.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"jodit/esm/plugins/all.js";import"./paste-from-word/paste-from-word.js";import"./license/license.js";import"./autocomplete/autocomplete.impl.js";import"jodit/esm/plugins/speech-recognize/speech-recognize.js";import"./ai-assistant-pro/ai-assistant-pro.js";import"./backup/backup.js";import"./button-generator/button-generator.js";import"./change-case/change-case.js";import"./color-picker/color-picker.js";import"./emoji/emoji.js";import"./export-docs/export-docs.js";import"./finder/finder.js";import"./google-maps/google-maps.js";import"./google-search/google-search.js";import"./highlight-signature/highlight-signature.js";import"./image-editor-pro/image-editor-pro.js";import"./iframe-editor/iframe-editor.js";import"./keyboard/keyboard.js";import"./mobile-view/mobile-view.js";import"./page-break/page-break.js";import"./paste-code/paste-code.js";import"./show-blocks/show-blocks.js";import"./style/style.js";import"./templates/templates.js";import"./todo-list/todo-list.js";import"./translate/translate.js";import"./tune-block/tune-block.js";
|
|
1
|
+
import"jodit/esm/plugins/all.js";import"./paste-from-word/paste-from-word.js";import"./license/license.js";import"./autocomplete/autocomplete.impl.js";import"jodit/esm/plugins/speech-recognize/speech-recognize.js";import"./ai-assistant-pro/ai-assistant-pro.js";import"./backup/backup.js";import"./button-generator/button-generator.js";import"./change-case/change-case.js";import"./chart/chart.js";import"./color-picker/color-picker.js";import"./emoji/emoji.js";import"./export-docs/export-docs.js";import"./finder/finder.js";import"./google-maps/google-maps.js";import"./google-search/google-search.js";import"./highlight-signature/highlight-signature.js";import"./image-editor-pro/image-editor-pro.js";import"./iframe-editor/iframe-editor.js";import"./keyboard/keyboard.js";import"./mobile-view/mobile-view.js";import"./page-break/page-break.js";import"./paste-code/paste-code.js";import"./show-blocks/show-blocks.js";import"./style/style.js";import"./templates/templates.js";import"./todo-list/todo-list.js";import"./translate/translate.js";import"./tune-block/tune-block.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var o='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <g fill="none"> <path d="M5 20v-7M12 20V4M19 20v-5M3 20h18"/> </g> </svg> ';export{o as default};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Jodit Editor PRO (https://xdsoft.net/jodit/)
|
|
3
|
+
* See LICENSE.md in the project root for license information.
|
|
4
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
|
+
*/
|
|
6
|
+
import type { IJodit, Nullable } from "jodit/esm/types/index";
|
|
7
|
+
import "./config";
|
|
8
|
+
import { Plugin } from "jodit/esm/core/plugin/index";
|
|
9
|
+
/**
|
|
10
|
+
* Inserts self-contained SVG charts (bar, horizontal bar, line, pie, donut)
|
|
11
|
+
* and lets the user edit them in a dialog or remove them from a popup.
|
|
12
|
+
*/
|
|
13
|
+
export declare class Chart extends Plugin {
|
|
14
|
+
static requires: string[];
|
|
15
|
+
buttons: Plugin['buttons'];
|
|
16
|
+
private __dialog;
|
|
17
|
+
private __editor;
|
|
18
|
+
private __popup;
|
|
19
|
+
private __toolbar;
|
|
20
|
+
private __target;
|
|
21
|
+
protected afterInit(jodit: IJodit): void;
|
|
22
|
+
protected beforeDestruct(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Opens the editor dialog for a new chart or for an existing one.
|
|
25
|
+
*/
|
|
26
|
+
openEditor(target?: Nullable<Node>): void;
|
|
27
|
+
/**
|
|
28
|
+
* Removes the chart that owns the given node.
|
|
29
|
+
*/
|
|
30
|
+
removeChart(target?: Nullable<Node>): void;
|
|
31
|
+
private __save;
|
|
32
|
+
private __getDialog;
|
|
33
|
+
/**
|
|
34
|
+
* Handler: clicking a chart opens its popup; clicking elsewhere closes it.
|
|
35
|
+
*/
|
|
36
|
+
protected onClick(e: MouseEvent): void;
|
|
37
|
+
protected onDblClick(e: MouseEvent): void;
|
|
38
|
+
protected onOutsideClick(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Shows the contextual popup (edit / delete) above the chart.
|
|
41
|
+
*/
|
|
42
|
+
openPopup(figure: HTMLElement): void;
|
|
43
|
+
closePopup(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Decorates charts that arrived with the value (initial load, paste) and
|
|
46
|
+
* re-renders charts whose box was changed by the resizer.
|
|
47
|
+
*/
|
|
48
|
+
protected onChange(): void;
|
|
49
|
+
private __decorateAll;
|
|
50
|
+
/**
|
|
51
|
+
* A figure that carries data but no SVG (e.g. content produced by a
|
|
52
|
+
* backend) is rendered on load.
|
|
53
|
+
*/
|
|
54
|
+
private __renderMissing;
|
|
55
|
+
private __syncResized;
|
|
56
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var C=Object.defineProperty;var f=(h,t)=>C(h,"name",{value:t,configurable:!0});var n=function(h,t,o,e){var i=arguments.length,s=i<3?t:e===null?e=Object.getOwnPropertyDescriptor(t,o):e,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(h,t,o,e);else for(var _=h.length-1;_>=0;_--)(l=h[_])&&(s=(i<3?l(s):i>3?l(t,o,s):l(t,o))||s);return i>3&&s&&Object.defineProperty(t,o,s),s};import"./config.js";import{UIChartEditor as v}from"./ui/editor/editor.js";import{applyChartData as c,CHART_ATTR as y,createChart as b,decorateChart as P,defaultChartData as D,findChart as a,isChartElement as w,pixels as m,readChartData as d}from"./helpers.js";import{autobind as j,debounce as A,watch as p}from"jodit/esm/core/decorators/index.js";import{Dom as E}from"jodit/esm/core/dom/dom.js";import{toArray as R}from"jodit/esm/core/helpers/array/to-array.js";import{position as O}from"jodit/esm/core/helpers/size/position.js";import{Plugin as k}from"jodit/esm/core/plugin/index.js";import{Button as g}from"jodit/esm/core/ui/button/button/button.js";import{Popup as z}from"jodit/esm/core/ui/popup/popup.js";import{Dialog as S}from"jodit/esm/modules/dialog/dialog.js";import{makeCollection as I}from"jodit/esm/modules/toolbar/factory.js";import{JoditPro as q}from"../../jodit-pro.js";const u=class u extends k{constructor(){super(...arguments),this.buttons=[{name:"chart",group:"insert"}],this.__dialog=null,this.__editor=null,this.__popup=null,this.__toolbar=null,this.__target=null}afterInit(t){t.e.on("openChartEditor",this.openEditor).on("removeChart",this.removeChart).on("isChartEditorOpened",()=>{var o;return!!(!((o=this.__dialog)===null||o===void 0)&&o.isOpened)}),t.registerCommand("insertChart",()=>(this.openEditor(),!1)),this.__decorateAll()}beforeDestruct(){var t,o;this.closePopup(),(t=this.__popup)===null||t===void 0||t.destruct(),(o=this.__dialog)===null||o===void 0||o.destruct()}openEditor(t){const o=a(this.j,t??null),e=o&&d(this.j,o)||D(this.j);this.closePopup(),this.j.s.save();const i=this.__getDialog(),s=this.__editor;s&&(s.setData(e),i.setHeader(this.j.i18n(o?"Edit chart":"Insert chart")).setFooter([g(i,"cancel","Cancel","default").onAction(()=>{i.close()}),g(i,"ok",o?"Save":"Insert","primary").onAction(()=>{this.__save(o,s.getData()),i.close()})]).open())}removeChart(t){const o=a(this.j,t??this.__target);this.closePopup(),o&&(this.j.s.setCursorAfter(o),E.safeRemove(o),this.j.synchronizeValues())}__save(t,o){t?c(this.j,t,o):(t=b(this.j,o),this.j.s.restore(),this.j.s.insertNode(t,!1,!1)),this.j.s.setCursorAfter(t),this.j.synchronizeValues()}__getDialog(){if(!this.__dialog){const{dialog:t}=this.j.o.chart;this.__dialog=new S({language:this.j.o.language,theme:this.j.o.theme,shadowRoot:this.j.o.shadowRoot,events:this.j.o.events}),this.__editor=new v(this.j),this.__dialog.setContent(this.__editor).setSize(t.width,t.height),this.__dialog.e.on("beforeClose",()=>{this.j.s.restore()})}return this.__dialog}onClick(t){const o=a(this.j,t.target);o?this.openPopup(o):this.closePopup()}onDblClick(t){const o=a(this.j,t.target);o&&this.openEditor(o)}onOutsideClick(){this.closePopup()}openPopup(t){if(this.j.o.readonly||!this.j.o.chart.popup.length)return;this.__popup||(this.__popup=new z(this.j,!1),this.__toolbar=I(this.j,this.__popup));const o=this.__popup,e=this.__toolbar;e&&(this.__target=t,e.build(this.j.o.chart.popup,t),o.setContent(e.container),o.isOpened?o.updatePosition():o.open(()=>O(t,this.j)))}closePopup(){var t;this.__target=null,(t=this.__popup)===null||t===void 0||t.close()}onChange(){this.__decorateAll(),this.__target&&!this.j.editor.contains(this.__target)&&this.closePopup()}__decorateAll(){let t=!1;R(this.j.editor.querySelectorAll(`figure[${y}]`)).forEach(o=>{w(o,this.j.o.chart.className)&&(P(this.j,o),t=this.__syncResized(o)||t,t=this.__renderMissing(o)||t)}),t&&this.j.synchronizeValues()}__renderMissing(t){if(t.querySelector("svg"))return!1;const o=d(this.j,t);return o?(c(this.j,t,o),!0):!1}__syncResized(t){const o=d(this.j,t);if(!o)return!1;const e=m(t.style.width)||o.width,i=m(t.style.height)||o.height;return e===o.width&&i===o.height?!1:(c(this.j,t,{...o,width:e,height:i}),!0)}};f(u,"Chart");let r=u;r.requires=["license"],n([j],r.prototype,"openEditor",null),n([j],r.prototype,"removeChart",null),n([p(":click")],r.prototype,"onClick",null),n([p(":dblclick")],r.prototype,"onDblClick",null),n([p(":outsideClick")],r.prototype,"onOutsideClick",null),n([p([":change",":afterSetMode"]),A()],r.prototype,"onChange",null),q.plugins.add("chart",r);export{r as Chart};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Jodit Editor PRO (https://xdsoft.net/jodit/)
|
|
3
|
+
* See LICENSE.md in the project root for license information.
|
|
4
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
|
+
*/
|
|
6
|
+
import type { IControlType } from "jodit/esm/types/index";
|
|
7
|
+
import type { ChartType, IChartPoint } from "./interface";
|
|
8
|
+
declare module 'jodit/esm/config' {
|
|
9
|
+
interface Config {
|
|
10
|
+
chart: {
|
|
11
|
+
className: string;
|
|
12
|
+
types: ChartType[];
|
|
13
|
+
defaultType: ChartType;
|
|
14
|
+
defaultTitle: string;
|
|
15
|
+
defaultPoints: IChartPoint[];
|
|
16
|
+
colors: string[];
|
|
17
|
+
defaultBackground: string;
|
|
18
|
+
defaultTextColor: string;
|
|
19
|
+
defaultBorderColor: string;
|
|
20
|
+
allowChangeBackground: boolean;
|
|
21
|
+
allowChangeTextColor: boolean;
|
|
22
|
+
allowChangeBorderColor: boolean;
|
|
23
|
+
fontFamily: string;
|
|
24
|
+
width: number;
|
|
25
|
+
height: number;
|
|
26
|
+
popup: Array<IControlType | string>;
|
|
27
|
+
dialog: {
|
|
28
|
+
width: number;
|
|
29
|
+
height: number;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import a from"./assets/chart.svg.js";import{Config as t}from"jodit/esm/config.js";import{Icon as r}from"jodit/esm/core/ui/icon.js";t.prototype.chart={className:"jodit-chart",types:["bar","horizontalBar","line","area","pie","donut","radar"],defaultType:"bar",defaultTitle:"Sample chart",defaultPoints:[{label:"Item 1",value:10},{label:"Item 2",value:20},{label:"Item 3",value:15},{label:"Item 4",value:25},{label:"Item 5",value:30}],colors:["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#6250d6","#e34948"],defaultBackground:"#ffffff",defaultTextColor:"#111827",defaultBorderColor:"#e5e7eb",allowChangeBackground:!0,allowChangeTextColor:!0,allowChangeBorderColor:!0,fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif",width:600,height:400,popup:["chartEdit","chartRemove"],dialog:{width:620,height:720}},t.prototype.controls.chart={tooltip:"Insert chart",icon:"chart",isActive(e){return!!e.e.fire("isChartEditorOpened")},exec(e){e.e.fire("openChartEditor")}},t.prototype.controls.chartEdit={tooltip:"Edit chart",icon:"pencil",exec(e,o){e.e.fire("openChartEditor",o)}},t.prototype.controls.chartRemove={tooltip:"Delete chart",icon:"bin",exec(e,o){e.e.fire("removeChart",o)}},t.prototype.allowResizeTags=new Set([...t.prototype.allowResizeTags,"figure"]),r.set("chart",a);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Jodit Editor PRO (https://xdsoft.net/jodit/)
|
|
3
|
+
* See LICENSE.md in the project root for license information.
|
|
4
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
|
+
*/
|
|
6
|
+
import type { IJodit, Nullable } from "jodit/esm/types/index";
|
|
7
|
+
import type { ChartType, IChartData, IChartPoint } from "./interface";
|
|
8
|
+
export declare const CHART_ATTR = "data-jodit-chart";
|
|
9
|
+
export declare const CHART_TYPES: ChartType[];
|
|
10
|
+
export declare const CHART_TYPE_TITLES: Record<ChartType, string>;
|
|
11
|
+
export declare function isChartType(value: unknown): value is ChartType;
|
|
12
|
+
export declare function normalizePoint(raw: Partial<IChartPoint>): IChartPoint;
|
|
13
|
+
export declare function normalizeChartData(raw: Partial<IChartData>, defaults: IChartData): IChartData;
|
|
14
|
+
export declare function cloneChartData(data: IChartData): IChartData;
|
|
15
|
+
export declare function isChartElement(node: Nullable<Node>, className: string): node is HTMLElement;
|
|
16
|
+
export declare function findChart(jodit: IJodit, node: Nullable<Node>): Nullable<HTMLElement>;
|
|
17
|
+
export declare function readChartData(jodit: IJodit, figure: HTMLElement): Nullable<IChartData>;
|
|
18
|
+
export declare function defaultChartData(jodit: IJodit): IChartData;
|
|
19
|
+
export declare function decorateChart(jodit: IJodit, figure: HTMLElement): void;
|
|
20
|
+
export declare function applyChartData(jodit: IJodit, figure: HTMLElement, data: IChartData): void;
|
|
21
|
+
export declare function createChart(jodit: IJodit, data: IChartData): HTMLElement;
|
|
22
|
+
export declare function pixels(value: string): number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var s=Object.defineProperty;var e=(t,r)=>s(t,"name",{value:r,configurable:!0});import{renderChart as u}from"./render/index.js";import{Dom as p}from"jodit/esm/core/dom/dom.js";import{isString as i}from"jodit/esm/core/helpers/checker/is-string.js";import{attr as a}from"jodit/esm/core/helpers/utils/attr.js";const l="data-jodit-chart",d=["bar","horizontalBar","line","area","pie","donut","radar"],N={bar:"Bar chart",horizontalBar:"Horizontal bar",line:"Line chart",area:"Area chart",pie:"Pie chart",donut:"Donut chart",radar:"Radar chart"};function C(t){return d.includes(t)}e(C,"isChartType");function c(t){var r;const o=Number(t.value),n={label:String((r=t.label)!==null&&r!==void 0?r:""),value:isFinite(o)?o:0};return t.color&&(n.color=String(t.color)),n}e(c,"normalizePoint");function m(t,r){var o;const n=Number(t.width),h=Number(t.height);return{type:C(t.type)?t.type:r.type,title:String((o=t.title)!==null&&o!==void 0?o:r.title),points:Array.isArray(t.points)?t.points.map(c):r.points.map(c),width:n>0?Math.round(n):r.width,height:h>0?Math.round(h):r.height,background:i(t.background)?t.background:r.background,textColor:i(t.textColor)?t.textColor:r.textColor,borderColor:i(t.borderColor)?t.borderColor:r.borderColor}}e(m,"normalizeChartData");function _(t){return{...t,points:t.points.map(r=>({...r}))}}e(_,"cloneChartData");function x(t,r){return p.isTag(t,"figure")&&(t.hasAttribute(l)||t.classList.contains(r))}e(x,"isChartElement");function k(t,r){return p.closest(r,o=>x(o,t.o.chart.className),t.editor)}e(k,"findChart");function v(t,r){const o=a(r,l);if(!o)return null;try{return m(JSON.parse(o),f(t))}catch{return null}}e(v,"readChartData");function f(t){const{chart:r}=t.o;return{type:r.defaultType,title:r.defaultTitle,points:r.defaultPoints.map(c),width:r.width,height:r.height,background:r.defaultBackground,textColor:r.defaultTextColor,borderColor:r.defaultBorderColor}}e(f,"defaultChartData");function b(t,r){a(r,{class:t.o.chart.className,contenteditable:!1})}e(b,"decorateChart");function g(t,r,o){const{chart:n}=t.o;b(t,r),a(r,l,JSON.stringify(o)),r.style.width=o.width+"px",r.style.maxWidth="100%",r.style.height="",r.innerHTML=u(o,{colors:n.colors,fontFamily:n.fontFamily})}e(g,"applyChartData");function z(t,r){const o=t.createInside.element("figure");return g(t,o,r),o}e(z,"createChart");function B(t){return/^\d+(\.\d+)?px$/.test(t)?Math.round(parseFloat(t)):0}e(B,"pixels");export{l as CHART_ATTR,d as CHART_TYPES,N as CHART_TYPE_TITLES,g as applyChartData,_ as cloneChartData,z as createChart,b as decorateChart,f as defaultChartData,k as findChart,x as isChartElement,C as isChartType,m as normalizeChartData,c as normalizePoint,B as pixels,v as readChartData};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Jodit Editor PRO (https://xdsoft.net/jodit/)
|
|
3
|
+
* See LICENSE.md in the project root for license information.
|
|
4
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
|
+
*/
|
|
6
|
+
export type ChartType = 'bar' | 'horizontalBar' | 'line' | 'area' | 'pie' | 'donut' | 'radar';
|
|
7
|
+
export interface IChartPoint {
|
|
8
|
+
label: string;
|
|
9
|
+
value: number;
|
|
10
|
+
color?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface IChartData {
|
|
13
|
+
type: ChartType;
|
|
14
|
+
title: string;
|
|
15
|
+
points: IChartPoint[];
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
background?: string;
|
|
19
|
+
textColor?: string;
|
|
20
|
+
borderColor?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface IChartRenderOptions {
|
|
23
|
+
colors: string[];
|
|
24
|
+
fontFamily: string;
|
|
25
|
+
}
|
|
26
|
+
export interface IChartTheme {
|
|
27
|
+
surface: string;
|
|
28
|
+
transparent: boolean;
|
|
29
|
+
border: string;
|
|
30
|
+
grid: string;
|
|
31
|
+
ink: string;
|
|
32
|
+
inkMuted: string;
|
|
33
|
+
inkSecondary: string;
|
|
34
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Jodit Editor PRO (https://xdsoft.net/jodit/)
|
|
3
|
+
* See LICENSE.md in the project root for license information.
|
|
4
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
|
+
*/
|
|
6
|
+
import type { IChartData, IChartRenderOptions } from "../interface";
|
|
7
|
+
export declare function renderBar(data: IChartData, options: IChartRenderOptions): string;
|
|
8
|
+
export declare function renderHorizontalBar(data: IChartData, options: IChartRenderOptions): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var F=Object.defineProperty;var k=(n,i)=>F(n,"name",{value:i,configurable:!0});import{BAR_RADIUS as z,chartTheme as E,esc as x,formatValue as u,LABEL_FONT as p,num as o,plotBox as T,pointColor as W,roundedBarPath as A,svgClose as C,svgOpen as L,textWidth as M,TICK_FONT as w,ticks as O,truncate as B,valuePill as _}from"./common.js";function N(n,i){const r=O(n.points),y=r[r.length-1],v=Math.max(...r.map(e=>M(u(e),w))),t=T(n,{x:v+12,y:28,width:0,height:28}),l=E(n),s=[L(n,i)];r.forEach(e=>{const h=t.y+t.height-e/y*t.height;s.push(`<line x1="${o(t.x)}" y1="${o(h)}" x2="${o(t.x+t.width)}" y2="${o(h)}" stroke="${l.grid}" stroke-dasharray="3 3"/>`,`<text x="${o(t.x-8)}" y="${o(h+4)}" font-size="${w}" fill="${l.inkMuted}" text-anchor="end">${x(u(e))}</text>`)});const d=n.points.length||1,g=t.width/d,$=Math.max(2,g*.6),c=t.y+t.height;return n.points.forEach((e,h)=>{const f=W(e,h,i),a=(e.value>0?e.value:0)/y*t.height,b=t.x+h*g+(g-$)/2,m=b+$/2;s.push(`<path d="${A(b,c-a,$,a,z,"top")}" fill="${f}"><title>${x(e.label)}: ${x(u(e.value))}</title></path>`,_(m,c-a-18,e.value,f,l),`<text x="${o(m)}" y="${o(c+20)}" font-size="${p}" fill="${l.inkMuted}" text-anchor="middle">${x(B(e.label))}</text>`)}),s.push(`<line x1="${o(t.x)}" y1="${o(c)}" x2="${o(t.x+t.width)}" y2="${o(c)}" stroke="${l.border}"/>`,C()),s.join("")}k(N,"renderBar");function P(n,i){const r=O(n.points),y=r[r.length-1],v=Math.min(160,Math.max(...n.points.map(e=>M(B(e.label),p)))),t=T(n,{x:v+12,y:8,width:56,height:28}),l=E(n),s=[L(n,i)],d=t.y+t.height;r.forEach(e=>{const h=t.x+e/y*t.width;s.push(`<line x1="${o(h)}" y1="${o(t.y)}" x2="${o(h)}" y2="${o(d)}" stroke="${l.grid}" stroke-dasharray="3 3"/>`,`<text x="${o(h)}" y="${o(d+18)}" font-size="${w}" fill="${l.inkMuted}" text-anchor="middle">${x(u(e))}</text>`)});const g=n.points.length||1,$=t.height/g,c=Math.max(2,$*.6);return n.points.forEach((e,h)=>{const f=W(e,h,i),a=(e.value>0?e.value:0)/y*t.width,b=t.y+h*$+($-c)/2,m=b+c/2;s.push(`<path d="${A(t.x,b,a,c,z,"right")}" fill="${f}"><title>${x(e.label)}: ${x(u(e.value))}</title></path>`,_(t.x+a+12+M(u(e.value),p)/2+8,m,e.value,f,l),`<text x="${o(t.x-12)}" y="${o(m+4.5)}" font-size="${p}" fill="${l.inkMuted}" text-anchor="end">${x(B(e.label))}</text>`)}),s.push(`<line x1="${o(t.x)}" y1="${o(t.y)}" x2="${o(t.x)}" y2="${o(d)}" stroke="${l.border}"/>`,C()),s.join("")}k(P,"renderHorizontalBar");export{N as renderBar,P as renderHorizontalBar};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Jodit Editor PRO (https://xdsoft.net/jodit/)
|
|
3
|
+
* See LICENSE.md in the project root for license information.
|
|
4
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
|
+
*/
|
|
6
|
+
import type { IChartData, IChartPoint, IChartRenderOptions, IChartTheme } from "../interface";
|
|
7
|
+
export declare const PAD = 24;
|
|
8
|
+
export declare const TITLE_HEIGHT = 40;
|
|
9
|
+
export declare const LABEL_FONT = 13;
|
|
10
|
+
export declare const TICK_FONT = 12;
|
|
11
|
+
export declare const TICK_COUNT = 4;
|
|
12
|
+
export declare const BAR_RADIUS = 4;
|
|
13
|
+
export declare const MAX_LABEL = 14;
|
|
14
|
+
export declare const DEFAULT_BACKGROUND = "#ffffff";
|
|
15
|
+
export declare const DEFAULT_TEXT_COLOR = "#111827";
|
|
16
|
+
/**
|
|
17
|
+
* Colors derived from the chart background and text color so grids, axes and
|
|
18
|
+
* secondary labels stay readable on light and dark surfaces alike.
|
|
19
|
+
*/
|
|
20
|
+
export declare function chartTheme(data: IChartData): IChartTheme;
|
|
21
|
+
export interface IPlotBox {
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
width: number;
|
|
25
|
+
height: number;
|
|
26
|
+
}
|
|
27
|
+
export declare function esc(value: string | number): string;
|
|
28
|
+
export declare function num(value: number): string;
|
|
29
|
+
export declare function formatValue(value: number): string;
|
|
30
|
+
export declare function truncate(label: string, max?: number): string;
|
|
31
|
+
export declare function pointColor(point: IChartPoint, index: number, options: IChartRenderOptions): string;
|
|
32
|
+
export declare function niceStep(rawStep: number): number;
|
|
33
|
+
export declare function ticks(points: IChartPoint[]): number[];
|
|
34
|
+
export declare function textWidth(text: string, fontSize: number): number;
|
|
35
|
+
export declare function plotBox(data: IChartData, margin: IPlotBox): IPlotBox;
|
|
36
|
+
export declare function svgOpen(data: IChartData, options: IChartRenderOptions): string;
|
|
37
|
+
export declare function svgClose(): string;
|
|
38
|
+
export declare function renderTitle(data: IChartData, theme: IChartTheme): string;
|
|
39
|
+
export declare function roundedBarPath(x: number, y: number, width: number, height: number, radius: number, side: 'top' | 'right'): string;
|
|
40
|
+
export declare function valuePill(cx: number, cy: number, value: number, color: string, theme: IChartTheme): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var x=Object.defineProperty;var c=(t,n)=>x(t,"name",{value:n,configurable:!0});const M=24,_=40,v=13,L=12,w=4,E=4,B=14,p="#ffffff",a="#111827";function l(t,n){const e=/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(t);if(!e)return t;const[i,s,u]=[e[1],e[2],e[3]].map(r=>parseInt(r,16));return`rgba(${i}, ${s}, ${u}, ${n})`}c(l,"alpha");function h(t){var n;const e=t.textColor||a,i=(n=t.background)!==null&&n!==void 0?n:p;return{surface:i||p,transparent:!i,border:t.borderColor||l(e,.12),grid:l(e,.12),ink:e,inkSecondary:l(e,.8),inkMuted:l(e,.6)}}c(h,"chartTheme");function $(t){return String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}c($,"esc");function o(t){return String(Math.round(t*100)/100)}c(o,"num");function g(t){return o(t).replace(/\B(?=(\d{3})+(?!\d))/g,"\u202F")}c(g,"formatValue");function C(t,n=14){return t.length>n?t.slice(0,n-1)+"\u2026":t}c(C,"truncate");function D(t,n,e){const{colors:i}=e;return t.color||i[n%i.length]||"#2a78d6"}c(D,"pointColor");function d(t){var n;if(t<=0)return 1;const e=Math.pow(10,Math.floor(Math.log10(t))),i=t/e;return((n=[1,2,2.5,5,10].find(r=>r>=i))!==null&&n!==void 0?n:10)*e}c(d,"niceStep");function O(t){const n=Math.max(0,...t.map(u=>u.value>0?u.value:0)),e=d((n||1)/4),i=Math.max(e,Math.ceil(n/e)*e),s=[];for(let u=0;u<=i+e/2;u+=e)s.push(Math.round(u*1e3)/1e3);return s}c(O,"ticks");function T(t,n){return t.length*n*.58}c(T,"textWidth");function k(t,n){const e=24+(t.title?40:0)+n.y;return{x:24+n.x,y:e,width:Math.max(10,t.width-48-n.x-n.width),height:Math.max(10,t.height-e-24-n.height)}}c(k,"plotBox");function I(t,n){const e=h(t),i=t.title?` aria-label="${$(t.title)}"`:"",s=e.transparent?"":`<rect x="0.5" y="0.5" width="${t.width-1}" height="${t.height-1}" rx="12" fill="${e.surface}" stroke="${e.border}"/>`;return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${t.width} ${t.height}" width="100%" role="img"${i} font-family="${$(n.fontFamily)}">`+s+A(t,e)}c(I,"svgOpen");function P(){return"</svg>"}c(P,"svgClose");function A(t,n){return t.title?`<text x="24" y="44" font-size="20" font-weight="600" fill="${n.ink}">${$(t.title)}</text>`:""}c(A,"renderTitle");function b(t,n,e,i,s,u){if(i<=0||e<=0)return"";const r=Math.min(s,e/2,i/2);return u==="top"?[`M${o(t)},${o(n+i)}`,`V${o(n+r)}`,`a${o(r)},${o(r)} 0 0 1 ${o(r)},${o(-r)}`,`h${o(e-r*2)}`,`a${o(r)},${o(r)} 0 0 1 ${o(r)},${o(r)}`,`V${o(n+i)}`,"Z"].join(""):[`M${o(t)},${o(n)}`,`H${o(t+e-r)}`,`a${o(r)},${o(r)} 0 0 1 ${o(r)},${o(r)}`,`v${o(i-r*2)}`,`a${o(r)},${o(r)} 0 0 1 ${o(-r)},${o(r)}`,`H${o(t)}`,"Z"].join("")}c(b,"roundedBarPath");function y(t,n,e,i,s){const u=g(e),r=T(u,13)+16,f=22;return`<rect x="${o(t-r/2)}" y="${o(n-f/2)}" width="${o(r)}" height="${f}" rx="6" fill="${i}" fill-opacity="0.14"/><text x="${o(t)}" y="${o(n+4.5)}" font-size="13" font-weight="600" fill="${s.inkSecondary}" text-anchor="middle">${$(u)}</text>`}c(y,"valuePill");export{E as BAR_RADIUS,p as DEFAULT_BACKGROUND,a as DEFAULT_TEXT_COLOR,v as LABEL_FONT,B as MAX_LABEL,M as PAD,w as TICK_COUNT,L as TICK_FONT,_ as TITLE_HEIGHT,h as chartTheme,$ as esc,g as formatValue,d as niceStep,o as num,k as plotBox,D as pointColor,A as renderTitle,b as roundedBarPath,P as svgClose,I as svgOpen,T as textWidth,O as ticks,C as truncate,y as valuePill};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Jodit Editor PRO (https://xdsoft.net/jodit/)
|
|
3
|
+
* See LICENSE.md in the project root for license information.
|
|
4
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
|
+
*/
|
|
6
|
+
import type { IChartData, IChartRenderOptions } from "../interface";
|
|
7
|
+
export declare function renderChart(data: IChartData, options: IChartRenderOptions): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var c=Object.defineProperty;var n=(r,e)=>c(r,"name",{value:e,configurable:!0});import{renderBar as f,renderHorizontalBar as m}from"./bar.js";import{renderLine as u}from"./line.js";import{renderPie as t}from"./pie.js";import{renderRadar as a}from"./radar.js";function s(r,e){switch(r.type){case"horizontalBar":return m(r,e);case"line":return u(r,e,!1);case"area":return u(r,e,!0);case"radar":return a(r,e);case"pie":return t(r,e,!1);case"donut":return t(r,e,!0);default:return f(r,e)}}n(s,"renderChart");export{s as renderChart};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Jodit Editor PRO (https://xdsoft.net/jodit/)
|
|
3
|
+
* See LICENSE.md in the project root for license information.
|
|
4
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
|
+
*/
|
|
6
|
+
import type { IChartData, IChartRenderOptions } from "../interface";
|
|
7
|
+
export declare function renderLine(data: IChartData, options: IChartRenderOptions, area: boolean): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var v=Object.defineProperty;var g=(n,$)=>v(n,"name",{value:$,configurable:!0});import{chartTheme as w,esc as p,formatValue as a,LABEL_FONT as M,num as t,plotBox as T,pointColor as j,svgClose as C,svgOpen as E,textWidth as O,TICK_FONT as k,ticks as z,truncate as B,valuePill as F}from"./common.js";function _(n,$,m){const x=z(n.points),d=x[x.length-1],b=Math.max(...x.map(e=>O(a(e),k))),o=T(n,{x:b+12,y:28,width:0,height:28}),i=w(n),r=[E(n,$)],s=o.y+o.height;x.forEach(e=>{const l=s-e/d*o.height;r.push(`<line x1="${t(o.x)}" y1="${t(l)}" x2="${t(o.x+o.width)}" y2="${t(l)}" stroke="${i.grid}" stroke-dasharray="3 3"/>`,`<text x="${t(o.x-8)}" y="${t(l+4)}" font-size="${k}" fill="${i.inkMuted}" text-anchor="end">${p(a(e))}</text>`)});const L=n.points.length||1,f=o.width/L,u=n.points.length?j(n.points[0],0,$):$.colors[0],h=n.points.map((e,l)=>({x:o.x+l*f+f/2,y:s-(e.value>0?e.value:0)/d*o.height}));if(h.length>1){const e=h.map((l,c)=>`${c?"L":"M"}${t(l.x)},${t(l.y)}`).join("");m&&r.push(`<path d="${e}L${t(h[h.length-1].x)},${t(s)}L${t(h[0].x)},${t(s)}Z" fill="${u}" fill-opacity="0.18"/>`),r.push(`<path d="${e}" fill="none" stroke="${u}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`)}return n.points.forEach((e,l)=>{const{x:c,y}=h[l];r.push(`<circle cx="${t(c)}" cy="${t(y)}" r="5" fill="${u}" stroke="${i.surface}" stroke-width="2"><title>${p(e.label)}: ${p(a(e.value))}</title></circle>`,F(c,y-20,e.value,u,i),`<text x="${t(c)}" y="${t(s+20)}" font-size="${M}" fill="${i.inkMuted}" text-anchor="middle">${p(B(e.label))}</text>`)}),r.push(`<line x1="${t(o.x)}" y1="${t(s)}" x2="${t(o.x+o.width)}" y2="${t(s)}" stroke="${i.border}"/>`,C()),r.join("")}g(_,"renderLine");export{_ as renderLine};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Jodit Editor PRO (https://xdsoft.net/jodit/)
|
|
3
|
+
* See LICENSE.md in the project root for license information.
|
|
4
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
|
+
*/
|
|
6
|
+
import type { IChartData, IChartRenderOptions } from "../interface";
|
|
7
|
+
export declare function renderPie(data: IChartData, options: IChartRenderOptions, donut: boolean): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var D=Object.defineProperty;var d=(e,l)=>D(e,"name",{value:l,configurable:!0});import{chartTheme as H,esc as m,formatValue as _,LABEL_FONT as T,num as t,PAD as i,plotBox as N,pointColor as A,svgClose as O,svgOpen as W,TITLE_HEIGHT as z,truncate as B}from"./common.js";const G=180,p=26,j=420,S=160;function w(e,l,$,h){return`${t(e+$*Math.cos(h))},${t(l+$*Math.sin(h))}`}d(w,"polar");function F(e,l,$,h,s,n){if(n-s>=Math.PI*2-1e-4){const r=h?` M${t(e-h)},${t(l)} a${t(h)},${t(h)} 0 1 0 ${t(h*2)},0 a${t(h)},${t(h)} 0 1 0 ${t(-h*2)},0`:"";return`M${t(e-$)},${t(l)} a${t($)},${t($)} 0 1 0 ${t($*2)},0 a${t($)},${t($)} 0 1 0 ${t(-$*2)},0${r}`}const a=n-s>Math.PI?1:0,c=[`M${w(e,l,$,s)}`,`A${t($)},${t($)} 0 ${a} 1 ${w(e,l,$,n)}`];return h?c.push(`L${w(e,l,h,n)}`,`A${t(h)},${t(h)} 0 ${a} 0 ${w(e,l,h,s)}`):c.push(`L${t(e)},${t(l)}`),c.join("")+"Z"}d(F,"slicePath");function V(e,l,$){const h=e.points.filter(o=>o.value>0),s=h.reduce((o,f)=>o+f.value,0),n=e.width<j,M=n?e.width-i*2:Math.min(G,Math.max(120,e.width*.3)),a=h.length*p;if(n){const o=i*2+(e.title?z:0)+S+a+i/2;e={...e,height:Math.max(e.height,o)}}const c=N(e,{x:0,y:0,width:n?0:M+i,height:n?a+i/2:0}),r=Math.max(10,Math.min(c.width,c.height)/2-4),b=$?r*.58:0,k=c.x+c.width/2,E=c.y+c.height/2,x=H(e),g=[W(e,l)];let v=-Math.PI/2;h.forEach((o,f)=>{const L=A(o,f,l),u=s?o.value/s*Math.PI*2:0,P=s?Math.round(o.value/s*1e3)/10:0;g.push(`<path d="${F(k,E,r,b,v,v+u)}" fill="${L}" stroke="${x.surface}" stroke-width="2" fill-rule="evenodd"><title>${m(o.label)}: ${m(_(o.value))} (${t(P)}%)</title></path>`),v+=u}),$&&s&&g.push(`<text x="${t(k)}" y="${t(E+7)}" font-size="20" font-weight="600" fill="${x.ink}" text-anchor="middle">${m(_(s))}</text>`);const I=n?i:e.width-i-M,y=Math.max(6,Math.floor((M-22-48)/(T*.58))),C=n?c.y+c.height+i/2+p/2:E-a/2+p/2;return h.forEach((o,f)=>{const L=A(o,f,l),u=C+f*p,P=s?Math.round(o.value/s*1e3)/10:0;g.push(`<rect x="${t(I)}" y="${t(u-7)}" width="14" height="14" rx="4" fill="${L}"/>`,`<text x="${t(I+22)}" y="${t(u+4.5)}" font-size="${T}" fill="${x.inkSecondary}">${m(B(o.label,y))}</text>`,`<text x="${t(I+M)}" y="${t(u+4.5)}" font-size="${T}" fill="${x.inkMuted}" text-anchor="end">${t(P)}%</text>`)}),g.push(O()),g.join("")}d(V,"renderPie");export{V as renderPie};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Jodit Editor PRO (https://xdsoft.net/jodit/)
|
|
3
|
+
* See LICENSE.md in the project root for license information.
|
|
4
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
|
+
*/
|
|
6
|
+
import type { IChartData, IChartRenderOptions } from "../interface";
|
|
7
|
+
export declare function renderRadar(data: IChartData, options: IChartRenderOptions): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var w=Object.defineProperty;var y=(t,r)=>w(t,"name",{value:r,configurable:!0});import{chartTheme as E,esc as g,formatValue as b,LABEL_FONT as j,num as o,plotBox as T,pointColor as _,svgClose as v,svgOpen as A,TICK_FONT as B,ticks as C,truncate as I}from"./common.js";const O=18;function k(t,r,l,p,i){const e=-Math.PI/2+p/i*Math.PI*2;return{x:t+l*Math.cos(e),y:r+l*Math.sin(e),angle:e}}y(k,"spoke");function P(t){const r=Math.cos(t);return Math.abs(r)<.2?"middle":r>0?"start":"end"}y(P,"anchor");function N(t,r){const l=C(t.points),p=l[l.length-1],i=T(t,{x:60,y:24,width:60,height:24}),e=i.x+i.width/2,h=i.y+i.height/2,f=Math.max(10,Math.min(i.width,i.height)/2-4),u=Math.max(1,t.points.length),a=E(t),x=[A(t,r)],m=t.points.length?_(t.points[0],0,r):r.colors[0];l.forEach((n,s)=>{if(!n)return;const c=n/p*f,$=t.points.map((M,L)=>k(e,h,c,L,u)).map((M,L)=>`${L?"L":"M"}${o(M.x)},${o(M.y)}`).join("");x.push(u>2?`<path d="${$}Z" fill="none" stroke="${a.grid}" stroke-dasharray="3 3"/>`:`<circle cx="${o(e)}" cy="${o(h)}" r="${o(c)}" fill="none" stroke="${a.grid}" stroke-dasharray="3 3"/>`,s===l.length-1?`<text x="${o(e+6)}" y="${o(h-c+12)}" font-size="${B}" fill="${a.inkMuted}">${g(b(n))}</text>`:"")}),t.points.forEach((n,s)=>{const c=k(e,h,f,s,u),$=k(e,h,f+O,s,u);x.push(`<line x1="${o(e)}" y1="${o(h)}" x2="${o(c.x)}" y2="${o(c.y)}" stroke="${a.grid}"/>`,`<text x="${o($.x)}" y="${o($.y+4.5)}" font-size="${j}" fill="${a.inkMuted}" text-anchor="${P($.angle)}">${g(I(n.label))}</text>`)});const d=t.points.map((n,s)=>k(e,h,(n.value>0?n.value:0)/p*f,s,u));if(d.length>1){const n=d.map((s,c)=>`${c?"L":"M"}${o(s.x)},${o(s.y)}`).join("");x.push(`<path d="${n}Z" fill="${m}" fill-opacity="0.18" stroke="${m}" stroke-width="2" stroke-linejoin="round"/>`)}return t.points.forEach((n,s)=>{const{x:c,y:$}=d[s];x.push(`<circle cx="${o(c)}" cy="${o($)}" r="5" fill="${m}" stroke="${a.surface}" stroke-width="2"><title>${g(n.label)}: ${g(b(n.value))}</title></circle>`)}),x.push(v()),x.join("")}y(N,"renderRadar");export{N as renderRadar};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Jodit Editor PRO (https://xdsoft.net/jodit/)
|
|
3
|
+
* See LICENSE.md in the project root for license information.
|
|
4
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
|
|
5
|
+
*/
|
|
6
|
+
import type { IJodit } from "jodit/esm/types/index";
|
|
7
|
+
import type { IChartData } from "../../interface";
|
|
8
|
+
import { UIElement } from "jodit/esm/core/ui/index";
|
|
9
|
+
/**
|
|
10
|
+
* Dialog body of the chart editor: live preview, type/title fields and the
|
|
11
|
+
* editable list of data points.
|
|
12
|
+
*/
|
|
13
|
+
export declare class UIChartEditor extends UIElement<IJodit> {
|
|
14
|
+
className(): string;
|
|
15
|
+
state: IChartData;
|
|
16
|
+
private typeSelect;
|
|
17
|
+
private titleInput;
|
|
18
|
+
private addButton;
|
|
19
|
+
private backgroundInput;
|
|
20
|
+
private textColorInput;
|
|
21
|
+
private borderColorInput;
|
|
22
|
+
private transparentButton;
|
|
23
|
+
protected render(): string;
|
|
24
|
+
constructor(jodit: IJodit);
|
|
25
|
+
private syncTransparent;
|
|
26
|
+
private createColorInput;
|
|
27
|
+
private colorField;
|
|
28
|
+
/**
|
|
29
|
+
* Loads a copy of the data into the form.
|
|
30
|
+
*/
|
|
31
|
+
setData(data: IChartData): void;
|
|
32
|
+
/**
|
|
33
|
+
* Returns a normalized copy of the edited data.
|
|
34
|
+
*/
|
|
35
|
+
getData(): IChartData;
|
|
36
|
+
private addPoint;
|
|
37
|
+
private removePoint;
|
|
38
|
+
private rebuildPoints;
|
|
39
|
+
private createPointRow;
|
|
40
|
+
private __dragIndex;
|
|
41
|
+
/**
|
|
42
|
+
* Native drag and drop of a row. The grip is the draggable element so text
|
|
43
|
+
* selection inside the inputs keeps working.
|
|
44
|
+
*/
|
|
45
|
+
private bindDragAndDrop;
|
|
46
|
+
/**
|
|
47
|
+
* Moves a point before or after another one and rebuilds the list.
|
|
48
|
+
*/
|
|
49
|
+
movePoint(from: number, to: number, after: boolean): void;
|
|
50
|
+
private refresh;
|
|
51
|
+
private __render;
|
|
52
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
var E=Object.defineProperty;var r=(h,t)=>E(h,"name",{value:t,configurable:!0});var l,b=function(h,t,s,e){var i=arguments.length,o=i<3?t:e===null?e=Object.getOwnPropertyDescriptor(t,s):e,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(h,t,s,e);else for(var a=h.length-1;a>=0;a--)(n=h[a])&&(o=(i<3?n(o):i>3?n(t,s,o):n(t,s))||o);return i>3&&o&&Object.defineProperty(t,s,o),o};import{CHART_TYPE_TITLES as I,cloneChartData as F,normalizePoint as T}from"../../helpers.js";import{renderChart as y}from"../../render/index.js";import{DEFAULT_BACKGROUND as x,DEFAULT_TEXT_COLOR as N,formatValue as D,pointColor as B}from"../../render/common.js";import{component as P,debounce as k}from"jodit/esm/core/decorators/index.js";import{Dom as _}from"jodit/esm/core/dom/dom.js";import{assert as d}from"jodit/esm/core/helpers/utils/assert.js";import{attr as g}from"jodit/esm/core/helpers/utils/attr.js";import{Button as C,UIElement as L,UIInput as m,UISelect as A}from"jodit/esm/core/ui/index.js";let p=(l=class extends L{className(){return"UIChartEditor"}render(){return`<div>
|
|
2
|
+
<div class="&__preview">
|
|
3
|
+
<div class="&__colors"></div>
|
|
4
|
+
<div class="&__canvas"></div>
|
|
5
|
+
</div>
|
|
6
|
+
<div class="&__fields"></div>
|
|
7
|
+
<div class="&__points-header">
|
|
8
|
+
<span class="&__points-title">~Data points~</span>
|
|
9
|
+
<span class="&__summary"></span>
|
|
10
|
+
<span class="&__add"></span>
|
|
11
|
+
</div>
|
|
12
|
+
<div class="&__points"></div>
|
|
13
|
+
</div>`}constructor(t){super(t),this.__dragIndex=-1,this.typeSelect=new A(t,{name:"type",label:"Chart type",options:t.o.chart.types.map(n=>({value:n,text:t.i18n(I[n])})),onChange:r(n=>{this.state.type=n,this.refresh()},"onChange")}),this.titleInput=new m(t,{name:"title",label:"Chart title",placeholder:"Optional",onChange:r(n=>{this.state.title=n,this.refresh()},"onChange")}),this.addButton=C(t,"plus","Add point").onAction(this.addPoint.bind(this));const s=this.getElm("fields");d(s!=null,"fields element does not exist"),s.appendChild(this.typeSelect.container),s.appendChild(this.titleInput.container);const e=this.getElm("add");d(e!=null,"add element does not exist"),e.appendChild(this.addButton.container),this.backgroundInput=this.createColorInput("background",n=>{this.state.background=n,this.syncTransparent()}),this.textColorInput=this.createColorInput("textColor",n=>{this.state.textColor=n}),this.borderColorInput=this.createColorInput("borderColor",n=>{this.state.borderColor=n}),this.transparentButton=t.c.element("button",{type:"button",name:"transparent",class:this.getFullElName("transparent")}),t.e.on(this.transparentButton,"click",()=>{this.state.background=this.state.background?"":this.backgroundInput.value,this.syncTransparent(),this.refresh()});const i=this.getElm("colors");d(i!=null,"colors element does not exist");const{chart:o}=t.o;o.allowChangeBackground&&i.appendChild(this.colorField("Background",this.backgroundInput)),o.allowChangeTextColor&&i.appendChild(this.colorField("Text",this.textColorInput)),o.allowChangeBorderColor&&i.appendChild(this.colorField("Border",this.borderColorInput)),o.allowChangeBackground&&i.appendChild(this.colorField("Transparent",this.transparentButton)),i.childNodes.length||_.safeRemove(i)}syncTransparent(){const t=!this.state.background;this.transparentButton.classList.toggle(this.getFullElName("transparent","active"),t),g(this.transparentButton,"aria-pressed",t)}createColorInput(t,s){const e=this.j.c.element("input",{type:"color",name:t,title:this.j.i18n(t==="background"?"Background":"Text color"),class:this.getFullElName("color-input")});return this.j.e.on(e,"input",()=>{s(e.value),this.refresh()}),e}colorField(t,s){return this.j.c.element("label",{class:this.getFullElName("color-field")},[s,this.j.c.span(this.getFullElName("color-label"),this.j.i18n(t))])}setData(t){this.state=F(t),this.typeSelect.value=this.state.type,this.titleInput.value=this.state.title,this.backgroundInput.value=this.state.background||x,this.textColorInput.value=this.state.textColor||N,this.borderColorInput.value=this.state.borderColor||this.j.o.chart.defaultBorderColor,this.syncTransparent(),this.rebuildPoints(),this.__render()}getData(){return{...this.state,title:this.state.title.trim(),points:this.state.points.map(T)}}addPoint(){var t;const{points:s}=this.state;s.push({label:this.j.i18n("Item")+" "+(s.length+1),value:0}),this.rebuildPoints(),this.refresh();const e=this.getElms("point-label"),i=(t=e[e.length-1])===null||t===void 0?void 0:t.querySelector("input");i?.focus()}removePoint(t){this.state.points.splice(t,1),this.rebuildPoints(),this.refresh()}rebuildPoints(){const t=this.getElm("points");d(t!=null,"points element does not exist"),_.detach(t),this.state.points.forEach((s,e)=>{t.appendChild(this.createPointRow(s,e))})}createPointRow(t,s){const{j:e}=this,i=new m(e,{name:"label",label:"Label",value:t.label,className:this.getFullElName("point-label"),onChange:r(u=>{t.label=u,this.refresh()},"onChange")}),o=new m(e,{name:"value",label:"Value",type:"number",value:t.value,className:this.getFullElName("point-value"),onChange:r(u=>{const v=Number(u);t.value=isFinite(v)?v:0,this.refresh()},"onChange")}),n=e.c.element("input",{type:"color",title:e.i18n("Color"),class:this.getFullElName("point-color"),value:B(t,s,{colors:e.o.chart.colors,fontFamily:""})});e.e.on(n,"input",()=>{t.color=n.value,this.refresh()});const a=C(e,"bin","","default").setMod("variant","remove").onAction(()=>this.removePoint(s));g(a.container,"title",e.i18n("Remove point"));const c=e.c.element("span",{class:this.getFullElName("point-grip"),title:e.i18n("Drag to reorder")}),f=e.c.div(this.getFullElName("point"),[c,i.container,o.container,n,a.container]);return this.bindDragAndDrop(f,c,s),f}bindDragAndDrop(t,s,e){const{j:i}=this,o=r(a=>{t.classList.toggle(this.getFullElName("point","drop","before"),a==="before"),t.classList.toggle(this.getFullElName("point","drop","after"),a==="after")},"dropMod"),n=r(a=>{const c=t.getBoundingClientRect();return a.clientY>c.top+c.height/2},"isAfter");g(s,"draggable",!0),i.e.on(s,"dragstart",a=>{this.__dragIndex=e,t.classList.add(this.getFullElName("point","dragging")),a.dataTransfer&&(a.dataTransfer.effectAllowed="move",a.dataTransfer.setData("text/plain",String(e)),a.dataTransfer.setDragImage(t,10,10))}).on(s,"dragend",()=>{this.__dragIndex=-1,t.classList.remove(this.getFullElName("point","dragging")),this.getElms("point").forEach(a=>{a.classList.remove(this.getFullElName("point","drop","before"),this.getFullElName("point","drop","after"))})}),i.e.on(t,"dragover",a=>{this.__dragIndex<0||this.__dragIndex===e||(a.preventDefault(),a.dataTransfer&&(a.dataTransfer.dropEffect="move"),o(n(a)?"after":"before"))}).on(t,"dragleave",()=>o(null)).on(t,"drop",a=>{this.__dragIndex<0||this.__dragIndex===e||(a.preventDefault(),this.movePoint(this.__dragIndex,e,n(a)),this.__dragIndex=-1)})}movePoint(t,s,e){const{points:i}=this.state;if(t===s||!i[t]||!i[s])return;const[o]=i.splice(t,1);let n=t<s?s-1:s;e&&n++,i.splice(n,0,o),this.rebuildPoints(),this.refresh()}refresh(){this.__render()}__render(){const{chart:t}=this.j.o,s=this.getElm("canvas"),e=this.getElm("summary");if(s&&(s.innerHTML=y(this.state,{colors:t.colors,fontFamily:t.fontFamily})),e){const i=this.state.points.reduce((o,n)=>o+n.value,0);e.textContent=this.state.points.length+" "+this.j.i18n("points")+" \xB7 "+this.j.i18n("Total")+": "+D(i)}}},r(l,"UIChartEditor"),l);b([k(50)],p.prototype,"refresh",null),p=b([P],p);export{p as UIChartEditor};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
var f=Object.defineProperty;var c=(e,n)=>f(e,"name",{value:n,configurable:!0});import{Config as h}from"jodit/esm/config.js";import{Dom as l}from"jodit/esm/core/dom/index.js";import{call as v}from"jodit/esm/core/helpers/index.js";const i=["tune.up","tune.remove","tune.down"],s=["tune.h1","tune.h2","tune.h3",`
|
|
2
2
|
`,"tune.h4","tune.h5","tune.h6",`
|
|
3
|
-
`,...i];h.prototype.tuneBlock={popup:{p:i,table:i,img:i,blockquote:i,div:i,pre:["tune.editPre",...i],h1:s,h2:s,h3:s,h4:s,h5:s,h6:s}};function u(e){return{icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><text dominant-baseline="text-before-edge" style="font: 45px sans-serif" x="0" y="0">'+e.toUpperCase()+"</text></svg>",isActive(n,r){var o;return((o=r?.target)===null||o===void 0?void 0:o.tagName.toLowerCase())===e},exec(n,r){if(r){n.selection.save();const o=l.replace(r,e,n.createInside);n.selection.restore(),n.e.fire("synchro"),n.e.fire("afterExecTune.tune",o)}return!0}}}c(u,"headerControl");function a(e){const n=e?"previousSibling":"nextSibling";return{icon:e?"angle-up":"angle-down",isDisabled(r,o){var t;return!(!((t=o?.target)===null||t===void 0)&&t[n])},exec(r,o){const t=o?.[n];return o&&t&&(r.selection.save(),v(e?l.before:l.after,t,o),r.selection.restore()),r.e.fire("synchro"),r.e.fire("afterExecTune.tune"),!0}}}c(a,"moveTo"),h.prototype.controls.tune={h1:u("h1"),h2:u("h2"),h3:u("h3"),h4:u("h4"),h5:u("h5"),h6:u("h6"),up:a(!0),down:a(!1),editPre:{icon:"pencil",exec(e,n){e.e.fire("editPreInPasteCode",n)}},remove:{icon:"bin",exec(e,n){l.safeRemove(n),e.e.fire("synchro"),e.e.fire("closeTuner.tune"),e.e.fire("hideTuner.tune")}}};
|
|
3
|
+
`,...i];h.prototype.tuneBlock={popup:{p:i,table:i,img:i,blockquote:i,div:i,figure:i,pre:["tune.editPre",...i],h1:s,h2:s,h3:s,h4:s,h5:s,h6:s}};function u(e){return{icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><text dominant-baseline="text-before-edge" style="font: 45px sans-serif" x="0" y="0">'+e.toUpperCase()+"</text></svg>",isActive(n,r){var o;return((o=r?.target)===null||o===void 0?void 0:o.tagName.toLowerCase())===e},exec(n,r){if(r){n.selection.save();const o=l.replace(r,e,n.createInside);n.selection.restore(),n.e.fire("synchro"),n.e.fire("afterExecTune.tune",o)}return!0}}}c(u,"headerControl");function a(e){const n=e?"previousSibling":"nextSibling";return{icon:e?"angle-up":"angle-down",isDisabled(r,o){var t;return!(!((t=o?.target)===null||t===void 0)&&t[n])},exec(r,o){const t=o?.[n];return o&&t&&(r.selection.save(),v(e?l.before:l.after,t,o),r.selection.restore()),r.e.fire("synchro"),r.e.fire("afterExecTune.tune"),!0}}}c(a,"moveTo"),h.prototype.controls.tune={h1:u("h1"),h2:u("h2"),h3:u("h3"),h4:u("h4"),h5:u("h5"),h6:u("h6"),up:a(!0),down:a(!1),editPre:{icon:"pencil",exec(e,n){e.e.fire("editPreInPasteCode",n)}},remove:{icon:"bin",exec(e,n){l.safeRemove(n),e.e.fire("synchro"),e.e.fire("closeTuner.tune"),e.e.fire("hideTuner.tune")}}};
|