@acorex/components 22.1.0-next.31 → 22.1.0-next.32
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 +13 -13
- package/fesm2022/acorex-components-accordion.mjs.map +1 -1
- package/fesm2022/acorex-components-action-sheet.mjs +13 -13
- package/fesm2022/acorex-components-alert.mjs +7 -7
- package/fesm2022/acorex-components-aspect-ratio.mjs +3 -3
- package/fesm2022/acorex-components-audio-wave.mjs +295 -271
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-autocomplete.mjs +7 -7
- package/fesm2022/acorex-components-avatar.mjs +10 -10
- package/fesm2022/acorex-components-badge.mjs +7 -7
- package/fesm2022/acorex-components-bottom-navigation.mjs +10 -10
- package/fesm2022/acorex-components-breadcrumbs.mjs +10 -10
- 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 +14 -14
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-calendar.mjs +332 -130
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-check-box.mjs +7 -7
- package/fesm2022/acorex-components-chips.mjs +7 -7
- package/fesm2022/acorex-components-circular-progress.mjs +7 -7
- 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-palette.mjs +28 -28
- package/fesm2022/acorex-components-combo-box.mjs +244 -54
- package/fesm2022/acorex-components-combo-box.mjs.map +1 -1
- package/fesm2022/acorex-components-command.mjs +7 -7
- package/fesm2022/acorex-components-comment.mjs +28 -28
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-BBWe3tfe.mjs +19099 -0
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-BBWe3tfe.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-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-OAHRGH_G.mjs +65 -0
- package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-OAHRGH_G.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation.mjs +1 -15470
- package/fesm2022/acorex-components-conversation.mjs.map +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-pager.mjs +35 -35
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +734 -165
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +7 -7
- package/fesm2022/acorex-components-datetime-input.mjs +7 -7
- 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 +60 -30
- 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 +10 -10
- package/fesm2022/acorex-components-dropdown-button.mjs +8 -8
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +14 -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 +372 -122
- 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-highlight.mjs +80 -0
- package/fesm2022/acorex-components-highlight.mjs.map +1 -0
- package/fesm2022/acorex-components-image-editor.mjs +780 -451
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-image.mjs +7 -7
- 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-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-label.mjs +7 -7
- 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-lookup.mjs +764 -156
- 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-notification.mjs +11 -11
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box.mjs +7 -7
- package/fesm2022/acorex-components-otp.mjs +7 -7
- package/fesm2022/acorex-components-page.mjs +10 -10
- 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-phone-box.mjs +7 -7
- package/fesm2022/acorex-components-picker.mjs +13 -13
- package/fesm2022/acorex-components-popover.mjs +33 -15
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +67 -56
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-progress-bar.mjs +7 -7
- package/fesm2022/acorex-components-qrcode.mjs +7 -7
- package/fesm2022/acorex-components-radio.mjs +7 -7
- package/fesm2022/acorex-components-rail-navigation.mjs +14 -14
- package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs +9 -9
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-rate-picker.mjs +7 -7
- 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 +22 -22
- package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
- package/fesm2022/acorex-components-result.mjs +7 -7
- package/fesm2022/acorex-components-routing-progress.mjs +7 -7
- 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 +34 -34
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-search-box.mjs +7 -7
- package/fesm2022/acorex-components-select-box.mjs +7 -7
- 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-skeleton.mjs +7 -7
- package/fesm2022/acorex-components-slider.mjs +7 -7
- package/fesm2022/acorex-components-sliding-item.mjs +13 -13
- 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-tabs.mjs +529 -78
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/fesm2022/acorex-components-tag-box.mjs +7 -7
- package/fesm2022/acorex-components-tag.mjs +7 -7
- package/fesm2022/acorex-components-text-area.mjs +7 -7
- package/fesm2022/acorex-components-text-box.mjs +7 -7
- package/fesm2022/acorex-components-time-duration.mjs +7 -7
- package/fesm2022/acorex-components-time-line.mjs +10 -10
- package/fesm2022/acorex-components-toast.mjs +10 -10
- package/fesm2022/acorex-components-toolbar.mjs +7 -7
- package/fesm2022/acorex-components-tooltip.mjs +10 -10
- package/fesm2022/acorex-components-tree-view.mjs +58 -15
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-uploader.mjs +13 -13
- package/fesm2022/acorex-components-video-player.mjs +7 -7
- package/fesm2022/acorex-components-wysiwyg.mjs +109 -39
- package/fesm2022/acorex-components-wysiwyg.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 +42 -12
- package/reaction/README.md +3 -0
- package/types/acorex-components-action-sheet.d.ts +1 -1
- package/types/acorex-components-audio-wave.d.ts +132 -73
- 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 +1 -1
- package/types/acorex-components-calendar.d.ts +43 -12
- 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 +34 -4
- package/types/acorex-components-command.d.ts +1 -1
- package/types/acorex-components-conversation.d.ts +1771 -1342
- package/types/acorex-components-cron-job.d.ts +6 -6
- package/types/acorex-components-data-pager.d.ts +2 -2
- package/types/acorex-components-data-table.d.ts +194 -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 +13 -1
- package/types/acorex-components-dialog.d.ts +1 -1
- package/types/acorex-components-dropdown.d.ts +1 -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 +50 -6
- package/types/acorex-components-highlight.d.ts +31 -0
- package/types/acorex-components-image-editor.d.ts +72 -50
- 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 +213 -82
- 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 +1 -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 +10 -4
- package/types/acorex-components-popup.d.ts +20 -10
- 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 +150 -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 +32 -3
- package/types/acorex-components-wysiwyg.d.ts +15 -2
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs +0 -50
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs.map +0 -1
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs +0 -210
- package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-DnSW908R.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
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { AXValueChangedEvent } from '@acorex/cdk/common';
|
|
3
|
+
import { AXGestureEvent } from '@acorex/cdk/gesture';
|
|
4
|
+
import { AXTabStripChangedEvent } from '@acorex/components/tabs';
|
|
5
|
+
import { AXEmoji, AXEmojiCategory, AXEmojiPickerCategoryId, AXEmojiCategoryMeta } from '@acorex/core/constants';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Telegram-style emoji picker with category tabs, search, and recent emojis.
|
|
9
|
+
*
|
|
10
|
+
* @category Components
|
|
11
|
+
*/
|
|
12
|
+
declare class AXEmojiPickerComponent {
|
|
13
|
+
private readonly hostRef;
|
|
14
|
+
private readonly destroyRef;
|
|
15
|
+
/** Emoji entries available in the picker. */
|
|
16
|
+
readonly items: _angular_core.InputSignal<readonly AXEmoji[]>;
|
|
17
|
+
/** Rendered emoji size in the grid. */
|
|
18
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
19
|
+
/**
|
|
20
|
+
* Emoji rendering style passed to {@link AXEmojiComponent}.
|
|
21
|
+
* `google` uses Noto Color Emoji (Android/Google look) on Windows too.
|
|
22
|
+
*
|
|
23
|
+
* @defaultValue 'google'
|
|
24
|
+
*/
|
|
25
|
+
readonly appearance: _angular_core.InputSignal<"google" | "native">;
|
|
26
|
+
/** Whether the search box is shown. */
|
|
27
|
+
readonly showSearch: _angular_core.InputSignal<boolean>;
|
|
28
|
+
/** Whether the recent category tab is shown. */
|
|
29
|
+
readonly showRecent: _angular_core.InputSignal<boolean>;
|
|
30
|
+
/** Number of emoji columns in the virtualized grid. */
|
|
31
|
+
readonly columns: _angular_core.InputSignal<number>;
|
|
32
|
+
/** Search box placeholder text. */
|
|
33
|
+
readonly searchPlaceholder: _angular_core.InputSignal<string>;
|
|
34
|
+
/** Unicode emoji group categories to hide from tabs and results. */
|
|
35
|
+
readonly excludeCategories: _angular_core.InputSignal<readonly AXEmojiCategory[]>;
|
|
36
|
+
/** `AXEmoji.code` values to hide (e.g. `1f595`). */
|
|
37
|
+
readonly excludeCodes: _angular_core.InputSignal<readonly string[]>;
|
|
38
|
+
/** `AXEmoji.unicode` glyph values to hide (e.g. `🖕`). */
|
|
39
|
+
readonly excludeUnicode: _angular_core.InputSignal<readonly string[]>;
|
|
40
|
+
/** Emits when the user selects an emoji. */
|
|
41
|
+
readonly selected: _angular_core.OutputEmitterRef<AXEmoji>;
|
|
42
|
+
/**
|
|
43
|
+
* Recently used emojis supplied by the parent (e.g. API, LocalStorage).
|
|
44
|
+
* Rendered in the Recent tab when {@link showRecent} is enabled.
|
|
45
|
+
*/
|
|
46
|
+
readonly recentItems: _angular_core.InputSignal<readonly AXEmoji[]>;
|
|
47
|
+
/** Emits the updated recent list after the user selects an allowed emoji. */
|
|
48
|
+
readonly recentChanged: _angular_core.OutputEmitterRef<readonly AXEmoji[]>;
|
|
49
|
+
/** Current search query. */
|
|
50
|
+
protected readonly searchQuery: _angular_core.WritableSignal<string>;
|
|
51
|
+
/** Active category tab. */
|
|
52
|
+
protected readonly activeCategoryId: _angular_core.WritableSignal<AXEmojiPickerCategoryId>;
|
|
53
|
+
private readonly containerWidth;
|
|
54
|
+
protected readonly effectiveColumns: _angular_core.Signal<number>;
|
|
55
|
+
protected readonly availableWidthCss: _angular_core.Signal<string>;
|
|
56
|
+
constructor();
|
|
57
|
+
/** Items after picker exclusions are applied. */
|
|
58
|
+
protected readonly filteredItems: _angular_core.Signal<readonly AXEmoji[]>;
|
|
59
|
+
private readonly categoryIndex;
|
|
60
|
+
/** Recent items after active exclusions are applied for display. */
|
|
61
|
+
protected readonly visibleRecentItems: _angular_core.Signal<AXEmoji[]>;
|
|
62
|
+
protected onCategorySwipe(event: AXGestureEvent): void;
|
|
63
|
+
/** Visible category tabs. */
|
|
64
|
+
protected readonly categories: _angular_core.Signal<readonly AXEmojiCategoryMeta[]>;
|
|
65
|
+
/** Emojis shown in the current view (category or search results). */
|
|
66
|
+
protected readonly visibleEmojis: _angular_core.Signal<readonly AXEmoji[]>;
|
|
67
|
+
/** Rows used by the virtual scroll viewport. */
|
|
68
|
+
protected readonly emojiRows: _angular_core.Signal<readonly (readonly AXEmoji[])[]>;
|
|
69
|
+
/** Virtual scroll row height in pixels. */
|
|
70
|
+
protected readonly rowHeight: _angular_core.Signal<number>;
|
|
71
|
+
/** Whether the user is searching. */
|
|
72
|
+
protected readonly isSearching: _angular_core.Signal<boolean>;
|
|
73
|
+
/** Whether the current view has no emojis. */
|
|
74
|
+
protected readonly isEmpty: _angular_core.Signal<boolean>;
|
|
75
|
+
/** Keeps the active tab valid when exclusions change. */
|
|
76
|
+
private readonly syncActiveCategory;
|
|
77
|
+
/** Selects a category tab and clears search. */
|
|
78
|
+
protected selectCategory(categoryId: AXEmojiPickerCategoryId): void;
|
|
79
|
+
/** Whether the given category tab is active. */
|
|
80
|
+
protected isCategoryActive(categoryId: AXEmojiPickerCategoryId): boolean;
|
|
81
|
+
/** Whether the category tab is the virtual recent group. */
|
|
82
|
+
protected isRecentCategory(categoryId: AXEmojiPickerCategoryId): boolean;
|
|
83
|
+
/** Syncs the active emoji category when a tab is selected. */
|
|
84
|
+
protected onCategoryTabChanged(event: AXTabStripChangedEvent): void;
|
|
85
|
+
/** Updates the search query from the search box. */
|
|
86
|
+
protected onSearchChanged(event: AXValueChangedEvent<string>): void;
|
|
87
|
+
/** Emits the selected emoji and notifies the parent of the updated recent list. */
|
|
88
|
+
protected selectEmoji(emoji: AXEmoji): void;
|
|
89
|
+
/** @ignore */
|
|
90
|
+
protected trackRow(index: number, row: readonly AXEmoji[]): string;
|
|
91
|
+
private rememberRecent;
|
|
92
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEmojiPickerComponent, never>;
|
|
93
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXEmojiPickerComponent, "ax-emoji-picker", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showRecent": { "alias": "showRecent"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "excludeCategories": { "alias": "excludeCategories"; "required": false; "isSignal": true; }; "excludeCodes": { "alias": "excludeCodes"; "required": false; "isSignal": true; }; "excludeUnicode": { "alias": "excludeUnicode"; "required": false; "isSignal": true; }; "recentItems": { "alias": "recentItems"; "required": false; "isSignal": true; }; }, { "selected": "selected"; "recentChanged": "recentChanged"; }, never, never, true, never>;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** Maximum number of emojis kept in the recent list. */
|
|
97
|
+
declare const RECENT_EMOJI_LIMIT = 20;
|
|
98
|
+
/** Grid cell size in px (`--ax-comp-emoji-picker-cell-size`). */
|
|
99
|
+
declare const EMOJI_PICKER_CELL_SIZE_PX = 36;
|
|
100
|
+
/** Grid cell size in px on narrow viewports. */
|
|
101
|
+
declare const EMOJI_PICKER_CELL_SIZE_PX_COMPACT = 32;
|
|
102
|
+
/** Gap between grid cells in px (`--ax-comp-emoji-picker-cell-gap`). */
|
|
103
|
+
declare const EMOJI_PICKER_CELL_GAP_PX = 2;
|
|
104
|
+
/** Horizontal padding around the emoji grid in px. */
|
|
105
|
+
declare const EMOJI_PICKER_GRID_PADDING_PX = 24;
|
|
106
|
+
/** Minimum column count. */
|
|
107
|
+
declare const EMOJI_PICKER_MIN_COLUMNS = 1;
|
|
108
|
+
/** Nearest ancestor that participates in layout (skips `display: contents`). */
|
|
109
|
+
declare function getEmojiPickerLayoutContainer(element: HTMLElement): HTMLElement;
|
|
110
|
+
/**
|
|
111
|
+
* Available width for the picker grid.
|
|
112
|
+
* Uses the tightest ancestor content box and the visible viewport slot so an
|
|
113
|
+
* overflowing parent cannot keep an 8-column grid that is clipped off-screen.
|
|
114
|
+
*/
|
|
115
|
+
declare function resolveEmojiPickerContainerWidth(element: HTMLElement): number;
|
|
116
|
+
/** Resolves column count from container width while keeping a fixed cell size and gap. */
|
|
117
|
+
declare function resolveEmojiPickerColumns(containerWidth: number, requested: number): number;
|
|
118
|
+
/** Maximum number of emojis returned by search. */
|
|
119
|
+
declare const SEARCH_RESULT_LIMIT = 200;
|
|
120
|
+
/** User-defined exclusions for picker emoji lists. */
|
|
121
|
+
interface AXEmojiPickerFilter {
|
|
122
|
+
/** Unicode emoji group categories to hide from tabs and results. */
|
|
123
|
+
readonly excludeCategories?: readonly AXEmojiCategory[];
|
|
124
|
+
/** `AXEmoji.code` values to hide (hyphen-separated code points, e.g. `1f595`). */
|
|
125
|
+
readonly excludeCodes?: readonly string[];
|
|
126
|
+
/** `AXEmoji.unicode` glyph values to hide (e.g. `👋`). */
|
|
127
|
+
readonly excludeUnicode?: readonly string[];
|
|
128
|
+
}
|
|
129
|
+
/** Applies picker exclusions and default people-body curation. */
|
|
130
|
+
declare function filterPickerItems(items: readonly AXEmoji[], filter?: AXEmojiPickerFilter): readonly AXEmoji[];
|
|
131
|
+
/**
|
|
132
|
+
* Builds a category index for picker rendering.
|
|
133
|
+
* Expects items to be pre-filtered with {@link filterPickerItems}.
|
|
134
|
+
*/
|
|
135
|
+
declare function buildEmojiPickerIndex(items: readonly AXEmoji[]): ReadonlyMap<AXEmojiCategory, readonly AXEmoji[]>;
|
|
136
|
+
/** Searches pre-filtered emoji metadata by name and keywords. */
|
|
137
|
+
declare function searchPickerEmojis(items: readonly AXEmoji[], query: string, limit?: number): readonly AXEmoji[];
|
|
138
|
+
|
|
139
|
+
declare class AXEmojiPickerModule {
|
|
140
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXEmojiPickerModule, never>;
|
|
141
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXEmojiPickerModule, never, [typeof AXEmojiPickerComponent], [typeof AXEmojiPickerComponent]>;
|
|
142
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXEmojiPickerModule>;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export { AXEmojiPickerComponent, AXEmojiPickerModule, EMOJI_PICKER_CELL_GAP_PX, EMOJI_PICKER_CELL_SIZE_PX, EMOJI_PICKER_CELL_SIZE_PX_COMPACT, EMOJI_PICKER_GRID_PADDING_PX, EMOJI_PICKER_MIN_COLUMNS, RECENT_EMOJI_LIMIT, SEARCH_RESULT_LIMIT, buildEmojiPickerIndex, filterPickerItems, getEmojiPickerLayoutContainer, resolveEmojiPickerColumns, resolveEmojiPickerContainerWidth, searchPickerEmojis };
|
|
146
|
+
export type { AXEmojiPickerFilter };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { OnDestroy, TemplateRef, Type, Provider } from '@angular/core';
|
|
3
|
+
import { AXMenuItem } from '@acorex/components/menu';
|
|
3
4
|
import { AXComponentContent, AXComponentInputs } from '@acorex/core/components';
|
|
4
5
|
import { Subject } from 'rxjs';
|
|
5
|
-
import { AXStyleColorType, AXComponentClosedPromise } from '@acorex/cdk/common';
|
|
6
|
+
import { AXStyleColorType, AXClickEvent, AXComponentClosedPromise } from '@acorex/cdk/common';
|
|
6
7
|
import * as _acorex_core_file from '@acorex/core/file';
|
|
7
8
|
import { AXFileTypeExtensionHint, AXFileType, AXFileTypeViewComponent } from '@acorex/core/file';
|
|
8
9
|
import { SafeResourceUrl } from '@angular/platform-browser';
|
|
@@ -35,7 +36,7 @@ declare class AXFileViewerService {
|
|
|
35
36
|
/** Resolve a potentially lazy URL — caches the result. */
|
|
36
37
|
resolveUrl(item: AXFileViewerItem, key: 'url' | 'thumbnailUrl'): Promise<string | undefined>;
|
|
37
38
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerService, never>;
|
|
38
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
39
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
/** Infers a file-type catalog name from the item. */
|
|
@@ -43,6 +44,16 @@ declare function resolveFileViewerFileType(item: AXFileViewerItem): string;
|
|
|
43
44
|
/** Builds an extension hint from item metadata. */
|
|
44
45
|
declare function buildFileViewerExtensionHint(item: AXFileViewerItem): AXFileTypeExtensionHint | undefined;
|
|
45
46
|
|
|
47
|
+
interface AXFileViewerHeaderActionClickEvent {
|
|
48
|
+
sender: AXFileViewerContainerComponent;
|
|
49
|
+
nativeEvent: Event;
|
|
50
|
+
canceled: boolean;
|
|
51
|
+
item: {
|
|
52
|
+
name?: string;
|
|
53
|
+
text: string;
|
|
54
|
+
data?: unknown;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
46
57
|
declare class AXFileViewerContainerComponent implements OnDestroy {
|
|
47
58
|
#private;
|
|
48
59
|
readonly items: _angular_core.InputSignal<AXFileViewerItem[]>;
|
|
@@ -51,18 +62,27 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
|
|
|
51
62
|
readonly pagination: _angular_core.InputSignal<boolean>;
|
|
52
63
|
readonly download: _angular_core.InputSignal<boolean>;
|
|
53
64
|
readonly fullscreen: _angular_core.InputSignal<boolean>;
|
|
65
|
+
/** Header action buttons rendered in the top-right actions area. */
|
|
66
|
+
readonly headerActions: _angular_core.InputSignal<AXMenuItem[]>;
|
|
54
67
|
/** When true, opens in a gallery overlay and closes when fullscreen exits. */
|
|
55
68
|
readonly galleryMode: _angular_core.InputSignal<boolean>;
|
|
56
69
|
readonly headerContent: _angular_core.InputSignal<AXComponentContent>;
|
|
57
70
|
readonly headerContentInputs: _angular_core.InputSignal<AXComponentInputs>;
|
|
58
71
|
readonly fallbackContent: _angular_core.InputSignal<AXComponentContent>;
|
|
59
72
|
readonly fallbackContentInputs: _angular_core.InputSignal<AXComponentInputs>;
|
|
73
|
+
/** Custom empty-state template or component. Falls back to the built-in empty state. */
|
|
74
|
+
readonly emptyContent: _angular_core.InputSignal<AXComponentContent>;
|
|
75
|
+
readonly emptyContentInputs: _angular_core.InputSignal<AXComponentInputs>;
|
|
60
76
|
/** External loading flag — show overlay while parent data is being fetched. */
|
|
61
77
|
readonly loading: _angular_core.InputSignal<boolean>;
|
|
78
|
+
readonly headerActionClick: _angular_core.OutputEmitterRef<AXFileViewerHeaderActionClickEvent>;
|
|
62
79
|
readonly fullscreenClosed: _angular_core.OutputEmitterRef<void>;
|
|
63
80
|
readonly service: AXFileViewerService;
|
|
64
81
|
private readonly host;
|
|
65
82
|
private readonly fullScreenService;
|
|
83
|
+
private readonly document;
|
|
84
|
+
private readonly platformId;
|
|
85
|
+
private readonly destroyRef;
|
|
66
86
|
private readonly mainCarouselRef;
|
|
67
87
|
private readonly thumbCarouselRef;
|
|
68
88
|
private initToken;
|
|
@@ -70,6 +90,7 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
|
|
|
70
90
|
/** True while carousels are being (re)initialized. */
|
|
71
91
|
readonly initializing: _angular_core.WritableSignal<boolean>;
|
|
72
92
|
readonly isBusy: _angular_core.Signal<boolean>;
|
|
93
|
+
readonly isEmpty: _angular_core.Signal<boolean>;
|
|
73
94
|
readonly isFirstSlide: _angular_core.Signal<boolean>;
|
|
74
95
|
readonly isLastSlide: _angular_core.Signal<boolean>;
|
|
75
96
|
readonly currentItem: _angular_core.Signal<AXFileViewerItem>;
|
|
@@ -80,6 +101,9 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
|
|
|
80
101
|
readonly headerTemplateContent: _angular_core.Signal<TemplateRef<any>>;
|
|
81
102
|
readonly headerComponentContent: _angular_core.Signal<Type<unknown>>;
|
|
82
103
|
readonly hasHeaderCenterContent: _angular_core.Signal<boolean>;
|
|
104
|
+
readonly emptyTemplateContent: _angular_core.Signal<TemplateRef<any>>;
|
|
105
|
+
readonly emptyComponentContent: _angular_core.Signal<Type<unknown>>;
|
|
106
|
+
readonly resolvedHeaderActions: _angular_core.Signal<AXMenuItem[]>;
|
|
83
107
|
readonly headerContentContext: _angular_core.Signal<{
|
|
84
108
|
item: AXFileViewerItem;
|
|
85
109
|
items: AXFileViewerItem[];
|
|
@@ -91,11 +115,16 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
|
|
|
91
115
|
formatSize(size?: number): string;
|
|
92
116
|
private readonly mainCarouselOptions;
|
|
93
117
|
private readonly thumbnailCarouselOptions;
|
|
118
|
+
constructor();
|
|
119
|
+
resolveHeaderAction(action: AXMenuItem): AXMenuItem;
|
|
120
|
+
onHeaderActionClick(action: AXMenuItem, event: AXClickEvent): void;
|
|
121
|
+
private isFullscreenAction;
|
|
94
122
|
toggleFullscreen(): void;
|
|
95
123
|
enterFullscreen(): void;
|
|
96
124
|
/** @param emitGalleryClose When false, skips gallery close notification (used during service teardown). */
|
|
97
125
|
exitFullscreen(emitGalleryClose?: boolean): void;
|
|
98
126
|
closeGallery(): void;
|
|
127
|
+
private onFullscreenEscape;
|
|
99
128
|
private initCarousels;
|
|
100
129
|
private readonly onSlideChange;
|
|
101
130
|
next(): void;
|
|
@@ -104,7 +133,7 @@ declare class AXFileViewerContainerComponent implements OnDestroy {
|
|
|
104
133
|
downloadCurrent(): Promise<void>;
|
|
105
134
|
ngOnDestroy(): void;
|
|
106
135
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerContainerComponent, never>;
|
|
107
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerContainerComponent, "ax-file-viewer-container", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "startIndex": { "alias": "startIndex"; "required": false; "isSignal": true; }; "thumbnail": { "alias": "thumbnail"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "download": { "alias": "download"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "galleryMode": { "alias": "galleryMode"; "required": false; "isSignal": true; }; "headerContent": { "alias": "headerContent"; "required": false; "isSignal": true; }; "headerContentInputs": { "alias": "headerContentInputs"; "required": false; "isSignal": true; }; "fallbackContent": { "alias": "fallbackContent"; "required": false; "isSignal": true; }; "fallbackContentInputs": { "alias": "fallbackContentInputs"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "fullscreenClosed": "fullscreenClosed"; }, never, never, true, never>;
|
|
136
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerContainerComponent, "ax-file-viewer-container", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "startIndex": { "alias": "startIndex"; "required": false; "isSignal": true; }; "thumbnail": { "alias": "thumbnail"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "download": { "alias": "download"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "headerActions": { "alias": "headerActions"; "required": false; "isSignal": true; }; "galleryMode": { "alias": "galleryMode"; "required": false; "isSignal": true; }; "headerContent": { "alias": "headerContent"; "required": false; "isSignal": true; }; "headerContentInputs": { "alias": "headerContentInputs"; "required": false; "isSignal": true; }; "fallbackContent": { "alias": "fallbackContent"; "required": false; "isSignal": true; }; "fallbackContentInputs": { "alias": "fallbackContentInputs"; "required": false; "isSignal": true; }; "emptyContent": { "alias": "emptyContent"; "required": false; "isSignal": true; }; "emptyContentInputs": { "alias": "emptyContentInputs"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "headerActionClick": "headerActionClick"; "fullscreenClosed": "fullscreenClosed"; }, never, never, true, never>;
|
|
108
137
|
}
|
|
109
138
|
|
|
110
139
|
interface AXFileViewerGalleryConfig {
|
|
@@ -112,12 +141,15 @@ interface AXFileViewerGalleryConfig {
|
|
|
112
141
|
startIndex?: number;
|
|
113
142
|
thumbnail?: boolean;
|
|
114
143
|
download?: boolean;
|
|
144
|
+
headerActions?: AXMenuItem[];
|
|
115
145
|
loading?: boolean;
|
|
116
146
|
panelClass?: string[];
|
|
117
147
|
headerContent?: AXComponentContent | null;
|
|
118
148
|
headerContentInputs?: AXComponentInputs | null;
|
|
119
149
|
fallbackContent?: AXComponentContent | null;
|
|
120
150
|
fallbackContentInputs?: AXComponentInputs | null;
|
|
151
|
+
emptyContent?: AXComponentContent | null;
|
|
152
|
+
emptyContentInputs?: AXComponentInputs | null;
|
|
121
153
|
}
|
|
122
154
|
interface AXFileViewerGalleryRef<TResult = any> {
|
|
123
155
|
close: (data?: TResult) => void;
|
|
@@ -156,7 +188,7 @@ declare class AXFileViewerGalleryService {
|
|
|
156
188
|
bringToFront(id: number): void;
|
|
157
189
|
private openInternal;
|
|
158
190
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerGalleryService, never>;
|
|
159
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
191
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
160
192
|
}
|
|
161
193
|
|
|
162
194
|
/** Registers file-viewer components on standard file-type catalog entries. */
|
|
@@ -171,6 +203,11 @@ declare class AXFileViewerHeaderPlaceholderComponent {
|
|
|
171
203
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerHeaderPlaceholderComponent, "ax-file-viewer-header-placeholder", never, { "slideCounter": { "alias": "slideCounter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
172
204
|
}
|
|
173
205
|
|
|
206
|
+
declare class AXFileViewerEmptyStateComponent {
|
|
207
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerEmptyStateComponent, never>;
|
|
208
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerEmptyStateComponent, "ax-file-viewer-empty-state", never, {}, {}, never, never, true, never>;
|
|
209
|
+
}
|
|
210
|
+
|
|
174
211
|
declare class AXFileViewerSlideComponent {
|
|
175
212
|
readonly item: _angular_core.InputSignal<AXFileViewerItem>;
|
|
176
213
|
readonly index: _angular_core.InputSignal<number>;
|
|
@@ -202,6 +239,7 @@ declare class AXFileViewerThumbPreviewComponent {
|
|
|
202
239
|
private readonly service;
|
|
203
240
|
readonly src: _angular_core.WritableSignal<string>;
|
|
204
241
|
readonly icon: _angular_core.Signal<string>;
|
|
242
|
+
onImageError(): void;
|
|
205
243
|
private resolvePreview;
|
|
206
244
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerThumbPreviewComponent, never>;
|
|
207
245
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerThumbPreviewComponent, "ax-file-viewer-thumb-preview", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -226,6 +264,7 @@ declare class AXFileViewerImageComponent implements AXFileTypeViewComponent<AXFi
|
|
|
226
264
|
private readonly service;
|
|
227
265
|
readonly src: _angular_core.WritableSignal<string>;
|
|
228
266
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
267
|
+
private loadedId;
|
|
229
268
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerImageComponent, never>;
|
|
230
269
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerImageComponent, "ax-file-viewer-image", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
231
270
|
}
|
|
@@ -234,8 +273,10 @@ declare class AXFileViewerVideoComponent implements AXFileTypeViewComponent<AXFi
|
|
|
234
273
|
#private;
|
|
235
274
|
readonly payload: _angular_core.InputSignal<AXFileViewerViewPayload>;
|
|
236
275
|
private readonly service;
|
|
276
|
+
private readonly mediaEl;
|
|
237
277
|
readonly src: _angular_core.WritableSignal<string>;
|
|
238
278
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
279
|
+
private loadedId;
|
|
239
280
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerVideoComponent, never>;
|
|
240
281
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerVideoComponent, "ax-file-viewer-video", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
241
282
|
}
|
|
@@ -244,8 +285,10 @@ declare class AXFileViewerAudioComponent implements AXFileTypeViewComponent<AXFi
|
|
|
244
285
|
#private;
|
|
245
286
|
readonly payload: _angular_core.InputSignal<AXFileViewerViewPayload>;
|
|
246
287
|
private readonly service;
|
|
288
|
+
private readonly mediaEl;
|
|
247
289
|
readonly src: _angular_core.WritableSignal<string>;
|
|
248
290
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
291
|
+
private loadedId;
|
|
249
292
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerAudioComponent, never>;
|
|
250
293
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerAudioComponent, "ax-file-viewer-audio", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
251
294
|
}
|
|
@@ -257,6 +300,7 @@ declare class AXFileViewerPdfComponent implements AXFileTypeViewComponent<AXFile
|
|
|
257
300
|
private readonly sanitizer;
|
|
258
301
|
readonly safeSrc: _angular_core.WritableSignal<SafeResourceUrl>;
|
|
259
302
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
303
|
+
private loadedId;
|
|
260
304
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileViewerPdfComponent, never>;
|
|
261
305
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerPdfComponent, "ax-file-viewer-pdf", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
262
306
|
}
|
|
@@ -268,5 +312,5 @@ declare class AXFileViewerFileFallbackComponent implements AXFileTypeViewCompone
|
|
|
268
312
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileViewerFileFallbackComponent, "ax-file-viewer-fallback", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
269
313
|
}
|
|
270
314
|
|
|
271
|
-
export { AXFileViewerAudioComponent, AXFileViewerContainerComponent, AXFileViewerFileFallbackComponent, AXFileViewerGalleryService, AXFileViewerHeaderPlaceholderComponent, AXFileViewerImageComponent, AXFileViewerPdfComponent, AXFileViewerService, AXFileViewerSlideComponent, AXFileViewerThumbPreviewComponent, AXFileViewerThumbnailsComponent, AXFileViewerVideoComponent, buildFileViewerExtensionHint, createFileViewerFileTypes, provideFileViewer, resolveFileViewerFileType };
|
|
272
|
-
export type { AXFileViewerGalleryConfig, AXFileViewerGalleryRef, AXFileViewerItem, AXFileViewerViewPayload };
|
|
315
|
+
export { AXFileViewerAudioComponent, AXFileViewerContainerComponent, AXFileViewerEmptyStateComponent, AXFileViewerFileFallbackComponent, AXFileViewerGalleryService, AXFileViewerHeaderPlaceholderComponent, AXFileViewerImageComponent, AXFileViewerPdfComponent, AXFileViewerService, AXFileViewerSlideComponent, AXFileViewerThumbPreviewComponent, AXFileViewerThumbnailsComponent, AXFileViewerVideoComponent, buildFileViewerExtensionHint, createFileViewerFileTypes, provideFileViewer, resolveFileViewerFileType };
|
|
316
|
+
export type { AXFileViewerGalleryConfig, AXFileViewerGalleryRef, AXFileViewerHeaderActionClickEvent, AXFileViewerItem, AXFileViewerViewPayload };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { AXHighlightOptions, AXHighlightSegment } from '@acorex/core/utils';
|
|
3
|
+
import { SafeHtml } from '@angular/platform-browser';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Renders text with search-term matches wrapped in `.ax-highlight` spans.
|
|
7
|
+
*
|
|
8
|
+
* Uses a single innerHTML string so Angular control-flow whitespace cannot insert
|
|
9
|
+
* gaps between highlighted and non-highlighted characters.
|
|
10
|
+
*
|
|
11
|
+
* Does not use the `ax-highlight-text` class on the host — that class is reserved for
|
|
12
|
+
* {@link AXHighlightService} DOM wrappers.
|
|
13
|
+
*/
|
|
14
|
+
declare class AXHighlightTextComponent {
|
|
15
|
+
#private;
|
|
16
|
+
private readonly sanitizer;
|
|
17
|
+
/** The full text to render. */
|
|
18
|
+
readonly text: _angular_core.InputSignal<string>;
|
|
19
|
+
/** The search term or terms to highlight within the text. */
|
|
20
|
+
readonly query: _angular_core.InputSignal<string | readonly string[]>;
|
|
21
|
+
/** When true, highlighting is disabled and plain text is shown. */
|
|
22
|
+
readonly highlightDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
23
|
+
/** Optional highlight behavior configuration. */
|
|
24
|
+
readonly highlightOptions: _angular_core.InputSignal<AXHighlightOptions>;
|
|
25
|
+
protected readonly segments: _angular_core.Signal<AXHighlightSegment[]>;
|
|
26
|
+
protected readonly highlightedHtml: _angular_core.Signal<SafeHtml>;
|
|
27
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXHighlightTextComponent, never>;
|
|
28
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXHighlightTextComponent, "ax-highlight-text", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "query": { "alias": "query"; "required": false; "isSignal": true; }; "highlightDisabled": { "alias": "highlightDisabled"; "required": false; "isSignal": true; }; "highlightOptions": { "alias": "highlightOptions"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { AXHighlightTextComponent };
|
|
@@ -2,15 +2,6 @@ import * as polytype from 'polytype';
|
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
3
|
import { OnDestroy, ElementRef, Renderer2 } from '@angular/core';
|
|
4
4
|
import { MXBaseComponent, MXInputBaseValueComponent, MXLookComponent } from '@acorex/cdk/common';
|
|
5
|
-
import * as i1 from '@acorex/components/button';
|
|
6
|
-
import * as i2 from '@angular/forms';
|
|
7
|
-
import * as i3 from '@acorex/components/range-slider';
|
|
8
|
-
import * as i4 from '@acorex/components/select-box';
|
|
9
|
-
import * as i5 from '@acorex/components/color-box';
|
|
10
|
-
import * as i6 from '@acorex/components/popover';
|
|
11
|
-
import * as i7 from '@acorex/components/decorators';
|
|
12
|
-
import * as i8 from '@acorex/components/loading';
|
|
13
|
-
import * as i9 from '@acorex/components/dialog';
|
|
14
5
|
|
|
15
6
|
type AXImageEditorTool = 'pen' | 'highlight' | 'crop' | 'rotate';
|
|
16
7
|
declare class AXImageEditorService {
|
|
@@ -25,19 +16,27 @@ declare class AXImageEditorService {
|
|
|
25
16
|
userInteract: boolean;
|
|
26
17
|
}>;
|
|
27
18
|
isImageLoad: _angular_core.WritableSignal<boolean>;
|
|
19
|
+
loadError: _angular_core.WritableSignal<boolean>;
|
|
28
20
|
newImage: HTMLImageElement | null;
|
|
29
21
|
initialImage: HTMLImageElement | null;
|
|
30
22
|
imageBlob: _angular_core.WritableSignal<Blob[]>;
|
|
31
23
|
undoPressed: _angular_core.WritableSignal<boolean>;
|
|
32
24
|
redoPressed: _angular_core.WritableSignal<boolean>;
|
|
25
|
+
canUndo: _angular_core.WritableSignal<boolean>;
|
|
26
|
+
canRedo: _angular_core.WritableSignal<boolean>;
|
|
33
27
|
cropperRatio: _angular_core.WritableSignal<string>;
|
|
34
28
|
cropperSize: _angular_core.WritableSignal<number>;
|
|
35
29
|
toggleTool(tool: AXImageEditorTool): void;
|
|
36
30
|
activateTool(tool: AXImageEditorTool): void;
|
|
31
|
+
undo(): void;
|
|
32
|
+
redo(): void;
|
|
33
|
+
/** Handles Ctrl/Cmd+Z and Ctrl/Cmd+Y history shortcuts. Returns true when handled. */
|
|
34
|
+
handleHistoryShortcut(event: KeyboardEvent): boolean;
|
|
37
35
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorService, never>;
|
|
38
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
36
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
39
37
|
}
|
|
40
38
|
|
|
39
|
+
type AXImageEditorCropHandle = 'right' | 'top' | 'left' | 'bottom' | 'right-top' | 'bottom-right' | 'bottom-left' | 'left-top';
|
|
41
40
|
/**
|
|
42
41
|
* paint mode.
|
|
43
42
|
* @category Components
|
|
@@ -55,39 +54,43 @@ declare class AXImageEditorCropperWindowComponent implements OnDestroy {
|
|
|
55
54
|
protected cropperWindow: _angular_core.Signal<ElementRef<any>>;
|
|
56
55
|
private currentX;
|
|
57
56
|
private currentY;
|
|
58
|
-
private prevX;
|
|
59
|
-
private prevY;
|
|
60
57
|
private aspectWidth;
|
|
61
58
|
private aspectHeight;
|
|
62
59
|
private isMousePressed;
|
|
63
60
|
protected renderer: Renderer2;
|
|
64
61
|
private platformID;
|
|
65
|
-
private mouseMoveEvent
|
|
66
|
-
private mouseUpEvent
|
|
67
|
-
private mouseMoveEvent2
|
|
68
|
-
private mouseUpEvent2
|
|
69
|
-
private mouseDownEvent
|
|
70
|
-
private mouseLeaveEvent
|
|
62
|
+
private mouseMoveEvent?;
|
|
63
|
+
private mouseUpEvent?;
|
|
64
|
+
private mouseMoveEvent2?;
|
|
65
|
+
private mouseUpEvent2?;
|
|
66
|
+
private mouseDownEvent?;
|
|
67
|
+
private mouseLeaveEvent?;
|
|
68
|
+
private positioned;
|
|
71
69
|
ngOnDestroy(): void;
|
|
72
|
-
protected panMove(e:
|
|
73
|
-
protected panDown(e:
|
|
70
|
+
protected panMove(e: PointerEvent): void;
|
|
71
|
+
protected panDown(e: PointerEvent): void;
|
|
74
72
|
protected panUp(): void;
|
|
75
73
|
getCropperArea(): DOMRect;
|
|
76
|
-
private setPosition;
|
|
77
74
|
private startX;
|
|
78
75
|
private startY;
|
|
79
76
|
private startWidth;
|
|
80
77
|
private startHeight;
|
|
81
78
|
private startLeft;
|
|
82
79
|
private startTop;
|
|
83
|
-
protected handleSelector(e:
|
|
84
|
-
protected changeSizeHandler(e:
|
|
80
|
+
protected handleSelector(e: PointerEvent, value: AXImageEditorCropHandle): void;
|
|
81
|
+
protected changeSizeHandler(e: PointerEvent): void;
|
|
85
82
|
protected clearSelector(): void;
|
|
83
|
+
private normalizeRatio;
|
|
84
|
+
private centerOnParent;
|
|
85
|
+
private getImageBounds;
|
|
86
|
+
private constrainCropBox;
|
|
87
|
+
private clampToParent;
|
|
88
|
+
private applyPosition;
|
|
86
89
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorCropperWindowComponent, never>;
|
|
87
90
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorCropperWindowComponent, "ax-image-editor-cropper-window", never, { "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
88
91
|
}
|
|
89
92
|
|
|
90
|
-
declare class AXImageEditorViewComponent extends MXBaseComponent
|
|
93
|
+
declare class AXImageEditorViewComponent extends MXBaseComponent {
|
|
91
94
|
/**
|
|
92
95
|
* its change grid display state.
|
|
93
96
|
*/
|
|
@@ -118,44 +121,54 @@ declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDe
|
|
|
118
121
|
protected isDrawRectangleCreated: _angular_core.WritableSignal<boolean>;
|
|
119
122
|
/** @ignore */
|
|
120
123
|
protected parent: AXImageEditorContainerComponent;
|
|
121
|
-
|
|
122
|
-
|
|
124
|
+
private readonly destroyRef;
|
|
125
|
+
private readonly host;
|
|
123
126
|
/** @ignore */
|
|
124
127
|
protected imageEditorHistory: _angular_core.WritableSignal<HTMLImageElement[]>;
|
|
125
128
|
/** @ignore */
|
|
126
129
|
protected imageEditorHistoryPointer: _angular_core.WritableSignal<number>;
|
|
127
|
-
|
|
128
|
-
private
|
|
129
|
-
|
|
130
|
-
private
|
|
131
|
-
private
|
|
132
|
-
private
|
|
133
|
-
private
|
|
130
|
+
private canvasReady;
|
|
131
|
+
private drawing;
|
|
132
|
+
private didDraw;
|
|
133
|
+
private highlightSnapshot;
|
|
134
|
+
private highlightPoints;
|
|
135
|
+
private persistGeneration;
|
|
136
|
+
private sourceToken;
|
|
137
|
+
constructor();
|
|
134
138
|
/** @ignore */
|
|
135
139
|
protected resizeWindow(): void;
|
|
136
140
|
/** @ignore */
|
|
137
141
|
protected canvasResponsive(image: HTMLImageElement): void;
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
private
|
|
143
|
-
|
|
144
|
-
|
|
142
|
+
private loadSource;
|
|
143
|
+
private paintImage;
|
|
144
|
+
private fitCanvasDisplay;
|
|
145
|
+
private replaceHistory;
|
|
146
|
+
private pushHistory;
|
|
147
|
+
private syncHistoryFlags;
|
|
148
|
+
private applyUndo;
|
|
149
|
+
private applyRedo;
|
|
150
|
+
private canvasPoint;
|
|
151
|
+
private isDrawTool;
|
|
145
152
|
/** @ignore */
|
|
146
153
|
protected penConfigHandler(penType: 'pen' | 'highlight'): void;
|
|
154
|
+
private strokeHighlight;
|
|
147
155
|
/** @ignore */
|
|
148
|
-
protected
|
|
156
|
+
protected historyKeyDown(event: KeyboardEvent): void;
|
|
149
157
|
/** @ignore */
|
|
150
|
-
protected
|
|
158
|
+
protected focusCanvas(): void;
|
|
151
159
|
/** @ignore */
|
|
152
|
-
protected
|
|
160
|
+
protected mouseDownHandler(event: PointerEvent): void;
|
|
153
161
|
/** @ignore */
|
|
154
|
-
|
|
162
|
+
protected mouseMoveHandler(event: PointerEvent): void;
|
|
155
163
|
/** @ignore */
|
|
156
|
-
protected
|
|
164
|
+
protected mouseUpHandler(event?: PointerEvent): void;
|
|
165
|
+
/** Applies the current cropper selection. */
|
|
166
|
+
crop(): Promise<void>;
|
|
167
|
+
/** Encodes the current canvas into JPEG, PNG, and WebP blobs. */
|
|
168
|
+
commitChanges(): Promise<Blob[]>;
|
|
157
169
|
/** @ignore */
|
|
158
|
-
protected
|
|
170
|
+
protected rotateImage(): Promise<void>;
|
|
171
|
+
private persistCanvas;
|
|
159
172
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorViewComponent, never>;
|
|
160
173
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorViewComponent, "ax-image-editor-view", never, { "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "cropperSize": { "alias": "cropperSize"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
161
174
|
}
|
|
@@ -163,7 +176,7 @@ declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDe
|
|
|
163
176
|
declare const AXImageEditorContainerComponent_base: polytype.Polytype.ClusteredConstructor<[{
|
|
164
177
|
new (): MXInputBaseValueComponent<Blob[]>;
|
|
165
178
|
ɵfac: _angular_core.ɵɵFactoryDeclaration<MXInputBaseValueComponent<any>, never>;
|
|
166
|
-
ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
179
|
+
ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
167
180
|
}, typeof MXLookComponent]>;
|
|
168
181
|
/**
|
|
169
182
|
* paint container.
|
|
@@ -173,12 +186,21 @@ declare class AXImageEditorContainerComponent extends AXImageEditorContainerComp
|
|
|
173
186
|
#private;
|
|
174
187
|
/** @ignore */
|
|
175
188
|
protected service: AXImageEditorService;
|
|
189
|
+
private readonly host;
|
|
190
|
+
private readonly destroyRef;
|
|
176
191
|
imageEditorContainer: _angular_core.Signal<ElementRef<any>>;
|
|
177
192
|
view: _angular_core.Signal<AXImageEditorViewComponent>;
|
|
193
|
+
constructor();
|
|
194
|
+
/** @ignore */
|
|
195
|
+
protected focusEditor(): void;
|
|
178
196
|
/** Applies the current cropper selection. */
|
|
179
197
|
crop(): Promise<void>;
|
|
180
|
-
|
|
181
|
-
|
|
198
|
+
/** @ignore */
|
|
199
|
+
protected onEditorPointerDown(event: PointerEvent): void;
|
|
200
|
+
/** @ignore */
|
|
201
|
+
protected handleHistoryShortcut(event: KeyboardEvent): void;
|
|
202
|
+
/** Encodes the current canvas into JPEG, PNG, and WebP blobs. */
|
|
203
|
+
commitChanges(): Promise<Blob[]>;
|
|
182
204
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorContainerComponent, never>;
|
|
183
205
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorContainerComponent, "ax-image-editor-container", never, { "look": { "alias": "look"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "onValueChanged": "onValueChanged"; }, ["view"], ["ax-header", "ax-image-editor-view", "ax-footer", "ax-validation-rule"], true, never>;
|
|
184
206
|
}
|
|
@@ -287,7 +309,7 @@ declare class AXImageEditorToolSelectorComponent {
|
|
|
287
309
|
|
|
288
310
|
declare class AXImageEditorModule {
|
|
289
311
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorModule, never>;
|
|
290
|
-
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXImageEditorModule, never, [typeof
|
|
312
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXImageEditorModule, never, [typeof AXImageEditorViewComponent, typeof AXImageEditorContainerComponent, typeof AXImageEditorCropComponent, typeof AXImageEditorHistoryComponent, typeof AXImageEditorToolSelectorComponent, typeof AXImageEditorToolsBarComponent, typeof AXImageEditorPenComponent, typeof AXImageEditorHighlightComponent, typeof AXImageEditorRotateComponent, typeof AXImageEditorCropperWindowComponent], [typeof AXImageEditorViewComponent, typeof AXImageEditorContainerComponent, typeof AXImageEditorCropComponent, typeof AXImageEditorHistoryComponent, typeof AXImageEditorToolSelectorComponent, typeof AXImageEditorToolsBarComponent, typeof AXImageEditorPenComponent, typeof AXImageEditorHighlightComponent, typeof AXImageEditorRotateComponent, typeof AXImageEditorCropperWindowComponent]>;
|
|
291
313
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXImageEditorModule>;
|
|
292
314
|
}
|
|
293
315
|
|