@acorex/components 22.1.7 → 22.2.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/emoji/README.md +3 -0
- package/emojipicker/README.md +3 -0
- package/fesm2022/acorex-components-accordion.mjs +12 -12
- package/fesm2022/acorex-components-accordion.mjs.map +1 -1
- package/fesm2022/acorex-components-action-sheet.mjs +15 -14
- package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
- package/fesm2022/acorex-components-alert.mjs +7 -7
- package/fesm2022/acorex-components-alert.mjs.map +1 -1
- package/fesm2022/acorex-components-aspect-ratio.mjs +3 -3
- package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
- package/fesm2022/acorex-components-audio-wave.mjs +32 -11
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-autocomplete.mjs +9 -8
- package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
- package/fesm2022/acorex-components-avatar.mjs +10 -10
- package/fesm2022/acorex-components-avatar.mjs.map +1 -1
- package/fesm2022/acorex-components-badge.mjs +7 -7
- package/fesm2022/acorex-components-badge.mjs.map +1 -1
- package/fesm2022/acorex-components-bottom-navigation.mjs +10 -10
- package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-breadcrumbs.mjs +10 -10
- package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/acorex-components-bubble.mjs +71 -0
- package/fesm2022/acorex-components-bubble.mjs.map +1 -0
- package/fesm2022/acorex-components-button-group.mjs +22 -15
- package/fesm2022/acorex-components-button-group.mjs.map +1 -1
- package/fesm2022/acorex-components-button.mjs +366 -56
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-calendar.mjs +40 -37
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-check-box.mjs +7 -7
- package/fesm2022/acorex-components-check-box.mjs.map +1 -1
- package/fesm2022/acorex-components-chips.mjs +7 -7
- package/fesm2022/acorex-components-chips.mjs.map +1 -1
- package/fesm2022/acorex-components-circular-progress.mjs +7 -7
- package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-code-editor.mjs +44 -19
- package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-color-box.mjs +7 -7
- package/fesm2022/acorex-components-color-box.mjs.map +1 -1
- package/fesm2022/acorex-components-color-palette.mjs +28 -28
- package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
- package/fesm2022/acorex-components-combo-box.mjs +188 -31
- package/fesm2022/acorex-components-combo-box.mjs.map +1 -1
- package/fesm2022/acorex-components-command.mjs +11 -7
- package/fesm2022/acorex-components-command.mjs.map +1 -1
- package/fesm2022/acorex-components-comment.mjs +28 -28
- package/fesm2022/acorex-components-comment.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-C1Lf9tAe.mjs +19538 -0
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-C1Lf9tAe.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-F5fLD_SK.mjs +50 -0
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-F5fLD_SK.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-emoji-categories-C7Gm95V0.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-Bk3ixvt2.mjs +87 -0
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-Bk3ixvt2.mjs.map +1 -0
- package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-DuRLMEa3.mjs → acorex-components-conversation-picker-rename-file-dialog.component-DyOC1WEb.mjs} +5 -5
- package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-DuRLMEa3.mjs.map → acorex-components-conversation-picker-rename-file-dialog.component-DyOC1WEb.mjs.map} +1 -1
- package/fesm2022/acorex-components-conversation.mjs +1 -1
- package/fesm2022/acorex-components-cron-job.mjs +47 -47
- package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
- package/fesm2022/acorex-components-data-list.mjs +3 -3
- package/fesm2022/acorex-components-data-list.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +182 -184
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +809 -168
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +7 -7
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +7 -7
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +8 -8
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +59 -117
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +11 -11
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer.mjs +11 -11
- package/fesm2022/acorex-components-drawer.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown-button.mjs +10 -9
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +19 -14
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-editor.mjs +15 -14
- package/fesm2022/acorex-components-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-emoji.mjs +74 -0
- package/fesm2022/acorex-components-emoji.mjs.map +1 -0
- package/fesm2022/acorex-components-emojipicker.mjs +425 -0
- package/fesm2022/acorex-components-emojipicker.mjs.map +1 -0
- package/fesm2022/acorex-components-fab.mjs +6 -6
- package/fesm2022/acorex-components-fab.mjs.map +1 -1
- package/fesm2022/acorex-components-file-viewer.mjs +250 -133
- package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +17 -17
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-grid-layout-builder.mjs +10 -10
- package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-highlight.mjs +80 -0
- package/fesm2022/acorex-components-highlight.mjs.map +1 -0
- package/fesm2022/acorex-components-image-editor.mjs +217 -79
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-image.mjs +7 -7
- package/fesm2022/acorex-components-image.mjs.map +1 -1
- package/fesm2022/acorex-components-inline-reaction.mjs +111 -0
- package/fesm2022/acorex-components-inline-reaction.mjs.map +1 -0
- package/fesm2022/acorex-components-json-viewer.mjs +7 -7
- package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-kanban.mjs +3 -3
- package/fesm2022/acorex-components-kanban.mjs.map +1 -1
- package/fesm2022/acorex-components-kbd.mjs +6 -6
- package/fesm2022/acorex-components-kbd.mjs.map +1 -1
- package/fesm2022/acorex-components-label.mjs +7 -7
- package/fesm2022/acorex-components-label.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +28 -9
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-loading-dialog.mjs +10 -10
- package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-loading.mjs +16 -16
- package/fesm2022/acorex-components-loading.mjs.map +1 -1
- package/fesm2022/acorex-components-lookup.mjs +919 -169
- package/fesm2022/acorex-components-lookup.mjs.map +1 -1
- package/fesm2022/acorex-components-map.mjs +20 -13
- package/fesm2022/acorex-components-map.mjs.map +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs +215 -218
- package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +146 -45
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-message-status.mjs +71 -0
- package/fesm2022/acorex-components-message-status.mjs.map +1 -0
- package/fesm2022/acorex-components-message-time.mjs +36 -0
- package/fesm2022/acorex-components-message-time.mjs.map +1 -0
- package/fesm2022/acorex-components-message.mjs +120 -0
- package/fesm2022/acorex-components-message.mjs.map +1 -0
- package/fesm2022/acorex-components-navbar.mjs +7 -7
- package/fesm2022/acorex-components-navbar.mjs.map +1 -1
- package/fesm2022/acorex-components-notification.mjs +13 -14
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box.mjs +17 -10
- package/fesm2022/acorex-components-number-box.mjs.map +1 -1
- package/fesm2022/acorex-components-otp.mjs +7 -7
- package/fesm2022/acorex-components-otp.mjs.map +1 -1
- package/fesm2022/acorex-components-page.mjs +10 -10
- package/fesm2022/acorex-components-page.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs +25 -25
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-password-box.mjs +10 -10
- package/fesm2022/acorex-components-password-box.mjs.map +1 -1
- package/fesm2022/acorex-components-pdf-reader.mjs +7 -7
- package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
- package/fesm2022/acorex-components-phone-box.mjs +7 -7
- package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
- package/fesm2022/acorex-components-picker.mjs +13 -13
- package/fesm2022/acorex-components-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +61 -13
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +631 -167
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-progress-bar.mjs +7 -7
- package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
- package/fesm2022/acorex-components-qrcode.mjs +7 -7
- package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
- package/fesm2022/acorex-components-radio.mjs +7 -7
- package/fesm2022/acorex-components-radio.mjs.map +1 -1
- package/fesm2022/acorex-components-rail-navigation.mjs +13 -13
- package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs +7 -7
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-rate-picker.mjs +7 -7
- package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-reaction.mjs +144 -0
- package/fesm2022/acorex-components-reaction.mjs.map +1 -0
- package/fesm2022/acorex-components-rest-api-generator.mjs +23 -23
- package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
- package/fesm2022/acorex-components-result.mjs +7 -7
- package/fesm2022/acorex-components-result.mjs.map +1 -1
- package/fesm2022/acorex-components-routing-progress.mjs +7 -7
- package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-rrule.mjs +9 -9
- package/fesm2022/acorex-components-rrule.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler-picker.mjs +56 -56
- package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +35 -35
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-search-box.mjs +7 -7
- package/fesm2022/acorex-components-search-box.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +9 -8
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list.mjs +7 -8
- package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +55 -42
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-sidebar.mjs +28 -28
- package/fesm2022/acorex-components-sidebar.mjs.map +1 -1
- package/fesm2022/acorex-components-skeleton.mjs +7 -7
- package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
- package/fesm2022/acorex-components-slider.mjs +7 -7
- package/fesm2022/acorex-components-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-sliding-item.mjs +13 -13
- package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
- package/fesm2022/acorex-components-step-wizard.mjs +16 -18
- package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
- package/fesm2022/acorex-components-switch.mjs +10 -10
- package/fesm2022/acorex-components-switch.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +393 -76
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/fesm2022/acorex-components-tag-box.mjs +7 -7
- package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
- package/fesm2022/acorex-components-tag.mjs +7 -7
- package/fesm2022/acorex-components-tag.mjs.map +1 -1
- package/fesm2022/acorex-components-text-area.mjs +7 -7
- package/fesm2022/acorex-components-text-area.mjs.map +1 -1
- package/fesm2022/acorex-components-text-box.mjs +7 -7
- package/fesm2022/acorex-components-text-box.mjs.map +1 -1
- package/fesm2022/acorex-components-time-duration.mjs +7 -7
- package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
- package/fesm2022/acorex-components-time-line.mjs +10 -10
- package/fesm2022/acorex-components-time-line.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +14 -14
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/fesm2022/acorex-components-toolbar.mjs +7 -7
- package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +10 -10
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +54 -14
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-uploader.mjs +13 -13
- package/fesm2022/acorex-components-uploader.mjs.map +1 -1
- package/fesm2022/acorex-components-video-player.mjs +7 -7
- package/fesm2022/acorex-components-video-player.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +691 -295
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/fesm2022/acorex-components.mjs.map +1 -1
- package/highlight/README.md +13 -0
- package/inline-reaction/README.md +3 -0
- package/lookup/README.md +1 -1
- package/message/README.md +3 -0
- package/message-status/README.md +3 -0
- package/message-time/README.md +3 -0
- package/package.json +48 -13
- package/reaction/README.md +3 -0
- package/types/acorex-components-action-sheet.d.ts +1 -1
- package/types/acorex-components-audio-wave.d.ts +8 -0
- package/types/acorex-components-bubble.d.ts +31 -0
- package/types/acorex-components-button-group.d.ts +4 -0
- package/types/acorex-components-button.d.ts +75 -10
- package/types/acorex-components-calendar.d.ts +13 -4
- package/types/acorex-components-check-box.d.ts +1 -1
- package/types/acorex-components-code-editor.d.ts +4 -1
- package/types/acorex-components-color-box.d.ts +1 -1
- package/types/acorex-components-color-palette.d.ts +2 -2
- package/types/acorex-components-combo-box.d.ts +21 -2
- package/types/acorex-components-command.d.ts +3 -1
- package/types/acorex-components-conversation.d.ts +550 -242
- package/types/acorex-components-cron-job.d.ts +6 -6
- package/types/acorex-components-data-pager.d.ts +27 -9
- package/types/acorex-components-data-table.d.ts +226 -21
- package/types/acorex-components-datetime-box.d.ts +1 -1
- package/types/acorex-components-datetime-picker.d.ts +1 -1
- package/types/acorex-components-decorators.d.ts +15 -33
- package/types/acorex-components-dialog.d.ts +1 -1
- package/types/acorex-components-dropdown-button.d.ts +2 -1
- package/types/acorex-components-dropdown.d.ts +6 -1
- package/types/acorex-components-editor.d.ts +1 -1
- package/types/acorex-components-emoji.d.ts +42 -0
- package/types/acorex-components-emojipicker.d.ts +146 -0
- package/types/acorex-components-file-viewer.d.ts +14 -2
- package/types/acorex-components-highlight.d.ts +31 -0
- package/types/acorex-components-image-editor.d.ts +19 -2
- package/types/acorex-components-inline-reaction.d.ts +52 -0
- package/types/acorex-components-list.d.ts +12 -0
- package/types/acorex-components-loading-dialog.d.ts +1 -1
- package/types/acorex-components-loading.d.ts +1 -1
- package/types/acorex-components-lookup.d.ts +227 -79
- package/types/acorex-components-map.d.ts +7 -2
- package/types/acorex-components-media-viewer.d.ts +4 -3
- package/types/acorex-components-menu.d.ts +17 -5
- package/types/acorex-components-message-status.d.ts +23 -0
- package/types/acorex-components-message-time.d.ts +19 -0
- package/types/acorex-components-message.d.ts +59 -0
- package/types/acorex-components-notification.d.ts +1 -1
- package/types/acorex-components-number-box.d.ts +2 -1
- package/types/acorex-components-otp.d.ts +1 -1
- package/types/acorex-components-page.d.ts +2 -2
- package/types/acorex-components-paint.d.ts +2 -2
- package/types/acorex-components-password-box.d.ts +1 -1
- package/types/acorex-components-phone-box.d.ts +1 -1
- package/types/acorex-components-popover.d.ts +13 -1
- package/types/acorex-components-popup.d.ts +183 -50
- package/types/acorex-components-rail-navigation.d.ts +1 -1
- package/types/acorex-components-range-slider.d.ts +1 -1
- package/types/acorex-components-reaction.d.ts +85 -0
- package/types/acorex-components-rest-api-generator.d.ts +1 -1
- package/types/acorex-components-rrule.d.ts +1 -1
- package/types/acorex-components-scheduler-picker.d.ts +1 -1
- package/types/acorex-components-scheduler.d.ts +1 -1
- package/types/acorex-components-search-box.d.ts +1 -1
- package/types/acorex-components-selection-list.d.ts +1 -1
- package/types/acorex-components-side-menu.d.ts +6 -8
- package/types/acorex-components-slider.d.ts +1 -1
- package/types/acorex-components-step-wizard.d.ts +4 -4
- package/types/acorex-components-switch.d.ts +1 -1
- package/types/acorex-components-tabs.d.ts +109 -19
- package/types/acorex-components-tag-box.d.ts +2 -2
- package/types/acorex-components-text-area.d.ts +1 -1
- package/types/acorex-components-text-box.d.ts +1 -1
- package/types/acorex-components-time-duration.d.ts +1 -1
- package/types/acorex-components-toast.d.ts +1 -1
- package/types/acorex-components-tree-view.d.ts +23 -1
- package/types/acorex-components-wysiwyg.d.ts +426 -77
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-EiqMwr9v.mjs +0 -16862
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-EiqMwr9v.mjs.map +0 -1
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-D4ca9Mvt.mjs +0 -51
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-D4ca9Mvt.mjs.map +0 -1
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-QVs1XWYf.mjs +0 -85
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-QVs1XWYf.mjs.map +0 -1
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-C7BnTUw2.mjs +0 -210
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-C7BnTUw2.mjs.map +0 -1
- package/fesm2022/acorex-components-flow-chart.mjs +0 -735
- package/fesm2022/acorex-components-flow-chart.mjs.map +0 -1
- package/fesm2022/acorex-components-query-builder.mjs +0 -267
- package/fesm2022/acorex-components-query-builder.mjs.map +0 -1
- package/flow-chart/README.md +0 -3
- package/query-builder/README.md +0 -3
- package/types/acorex-components-flow-chart.d.ts +0 -187
- package/types/acorex-components-query-builder.d.ts +0 -52
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-wysiwyg.mjs","sources":["../../../../packages/components/wysiwyg/src/lib/wysiwyg-toolbar/wysiwyg-toolbar.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-toolbar/wysiwyg-toolbar.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-view/wysiwyg-view.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-view/wysiwyg-view.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg.service.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-container/wysiwyg-container.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-container/wysiwyg-container.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg.module.ts","../../../../packages/components/wysiwyg/src/acorex-components-wysiwyg.ts"],"sourcesContent":["import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ElementRef, viewChild, ViewEncapsulation } from '@angular/core';\n\n/**\n * @category Components\n * A component for viewing WYSIWYG content.\n */\n@Component({\n selector: 'ax-wysiwyg-toolbar',\n templateUrl: './wysiwyg-toolbar.component.html',\n encapsulation: ViewEncapsulation.None,\n\n providers: [{ provide: AXComponent, useExisting: AXWysiwygToolbarComponent }],\n styleUrl: 'wysiwyg-toolbar.component.css',\n})\nexport class AXWysiwygToolbarComponent {\n toolbar = viewChild<ElementRef<HTMLDivElement>>('toolbar');\n}\n","<div #toolbar class=\"ax-wysiwyg-toolbar-content\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ElementRef, viewChild, ViewEncapsulation } from '@angular/core';\n\n/**\n * @category Components\n * A component for viewing WYSIWYG content.\n */\n@Component({\n selector: 'ax-wysiwyg-view',\n templateUrl: './wysiwyg-view.component.html',\n encapsulation: ViewEncapsulation.None,\n\n providers: [{ provide: AXComponent, useExisting: AXWysiwygViewComponent }],\n styleUrl: 'wysiwyg-view.component.css',\n})\nexport class AXWysiwygViewComponent {\n editor = viewChild<ElementRef<HTMLDivElement>>('editor');\n}\n","<div #editor></div>\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class WysiwygService {\n selectedColor = signal('');\n selectedBackgroundColor = signal('');\n}\n","import {\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Component,\n HostBinding,\n OnDestroy,\n PLATFORM_ID,\n ViewEncapsulation,\n afterNextRender,\n contentChild,\n effect,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { QuillDeltaToHtmlConverter } from 'quill-delta-to-html';\nimport type Quill from 'quill/quill.d.ts';\nimport { AXWysiwygToolbarComponent } from '../wysiwyg-toolbar/wysiwyg-toolbar.component';\nimport { AXWysiwygViewComponent } from '../wysiwyg-view/wysiwyg-view.component';\nimport { WysiwygService } from '../wysiwyg.service';\n\n/**\n * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-container',\n templateUrl: './wysiwyg-container.component.html',\n styleUrl: './wysiwyg-container.component.css',\n inputs: ['look', 'readonly', 'disabled', 'value'],\n outputs: ['onValueChanged'],\n\n encapsulation: ViewEncapsulation.None,\n host: {\n '[style.--ax-comp-wysiwyg-initial-line]': 'initialLine() + \"\"',\n },\n providers: [\n WysiwygService,\n { provide: AXComponent, useExisting: AXWysiwygContainerComponent },\n { provide: AXFocusableComponent, useExisting: AXWysiwygContainerComponent },\n { provide: AXValuableComponent, useExisting: AXWysiwygContainerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXWysiwygContainerComponent),\n multi: true,\n },\n ],\n})\nexport class AXWysiwygContainerComponent\n extends classes(MXInputBaseValueComponent<string>, MXLookComponent)\n implements OnDestroy\n{\n /**\n * Specifies the placeholder text.\n *\n */\n placeHolder = input<string>();\n\n /**\n * Specifies the initial editor height in number of text lines.\n *\n */\n initialLine = input(3);\n\n private wysiwygService = inject(WysiwygService);\n protected isQuillLoaded = signal(false);\n private isEditorClean = signal(true);\n private wysiwyg = signal<Quill | null>(null);\n private container = contentChild(AXWysiwygViewComponent);\n private toolbar = contentChild(AXWysiwygToolbarComponent);\n private platformId = inject(PLATFORM_ID);\n private changeHandlerTimer: any = null;\n\n #init = afterNextRender(async () => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const Quill = (await import('quill')).default;\n const icons = Quill.import('ui/icons') as any;\n\n icons['bold'] = '<ax-icon class=\"ax-icon ax-icon-bold\"></ax-icon>';\n icons['italic'] = '<ax-icon class=\"ax-icon ax-icon-italic\"></ax-icon>';\n icons['underline'] = '<ax-icon class=\"ax-icon ax-icon-under-line\"></ax-icon>';\n icons['strike'] = '<ax-icon class=\"ax-icon ax-icon-strike\"></ax-icon>';\n icons['code-block'] = '<ax-icon class=\"ax-icon ax-icon-code\"></ax-icon>';\n icons['color'] = '<ax-icon class=\"ax-icon ax-icon-color-palette\"></ax-icon>';\n icons['background'] = '<ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>';\n icons.list['ordered'] = '<ax-icon class=\"ax-icon ax-icon-order-list\"></ax-icon>';\n icons.list['bullet'] = '<ax-icon class=\"ax-icon ax-icon-un-order-list\"></ax-icon>';\n icons['image'] = ' <ax-icon class=\"ax-icon ax-icon-image\"></ax-icon>';\n icons['link'] = '<ax-icon class=\"ax-icon ax-icon-link\"></ax-icon>';\n icons['video'] = '<ax-icon class=\"ax-icon ax-icon-attach\"></ax-icon>';\n icons.direction[''] = '<ax-icon class=\"ax-icon ax-icon-paragraph \"> </ax-icon>';\n icons.direction['rtl'] = '';\n icons.align[''] = '<ax-icon class=\"ax-icon ax-icon-align-left \"></ax-icon>';\n icons.align['center'] = '<ax-icon class=\"ax-icon ax-icon-align-center\"></ax-icon>';\n icons.align['justify'] = '<ax-icon class=\"ax-icon ax-icon-align-justify\"></ax-icon>';\n icons.align['right'] = '<ax-icon class=\"ax-icon ax-icon-align-right\"></ax-icon>';\n icons.undo = '<ax-icon class=\"ax-icon ax-icon-undo\"></ax-icon>';\n icons.redo = ' <ax-icon class=\"ax-icon ax-icon-redo\"></ax-icon>';\n\n await import('quill').then(async (e) => {\n const hljs = (await import('highlight.js')).default;\n const quill = new e.default(this.container().editor().nativeElement, {\n modules: {\n syntax: { hljs },\n toolbar: {\n container: this.toolbar()?.toolbar().nativeElement,\n handlers: {\n undo() {\n (quill.getModule('history') as any).undo();\n },\n redo() {\n (quill.getModule('history') as any).redo();\n },\n color: (value) => {\n this.wysiwygService.selectedColor.set(value);\n if (value) quill.format('color', value);\n else quill.format('color', false);\n },\n background: (value) => {\n this.wysiwygService.selectedBackgroundColor.set(value);\n if (value) quill.format('background', value);\n else quill.format('background', false);\n },\n },\n },\n history: {\n delay: 500, // ms between stack snapshots\n maxStack: 200, // undo/redo depth\n userOnly: true, // only record user changes (not API changes)\n },\n },\n\n theme: 'snow',\n });\n this.wysiwyg.set(quill);\n this.isQuillLoaded.set(true);\n });\n\n this.disabledChange.subscribe((disabled) => {\n if (disabled) {\n this.wysiwyg().disable();\n } else {\n this.wysiwyg().enable();\n }\n });\n\n this.readonlyChange.subscribe((readonly) => {\n if (readonly) {\n this.wysiwyg().disable();\n } else {\n this.wysiwyg().enable();\n }\n });\n });\n\n #effect1 = effect(() => {\n if (!this.isQuillLoaded()) return;\n if (this.placeHolder()) {\n this.wysiwyg().root.setAttribute('data-placeholder', this.placeHolder());\n } else {\n this.wysiwyg().root.setAttribute('data-placeholder', 'Write Your Message ...');\n }\n });\n\n #effect2 = effect(() => {\n if (this.isQuillLoaded() && this.value) this.setWysiwygContent(this.value);\n });\n\n #effect3 = effect(() => {\n if (this.isQuillLoaded()) {\n this.wysiwyg().on('text-change', this.changeHandler.bind(this));\n this.wysiwyg().on('selection-change', (range, oldRange) => {\n if (this.disabled) return;\n if (range && !oldRange) {\n this.emitOnFocusEvent();\n } else if (!range && oldRange) {\n this.emitOnBlurEvent();\n }\n if (range) {\n const format = this.wysiwyg().getFormat(range);\n this.wysiwygService.selectedColor.set(format['color'] as string);\n this.wysiwygService.selectedBackgroundColor.set(format['background'] as string);\n }\n });\n }\n });\n\n protected changeHandler() {\n if (this.disabled) return;\n\n if (this.changeHandlerTimer) {\n clearTimeout(this.changeHandlerTimer);\n }\n\n this.changeHandlerTimer = setTimeout(() => {\n const value = this.wysiwyg()?.root.innerHTML;\n\n if (value === '<p><br></p>' || !value) {\n this.commitValue(null);\n if (this.isEditorClean()) return;\n this.isEditorClean.set(true);\n } else {\n const delta = this.wysiwyg()?.getContents().ops;\n\n const converter = new QuillDeltaToHtmlConverter(delta, {\n inlineStyles: true,\n allowBackgroundClasses: true,\n });\n\n const html = converter.convert();\n this.commitValue(html, true);\n if (!this.isEditorClean()) return;\n this.isEditorClean.set(false);\n }\n }, 300);\n }\n\n /** @ignore */\n override ngOnDestroy(): void {\n this.wysiwyg()?.off('text-change', this.changeHandler);\n this.disabledChange.unsubscribe();\n }\n\n /**\n * Focuses the component.\n *\n * @returns void - No return value. The component gains focus.\n */\n override focus() {\n this.wysiwyg().focus();\n }\n\n /**\n * Removes focus from the component.\n *\n * @returns void - No return value. The component loses focus.\n */\n override blur() {\n this.wysiwyg().blur();\n }\n\n /**\n * Checks if the component is focused or has any focused element.\n *\n * @returns boolean - True if the component has focus.\n */\n override hasFocus(): boolean {\n return super.hasFocus();\n }\n\n /**\n * Sets the disabled state of the component.\n *\n * @param isDisabled - Whether the component should be disabled.\n * @returns void - No return value.\n */\n // override setDisabledState(isDisabled: boolean): void {\n // super.setDisabledState(isDisabled);\n // }\n\n public setWysiwygContent(value: string) {\n const quill = this.wysiwyg();\n const delta = quill.clipboard.convert({ html: value });\n quill.setContents(delta);\n }\n\n @HostBinding('attr.name')\n private get __hostName(): string {\n return this.name;\n }\n\n @HostBinding('class')\n get __hostClass(): string {\n const style = this.disabled ? 'ax-disable' : '';\n return style;\n }\n}\n","<div class=\"ax-editor-container ax-default {{ look }}\">\n <div class=\"ax-quill-container\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component } from '@angular/core';\n\n/**\n * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-alignment',\n templateUrl: './wysiwyg-alignment.component.html',\n\n imports: [],\n\n providers: [{ provide: AXComponent, useExisting: AXWysiwygAlignmentComponent }],\n})\nexport class AXWysiwygAlignmentComponent {}\n","<span class=\"ql-formats\">\n <select class=\"ql-align\"></select>\n</span>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorColorIndicatorComponent } from '@acorex/components/decorators';\nimport { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { WysiwygService } from '../../wysiwyg.service';\n\n/**\n * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-colors',\n templateUrl: './wysiwyg-colors.component.html',\n\n encapsulation: ViewEncapsulation.None,\n imports: [AXDecoratorColorIndicatorComponent],\n\n providers: [{ provide: AXComponent, useExisting: AXWysiwygColorsComponent }],\n})\nexport class AXWysiwygColorsComponent {\n protected wysiwygService = inject(WysiwygService);\n}\n","<div class=\"flex\">\n <div class=\"ql-formats\">\n <ax-color-indicator [previewColor]=\"wysiwygService.selectedColor()\"></ax-color-indicator>\n <select class=\"ql-color\"></select>\n </div>\n <div class=\"ql-formats\">\n <ax-color-indicator [previewColor]=\"wysiwygService.selectedBackgroundColor()\"></ax-color-indicator>\n <select class=\"ql-background\"></select>\n </div>\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component } from '@angular/core';\n\n/**\n * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-font-style',\n templateUrl: './wysiwyg-font-style.component.html',\n imports: [],\n\n providers: [{ provide: AXComponent, useExisting: AXWysiwygFontStyleComponent }],\n})\nexport class AXWysiwygFontStyleComponent {}\n","<div class=\"flex\">\n <span class=\"ql-formats\">\n <button class=\"ql-bold\" title=\"Bold\"></button>\n <button class=\"ql-italic\" title=\"Italic\"></button>\n <button class=\"ql-underline\" title=\"Underline\"></button>\n <button class=\"ql-strike\" title=\"Strikethrough\"></button>\n <button class=\"ql-code-block\" title=\"Code block\"></button>\n </span>\n\n <span class=\"ql-formats\">\n <select class=\"ql-size\">\n <option value=\"small\"></option>\n <option selected></option>\n <option value=\"large\"></option>\n <option value=\"huge\"></option>\n </select>\n </span>\n\n <span class=\"ql-formats\">\n <select class=\"ql-header\">\n <option value=\"1\">H1</option>\n <option value=\"2\">H2</option>\n <option value=\"3\">H3</option>\n <option value=\"4\">H4</option>\n <option value=\"5\">H5</option>\n <option value=\"6\">H6</option>\n <option selected></option>\n </select>\n </span>\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-history',\n templateUrl: './wysiwyg-history.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n\n providers: [{ provide: AXComponent, useExisting: AXWysiwygHistoryComponent }],\n})\nexport class AXWysiwygHistoryComponent {}\n","<span class=\"ql-formats\">\n <button class=\"ql-undo\"></button>\n <button class=\"ql-redo\"></button>\n</span>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-insert',\n templateUrl: './wysiwyg-insert.component.html',\n\n encapsulation: ViewEncapsulation.None,\n imports: [],\n\n providers: [{ provide: AXComponent, useExisting: AXWysiwygInsertComponent }],\n})\nexport class AXWysiwygInsertComponent {}\n","<span class=\"ql-formats\">\n <button class=\"ql-image\" title=\"Insert image\"></button>\n <button class=\"ql-video\" title=\"Insert video\"></button>\n <button class=\"ql-link\" title=\"Insert link\"></button>\n</span>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-list',\n templateUrl: './wysiwyg-list.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n\n providers: [{ provide: AXComponent, useExisting: AXWysiwygListComponent }],\n})\nexport class AXWysiwygListComponent {}\n","<span class=\"ql-formats\">\n <button class=\"ql-list\" value=\"ordered\" title=\"Ordered list\"></button>\n <button class=\"ql-list\" value=\"bullet\" title=\"Bulleted list\"></button>\n <button class=\"ql-direction\" value=\"rtl\" title=\"Right-to-left\"></button>\n</span>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXColorPaletteModule } from '@acorex/components/color-palette';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXWysiwygContainerComponent } from './wysiwyg-container/wysiwyg-container.component';\nimport { AXWysiwygToolbarComponent } from './wysiwyg-toolbar/wysiwyg-toolbar.component';\nimport { AXWysiwygAlignmentComponent } from './wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component';\nimport { AXWysiwygColorsComponent } from './wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component';\nimport { AXWysiwygFontStyleComponent } from './wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component';\nimport { AXWysiwygHistoryComponent } from './wysiwyg-tools/wysiwyg-history/wysiwyg-history.component';\nimport { AXWysiwygInsertComponent } from './wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component';\nimport { AXWysiwygListComponent } from './wysiwyg-tools/wysiwyg-list/wysiwyg-list.component';\nimport { AXWysiwygViewComponent } from './wysiwyg-view/wysiwyg-view.component';\n\nconst COMPONENT = [\n AXWysiwygContainerComponent,\n AXWysiwygViewComponent,\n AXWysiwygAlignmentComponent,\n AXWysiwygColorsComponent,\n AXWysiwygFontStyleComponent,\n AXWysiwygHistoryComponent,\n AXWysiwygInsertComponent,\n AXWysiwygListComponent,\n AXWysiwygToolbarComponent,\n];\n\nconst MODULES = [\n AXButtonModule,\n AXDecoratorModule,\n AXSelectBoxModule,\n FormsModule,\n AXColorPaletteModule,\n AXPopoverModule,\n AXTextBoxModule,\n];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXWysiwygModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-wysiwyg.mjs","sources":["../../../../packages/components/wysiwyg/src/lib/wysiwyg-context.service.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-toolbar/wysiwyg-toolbar.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-toolbar/wysiwyg-toolbar.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-i18n.keys.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-view/wysiwyg-view.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-view/wysiwyg-view.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-container/wysiwyg-container.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-container/wysiwyg-container.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-button.util.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-history/wysiwyg-history.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.ts","../../../../packages/components/wysiwyg/src/lib/wysiwyg-tools/wysiwyg-list/wysiwyg-list.component.html","../../../../packages/components/wysiwyg/src/lib/wysiwyg.module.ts","../../../../packages/components/wysiwyg/src/acorex-components-wysiwyg.ts"],"sourcesContent":["import { computed, Injectable, signal } from '@angular/core';\nimport type { AXWysiwygMode } from './wysiwyg.types';\n\n@Injectable()\nexport class AXWysiwygContext {\n readonly disabled = signal(false);\n readonly readonly = signal(false);\n readonly mode = signal<AXWysiwygMode>('compact');\n readonly compact = computed(() => this.mode() === 'compact');\n readonly interactionDisabled = computed(() => this.disabled() || this.readonly());\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n PLATFORM_ID,\n Renderer2,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\ninterface PickerOverlayState {\n picker: HTMLElement;\n options: HTMLElement | null;\n zToken: AXZToken;\n}\n\n/**\n * Toolbar for the WYSIWYG editor.\n * Formatting controls belong in `ax-prefix`. Actions such as submit belong in `ax-suffix`.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-toolbar',\n templateUrl: './wysiwyg-toolbar.component.html',\n styleUrl: './wysiwyg-toolbar.component.css',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygToolbarComponent }],\n})\nexport class AXWysiwygToolbarComponent {\n toolbar = viewChild<ElementRef<HTMLDivElement>>('toolbar');\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly zIndexService = inject(AXZIndexService);\n\n private observer: MutationObserver | null = null;\n private overlayState: PickerOverlayState | null = null;\n private unlistenClick: (() => void) | null = null;\n private clampFrame = 0;\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n this.setupPickerOverlay();\n });\n\n this.destroyRef.onDestroy(() => this.teardownPickerOverlay());\n }\n\n private setupPickerOverlay(): void {\n const toolbarEl = this.toolbar()?.nativeElement;\n if (!toolbarEl) return;\n\n this.observer = new MutationObserver(() => this.syncPickerOverlay());\n this.observer.observe(toolbarEl, {\n attributes: true,\n attributeFilter: ['class'],\n subtree: true,\n });\n\n this.unlistenClick = this.renderer.listen(toolbarEl, 'click', (event: Event) => {\n const target = event.target;\n if (!(target instanceof Element) || !target.closest('.ql-picker-label, .ql-picker-item')) return;\n this.queueClamp();\n });\n }\n\n private syncPickerOverlay(): void {\n const toolbarEl = this.toolbar()?.nativeElement;\n if (!toolbarEl) return;\n\n const expandedPicker = toolbarEl.querySelector<HTMLElement>('.ql-picker.ql-expanded');\n if (!expandedPicker) {\n this.closePickerOverlay();\n return;\n }\n\n if (this.overlayState?.picker !== expandedPicker) {\n this.closePickerOverlay();\n this.openPickerOverlay(expandedPicker);\n }\n\n this.queueClamp();\n }\n\n private openPickerOverlay(picker: HTMLElement): void {\n const zToken = this.zIndexService.acquire();\n this.overlayState = {\n picker,\n options: picker.querySelector<HTMLElement>('.ql-picker-options'),\n zToken,\n };\n\n this.renderer.setStyle(this.host.nativeElement, 'z-index', String(zToken.zIndex));\n this.renderer.setStyle(picker, 'z-index', String(zToken.zIndex));\n }\n\n private closePickerOverlay(): void {\n if (!this.overlayState) return;\n\n const { picker, options, zToken } = this.overlayState;\n this.renderer.removeStyle(this.host.nativeElement, 'z-index');\n this.renderer.removeStyle(picker, 'z-index');\n this.clearPickerOffset(options);\n\n this.zIndexService.release(zToken);\n this.overlayState = null;\n }\n\n private queueClamp(): void {\n cancelAnimationFrame(this.clampFrame);\n this.clampFrame = requestAnimationFrame(() => this.keepPickerInViewport());\n }\n\n /**\n * Keep expanded picker menus inside the viewport horizontally.\n * Vertical direction is handled by CSS (open upward when the toolbar is below the editor).\n */\n private keepPickerInViewport(): void {\n const options = this.overlayState?.options;\n const picker = this.overlayState?.picker;\n if (!options || !picker || !picker.classList.contains('ql-expanded')) return;\n if (picker.classList.contains('ql-color-picker') || picker.classList.contains('ql-icon-picker')) return;\n\n this.renderer.removeStyle(options, 'left');\n\n const pad = 8;\n const viewportWidth = document.documentElement.clientWidth;\n const rect = options.getBoundingClientRect();\n\n if (rect.right > viewportWidth - pad) {\n this.renderer.setStyle(options, 'left', `${options.offsetLeft - (rect.right - (viewportWidth - pad))}px`);\n } else if (rect.left < pad) {\n this.renderer.setStyle(options, 'left', `${options.offsetLeft + (pad - rect.left)}px`);\n }\n }\n\n private clearPickerOffset(options: HTMLElement | null): void {\n if (!options) return;\n this.renderer.removeStyle(options, 'left');\n }\n\n private teardownPickerOverlay(): void {\n cancelAnimationFrame(this.clampFrame);\n this.unlistenClick?.();\n this.unlistenClick = null;\n this.observer?.disconnect();\n this.observer = null;\n this.closePickerOverlay();\n }\n}\n","<div class=\"ax-wysiwyg-toolbar-content\">\n <div #toolbar class=\"ax-wysiwyg-toolbar-tools\" role=\"toolbar\" aria-label=\"Formatting\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n","const SCOPE = '@acorex:wysiwyg';\n\nexport const AX_WYSIWYG_I18N = {\n placeholder: `${SCOPE}.placeholder`,\n menu: {\n blockType: `${SCOPE}.menu.block-type`,\n insert: `${SCOPE}.menu.insert`,\n align: `${SCOPE}.menu.align`,\n },\n tools: {\n undo: `${SCOPE}.tools.undo`,\n redo: `${SCOPE}.tools.redo`,\n bold: `${SCOPE}.tools.bold`,\n italic: `${SCOPE}.tools.italic`,\n underline: `${SCOPE}.tools.underline`,\n strike: `${SCOPE}.tools.strike`,\n code: `${SCOPE}.tools.code`,\n codeBlock: `${SCOPE}.tools.code-block`,\n link: `${SCOPE}.tools.link`,\n image: `${SCOPE}.tools.image`,\n video: `${SCOPE}.tools.video`,\n bulletList: `${SCOPE}.tools.bullet-list`,\n orderedList: `${SCOPE}.tools.ordered-list`,\n rtl: `${SCOPE}.tools.rtl`,\n textColor: `${SCOPE}.tools.text-color`,\n highlight: `${SCOPE}.tools.highlight`,\n paragraph: `${SCOPE}.tools.paragraph`,\n alignLeft: `${SCOPE}.tools.align-left`,\n alignCenter: `${SCOPE}.tools.align-center`,\n alignRight: `${SCOPE}.tools.align-right`,\n alignJustify: `${SCOPE}.tools.align-justify`,\n },\n blocks: {\n paragraph: `${SCOPE}.blocks.paragraph`,\n blockquote: `${SCOPE}.blocks.blockquote`,\n codeBlock: `${SCOPE}.blocks.code-block`,\n bulletList: `${SCOPE}.blocks.bullet-list`,\n orderedList: `${SCOPE}.blocks.ordered-list`,\n image: `${SCOPE}.blocks.image`,\n video: `${SCOPE}.blocks.video`,\n heading: (level: number) => `${SCOPE}.blocks.heading${level}`,\n },\n fontSize: {\n placeholder: `${SCOPE}.font-size.placeholder`,\n small: `${SCOPE}.font-size.small`,\n normal: `${SCOPE}.font-size.normal`,\n large: `${SCOPE}.font-size.large`,\n huge: `${SCOPE}.font-size.huge`,\n },\n insert: {\n linkUrl: `${SCOPE}.insert.link-url`,\n imageUrl: `${SCOPE}.insert.image-url`,\n videoUrl: `${SCOPE}.insert.video-url`,\n apply: `${SCOPE}.insert.apply`,\n remove: `${SCOPE}.insert.remove`,\n insert: `${SCOPE}.insert.insert`,\n },\n} as const;\n","import { AXComponent } from '@acorex/cdk/common';\nimport { Component, ElementRef, viewChild, ViewEncapsulation } from '@angular/core';\n\n/**\n * Editing surface for the WYSIWYG editor.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-view',\n templateUrl: './wysiwyg-view.component.html',\n styleUrl: './wysiwyg-view.component.css',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXWysiwygViewComponent }],\n})\nexport class AXWysiwygViewComponent {\n editor = viewChild<ElementRef<HTMLDivElement>>('editor');\n}\n","<div #editor class=\"ax-wysiwyg-editor-host\"></div>\n","import {\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport { AX_DEFAULT_WYSIWYG_FEATURES, AXWysiwyg } from '@acorex/cdk/wysiwyg';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n Component,\n contentChild,\n DestroyRef,\n effect,\n forwardRef,\n inject,\n input,\n PLATFORM_ID,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { AXWysiwygContext } from '../wysiwyg-context.service';\nimport { AXWysiwygToolbarComponent } from '../wysiwyg-toolbar/wysiwyg-toolbar.component';\nimport { AX_WYSIWYG_I18N } from '../wysiwyg-i18n.keys';\nimport type { AXWysiwygMode } from '../wysiwyg.types';\nimport { AXWysiwygViewComponent } from '../wysiwyg-view/wysiwyg-view.component';\n\n/**\n * A container component for WYSIWYG (What You See Is What You Get) editor functionality.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-container',\n templateUrl: './wysiwyg-container.component.html',\n styleUrl: './wysiwyg-container.component.css',\n inputs: ['look', 'readonly', 'disabled', 'value'],\n outputs: ['onValueChanged'],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[style.--ax-comp-wysiwyg-initial-line]': 'initialLine() + \"\"',\n '[attr.name]': 'name || null',\n '[class.ax-disable]': 'disabled',\n '[class.ax-readonly]': 'readonly && !disabled',\n '[class.ax-wysiwyg-compact]': \"mode() === 'compact'\",\n ngSkipHydration: 'true',\n },\n providers: [\n AXWysiwyg,\n AXWysiwygContext,\n { provide: AXComponent, useExisting: AXWysiwygContainerComponent },\n { provide: AXFocusableComponent, useExisting: AXWysiwygContainerComponent },\n { provide: AXValuableComponent, useExisting: AXWysiwygContainerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXWysiwygContainerComponent),\n multi: true,\n },\n ],\n})\nexport class AXWysiwygContainerComponent extends classes(MXInputBaseValueComponent<string>, MXLookComponent) {\n /**\n * Specifies the placeholder text.\n *\n */\n placeHolder = input<string>();\n\n /**\n * Specifies the initial editor height in number of text lines.\n *\n */\n initialLine = input(3);\n\n /**\n * Toolbar layout: `compact` groups block types and insert actions in a dropdown; `normal` shows all tools inline.\n */\n mode = input<AXWysiwygMode>('compact');\n\n private readonly wysiwyg = inject(AXWysiwyg);\n private readonly context = inject(AXWysiwygContext);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly translation = inject(AXTranslationService);\n private readonly view = contentChild(AXWysiwygViewComponent);\n private readonly toolbar = contentChild(AXWysiwygToolbarComponent);\n\n private lastCommittedHtml: string | null = null;\n private alive = true;\n private changeHandlerTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly syncToolbarMode = effect(() => {\n this.context.mode.set(this.mode());\n });\n\n #init = afterNextRender(() => {\n this.destroyRef.onDestroy(() => {\n this.alive = false;\n if (this.changeHandlerTimer != null) {\n clearTimeout(this.changeHandlerTimer);\n }\n this.wysiwyg.destroy();\n });\n void this.initEditor();\n });\n\n /**\n * Focuses the component.\n *\n * @returns void - No return value. The component gains focus.\n */\n override focus(): void {\n this.wysiwyg.focus();\n }\n\n /**\n * Removes focus from the component.\n *\n * @returns void - No return value. The component loses focus.\n */\n override blur(): void {\n this.wysiwyg.blur();\n }\n\n /**\n * Replaces the editor document. External value updates go through the form binding;\n * this method does not emit a user change.\n */\n public setWysiwygContent(value: string): void {\n this.syncEditorFromValue(value);\n }\n\n /** @ignore */\n protected override internalValueChanged(value: string): void {\n this.syncEditorFromValue(value);\n }\n\n private async initEditor(): Promise<void> {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const editorElement = this.view()?.editor()?.nativeElement;\n if (!editorElement) {\n return;\n }\n\n void this.toolbar();\n\n await this.wysiwyg.init(editorElement, {\n content: this.value ?? '',\n editable: !this.disabled && !this.readonly,\n placeholder:\n this.placeHolder() ||\n this.translation.translateSync(AX_WYSIWYG_I18N.placeholder, { waitForLoad: true }),\n features: AX_DEFAULT_WYSIWYG_FEATURES,\n onUpdate: () => {\n if (this.disabled || this.readonly) {\n return;\n }\n this.scheduleCommit();\n },\n onFocus: () => this.emitOnFocusEvent(),\n onBlur: () => this.emitOnBlurEvent(),\n });\n\n if (!this.alive) {\n return;\n }\n\n this.disabledChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.context.disabled.set(this.disabled);\n this.syncEditable();\n });\n this.readonlyChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.context.readonly.set(this.readonly);\n this.syncEditable();\n });\n this.context.disabled.set(this.disabled);\n this.context.readonly.set(this.readonly);\n\n this.syncEditable();\n this.syncEditorFromValue(this.value);\n }\n\n private scheduleCommit(): void {\n if (this.changeHandlerTimer != null) {\n clearTimeout(this.changeHandlerTimer);\n }\n\n this.changeHandlerTimer = setTimeout(() => {\n this.changeHandlerTimer = null;\n if (this.disabled || this.readonly) {\n return;\n }\n\n if (this.wysiwyg.isEmpty()) {\n this.publishHtml(null);\n return;\n }\n\n this.publishHtml(this.wysiwyg.getHTML());\n }, 300);\n }\n\n private publishHtml(html: string | null): void {\n if (html === this.lastCommittedHtml) {\n return;\n }\n this.lastCommittedHtml = html;\n this.commitValue(html, true);\n }\n\n private syncEditorFromValue(value: string | null | undefined): void {\n if (!this.wysiwyg.ready()) {\n return;\n }\n\n const next = normalizeWysiwygHtml(value);\n if (next === this.lastCommittedHtml) {\n return;\n }\n\n this.lastCommittedHtml = next;\n this.wysiwyg.setContent(next, false);\n }\n\n private syncEditable(): void {\n this.wysiwyg.setEditable(!this.disabled && !this.readonly);\n }\n}\n\nfunction normalizeWysiwygHtml(value: string | null | undefined): string | null {\n if (value == null) {\n return null;\n }\n const trimmed = value.trim();\n if (!trimmed || trimmed === '<p></p>' || trimmed === '<p><br></p>') {\n return null;\n }\n return value;\n}\n","<div\n class=\"ax-editor-container ax-default {{ look }}\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly && !disabled\"\n>\n <div class=\"ax-wysiwyg-editor-inner\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n","import type { AXWysiwygButtonConfig } from './wysiwyg.types';\n\nexport function resolveAXWysiwygButton<T extends string>(\n key: T,\n defaults: AXWysiwygButtonConfig,\n config?: Partial<Record<T, AXWysiwygButtonConfig | false>>,\n): AXWysiwygButtonConfig | null {\n const entry = config?.[key];\n if (entry === false) {\n return null;\n }\n return { ...defaults, ...entry };\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg, type AXWysiwygTextAlign } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent, AXButtonItemComponent, AXButtonItemListComponent } from '@acorex/components/button';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygAlignmentButtonKey = 'left' | 'center' | 'right' | 'justify';\n\n/**\n * Text alignment controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-alignment',\n templateUrl: './wysiwyg-alignment.component.html',\n styleUrl: './wysiwyg-alignment.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n AXButtonComponent,\n AXButtonItemComponent,\n AXButtonItemListComponent,\n AXDecoratorGenericComponent,\n AXDecoratorIconComponent,\n AXDropdownPanelComponent,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygAlignmentComponent }],\n})\nexport class AXWysiwygAlignmentComponent {\n buttons = input<Partial<Record<AXWysiwygAlignmentButtonKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n protected readonly i18n = AX_WYSIWYG_I18N;\n\n protected readonly alignButtons = computed(() => {\n const icons: Record<AXWysiwygAlignmentButtonKey, string> = {\n left: 'ax-icon-align-left',\n center: 'ax-icon-align-center',\n right: 'ax-icon-align-right',\n justify: 'ax-icon-align-justify',\n };\n const tooltips: Record<AXWysiwygAlignmentButtonKey, string> = {\n left: AX_WYSIWYG_I18N.tools.alignLeft,\n center: AX_WYSIWYG_I18N.tools.alignCenter,\n right: AX_WYSIWYG_I18N.tools.alignRight,\n justify: AX_WYSIWYG_I18N.tools.alignJustify,\n };\n return (['left', 'center', 'right', 'justify'] as AXWysiwygTextAlign[])\n .map((align) => {\n const resolved = resolveAXWysiwygButton(\n align,\n { icon: icons[align], tooltip: tooltips[align] },\n this.buttons(),\n );\n return resolved ? { align, config: resolved } : null;\n })\n .filter((item): item is { align: AXWysiwygTextAlign; config: AXWysiwygButtonConfig } => item != null);\n });\n\n protected readonly activeAlignIcon = computed(() => {\n const current = this.state().textAlign ?? 'left';\n return this.alignButtons().find((item) => item.align === current)?.config.icon ?? 'ax-icon-align-left';\n });\n\n protected isAlignActive(align: AXWysiwygTextAlign): boolean {\n const current = this.state().textAlign;\n if (align === 'left') {\n return current === 'left' || current === null;\n }\n return current === align;\n }\n}\n","@if (context.compact()) {\n <div class=\"ax-wysiwyg-tool-group ax-wysiwyg-align-menu-group\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.menu.align | translate | async\"\n [attr.aria-label]=\"i18n.menu.align | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ activeAlignIcon() }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-wysiwyg-align-menu\">\n <ax-title>{{ i18n.menu.align | translate | async }}</ax-title>\n @for (item of alignButtons(); track item.align) {\n <ax-button-item\n [text]=\"item.config.tooltip!\"\n [selected]=\"isAlignActive(item.align)\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.setTextAlign(item.align)\"\n >\n <ax-prefix>\n <ax-icon class=\"ax-icon {{ item.config.icon }}\"></ax-icon>\n </ax-prefix>\n @if (isAlignActive(item.align)) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n} @else {\n <div class=\"ax-wysiwyg-tool-group\">\n @for (item of alignButtons(); track item.align) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"isAlignActive(item.align)\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"item.config.tooltip | translate | async\"\n (onClick)=\"wysiwyg.setTextAlign(item.align)\"\n >\n <ax-icon class=\"ax-icon {{ item.config.icon }}\"></ax-icon>\n </ax-button>\n }\n </div>\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport {\n AXColorPaletteComponent,\n AXColorPaletteInputComponent,\n AXColorPalettePickerComponent,\n AXColorPaletteSwatchesComponent,\n} from '@acorex/components/color-palette';\nimport { AXDecoratorColorIndicatorComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygColorsButtonKey = 'textColor' | 'highlight';\n\n/**\n * Text and highlight color controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-colors',\n templateUrl: './wysiwyg-colors.component.html',\n styleUrl: './wysiwyg-colors.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n FormsModule,\n AXButtonComponent,\n AXDecoratorIconComponent,\n AXDecoratorColorIndicatorComponent,\n AXPopoverComponent,\n AXColorPaletteComponent,\n AXColorPalettePickerComponent,\n AXColorPaletteSwatchesComponent,\n AXColorPaletteInputComponent,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygColorsComponent }],\n})\nexport class AXWysiwygColorsComponent {\n buttons = input<Partial<Record<AXWysiwygColorsButtonKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly clearLabel = '@acorex:common.general.clear';\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n\n protected readonly textColorButton = computed(() =>\n resolveAXWysiwygButton(\n 'textColor',\n { icon: 'ax-icon-color-palette', tooltip: AX_WYSIWYG_I18N.tools.textColor },\n this.buttons(),\n ),\n );\n protected readonly highlightButton = computed(() =>\n resolveAXWysiwygButton('highlight', { icon: 'ax-icon-highlight', tooltip: AX_WYSIWYG_I18N.tools.highlight }, this.buttons()),\n );\n\n protected readonly draftTextColor = signal('#111827');\n protected readonly draftHighlightColor = signal('#fef08a');\n}\n","<div class=\"ax-wysiwyg-tool-group\">\n @if (textColorButton(); as btn) {\n <div class=\"ax-wysiwyg-color-control\">\n <ax-button\n class=\"ax-sm\"\n #textColorTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().textColor\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n <ax-color-indicator\n class=\"ax-wysiwyg-swatch ax-wysiwyg-text-swatch\"\n [previewColor]=\"state().textColor || 'currentColor'\"\n ></ax-color-indicator>\n </ax-button>\n <ax-popover [target]=\"textColorTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-color-panel ax-md\">\n <ax-color-palette\n [ngModel]=\"draftTextColor()\"\n (ngModelChange)=\"draftTextColor.set($event); wysiwyg.setColor($event)\"\n >\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-swatches></ax-color-palette-swatches>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n <ax-button\n look=\"flat\"\n [text]=\"clearLabel\"\n [disabled]=\"!state().textColor\"\n (onClick)=\"wysiwyg.unsetColor()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (highlightButton(); as btn) {\n <div class=\"ax-wysiwyg-color-control\">\n <ax-button\n class=\"ax-sm\"\n #highlightTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().highlightColor\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n <ax-color-indicator\n class=\"ax-wysiwyg-swatch ax-wysiwyg-highlight-swatch\"\n [previewColor]=\"state().highlightColor || '#fef08a'\"\n ></ax-color-indicator>\n </ax-button>\n <ax-popover [target]=\"highlightTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-color-panel ax-md\">\n <ax-color-palette\n [ngModel]=\"draftHighlightColor()\"\n (ngModelChange)=\"draftHighlightColor.set($event); wysiwyg.setHighlight($event)\"\n >\n <ax-color-palette-picker></ax-color-palette-picker>\n <ax-color-palette-swatches></ax-color-palette-swatches>\n <ax-color-palette-input></ax-color-palette-input>\n </ax-color-palette>\n <ax-button\n look=\"flat\"\n [text]=\"clearLabel\"\n [disabled]=\"!state().highlightColor\"\n (onClick)=\"wysiwyg.unsetHighlight()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg, type AXWysiwygHeadingLevel } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXButtonItemComponent, AXButtonItemListComponent } from '@acorex/components/button';\nimport { AXComboBoxComponent, type AXComboBoxItem, type AXComboBoxValue } from '@acorex/components/combo-box';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownPanelComponent } from '@acorex/components/dropdown';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXTextBoxComponent } from '@acorex/components/text-box';\nimport { AXTranslatorPipe, toTranslatedSignal } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygFontStyleButtonKey =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strike'\n | 'code'\n | 'codeBlock';\n\nexport type AXWysiwygBlockMenuItemKey =\n | 'paragraph'\n | 'blockquote'\n | 'codeBlock'\n | 'bulletList'\n | 'orderedList'\n | 'image'\n | 'video'\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'heading4'\n | 'heading5'\n | 'heading6';\n\nconst HEADING_MENU_KEYS: Record<AXWysiwygHeadingLevel, AXWysiwygBlockMenuItemKey> = {\n 1: 'heading1',\n 2: 'heading2',\n 3: 'heading3',\n 4: 'heading4',\n 5: 'heading5',\n 6: 'heading6',\n};\n\n/**\n * Font style, size, and heading controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-font-style',\n templateUrl: './wysiwyg-font-style.component.html',\n styleUrl: './wysiwyg-font-style.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n FormsModule,\n AXButtonComponent,\n AXButtonItemComponent,\n AXButtonItemListComponent,\n AXComboBoxComponent,\n AXDecoratorGenericComponent,\n AXDecoratorIconComponent,\n AXDropdownPanelComponent,\n AXPopoverComponent,\n AXTextBoxComponent,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygFontStyleComponent }],\n})\nexport class AXWysiwygFontStyleComponent {\n headingLevels = input<AXWysiwygHeadingLevel[]>([1, 2, 3, 4, 5, 6]);\n buttons = input<Partial<Record<AXWysiwygFontStyleButtonKey, AXWysiwygButtonConfig | false>>>();\n menuItems = input<Partial<Record<AXWysiwygBlockMenuItemKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n\n protected readonly i18n = AX_WYSIWYG_I18N;\n\n private readonly insertPopover = viewChild<AXPopoverComponent>('insertPopover');\n\n protected readonly insertUrl = signal('');\n protected readonly insertKind = signal<'image' | 'video' | null>(null);\n\n protected readonly boldButton = computed(() =>\n resolveAXWysiwygButton('bold', { icon: 'ax-icon-bold', tooltip: AX_WYSIWYG_I18N.tools.bold }, this.buttons()),\n );\n protected readonly italicButton = computed(() =>\n resolveAXWysiwygButton('italic', { icon: 'ax-icon-italic', tooltip: AX_WYSIWYG_I18N.tools.italic }, this.buttons()),\n );\n protected readonly underlineButton = computed(() =>\n resolveAXWysiwygButton(\n 'underline',\n { icon: 'ax-icon-under-line', tooltip: AX_WYSIWYG_I18N.tools.underline },\n this.buttons(),\n ),\n );\n protected readonly strikeButton = computed(() =>\n resolveAXWysiwygButton('strike', { icon: 'ax-icon-strike', tooltip: AX_WYSIWYG_I18N.tools.strike }, this.buttons()),\n );\n protected readonly codeButton = computed(() =>\n resolveAXWysiwygButton('code', { icon: 'ax-icon-code', tooltip: AX_WYSIWYG_I18N.tools.code }, this.buttons()),\n );\n protected readonly codeBlockButton = computed(() =>\n resolveAXWysiwygButton(\n 'codeBlock',\n { icon: 'ax-icon-code', tooltip: AX_WYSIWYG_I18N.tools.codeBlock },\n this.buttons(),\n ),\n );\n\n protected readonly paragraphMenuItem = computed(() =>\n resolveAXWysiwygButton('paragraph', { text: AX_WYSIWYG_I18N.blocks.paragraph }, this.menuItems()),\n );\n protected readonly blockquoteMenuItem = computed(() =>\n resolveAXWysiwygButton('blockquote', { text: AX_WYSIWYG_I18N.blocks.blockquote }, this.menuItems()),\n );\n protected readonly codeBlockMenuItem = computed(() =>\n resolveAXWysiwygButton('codeBlock', { text: AX_WYSIWYG_I18N.blocks.codeBlock }, this.menuItems()),\n );\n protected readonly bulletListMenuItem = computed(() =>\n resolveAXWysiwygButton('bulletList', { text: AX_WYSIWYG_I18N.blocks.bulletList }, this.menuItems()),\n );\n protected readonly orderedListMenuItem = computed(() =>\n resolveAXWysiwygButton('orderedList', { text: AX_WYSIWYG_I18N.blocks.orderedList }, this.menuItems()),\n );\n protected readonly imageMenuItem = computed(() =>\n resolveAXWysiwygButton('image', { text: AX_WYSIWYG_I18N.blocks.image }, this.menuItems()),\n );\n protected readonly videoMenuItem = computed(() =>\n resolveAXWysiwygButton('video', { text: AX_WYSIWYG_I18N.blocks.video }, this.menuItems()),\n );\n\n protected readonly headingButtons = computed(() =>\n this.headingLevels().map((level) => ({\n level,\n label: `H${level}`,\n menuKey: HEADING_MENU_KEYS[level],\n config: resolveAXWysiwygButton(\n HEADING_MENU_KEYS[level],\n { text: AX_WYSIWYG_I18N.blocks.heading(level) },\n this.menuItems(),\n ),\n })),\n );\n\n protected readonly fontSizeItems = computed<AXComboBoxItem[]>(() => [\n { id: 'small', text: AX_WYSIWYG_I18N.fontSize.small, value: 'small' },\n { id: 'normal', text: AX_WYSIWYG_I18N.fontSize.normal, value: 'normal' },\n { id: 'large', text: AX_WYSIWYG_I18N.fontSize.large, value: 'large' },\n { id: 'huge', text: AX_WYSIWYG_I18N.fontSize.huge, value: 'huge' },\n ]);\n\n protected readonly fontSizeComboValue = computed(() => this.state().fontSize ?? 'normal');\n\n protected readonly blockLabelSource = computed(() => {\n const s = this.state();\n if (s.orderedList) {\n return this.orderedListMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.orderedList;\n }\n if (s.bulletList) {\n return this.bulletListMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.bulletList;\n }\n if (s.blockquote) {\n return this.blockquoteMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.blockquote;\n }\n if (s.codeBlock) {\n return this.codeBlockMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.codeBlock;\n }\n if (s.headingLevel) {\n const heading = this.headingButtons().find((h) => h.level === s.headingLevel);\n return heading?.config?.text ?? AX_WYSIWYG_I18N.blocks.heading(s.headingLevel);\n }\n return this.paragraphMenuItem()?.text ?? AX_WYSIWYG_I18N.blocks.paragraph;\n });\n\n protected readonly blockLabel = toTranslatedSignal(this.blockLabelSource);\n\n protected readonly insertPlaceholderSource = computed(() =>\n this.insertKind() === 'video' ? AX_WYSIWYG_I18N.insert.videoUrl : AX_WYSIWYG_I18N.insert.imageUrl,\n );\n\n protected readonly insertPlaceholder = toTranslatedSignal(this.insertPlaceholderSource);\n\n protected isHeadingActive(level: AXWysiwygHeadingLevel): boolean {\n return this.state().headingLevel === level;\n }\n\n protected isParagraphActive(): boolean {\n const s = this.state();\n return !s.headingLevel && !s.bulletList && !s.orderedList && !s.blockquote && !s.codeBlock;\n }\n\n protected onFontSizeComboChange(value: AXComboBoxValue): void {\n if (value == null || value === 'normal') {\n this.wysiwyg.setFontSize(null);\n return;\n }\n if (value === 'small' || value === 'large' || value === 'huge') {\n this.wysiwyg.setFontSize(value);\n }\n }\n\n protected beginInsert(kind: 'image' | 'video'): void {\n this.insertKind.set(kind);\n this.insertUrl.set('');\n queueMicrotask(() => this.insertPopover()?.open());\n }\n\n protected applyInsert(): void {\n const url = this.insertUrl().trim();\n if (!url) {\n return;\n }\n if (this.insertKind() === 'image') {\n this.wysiwyg.insertImage(url);\n } else if (this.insertKind() === 'video') {\n this.wysiwyg.insertVideo(url);\n }\n this.insertPopover()?.close();\n this.insertUrl.set('');\n this.insertKind.set(null);\n }\n}\n","@if (context.compact()) {\n <div class=\"ax-wysiwyg-tool-group ax-wysiwyg-block-menu-group\">\n <ax-button\n #blockMenuTrigger\n class=\"ax-sm ax-wysiwyg-block-menu-trigger\"\n look=\"blank\"\n [text]=\"blockLabel()\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.menu.blockType | translate | async\"\n >\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-chevron-down\"></ax-icon>\n </ax-suffix>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-wysiwyg-block-menu\">\n <ax-title>{{ i18n.menu.blockType | translate | async }}</ax-title>\n @if (paragraphMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"isParagraphActive()\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.setParagraph()\"\n >\n @if (isParagraphActive()) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @for (heading of headingButtons(); track heading.level) {\n @if (heading.config; as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"isHeadingActive(heading.level)\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleHeading(heading.level)\"\n >\n @if (isHeadingActive(heading.level)) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n }\n @if (blockquoteMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().blockquote\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleBlockquote()\"\n >\n @if (state().blockquote) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (codeBlockMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().codeBlock\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleCodeBlock()\"\n >\n @if (state().codeBlock) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (bulletListMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().bulletList\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleBulletList()\"\n >\n @if (state().bulletList) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (orderedListMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [selected]=\"state().orderedList\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"wysiwyg.toggleOrderedList()\"\n >\n @if (state().orderedList) {\n <ax-suffix>\n <ax-icon class=\"ax-icon ax-icon-check\"></ax-icon>\n </ax-suffix>\n }\n </ax-button-item>\n }\n\n <ax-divider></ax-divider>\n <ax-title>{{ i18n.menu.insert | translate | async }}</ax-title>\n @if (imageMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"beginInsert('image')\"\n ></ax-button-item>\n }\n @if (videoMenuItem(); as item) {\n <ax-button-item\n [text]=\"item.text!\"\n [disabled]=\"context.interactionDisabled()\"\n (onClick)=\"beginInsert('video')\"\n ></ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-popover\n #insertPopover\n [target]=\"blockMenuTrigger\"\n openOn=\"manual\"\n closeOn=\"clickOut\"\n placement=\"bottom-start\"\n >\n <div class=\"ax-wysiwyg-block-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"insertPlaceholder()\"\n [ngModel]=\"insertUrl()\"\n (ngModelChange)=\"insertUrl.set($event)\"\n ></ax-text-box>\n <ax-button\n look=\"flat\"\n [text]=\"i18n.insert.insert\"\n (onClick)=\"applyInsert()\"\n ></ax-button>\n </div>\n </ax-popover>\n </div>\n}\n\n<div class=\"ax-wysiwyg-tool-group\">\n @if (boldButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().bold\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleBold()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (italicButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().italic\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleItalic()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (underlineButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().underline\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleUnderline()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (strikeButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().strike\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleStrike()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (context.compact()) {\n @if (codeButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().code\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleCode()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n } @else if (codeBlockButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().codeBlock\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleCodeBlock()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n\n<div class=\"ax-wysiwyg-tool-group ax-wysiwyg-font-size-group\">\n <ax-combo-box\n class=\"ax-wysiwyg-font-size-combo ax-sm\"\n [items]=\"fontSizeItems()\"\n [searchable]=\"false\"\n [adaptivityEnabled]=\"false\"\n look=\"blank\"\n [placeholder]=\"i18n.fontSize.placeholder\"\n name=\"wysiwyg-font-size\"\n [disabled]=\"context.interactionDisabled()\"\n [ngModel]=\"fontSizeComboValue()\"\n (ngModelChange)=\"onFontSizeComboChange($event)\"\n ></ax-combo-box>\n</div>\n\n@if (!context.compact()) {\n <div class=\"ax-wysiwyg-tool-group\">\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n text=\"P\"\n [toggleable]=\"true\"\n [selected]=\"isParagraphActive()\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"i18n.tools.paragraph | translate | async\"\n [attr.aria-label]=\"i18n.tools.paragraph | translate | async\"\n (onClick)=\"wysiwyg.setParagraph()\"\n ></ax-button>\n @for (item of headingButtons(); track item.level) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [text]=\"item.label\"\n [toggleable]=\"true\"\n [selected]=\"isHeadingActive(item.level)\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"(item.config?.text ?? i18n.blocks.heading(item.level)) | translate | async\"\n [attr.aria-label]=\"(item.config?.text ?? i18n.blocks.heading(item.level)) | translate | async\"\n (onClick)=\"wysiwyg.toggleHeading(item.level)\"\n ></ax-button>\n }\n </div>\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygHistoryButtonKey = 'undo' | 'redo';\n\n/**\n * Undo and redo controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-history',\n templateUrl: './wysiwyg-history.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXButtonComponent, AXDecoratorIconComponent, AXTranslatorPipe],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygHistoryComponent }],\n})\nexport class AXWysiwygHistoryComponent {\n buttons = input<Partial<Record<AXWysiwygHistoryButtonKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n\n protected readonly undoButton = computed(() =>\n resolveAXWysiwygButton('undo', { icon: 'ax-icon-undo', tooltip: AX_WYSIWYG_I18N.tools.undo }, this.buttons()),\n );\n protected readonly redoButton = computed(() =>\n resolveAXWysiwygButton('redo', { icon: 'ax-icon-redo', tooltip: AX_WYSIWYG_I18N.tools.redo }, this.buttons()),\n );\n}\n","<div class=\"ax-wysiwyg-tool-group\">\n @if (undoButton(); as undo) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled() || !state().canUndo\"\n [attr.title]=\"undo.tooltip | translate | async\"\n [attr.aria-label]=\"undo.tooltip | translate | async\"\n (onClick)=\"wysiwyg.undo()\"\n >\n <ax-icon class=\"ax-icon {{ undo.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (redoButton(); as redo) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled() || !state().canRedo\"\n [attr.title]=\"redo.tooltip | translate | async\"\n [attr.aria-label]=\"redo.tooltip | translate | async\"\n (onClick)=\"wysiwyg.redo()\"\n >\n <ax-icon class=\"ax-icon {{ redo.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXPopoverComponent } from '@acorex/components/popover';\nimport { AXTextBoxComponent } from '@acorex/components/text-box';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygInsertButtonKey = 'link' | 'image' | 'video';\n\n/**\n * Link, image, and video insertion controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-insert',\n templateUrl: './wysiwyg-insert.component.html',\n styleUrl: './wysiwyg-insert.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n FormsModule,\n AXButtonComponent,\n AXDecoratorIconComponent,\n AXPopoverComponent,\n AXTextBoxComponent,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygInsertComponent }],\n})\nexport class AXWysiwygInsertComponent {\n buttons = input<Partial<Record<AXWysiwygInsertButtonKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly i18n = AX_WYSIWYG_I18N;\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n\n protected readonly linkButton = computed(() =>\n resolveAXWysiwygButton('link', { icon: 'ax-icon-link', tooltip: AX_WYSIWYG_I18N.tools.link }, this.buttons()),\n );\n protected readonly imageButton = computed(() =>\n resolveAXWysiwygButton('image', { icon: 'ax-icon-image', tooltip: AX_WYSIWYG_I18N.tools.image }, this.buttons()),\n );\n protected readonly videoButton = computed(() =>\n resolveAXWysiwygButton('video', { icon: 'ax-icon-play', tooltip: AX_WYSIWYG_I18N.tools.video }, this.buttons()),\n );\n\n protected readonly linkUrl = signal('');\n protected readonly imageUrl = signal('');\n protected readonly videoUrl = signal('');\n\n protected applyLink(): void {\n const url = this.linkUrl().trim();\n if (url) {\n this.wysiwyg.setLink(url);\n }\n }\n\n protected removeLink(): void {\n this.wysiwyg.unsetLink();\n this.linkUrl.set('');\n }\n\n protected applyImage(): void {\n const url = this.imageUrl().trim();\n if (url) {\n this.wysiwyg.insertImage(url);\n }\n }\n\n protected applyVideo(): void {\n const url = this.videoUrl().trim();\n if (url) {\n this.wysiwyg.insertVideo(url);\n }\n }\n}\n","<div class=\"ax-wysiwyg-tool-group\">\n @if (linkButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #linkTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"!!state().linkHref\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"linkTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.linkUrl | translate | async\"\n [ngModel]=\"linkUrl()\"\n (ngModelChange)=\"linkUrl.set($event)\"\n ></ax-text-box>\n <div class=\"ax-wysiwyg-insert-actions\">\n <ax-button look=\"flat\" [text]=\"i18n.insert.apply\" (onClick)=\"applyLink()\"></ax-button>\n <ax-button\n look=\"flat\"\n [text]=\"i18n.insert.remove\"\n [disabled]=\"!state().linkHref\"\n (onClick)=\"removeLink()\"\n ></ax-button>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (!context.compact()) {\n @if (imageButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #imageTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"imageTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.imageUrl | translate | async\"\n [ngModel]=\"imageUrl()\"\n (ngModelChange)=\"imageUrl.set($event)\"\n ></ax-text-box>\n <ax-button look=\"flat\" [text]=\"i18n.insert.insert\" (onClick)=\"applyImage()\"></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (videoButton(); as btn) {\n <div class=\"ax-wysiwyg-insert-control\">\n <ax-button\n class=\"ax-sm\"\n #videoTrigger\n look=\"blank\"\n [iconOnly]=\"true\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n [attr.aria-label]=\"btn.tooltip | translate | async\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"videoTrigger\" trigger=\"click\" placement=\"bottom-start\">\n <div class=\"ax-wysiwyg-insert-panel\">\n <ax-text-box\n look=\"none\"\n [placeholder]=\"i18n.insert.videoUrl | translate | async\"\n [ngModel]=\"videoUrl()\"\n (ngModelChange)=\"videoUrl.set($event)\"\n ></ax-text-box>\n <ax-button look=\"flat\" [text]=\"i18n.insert.insert\" (onClick)=\"applyVideo()\"></ax-button>\n </div>\n </ax-popover>\n </div>\n }\n }\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXWysiwyg } from '@acorex/cdk/wysiwyg';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { resolveAXWysiwygButton } from '../../wysiwyg-button.util';\nimport { AX_WYSIWYG_I18N } from '../../wysiwyg-i18n.keys';\nimport { AXWysiwygContext } from '../../wysiwyg-context.service';\nimport type { AXWysiwygButtonConfig } from '../../wysiwyg.types';\n\nexport type AXWysiwygListButtonKey = 'bulletList' | 'orderedList' | 'rtl';\n\n/**\n * List and text-direction controls for the WYSIWYG toolbar.\n * @category Components\n */\n@Component({\n selector: 'ax-wysiwyg-list',\n templateUrl: './wysiwyg-list.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXButtonComponent, AXDecoratorIconComponent, AXTranslatorPipe],\n providers: [{ provide: AXComponent, useExisting: AXWysiwygListComponent }],\n})\nexport class AXWysiwygListComponent {\n buttons = input<Partial<Record<AXWysiwygListButtonKey, AXWysiwygButtonConfig | false>>>();\n\n protected readonly wysiwyg = inject(AXWysiwyg);\n protected readonly context = inject(AXWysiwygContext);\n protected readonly state = this.wysiwyg.state;\n\n protected readonly bulletButton = computed(() =>\n resolveAXWysiwygButton(\n 'bulletList',\n { icon: 'ax-icon-un-order-list', tooltip: AX_WYSIWYG_I18N.tools.bulletList },\n this.buttons(),\n ),\n );\n protected readonly orderedButton = computed(() =>\n resolveAXWysiwygButton(\n 'orderedList',\n { icon: 'ax-icon-order-list', tooltip: AX_WYSIWYG_I18N.tools.orderedList },\n this.buttons(),\n ),\n );\n protected readonly rtlButton = computed(() =>\n resolveAXWysiwygButton('rtl', { icon: 'ax-icon-text-direction-rtl', tooltip: AX_WYSIWYG_I18N.tools.rtl }, this.buttons()),\n );\n}\n","<div class=\"ax-wysiwyg-tool-group\">\n @if (!context.compact()) {\n @if (orderedButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().orderedList\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleOrderedList()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n @if (bulletButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().bulletList\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.toggleBulletList()\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n }\n @if (rtlButton(); as btn) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [toggleable]=\"true\"\n [selected]=\"state().textDirection === 'rtl'\"\n [disabled]=\"context.interactionDisabled()\"\n [attr.title]=\"btn.tooltip | translate | async\"\n (onClick)=\"wysiwyg.setTextDirection(state().textDirection === 'rtl' ? 'ltr' : 'rtl')\"\n >\n <ax-icon class=\"ax-icon {{ btn.icon }}\"></ax-icon>\n </ax-button>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { AXWysiwygContainerComponent } from './wysiwyg-container/wysiwyg-container.component';\nimport { AXWysiwygToolbarComponent } from './wysiwyg-toolbar/wysiwyg-toolbar.component';\nimport { AXWysiwygAlignmentComponent } from './wysiwyg-tools/wysiwyg-alignment/wysiwyg-alignment.component';\nimport { AXWysiwygColorsComponent } from './wysiwyg-tools/wysiwyg-colors/wysiwyg-colors.component';\nimport { AXWysiwygFontStyleComponent } from './wysiwyg-tools/wysiwyg-font-style/wysiwyg-font-style.component';\nimport { AXWysiwygHistoryComponent } from './wysiwyg-tools/wysiwyg-history/wysiwyg-history.component';\nimport { AXWysiwygInsertComponent } from './wysiwyg-tools/wysiwyg-insert/wysiwyg-insert.component';\nimport { AXWysiwygListComponent } from './wysiwyg-tools/wysiwyg-list/wysiwyg-list.component';\nimport { AXWysiwygViewComponent } from './wysiwyg-view/wysiwyg-view.component';\n\nconst COMPONENT = [\n AXWysiwygContainerComponent,\n AXWysiwygViewComponent,\n AXWysiwygAlignmentComponent,\n AXWysiwygColorsComponent,\n AXWysiwygFontStyleComponent,\n AXWysiwygHistoryComponent,\n AXWysiwygInsertComponent,\n AXWysiwygListComponent,\n AXWysiwygToolbarComponent,\n];\n\n@NgModule({\n imports: [...COMPONENT],\n exports: [...COMPONENT],\n})\nexport class AXWysiwygModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components.mjs","sources":["../../../../packages/components/src/index.ts","../../../../packages/components/src/acorex-components.ts"],"sourcesContent":["export const AX_COMPONENTS = 'ACOREX_COMPONENTS';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAO,MAAM,aAAa,GAAG;;ACA7B;;AAEG
|
|
1
|
+
{"version":3,"file":"acorex-components.mjs","sources":["../../../../packages/components/src/index.ts","../../../../packages/components/src/acorex-components.ts"],"sourcesContent":["export const AX_COMPONENTS = 'ACOREX_COMPONENTS';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAO,MAAM,aAAa,GAAG;;ACA7B;;AAEG;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# @acorex/components/highlight
|
|
2
|
+
|
|
3
|
+
Text highlight component for rendering search-term matches in templates.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
import { AXHighlightTextComponent } from '@acorex/components/highlight';
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<ax-highlight-text [text]="item.text" [query]="searchQuery()" />
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
For DOM-based highlighting, use `@acorex/cdk/highlight` (`AXHighlightDirective`).
|
package/lookup/README.md
CHANGED
|
@@ -62,7 +62,7 @@ Value binding uses the signal `value` model (`FormValueControl`) — prefer `[(n
|
|
|
62
62
|
- `valueField` / `textField` / `disabledField`: field mappings. For tree modes these map to the tree `idField` / `titleField`.
|
|
63
63
|
- `columns`: column definitions (`{ field, title, width?, expandHandler? }`) for `multi-column` and `multi-column-tree` (mapped to `ax-text-column`).
|
|
64
64
|
- `treeParentField` / `hasChildrenField`: hierarchy fields for `multi-column-tree` (defaults `parentId` / `hasChild`).
|
|
65
|
-
- `searchable`: when `true` (default), the trigger accepts typing and filters the list or tree in every mode. Nested array trees keep matching branches and expand ancestors of hits; lazy callback trees
|
|
65
|
+
- `searchable`: when `true` (default), the trigger accepts typing and filters the list or tree in every mode. Nested array trees keep matching branches and expand ancestors of hits; lazy callback trees are hydrated once per popup open and searched in full (subsequent keystrokes filter the cached snapshot in memory). When `false`, the trigger is select-only.
|
|
66
66
|
- `adaptivityEnabled`: when `true` (default), the list opens as a bottom actionsheet on small screens instead of a dropdown; set `false` to always use the anchored dropdown.
|
|
67
67
|
- `caption`: title shown in the actionsheet header (falls back to `placeholder`).
|
|
68
68
|
- `alternate`: when `true`, list rows use alternating background colors for easier scanning (all modes, including tree).
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/components",
|
|
3
|
-
"version": "22.
|
|
3
|
+
"version": "22.2.0-next.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@acorex/core": "22.
|
|
6
|
-
"@acorex/cdk": "22.
|
|
5
|
+
"@acorex/core": "22.2.0-next.0",
|
|
6
|
+
"@acorex/cdk": "22.2.0-next.0",
|
|
7
7
|
"@angular/aria": ">=22.1.0",
|
|
8
8
|
"polytype": ">=0.17.0",
|
|
9
9
|
"hammerjs": ">=2.0.8",
|
|
@@ -16,8 +16,15 @@
|
|
|
16
16
|
"leaflet-draw": "1.0.4",
|
|
17
17
|
"leaflet.locatecontrol": "0.81.1",
|
|
18
18
|
"highlight.js": ">=11.11.1",
|
|
19
|
-
"
|
|
20
|
-
"
|
|
19
|
+
"@tiptap/core": ">=3.31.4",
|
|
20
|
+
"@tiptap/extension-color": ">=3.31.4",
|
|
21
|
+
"@tiptap/extension-highlight": ">=3.31.4",
|
|
22
|
+
"@tiptap/extension-image": ">=3.31.4",
|
|
23
|
+
"@tiptap/extension-text-align": ">=3.31.4",
|
|
24
|
+
"@tiptap/extension-text-style": ">=3.31.4",
|
|
25
|
+
"@tiptap/extension-underline": ">=3.31.4",
|
|
26
|
+
"@tiptap/extensions": ">=3.31.4",
|
|
27
|
+
"@tiptap/starter-kit": ">=3.31.4",
|
|
21
28
|
"@codemirror/state": ">=6.4.0",
|
|
22
29
|
"@codemirror/view": ">=6.30.0",
|
|
23
30
|
"@codemirror/language": ">=6.10.0",
|
|
@@ -101,6 +108,10 @@
|
|
|
101
108
|
"types": "./types/acorex-components-breadcrumbs.d.ts",
|
|
102
109
|
"default": "./fesm2022/acorex-components-breadcrumbs.mjs"
|
|
103
110
|
},
|
|
111
|
+
"./bubble": {
|
|
112
|
+
"types": "./types/acorex-components-bubble.d.ts",
|
|
113
|
+
"default": "./fesm2022/acorex-components-bubble.mjs"
|
|
114
|
+
},
|
|
104
115
|
"./button": {
|
|
105
116
|
"types": "./types/acorex-components-button.d.ts",
|
|
106
117
|
"default": "./fesm2022/acorex-components-button.mjs"
|
|
@@ -205,6 +216,14 @@
|
|
|
205
216
|
"types": "./types/acorex-components-editor.d.ts",
|
|
206
217
|
"default": "./fesm2022/acorex-components-editor.mjs"
|
|
207
218
|
},
|
|
219
|
+
"./emoji": {
|
|
220
|
+
"types": "./types/acorex-components-emoji.d.ts",
|
|
221
|
+
"default": "./fesm2022/acorex-components-emoji.mjs"
|
|
222
|
+
},
|
|
223
|
+
"./emojipicker": {
|
|
224
|
+
"types": "./types/acorex-components-emojipicker.d.ts",
|
|
225
|
+
"default": "./fesm2022/acorex-components-emojipicker.mjs"
|
|
226
|
+
},
|
|
208
227
|
"./fab": {
|
|
209
228
|
"types": "./types/acorex-components-fab.d.ts",
|
|
210
229
|
"default": "./fesm2022/acorex-components-fab.mjs"
|
|
@@ -213,10 +232,6 @@
|
|
|
213
232
|
"types": "./types/acorex-components-file-viewer.d.ts",
|
|
214
233
|
"default": "./fesm2022/acorex-components-file-viewer.mjs"
|
|
215
234
|
},
|
|
216
|
-
"./flow-chart": {
|
|
217
|
-
"types": "./types/acorex-components-flow-chart.d.ts",
|
|
218
|
-
"default": "./fesm2022/acorex-components-flow-chart.mjs"
|
|
219
|
-
},
|
|
220
235
|
"./form": {
|
|
221
236
|
"types": "./types/acorex-components-form.d.ts",
|
|
222
237
|
"default": "./fesm2022/acorex-components-form.mjs"
|
|
@@ -225,6 +240,10 @@
|
|
|
225
240
|
"types": "./types/acorex-components-grid-layout-builder.d.ts",
|
|
226
241
|
"default": "./fesm2022/acorex-components-grid-layout-builder.mjs"
|
|
227
242
|
},
|
|
243
|
+
"./highlight": {
|
|
244
|
+
"types": "./types/acorex-components-highlight.d.ts",
|
|
245
|
+
"default": "./fesm2022/acorex-components-highlight.mjs"
|
|
246
|
+
},
|
|
228
247
|
"./image": {
|
|
229
248
|
"types": "./types/acorex-components-image.d.ts",
|
|
230
249
|
"default": "./fesm2022/acorex-components-image.mjs"
|
|
@@ -233,6 +252,10 @@
|
|
|
233
252
|
"types": "./types/acorex-components-image-editor.d.ts",
|
|
234
253
|
"default": "./fesm2022/acorex-components-image-editor.mjs"
|
|
235
254
|
},
|
|
255
|
+
"./inline-reaction": {
|
|
256
|
+
"types": "./types/acorex-components-inline-reaction.d.ts",
|
|
257
|
+
"default": "./fesm2022/acorex-components-inline-reaction.mjs"
|
|
258
|
+
},
|
|
236
259
|
"./json-viewer": {
|
|
237
260
|
"types": "./types/acorex-components-json-viewer.d.ts",
|
|
238
261
|
"default": "./fesm2022/acorex-components-json-viewer.mjs"
|
|
@@ -277,6 +300,18 @@
|
|
|
277
300
|
"types": "./types/acorex-components-menu.d.ts",
|
|
278
301
|
"default": "./fesm2022/acorex-components-menu.mjs"
|
|
279
302
|
},
|
|
303
|
+
"./message": {
|
|
304
|
+
"types": "./types/acorex-components-message.d.ts",
|
|
305
|
+
"default": "./fesm2022/acorex-components-message.mjs"
|
|
306
|
+
},
|
|
307
|
+
"./message-status": {
|
|
308
|
+
"types": "./types/acorex-components-message-status.d.ts",
|
|
309
|
+
"default": "./fesm2022/acorex-components-message-status.mjs"
|
|
310
|
+
},
|
|
311
|
+
"./message-time": {
|
|
312
|
+
"types": "./types/acorex-components-message-time.d.ts",
|
|
313
|
+
"default": "./fesm2022/acorex-components-message-time.mjs"
|
|
314
|
+
},
|
|
280
315
|
"./navbar": {
|
|
281
316
|
"types": "./types/acorex-components-navbar.d.ts",
|
|
282
317
|
"default": "./fesm2022/acorex-components-navbar.mjs"
|
|
@@ -333,10 +368,6 @@
|
|
|
333
368
|
"types": "./types/acorex-components-qrcode.d.ts",
|
|
334
369
|
"default": "./fesm2022/acorex-components-qrcode.mjs"
|
|
335
370
|
},
|
|
336
|
-
"./query-builder": {
|
|
337
|
-
"types": "./types/acorex-components-query-builder.d.ts",
|
|
338
|
-
"default": "./fesm2022/acorex-components-query-builder.mjs"
|
|
339
|
-
},
|
|
340
371
|
"./radio": {
|
|
341
372
|
"types": "./types/acorex-components-radio.d.ts",
|
|
342
373
|
"default": "./fesm2022/acorex-components-radio.mjs"
|
|
@@ -353,6 +384,10 @@
|
|
|
353
384
|
"types": "./types/acorex-components-rate-picker.d.ts",
|
|
354
385
|
"default": "./fesm2022/acorex-components-rate-picker.mjs"
|
|
355
386
|
},
|
|
387
|
+
"./reaction": {
|
|
388
|
+
"types": "./types/acorex-components-reaction.d.ts",
|
|
389
|
+
"default": "./fesm2022/acorex-components-reaction.mjs"
|
|
390
|
+
},
|
|
356
391
|
"./rest-api-generator": {
|
|
357
392
|
"types": "./types/acorex-components-rest-api-generator.d.ts",
|
|
358
393
|
"default": "./fesm2022/acorex-components-rest-api-generator.mjs"
|
|
@@ -257,7 +257,7 @@ declare class AXActionSheetService {
|
|
|
257
257
|
*/
|
|
258
258
|
setActionSheetEventState(event: AXActionSheetEvent): void;
|
|
259
259
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXActionSheetService, never>;
|
|
260
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
260
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
export { AXActionSheetComponent, AXActionSheetComponentBase, AXActionSheetModule, AXActionSheetService };
|