@elementar-rt/components 0.6.55
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/README.md +49 -0
- package/action-required/index.d.ts +13 -0
- package/alert/index.d.ts +51 -0
- package/announcement/index.d.ts +45 -0
- package/avatar/index.d.ts +67 -0
- package/block-loader/index.d.ts +21 -0
- package/block-state/index.d.ts +33 -0
- package/brand-colors/index.d.ts +27 -0
- package/breadcrumbs/index.d.ts +104 -0
- package/card-overlay/index.d.ts +20 -0
- package/carousel/index.d.ts +75 -0
- package/code-highlighter/index.d.ts +18 -0
- package/color-picker/index.d.ts +92 -0
- package/color-scheme/index.d.ts +44 -0
- package/command-bar/index.d.ts +28 -0
- package/comment-editor/index.d.ts +194 -0
- package/comparison-slider/index.d.ts +51 -0
- package/confirm/index.d.ts +35 -0
- package/content-fade/index.d.ts +17 -0
- package/cookie-popup/index.d.ts +41 -0
- package/core/index.d.ts +252 -0
- package/country-select/index.d.ts +76 -0
- package/crop/index.d.ts +59 -0
- package/currency-select/index.d.ts +78 -0
- package/dashboard/index.d.ts +48 -0
- package/data-view/index.d.ts +127 -0
- package/date-format-select/index.d.ts +56 -0
- package/divider/index.d.ts +13 -0
- package/drawer/index.d.ts +35 -0
- package/emoji-picker/index.d.ts +49 -0
- package/expand/index.d.ts +26 -0
- package/fesm2022/elementar-rt-components-action-required.mjs +30 -0
- package/fesm2022/elementar-rt-components-action-required.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-alert.mjs +139 -0
- package/fesm2022/elementar-rt-components-alert.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-announcement.mjs +73 -0
- package/fesm2022/elementar-rt-components-announcement.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-avatar.mjs +234 -0
- package/fesm2022/elementar-rt-components-avatar.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-block-loader.mjs +54 -0
- package/fesm2022/elementar-rt-components-block-loader.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-block-state.mjs +75 -0
- package/fesm2022/elementar-rt-components-block-state.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-brand-colors.mjs +78 -0
- package/fesm2022/elementar-rt-components-brand-colors.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-breadcrumbs.mjs +213 -0
- package/fesm2022/elementar-rt-components-breadcrumbs.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-card-overlay.mjs +55 -0
- package/fesm2022/elementar-rt-components-card-overlay.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-carousel.mjs +605 -0
- package/fesm2022/elementar-rt-components-carousel.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-code-highlighter.mjs +57 -0
- package/fesm2022/elementar-rt-components-code-highlighter.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-color-picker.mjs +708 -0
- package/fesm2022/elementar-rt-components-color-picker.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-color-scheme.mjs +106 -0
- package/fesm2022/elementar-rt-components-color-scheme.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-command-bar.mjs +59 -0
- package/fesm2022/elementar-rt-components-command-bar.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-comment-editor.mjs +1039 -0
- package/fesm2022/elementar-rt-components-comment-editor.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-comparison-slider.mjs +193 -0
- package/fesm2022/elementar-rt-components-comparison-slider.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-confirm.mjs +86 -0
- package/fesm2022/elementar-rt-components-confirm.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-content-fade.mjs +35 -0
- package/fesm2022/elementar-rt-components-content-fade.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-cookie-popup.mjs +109 -0
- package/fesm2022/elementar-rt-components-cookie-popup.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-core.mjs +837 -0
- package/fesm2022/elementar-rt-components-core.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-country-select.mjs +477 -0
- package/fesm2022/elementar-rt-components-country-select.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-crop.mjs +183 -0
- package/fesm2022/elementar-rt-components-crop.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-currency-select.mjs +384 -0
- package/fesm2022/elementar-rt-components-currency-select.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-dashboard.mjs +96 -0
- package/fesm2022/elementar-rt-components-dashboard.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-data-view.mjs +302 -0
- package/fesm2022/elementar-rt-components-data-view.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-date-format-select.mjs +136 -0
- package/fesm2022/elementar-rt-components-date-format-select.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-divider.mjs +31 -0
- package/fesm2022/elementar-rt-components-divider.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-drawer.mjs +131 -0
- package/fesm2022/elementar-rt-components-drawer.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-emoji-picker.mjs +249 -0
- package/fesm2022/elementar-rt-components-emoji-picker.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-expand.mjs +60 -0
- package/fesm2022/elementar-rt-components-expand.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-filter-builder.mjs +333 -0
- package/fesm2022/elementar-rt-components-filter-builder.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-AqEghjO_.mjs +123 -0
- package/fesm2022/elementar-rt-components-form-renderer-autocomplete-many-field.component-AqEghjO_.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-CUKmZGFq.mjs +22 -0
- package/fesm2022/elementar-rt-components-form-renderer-checkbox-field.component-CUKmZGFq.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-DihIRWMt.mjs +40 -0
- package/fesm2022/elementar-rt-components-form-renderer-datepicker-field.component-DihIRWMt.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-divider-content.component-CjlGcU3B.mjs +17 -0
- package/fesm2022/elementar-rt-components-form-renderer-divider-content.component-CjlGcU3B.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-image-content.component-0pL2Fk0H.mjs +17 -0
- package/fesm2022/elementar-rt-components-form-renderer-image-content.component-0pL2Fk0H.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-input-field.component-X2sKvj6J.mjs +33 -0
- package/fesm2022/elementar-rt-components-form-renderer-input-field.component-X2sKvj6J.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-DWXZAA3F.mjs +38 -0
- package/fesm2022/elementar-rt-components-form-renderer-radio-group-field.component-DWXZAA3F.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-select-field.component-Cx9DZoD6.mjs +39 -0
- package/fesm2022/elementar-rt-components-form-renderer-select-field.component-Cx9DZoD6.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-text-content.component-BmFyUG06.mjs +24 -0
- package/fesm2022/elementar-rt-components-form-renderer-text-content.component-BmFyUG06.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-D9KmE049.mjs +37 -0
- package/fesm2022/elementar-rt-components-form-renderer-textarea-field.component-D9KmE049.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-BroP_Q4P.mjs +35 -0
- package/fesm2022/elementar-rt-components-form-renderer-timezone-field.component-BroP_Q4P.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-nGbtVi1_.mjs +22 -0
- package/fesm2022/elementar-rt-components-form-renderer-toggle-field.component-nGbtVi1_.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-form-renderer.mjs +321 -0
- package/fesm2022/elementar-rt-components-form-renderer.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-gauge.mjs +50 -0
- package/fesm2022/elementar-rt-components-gauge.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-icon.mjs +62 -0
- package/fesm2022/elementar-rt-components-icon.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-image-resizer.mjs +159 -0
- package/fesm2022/elementar-rt-components-image-resizer.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-image-viewer.mjs +349 -0
- package/fesm2022/elementar-rt-components-image-viewer.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-incidents.mjs +259 -0
- package/fesm2022/elementar-rt-components-incidents.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-inline-text-edit.mjs +181 -0
- package/fesm2022/elementar-rt-components-inline-text-edit.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-input-mask.mjs +180 -0
- package/fesm2022/elementar-rt-components-input-mask.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-input-validator.mjs +24 -0
- package/fesm2022/elementar-rt-components-input-validator.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-kanban-board.mjs +156 -0
- package/fesm2022/elementar-rt-components-kanban-board.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-layout.mjs +188 -0
- package/fesm2022/elementar-rt-components-layout.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-logo.mjs +43 -0
- package/fesm2022/elementar-rt-components-logo.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-marquee.mjs +79 -0
- package/fesm2022/elementar-rt-components-marquee.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-micro-chart.mjs +950 -0
- package/fesm2022/elementar-rt-components-micro-chart.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-navigation.mjs +379 -0
- package/fesm2022/elementar-rt-components-navigation.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-notifications.mjs +190 -0
- package/fesm2022/elementar-rt-components-notifications.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-number-input.mjs +288 -0
- package/fesm2022/elementar-rt-components-number-input.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-overlay-scrollbar.mjs +455 -0
- package/fesm2022/elementar-rt-components-overlay-scrollbar.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-overlay.mjs +112 -0
- package/fesm2022/elementar-rt-components-overlay.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-page-loading-bar.mjs +79 -0
- package/fesm2022/elementar-rt-components-page-loading-bar.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-panel.mjs +105 -0
- package/fesm2022/elementar-rt-components-panel.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-password-strength.mjs +474 -0
- package/fesm2022/elementar-rt-components-password-strength.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-phone-input.mjs +637 -0
- package/fesm2022/elementar-rt-components-phone-input.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-pin-input.mjs +197 -0
- package/fesm2022/elementar-rt-components-pin-input.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-popover.mjs +262 -0
- package/fesm2022/elementar-rt-components-popover.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-radio-card.mjs +102 -0
- package/fesm2022/elementar-rt-components-radio-card.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-rail-nav.mjs +84 -0
- package/fesm2022/elementar-rt-components-rail-nav.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-resizable-container.mjs +69 -0
- package/fesm2022/elementar-rt-components-resizable-container.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-screen-loader.mjs +27 -0
- package/fesm2022/elementar-rt-components-screen-loader.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-scroll-spy.mjs +165 -0
- package/fesm2022/elementar-rt-components-scroll-spy.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-segmented.mjs +153 -0
- package/fesm2022/elementar-rt-components-segmented.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-side-panel.mjs +110 -0
- package/fesm2022/elementar-rt-components-side-panel.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-sidebar.mjs +423 -0
- package/fesm2022/elementar-rt-components-sidebar.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-signature-pad.mjs +452 -0
- package/fesm2022/elementar-rt-components-signature-pad.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-skeleton.mjs +56 -0
- package/fesm2022/elementar-rt-components-skeleton.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-splash-screen.mjs +91 -0
- package/fesm2022/elementar-rt-components-splash-screen.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-stepper.mjs +194 -0
- package/fesm2022/elementar-rt-components-stepper.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-suggestions.mjs +76 -0
- package/fesm2022/elementar-rt-components-suggestions.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-tab-panel.mjs +270 -0
- package/fesm2022/elementar-rt-components-tab-panel.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-text-editor.mjs +1025 -0
- package/fesm2022/elementar-rt-components-text-editor.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-thumbnail-maker.mjs +214 -0
- package/fesm2022/elementar-rt-components-thumbnail-maker.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-timeline.mjs +122 -0
- package/fesm2022/elementar-rt-components-timeline.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-timezone-select.mjs +351 -0
- package/fesm2022/elementar-rt-components-timezone-select.mjs.map +1 -0
- package/fesm2022/elementar-rt-components-upload.mjs +340 -0
- package/fesm2022/elementar-rt-components-upload.mjs.map +1 -0
- package/fesm2022/elementar-rt-components.mjs +6 -0
- package/fesm2022/elementar-rt-components.mjs.map +1 -0
- package/filter-builder/index.d.ts +107 -0
- package/form-renderer/index.d.ts +121 -0
- package/gauge/index.d.ts +21 -0
- package/icon/index.d.ts +17 -0
- package/image-resizer/index.d.ts +35 -0
- package/image-viewer/index.d.ts +63 -0
- package/incidents/index.d.ts +119 -0
- package/index.d.ts +2 -0
- package/inline-text-edit/index.d.ts +39 -0
- package/input-mask/index.d.ts +36 -0
- package/input-validator/index.d.ts +5 -0
- package/kanban-board/index.d.ts +68 -0
- package/layout/index.d.ts +75 -0
- package/logo/index.d.ts +21 -0
- package/marquee/index.d.ts +26 -0
- package/micro-chart/index.d.ts +193 -0
- package/navigation/index.d.ts +119 -0
- package/notifications/index.d.ts +84 -0
- package/number-input/index.d.ts +93 -0
- package/overlay/index.d.ts +12 -0
- package/overlay-scrollbar/index.d.ts +66 -0
- package/package.json +356 -0
- package/page-loading-bar/index.d.ts +20 -0
- package/panel/index.d.ts +43 -0
- package/password-strength/index.d.ts +109 -0
- package/phone-input/index.d.ts +94 -0
- package/pin-input/index.d.ts +48 -0
- package/popover/index.d.ts +75 -0
- package/radio-card/index.d.ts +37 -0
- package/rail-nav/index.d.ts +36 -0
- package/resizable-container/index.d.ts +21 -0
- package/screen-loader/index.d.ts +9 -0
- package/scroll-spy/index.d.ts +48 -0
- package/segmented/index.d.ts +54 -0
- package/side-panel/index.d.ts +42 -0
- package/sidebar/index.d.ts +143 -0
- package/signature-pad/index.d.ts +49 -0
- package/skeleton/index.d.ts +24 -0
- package/splash-screen/index.d.ts +31 -0
- package/stepper/index.d.ts +65 -0
- package/styles/_common.scss +776 -0
- package/styles/themes/cyan-orange.scss +41 -0
- package/styles/themes/default.scss +5 -0
- package/styles/themes/magenta-violet.scss +41 -0
- package/styles/themes/rose-red.scss +41 -0
- package/suggestions/index.d.ts +32 -0
- package/tab-panel/index.d.ts +96 -0
- package/text-editor/index.d.ts +191 -0
- package/thumbnail-maker/index.d.ts +35 -0
- package/timeline/index.d.ts +57 -0
- package/timezone-select/index.d.ts +72 -0
- package/upload/index.d.ts +134 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elementar-rt-components-comment-editor.mjs","sources":["../../../projects/components/comment-editor/src/types.ts","../../../projects/components/comment-editor/src/extensions/angular-renderer.ts","../../../projects/components/comment-editor/src/extensions/angular-node-view-renderer.ts","../../../projects/components/comment-editor/src/extensions/angular-node-view.component.ts","../../../projects/components/comment-editor/src/extensions/image-uploading-placeholder/image-uploading-placeholder.component.ts","../../../projects/components/comment-editor/src/extensions/image-uploading-placeholder/image-uploading-placeholder.component.html","../../../projects/components/comment-editor/src/extensions/image-uploading-placeholder.ts","../../../projects/components/comment-editor/src/comment-editor/comment-editor.component.ts","../../../projects/components/comment-editor/src/comment-editor/comment-editor.component.html","../../../projects/components/comment-editor/src/comment-editor-divider/comment-editor-divider.component.ts","../../../projects/components/comment-editor/src/comment-editor-divider/comment-editor-divider.component.html","../../../projects/components/comment-editor/src/comment-editor-toolbar/comment-editor-toolbar.component.ts","../../../projects/components/comment-editor/src/comment-editor-toolbar/comment-editor-toolbar.component.html","../../../projects/components/comment-editor/src/comment-editor-bubble-menu/comment-editor-bubble-menu.component.ts","../../../projects/components/comment-editor/src/comment-editor-bubble-menu/comment-editor-bubble-menu.component.html","../../../projects/components/comment-editor/src/comment-editor-footer-bar/comment-editor-footer-bar.component.ts","../../../projects/components/comment-editor/src/comment-editor-footer-bar/comment-editor-footer-bar.component.html","../../../projects/components/comment-editor/src/_commands/comment-editor-command.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-bold.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-italic.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-strike.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-bullet-list.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-ordered-list.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-blockquote.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-code-block.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-image.directive.ts","../../../projects/components/comment-editor/src/youtube/youtube.dialog.ts","../../../projects/components/comment-editor/src/youtube/youtube.dialog.html","../../../projects/components/comment-editor/src/_commands/comment-editor-command-youtube.directive.ts","../../../projects/components/comment-editor/src/link/link.dialog.ts","../../../projects/components/comment-editor/src/link/link.dialog.html","../../../projects/components/comment-editor/src/_commands/comment-editor-command-link.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-code.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-edit-link.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-unset-link.directive.ts","../../../projects/components/comment-editor/src/_commands/comment-editor-command-toggle-toolbar.directive.ts","../../../projects/components/comment-editor/elementar-rt-components-comment-editor.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { Editor } from '@tiptap/core';\r\n\r\nexport interface CommentEditor {\r\n api: CommentEditorAPI;\r\n}\r\n\r\nexport interface CommentEditorAPI {\r\n isCommandDisabled: (command: string) => boolean | null;\r\n isActive: (command: string) => boolean | null;\r\n runCommand: (command: string) => void;\r\n editor: () => Editor;\r\n isToolbarActive: () => boolean;\r\n toggleToolbar: () => void;\r\n isEditorActivated: () => boolean;\r\n}\r\n\r\nexport const COMMENT_EDITOR = new InjectionToken('COMMENT_EDITOR');\r\nexport const COMMENT_EDITOR_BUBBLE_MENU = new InjectionToken('COMMENT_EDITOR_BUBBLE_MENU');\r\n","import {\r\n ApplicationRef, ComponentRef, ElementRef,\r\n Injector, Type, createComponent,\r\n} from '@angular/core';\r\n\r\nexport class AngularRenderer<C, P> {\r\n private applicationRef: ApplicationRef;\r\n private componentRef: ComponentRef<C>;\r\n\r\n constructor(ViewComponent: Type<C>, injector: Injector, props: Partial<P>) {\r\n this.applicationRef = injector.get(ApplicationRef);\r\n this.componentRef = createComponent(ViewComponent, {\r\n environmentInjector: this.applicationRef.injector,\r\n elementInjector: injector,\r\n });\r\n\r\n // set input props to the component\r\n this.updateProps(props);\r\n this.applicationRef.attachView(this.componentRef.hostView);\r\n }\r\n\r\n get instance(): C {\r\n return this.componentRef.instance;\r\n }\r\n\r\n get elementRef(): ElementRef {\r\n return this.componentRef.injector.get(ElementRef);\r\n }\r\n\r\n get dom(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n\r\n updateProps<T extends P>(props: Partial<T>): void {\r\n Object.entries(props).forEach(([key, value]) => {\r\n this.componentRef.setInput(key, value);\r\n });\r\n }\r\n\r\n detectChanges(): void {\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n destroy(): void {\r\n this.componentRef.destroy();\r\n this.applicationRef.detachView(this.componentRef.hostView);\r\n }\r\n}\r\n","import { Injector, Type } from '@angular/core';\r\nimport {\r\n Editor, NodeView, NodeViewProps,\r\n NodeViewRenderer, NodeViewRendererProps, NodeViewRendererOptions, DecorationWithType,\r\n} from '@tiptap/core';\r\nimport type { Decoration } from '@tiptap/pm/view';\r\nimport type { Node as ProseMirrorNode } from '@tiptap/pm/model';\r\nimport { AngularRenderer } from './angular-renderer';\r\nimport { AngularNodeViewComponent } from './angular-node-view.component';\r\n\r\ninterface RendererUpdateProps {\r\n oldNode: ProseMirrorNode;\r\n oldDecorations: Decoration[];\r\n newNode: ProseMirrorNode;\r\n newDecorations: Decoration[];\r\n updateProps: () => void;\r\n}\r\n\r\ninterface AngularNodeViewRendererOptions extends NodeViewRendererOptions {\r\n update?: ((props: RendererUpdateProps) => boolean) | null;\r\n injector: Injector;\r\n}\r\n\r\nclass AngularNodeView extends NodeView<Type<AngularNodeViewComponent>, Editor, AngularNodeViewRendererOptions> {\r\n renderer!: AngularRenderer<AngularNodeViewComponent, NodeViewProps>;\r\n contentDOMElement!: HTMLElement | null;\r\n\r\n override mount() {\r\n const injector = this.options.injector as Injector;\r\n const props: NodeViewProps = {\r\n editor: this.editor,\r\n node: this.node,\r\n // @ts-ignore\r\n decorations: this.decorations,\r\n selected: false,\r\n extension: this.extension,\r\n getPos: () => this.getPos(),\r\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\r\n deleteNode: () => this.deleteNode(),\r\n };\r\n\r\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\r\n this.editor.on('selectionUpdate', this.handleSelectionUpdate);\r\n\r\n // create renderer\r\n this.renderer = new AngularRenderer(this.component, injector, props);\r\n\r\n // Register drag handler\r\n if (this.extension.config.draggable) {\r\n this.renderer.elementRef.nativeElement.ondragstart = (e: DragEvent) => {\r\n this.onDragStart(e);\r\n };\r\n }\r\n\r\n this.contentDOMElement = this.node.isLeaf ? null : document.createElement(this.node.isInline ? 'span' : 'div');\r\n\r\n if (this.contentDOMElement) {\r\n // For some reason the whiteSpace prop is not inherited properly in Chrome and Safari\r\n // With this fix it seems to work fine\r\n // See: https://github.com/ueberdosis/tiptap/issues/1197\r\n this.contentDOMElement.style.whiteSpace = 'inherit';\r\n\r\n // Required for editable node views\r\n // The content won't be rendered if `editable` is set to `false`\r\n this.renderer.detectChanges();\r\n }\r\n\r\n this.appendContendDom();\r\n }\r\n\r\n override get dom() {\r\n return this.renderer.dom;\r\n }\r\n\r\n override get contentDOM() {\r\n if (this.node.isLeaf) {\r\n return null;\r\n }\r\n\r\n return this.contentDOMElement;\r\n }\r\n\r\n private appendContendDom() {\r\n const contentElement = this.dom.querySelector('[data-node-view-content]');\r\n\r\n if (\r\n this.contentDOMElement\r\n && contentElement\r\n && !contentElement.contains(this.contentDOMElement)\r\n ) {\r\n contentElement.appendChild(this.contentDOMElement);\r\n }\r\n }\r\n\r\n handleSelectionUpdate() {\r\n const { from, to } = this.editor.state.selection;\r\n\r\n if (from <= this.getPos() && to >= this.getPos() + this.node.nodeSize) {\r\n this.selectNode();\r\n } else {\r\n this.deselectNode();\r\n }\r\n }\r\n\r\n update(node: ProseMirrorNode, decorations: DecorationWithType[]): boolean {\r\n const updateProps = () => {\r\n this.renderer.updateProps({ node, decorations });\r\n };\r\n\r\n if (this.options.update) {\r\n const oldNode = this.node;\r\n const oldDecorations = this.decorations;\r\n this.node = node;\r\n this.decorations = decorations;\r\n return this.options.update({\r\n oldNode,\r\n // @ts-ignore\r\n oldDecorations,\r\n newNode: node,\r\n newDecorations: decorations,\r\n updateProps: () => updateProps(),\r\n });\r\n }\r\n\r\n if (node.type !== this.node.type) {\r\n return false;\r\n }\r\n\r\n if (node === this.node && this.decorations === decorations) {\r\n return true;\r\n }\r\n\r\n this.node = node;\r\n this.decorations = decorations;\r\n updateProps();\r\n\r\n return true;\r\n }\r\n\r\n selectNode() {\r\n this.renderer.updateProps({ selected: true });\r\n }\r\n\r\n deselectNode() {\r\n this.renderer.updateProps({ selected: false });\r\n }\r\n\r\n destroy() {\r\n this.renderer.destroy();\r\n this.editor.off('selectionUpdate', this.handleSelectionUpdate);\r\n this.contentDOMElement = null;\r\n }\r\n}\r\n\r\nexport const AngularNodeViewRenderer = (\r\n ViewComponent: Type<AngularNodeViewComponent>,\r\n options: Partial<AngularNodeViewRendererOptions>,\r\n): NodeViewRenderer => {\r\n // @ts-ignore\r\n return (props: NodeViewRendererProps) => {\r\n return new AngularNodeView(ViewComponent, props, options);\r\n };\r\n};\r\n","import { Component, Input } from '@angular/core';\r\nimport type { NodeViewProps } from '@tiptap/core';\r\n\r\n@Component({standalone: true, template: ''})\r\nexport class AngularNodeViewComponent implements NodeViewProps {\r\n @Input() editor!: NodeViewProps['editor'];\r\n @Input() node!: NodeViewProps['node'];\r\n @Input() decorations!: NodeViewProps['decorations'];\r\n @Input() selected!: NodeViewProps['selected'];\r\n @Input() extension!: NodeViewProps['extension'];\r\n @Input() getPos!: NodeViewProps['getPos'];\r\n @Input() updateAttributes!: NodeViewProps['updateAttributes'];\r\n @Input() deleteNode!: NodeViewProps['deleteNode'];\r\n @Input() HTMLAttributes: Record<string, any>;\r\n @Input() innerDecorations: any;\r\n @Input() view: any;\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { AngularNodeViewComponent } from '../angular-node-view.component';\r\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'emr-image-uploading-placeholder',\r\n imports: [\r\n MatProgressSpinner\r\n ],\r\n templateUrl: './image-uploading-placeholder.component.html',\r\n styleUrl: './image-uploading-placeholder.component.scss',\r\n host: {\r\n 'class': 'emr-image-uploading-placeholder',\r\n '[class.selected]': 'selected'\r\n }\r\n})\r\nexport class ImageUploadingPlaceholderComponent extends AngularNodeViewComponent implements OnInit, OnDestroy {\r\n protected src: string;\r\n protected error: string;\r\n private _canceled = false;\r\n\r\n ngOnInit() {\r\n const uploadFn = this.extension.options['uploadFn'];\r\n this.src = this.node.attrs['src'];\r\n const blob = this._dataURItoBlob(this.src);\r\n uploadFn(blob).then((src: string) => {\r\n if (this._canceled) {\r\n return;\r\n }\r\n\r\n const image = new Image();\r\n image.src = src;\r\n image.onload = () => {\r\n this.editor.chain().focus().setImage({ src }).run();\r\n };\r\n }, (error: string) => {\r\n this.error = error;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._canceled = true;\r\n }\r\n\r\n private _dataURItoBlob(dataURI: string): Blob {\r\n // convert base64 to raw binary data held in a string\r\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\r\n const byteString = atob(dataURI.split(',')[1]);\r\n\r\n // separate out the mime component\r\n const mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\r\n\r\n // write the bytes of the string to an ArrayBuffer\r\n const ab = new ArrayBuffer(byteString.length);\r\n const ia = new Uint8Array(ab);\r\n\r\n for (var i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n return new Blob([ab], { type: mimeString });\r\n }\r\n}\r\n","@if (src) {\r\n <div class=\"flex items-center justify-center relative\">\r\n @if (error) {\r\n <div class=\"absolute top-0 start-0 right-0 min-h-8 bg-error z-[2]\r\n text-on-error text-tiny flex items-center px-3\">{{ error }}</div>\r\n }\r\n <div class=\"w-max absolute start-1/2 top-1/2 z-[1] -translate-y-1/2 -translate-x-1/2\">\r\n @if (!error) {\r\n <mat-spinner></mat-spinner>\r\n }\r\n </div>\r\n <img [src]=\"src\" alt=\"\" class=\"max-w-full opacity-70\">\r\n </div>\r\n}\r\n","import { mergeAttributes, Node } from '@tiptap/core'\r\nimport { Injector } from '@angular/core';\r\nimport { AngularNodeViewRenderer } from './angular-node-view-renderer';\r\nimport {\r\n ImageUploadingPlaceholderComponent\r\n} from './image-uploading-placeholder/image-uploading-placeholder.component';\r\n\r\ndeclare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n imageUploadingPlaceholder: {\r\n /** Add an image */\r\n addImageUploadingPlaceholder: (options: { src: string, file: File }) => ReturnType\r\n }\r\n }\r\n}\r\n\r\ninterface ImageUploadingPlaceholderOptions {\r\n uploadFn: ((file: Blob) => Promise<string>) | undefined;\r\n}\r\n\r\nconst ImageUploadingPlaceholderExtension = (injector: Injector, options: ImageUploadingPlaceholderOptions): Node => {\r\n return Node.create({\r\n name: 'imageUploadingPlaceholder',\r\n draggable: false,\r\n group: 'block',\r\n addOptions() {\r\n return {\r\n uploadFn: options.uploadFn\r\n }\r\n },\r\n addAttributes() {\r\n return {\r\n uploadId: {\r\n default: ''\r\n },\r\n src: {\r\n default: null\r\n }\r\n };\r\n },\r\n addCommands() {\r\n return {\r\n addImageUploadingPlaceholder: options => ({ commands }) => {\r\n return commands.insertContent({\r\n type: this.name,\r\n attrs: {\r\n src: options.src\r\n }\r\n });\r\n },\r\n }\r\n },\r\n addNodeView() {\r\n return AngularNodeViewRenderer(ImageUploadingPlaceholderComponent, { injector });\r\n },\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'image-uploading-placeholder',\r\n }\r\n ]\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n 'image-uploading-placeholder', mergeAttributes(HTMLAttributes),\r\n ];\r\n }\r\n })\r\n};\r\n\r\nexport default ImageUploadingPlaceholderExtension;\r\n","import {\r\n booleanAttribute, ChangeDetectorRef,\r\n Component,\r\n ElementRef, forwardRef,\r\n inject, Injector,\r\n input,\r\n OnDestroy, OnInit,\r\n output, PLATFORM_ID,\r\n viewChild,\r\n DOCUMENT\r\n} from '@angular/core';\r\nimport { Editor } from '@tiptap/core';\r\nimport Document from '@tiptap/extension-document';\r\nimport Paragraph from '@tiptap/extension-paragraph';\r\nimport Text from '@tiptap/extension-text';\r\nimport Bold from '@tiptap/extension-bold';\r\nimport Italic from '@tiptap/extension-italic';\r\nimport Strike from '@tiptap/extension-strike';\r\nimport CodeBlock from '@tiptap/extension-code-block';\r\nimport { Blockquote } from '@tiptap/extension-blockquote';\r\nimport BulletList from '@tiptap/extension-bullet-list';\r\nimport OrderedList from '@tiptap/extension-ordered-list';\r\nimport ListItem from '@tiptap/extension-list-item';\r\nimport Link from '@tiptap/extension-link';\r\nimport Placeholder from '@tiptap/extension-placeholder';\r\nimport Youtube from '@tiptap/extension-youtube';\r\nimport BubbleMenu from '@tiptap/extension-bubble-menu';\r\nimport Code from '@tiptap/extension-code';\r\nimport History from '@tiptap/extension-history';\r\nimport Dropcursor from '@tiptap/extension-dropcursor';\r\nimport Image from '@tiptap/extension-image';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { COMMENT_EDITOR, CommentEditorAPI } from '../types';\r\nimport ImageUploadingPlaceholderExtension from '../extensions/image-uploading-placeholder';\r\n\r\n@Component({\r\n selector: 'emr-comment-editor',\r\n exportAs: 'emrCommentEditor',\r\n imports: [\r\n MatButton\r\n ],\r\n templateUrl: './comment-editor.component.html',\r\n styleUrl: './comment-editor.component.scss',\r\n providers: [\r\n {\r\n provide: COMMENT_EDITOR,\r\n useExisting: forwardRef(() => CommentEditorComponent)\r\n }\r\n ],\r\n host: {\r\n 'class': 'emr-comment-editor',\r\n '[class.full-view]': 'fullView || fullViewMode()',\r\n '(click)': 'activateFullView()'\r\n }\r\n})\r\nexport class CommentEditorComponent implements OnInit, OnDestroy {\r\n private _platformId = inject(PLATFORM_ID);\r\n private _document = inject(DOCUMENT);\r\n private _cdr = inject(ChangeDetectorRef);\r\n private _injector = inject(Injector);\r\n private _content = viewChild.required<ElementRef>('content');\r\n private _bubbleMenu = viewChild.required<ElementRef>('bubbleMenu');\r\n private _imageBubbleMenu = viewChild.required<ElementRef>('imageBubbleMenu');\r\n protected _value = '';\r\n protected editor: Editor;\r\n protected showToolbar = false;\r\n protected fullView = false;\r\n\r\n contentMaxHeight = input<number>();\r\n buttonCancelLabel = input<string>('Cancel');\r\n buttonSendLabel = input<string>('Send');\r\n placeholder = input('Write something …');\r\n toolbarAlwaysVisible = input(false, {\r\n transform: booleanAttribute\r\n });\r\n fullViewMode = input(false, {\r\n transform: booleanAttribute\r\n });\r\n cancelButtonAlwaysVisible = input(false, {\r\n transform: booleanAttribute\r\n });\r\n imageUploadFn = input<(file: Blob) => Promise<string>>();\r\n\r\n readonly sent = output<string>();\r\n readonly canceled = output<void>();\r\n\r\n ngOnInit() {\r\n this._init();\r\n }\r\n\r\n get api(): CommentEditorAPI {\r\n return {\r\n isCommandDisabled: (command: string) => this.isCommandDisabled(command),\r\n isActive: (command: string) => this.editor?.isActive(command),\r\n runCommand: (command: string) => this._runCommand(command),\r\n editor: () => this.editor,\r\n isToolbarActive: () => this.showToolbar,\r\n toggleToolbar: () => this.toggleToolbar(),\r\n isEditorActivated: () => this.fullView || this.fullViewMode()\r\n }\r\n }\r\n\r\n isCommandDisabled(command: string): boolean | null {\r\n if (!this.editor) {\r\n return true;\r\n }\r\n\r\n const canFocus = this.editor.can().chain().focus() as any;\r\n return !canFocus[command]().run() || null;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.editor?.destroy();\r\n }\r\n\r\n send(event: MouseEvent): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.sent.emit(this._value);\r\n this.showToolbar = false;\r\n this.fullView = false;\r\n this._value = '';\r\n this.editor.commands.clearContent(true);\r\n }\r\n\r\n activateFullView(): void {\r\n if (this.fullView) {\r\n return;\r\n }\r\n\r\n this.fullView = true;\r\n }\r\n\r\n toggleToolbar(): void {\r\n this.showToolbar = !this.showToolbar;\r\n }\r\n\r\n cancel(event: MouseEvent): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.showToolbar = false;\r\n this.fullView = false;\r\n this._value = '';\r\n this.editor.commands.clearContent(true);\r\n this.canceled.emit();\r\n }\r\n\r\n private _runCommand(command: string): void {\r\n if (!this.editor) {\r\n return;\r\n }\r\n\r\n const chainFocus = this.editor.chain().focus() as any;\r\n chainFocus[command]().run();\r\n }\r\n\r\n private _init(): void {\r\n if (isPlatformServer(this._platformId)) {\r\n return;\r\n }\r\n\r\n this.editor = new Editor({\r\n element: this._content().nativeElement,\r\n extensions: [\r\n Document,\r\n Paragraph,\r\n Text,\r\n Bold,\r\n Italic,\r\n Strike,\r\n Blockquote,\r\n CodeBlock,\r\n BulletList,\r\n OrderedList,\r\n ListItem,\r\n Code,\r\n History,\r\n Dropcursor,\r\n Youtube.configure({\r\n controls: false,\r\n nocookie: true,\r\n }),\r\n ImageUploadingPlaceholderExtension(this._injector, {\r\n uploadFn: this.imageUploadFn(),\r\n }),\r\n Image.configure({\r\n inline: true,\r\n allowBase64: true\r\n }),\r\n Link.configure({\r\n openOnClick: false,\r\n defaultProtocol: 'https',\r\n }),\r\n Placeholder.configure({\r\n placeholder: this.placeholder()\r\n }),\r\n // FloatingMenu.configure({\r\n // element: this._floatingMenu().nativeElement\r\n // }),\r\n BubbleMenu.configure({\r\n element: this._imageBubbleMenu().nativeElement,\r\n shouldShow: ({ editor, view, state, oldState, from, to }) => {\r\n // return editor.isActive('image');\r\n return false;\r\n },\r\n }),\r\n BubbleMenu.configure({\r\n element: this._bubbleMenu().nativeElement,\r\n tippyOptions: {\r\n appendTo: this._document.body,\r\n zIndex: 999\r\n },\r\n shouldShow: ({ editor, view, state, oldState, from, to }) => {\r\n return !editor.isActive('image') &&\r\n !editor.isActive('youtube') &&\r\n !editor.isActive('imageUploadingPlaceholder') &&\r\n !editor.view.state.selection.empty\r\n ;\r\n },\r\n })\r\n ],\r\n content: '',\r\n onUpdate: ({ editor }) => {\r\n this._value = !editor.isEmpty ? editor.getHTML() : '';\r\n }\r\n });\r\n this._cdr.detectChanges();\r\n }\r\n}\r\n","@if ((showToolbar || toolbarAlwaysVisible()) && (fullView || fullViewMode())) {\r\n <div class=\"toolbar\">\r\n <ng-content select=\"emr-comment-editor-toolbar\" />\r\n </div>\r\n}\r\n<div #content class=\"content prose dark:prose-invert max-w-full\"></div>\r\n<div class=\"footer\">\r\n <div class=\"flex items-center gap-0.5\">\r\n <ng-content select=\"emr-comment-editor-footer-bar\"/>\r\n </div>\r\n <div class=\"flex items-center gap-2\">\r\n @if ((fullView && !fullViewMode()) || cancelButtonAlwaysVisible()) {\r\n <button mat-button (click)=\"cancel($event)\">{{ buttonCancelLabel() }}</button>\r\n }\r\n\r\n <button mat-flat-button [disabled]=\"!_value || null\" (click)=\"send($event)\">{{ buttonSendLabel() }}</button>\r\n </div>\r\n</div>\r\n<div #imageBubbleMenu class=\"emr-comment-editor-bubble-menu\">\r\n</div>\r\n<div #bubbleMenu>\r\n <ng-content select=\"emr-comment-editor-bubble-menu\"/>\r\n</div>\r\n<!--<div #floatingMenu class=\"floating-menu\">-->\r\n<!-- @if (editor) {-->\r\n<!-- <div class=\"flex items-center gap-1.5\">-->\r\n<!-- <button class=\"button\"-->\r\n<!-- [disabled]=\"isCommandDisabled('toggleCodeBlock')\"-->\r\n<!-- [class.active]=\"editor && editor.isActive('codeBlock')\"-->\r\n<!-- (click)=\"onButtonClick('toggleCodeBlock')\">-->\r\n<!-- <mat-icon>code</mat-icon>-->\r\n<!-- </button>-->\r\n<!-- <button class=\"button\">-->\r\n<!-- <mat-icon>image</mat-icon>-->\r\n<!-- </button>-->\r\n<!-- </div>-->\r\n<!-- }-->\r\n<!--</div>-->\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'emr-comment-editor-divider',\r\n imports: [],\r\n templateUrl: './comment-editor-divider.component.html',\r\n styleUrl: './comment-editor-divider.component.scss'\r\n})\r\nexport class CommentEditorDividerComponent {\r\n\r\n}\r\n","<div class=\"divider\"></div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'emr-comment-editor-toolbar',\r\n exportAs: 'emrCommentEditorToolbar',\r\n templateUrl: './comment-editor-toolbar.component.html',\r\n styleUrl: './comment-editor-toolbar.component.scss',\r\n host: {\r\n 'class': 'emr-comment-editor-toolbar',\r\n }\r\n})\r\nexport class CommentEditorToolbarComponent {\r\n}\r\n","<ng-content select=\"[emrCommentEditorCommand],emr-comment-editor-divider\"></ng-content>\r\n","import { Component, forwardRef, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, COMMENT_EDITOR_BUBBLE_MENU, CommentEditor } from '../types';\r\n\r\n@Component({\r\n selector: 'emr-comment-editor-bubble-menu',\r\n exportAs: 'emrCommentEditorBubbleMenu',\r\n providers: [\r\n {\r\n provide: COMMENT_EDITOR_BUBBLE_MENU,\r\n useExisting: forwardRef(() => CommentEditorBubbleMenuComponent)\r\n }\r\n ],\r\n templateUrl: './comment-editor-bubble-menu.component.html',\r\n styleUrl: './comment-editor-bubble-menu.component.scss',\r\n host: {\r\n 'class': 'emr-comment-editor-bubble-menu',\r\n }\r\n})\r\nexport class CommentEditorBubbleMenuComponent {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n getLinkUrl(): string | null {\r\n return (this.commentEditor.api.editor()?.getAttributes('link') as HTMLLinkElement).href || null;\r\n }\r\n}\r\n","@if (this.commentEditor.api.isActive('link') && getLinkUrl()) {\r\n <div class=\"flex items-center gap-1 h-11 border-b border-b-default border-b-neutral-700\">\r\n <div class=\"grow text-sm overflow-hidden text-ellipsis whitespace-nowrap w-[116px]\">\r\n <a [href]=\"getLinkUrl()\" target=\"_blank\" class=\"link\">{{ getLinkUrl() }}</a>\r\n </div>\r\n <div class=\"flex items-center flex-none\">\r\n <ng-content select=\"[emrCommentEditorCommandEditLink],[emrCommentEditorCommandUnsetLink]\"></ng-content>\r\n </div>\r\n </div>\r\n}\r\n<div class=\"h-12 flex items-center justify-center gap-0.5\">\r\n <ng-content select=\"[emrCommentEditorCommand],emr-comment-editor-divider\"></ng-content>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'emr-comment-editor-footer-bar',\r\n exportAs: 'emrCommentEditorFooterBar',\r\n templateUrl: './comment-editor-footer-bar.component.html',\r\n styleUrl: './comment-editor-footer-bar.component.scss',\r\n host: {\r\n 'class': 'emr-comment-editor-footer-bar',\r\n }\r\n})\r\nexport class CommentEditorFooterBarComponent {\r\n\r\n}\r\n","<ng-content select=\"[emrCommentEditorCommand],emr-comment-editor-divider\"></ng-content>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommand]',\r\n standalone: true,\r\n host: {\r\n '[class.button]': 'true'\r\n }\r\n})\r\nexport class CommentEditorCommandDirective {\r\n\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandBold]',\r\n exportAs: 'emrCommentEditorCommandBold',\r\n standalone: true,\r\n host: {\r\n '[attr.disabled]': `(commentEditor && commentEditor.api.isCommandDisabled('toggleBold')) ? '' : null`,\r\n '[class.active]': `commentEditor && commentEditor.api.isActive('bold')`,\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandBoldDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n protected onClick() {\r\n this.commentEditor.api.runCommand('toggleBold');\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandItalic]',\r\n standalone: true,\r\n host: {\r\n '[attr.disabled]': `(commentEditor && commentEditor.api.isCommandDisabled('toggleItalic')) ? '' : null`,\r\n '[class.active]': `commentEditor && commentEditor.api.isActive('italic')`,\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandItalicDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n protected onClick() {\r\n this.commentEditor.api.runCommand('toggleItalic');\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandStrike]',\r\n standalone: true,\r\n host: {\r\n '[attr.disabled]': `(commentEditor && commentEditor.api.isCommandDisabled('toggleStrike')) ? '' : null`,\r\n '[class.active]': `commentEditor && commentEditor.api.isActive('strike')`,\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandStrikeDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n protected onClick() {\r\n this.commentEditor.api.runCommand('toggleStrike');\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandBulletList]',\r\n standalone: true,\r\n host: {\r\n '[attr.disabled]': `(commentEditor && commentEditor.api.isCommandDisabled('toggleBulletList')) ? '' : null`,\r\n '[class.active]': `commentEditor && commentEditor.api.isActive('bulletList')`,\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandBulletListDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n protected onClick() {\r\n this.commentEditor.api.runCommand('toggleBulletList');\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandOrderedList]',\r\n standalone: true,\r\n host: {\r\n '[attr.disabled]': `(commentEditor && commentEditor.api.isCommandDisabled('toggleOrderedList')) ? '' : null`,\r\n '[class.active]': `commentEditor && commentEditor.api.isActive('orderedList')`,\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandOrderedListDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n protected onClick() {\r\n this.commentEditor.api.runCommand('toggleOrderedList');\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandBlockquote]',\r\n standalone: true,\r\n host: {\r\n '[attr.disabled]': `(commentEditor && commentEditor.api.isCommandDisabled('toggleBlockquote')) ? '' : null`,\r\n '[class.active]': `commentEditor && commentEditor.api.isActive('blockquote')`,\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandBlockquoteDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n protected onClick() {\r\n this.commentEditor.api.runCommand('toggleBlockquote');\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandCodeBlock]',\r\n standalone: true,\r\n host: {\r\n '[attr.disabled]': `(commentEditor && commentEditor.api.isCommandDisabled('toggleCodeBlock')) ? '' : null`,\r\n '[class.active]': `commentEditor && commentEditor.api.isActive('codeBlock')`,\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandCodeBlockDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n protected onClick() {\r\n this.commentEditor.api.runCommand('toggleCodeBlock');\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\nimport { UploadFileSelectedEvent, UploadTriggerDirective } from '@elementar-rt/components/upload';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandImage]',\r\n standalone: true,\r\n hostDirectives: [\r\n {\r\n directive: UploadTriggerDirective,\r\n outputs: ['fileSelected']\r\n }\r\n ],\r\n host: {\r\n '[attr.accept]': '\"image/*\"',\r\n '(fileSelected)': `onImageSelected($event)`\r\n }\r\n})\r\nexport class CommentEditorCommandImageDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n protected onImageSelected(event: UploadFileSelectedEvent): void {\r\n const file = event.files[0];\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => {\r\n const src = reader.result as string;\r\n this.commentEditor.api.editor().chain().focus().addImageUploadingPlaceholder({ src, file }).run();\r\n };\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport {\r\n MAT_DIALOG_DATA,\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle\r\n} from '@angular/material/dialog';\r\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\n\r\n@Component({\r\n selector: 'emr-youtube',\r\n imports: [\r\n FormsModule,\r\n MatButton,\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogTitle,\r\n MatFormField,\r\n MatInput,\r\n MatLabel,\r\n ReactiveFormsModule\r\n ],\r\n templateUrl: './youtube.dialog.html',\r\n styleUrl: './youtube.dialog.scss'\r\n})\r\nexport class YoutubeDialog {\r\n private _dialogRef = inject(MatDialogRef);\r\n private _data = inject(MAT_DIALOG_DATA);\r\n linkUrl = this._data.linkUrl || '';\r\n isUpdate = !!this._data.linkUrl;\r\n\r\n onSubmit(): void {\r\n this._dialogRef.close(this.linkUrl);\r\n }\r\n}\r\n","<form class=\"w-[500px]\" (ngSubmit)=\"onSubmit()\">\r\n <h3 class=\"mat-title-large\" mat-dialog-title>\r\n @if (isUpdate) {\r\n Update Youtube\r\n } @else {\r\n Add Youtube\r\n }\r\n </h3>\r\n <mat-dialog-content>\r\n <div class=\"pt-4\">\r\n <mat-form-field class=\"w-full\">\r\n <mat-label>Paste Url</mat-label>\r\n <input name=\"linkUrl\" matInput [(ngModel)]=\"linkUrl\">\r\n </mat-form-field>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-button>Cancel</button>\r\n <button type=\"submit\" mat-flat-button color=\"primary\"\r\n cdkFocusInitial [disabled]=\"!linkUrl.trim() || null\">\r\n @if (isUpdate) {\r\n Save\r\n } @else {\r\n Add url\r\n }\r\n </button>\r\n </mat-dialog-actions>\r\n</form>\r\n","import { DestroyRef, Directive, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\nimport { YoutubeDialog } from '../youtube/youtube.dialog';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandYoutube]',\r\n standalone: true,\r\n host: {\r\n '[attr.disabled]': `(commentEditor && commentEditor.api.isCommandDisabled('toggleBlockquote')) ? '' : null`,\r\n '[class.active]': `commentEditor && commentEditor.api.isActive('blockquote')`,\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandYoutubeDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n private _dialog = inject(MatDialog);\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n protected onClick(): void {\r\n const dialogRef = this._dialog.open(YoutubeDialog, {\r\n data: {\r\n linkUrl: (this.commentEditor.api.editor().getAttributes('iframe') as HTMLIFrameElement).src\r\n }\r\n });\r\n dialogRef\r\n .afterClosed()\r\n .pipe(\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe((linkUrl: string) => {\r\n if (typeof linkUrl === 'undefined') {\r\n return;\r\n }\r\n\r\n this.commentEditor.api.editor().commands.setYoutubeVideo({\r\n src: linkUrl\r\n });\r\n })\r\n ;\r\n }\r\n}\r\n","import { Component, inject, Inject } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport {\r\n MAT_DIALOG_DATA,\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogRef,\r\n MatDialogTitle\r\n} from '@angular/material/dialog';\r\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'emr-link',\r\n imports: [\r\n MatButton,\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogTitle,\r\n MatFormField,\r\n MatInput,\r\n MatLabel,\r\n ReactiveFormsModule,\r\n FormsModule\r\n ],\r\n templateUrl: './link.dialog.html',\r\n styleUrl: './link.dialog.scss'\r\n})\r\nexport class LinkDialog {\r\n private _dialogRef = inject(MatDialogRef);\r\n private _data = inject(MAT_DIALOG_DATA);\r\n linkUrl = this._data.linkUrl || '';\r\n isUpdate = !!this._data.linkUrl;\r\n\r\n onSubmit(): void {\r\n this._dialogRef.close(this.linkUrl);\r\n }\r\n}\r\n","<form class=\"w-[500px]\" (ngSubmit)=\"onSubmit()\">\r\n <h3 class=\"mat-title-large\" mat-dialog-title>\r\n @if (isUpdate) {\r\n Update Link\r\n } @else {\r\n Add Link\r\n }</h3>\r\n <mat-dialog-content>\r\n <div class=\"pt-4\">\r\n <mat-form-field class=\"w-full\">\r\n <mat-label>Paste Link</mat-label>\r\n <input name=\"linkUrl\" matInput [(ngModel)]=\"linkUrl\">\r\n </mat-form-field>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-button>Cancel</button>\r\n <button type=\"submit\" mat-flat-button color=\"primary\"\r\n cdkFocusInitial [disabled]=\"!linkUrl.trim() || null\">\r\n @if (isUpdate) {\r\n Save\r\n } @else {\r\n Add link\r\n }\r\n </button>\r\n </mat-dialog-actions>\r\n</form>\r\n","import { DestroyRef, Directive, inject } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\nimport { LinkDialog } from '../link/link.dialog';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandLink]',\r\n standalone: true,\r\n host: {\r\n '[attr.disabled]': `(commentEditor && commentEditor.api.isCommandDisabled('toggleLink')) ? '' : null`,\r\n '[class.active]': `commentEditor && commentEditor.api.isActive('link')`,\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandLinkDirective {\r\n private _destroyRef = inject(DestroyRef);\r\n private _dialog = inject(MatDialog);\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n protected setLinkActive = false;\r\n\r\n protected onClick(): void {\r\n this.setLinkActive = true;\r\n const dialogRef = this._dialog.open(LinkDialog, {\r\n data: {\r\n linkUrl: (this.commentEditor.api.editor().getAttributes('link') as HTMLLinkElement).href\r\n }\r\n });\r\n dialogRef\r\n .afterClosed()\r\n .pipe(\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe((linkUrl: string) => {\r\n this.setLinkActive = false;\r\n\r\n if (typeof linkUrl === 'undefined') {\r\n return;\r\n }\r\n\r\n this._setLink(linkUrl);\r\n })\r\n ;\r\n }\r\n\r\n private _setLink(url: string): void {\r\n // cancelled\r\n if (url === null) {\r\n return;\r\n }\r\n\r\n // empty\r\n if (url === '') {\r\n this.commentEditor.api.editor()\r\n .chain()\r\n .focus()\r\n .extendMarkRange('link')\r\n .unsetLink()\r\n .run()\r\n ;\r\n return;\r\n }\r\n\r\n // update link\r\n this.commentEditor.api.editor()\r\n .chain()\r\n .focus()\r\n .extendMarkRange('link')\r\n .setLink({ href: url })\r\n .run()\r\n ;\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandCode]',\r\n standalone: true,\r\n host: {\r\n '[attr.disabled]': `(commentEditor && commentEditor.api.isCommandDisabled('toggleCode')) ? '' : null`,\r\n '[class.active]': `commentEditor && commentEditor.api.isActive('code')`,\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandCodeDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n protected onClick() {\r\n this.commentEditor.api.runCommand('toggleCode');\r\n }\r\n}\r\n","import { DestroyRef, Directive, inject } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\nimport { LinkDialog } from '../link/link.dialog';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandEditLink]',\r\n standalone: true,\r\n host: {\r\n '[class.button]': 'true',\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandEditLinkDirective {\r\n private _destroyRef = inject(DestroyRef);\r\n private _dialog = inject(MatDialog);\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n protected setLinkActive = false;\r\n\r\n protected onClick(): void {\r\n this.setLinkActive = true;\r\n const dialogRef = this._dialog.open(LinkDialog, {\r\n data: {\r\n linkUrl: (this.commentEditor.api.editor().getAttributes('link') as HTMLLinkElement).href\r\n }\r\n });\r\n dialogRef\r\n .afterClosed()\r\n .pipe(\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe((linkUrl: string) => {\r\n this.setLinkActive = false;\r\n\r\n if (typeof linkUrl === 'undefined') {\r\n return;\r\n }\r\n\r\n this._setLink(linkUrl);\r\n })\r\n ;\r\n }\r\n\r\n private _setLink(url: string): void {\r\n // cancelled\r\n if (url === null) {\r\n return;\r\n }\r\n\r\n // empty\r\n if (url === '') {\r\n this.commentEditor.api.editor()\r\n .chain()\r\n .focus()\r\n .extendMarkRange('link')\r\n .unsetLink()\r\n .run()\r\n ;\r\n return;\r\n }\r\n\r\n // update link\r\n this.commentEditor.api.editor()\r\n .chain()\r\n .focus()\r\n .extendMarkRange('link')\r\n .setLink({ href: url })\r\n .run()\r\n ;\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandUnsetLink]',\r\n standalone: true,\r\n host: {\r\n '[class.button]': 'true',\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandUnsetLinkDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n protected onClick() {\r\n this.commentEditor.api.editor().commands.unsetLink();\r\n }\r\n}\r\n","import { Directive, inject } from '@angular/core';\r\nimport { COMMENT_EDITOR, CommentEditor } from '../types';\r\n\r\n@Directive({\r\n selector: '[emrCommentEditorCommandToggleToolbar]',\r\n standalone: true,\r\n host: {\r\n '[class.active]': `commentEditor && commentEditor.api.isToolbarActive()`,\r\n '(click)': `onClick()`\r\n }\r\n})\r\nexport class CommentEditorCommandToggleToolbarDirective {\r\n protected commentEditor = inject<CommentEditor>(COMMENT_EDITOR);\r\n\r\n protected onClick(): void {\r\n this.commentEditor.api.toggleToolbar();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["Image","i1"],"mappings":"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"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, signal, viewChild, inject, PLATFORM_ID, effect, computed, Component, Directive } from '@angular/core';
|
|
3
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
4
|
+
import { MatIcon } from '@angular/material/icon';
|
|
5
|
+
|
|
6
|
+
class ComparisonSliderComponent {
|
|
7
|
+
renderer;
|
|
8
|
+
initialPosition = input(50, ...(ngDevMode ? [{ debugName: "initialPosition" }] : []));
|
|
9
|
+
sliderPosition = signal(0, ...(ngDevMode ? [{ debugName: "sliderPosition" }] : []));
|
|
10
|
+
isDragging = signal(false, ...(ngDevMode ? [{ debugName: "isDragging" }] : []));
|
|
11
|
+
sliderContainerRef = viewChild.required('sliderContainer');
|
|
12
|
+
handleRef = viewChild.required('handle');
|
|
13
|
+
containerRect = signal(null, ...(ngDevMode ? [{ debugName: "containerRect" }] : []));
|
|
14
|
+
unlistenMouseMove = null;
|
|
15
|
+
unlistenMouseUp = null;
|
|
16
|
+
unlistenTouchMove = null;
|
|
17
|
+
unlistenTouchEnd = null;
|
|
18
|
+
resizeObserver = null;
|
|
19
|
+
platformId = inject(PLATFORM_ID);
|
|
20
|
+
isBrowser;
|
|
21
|
+
constructor(renderer) {
|
|
22
|
+
this.renderer = renderer;
|
|
23
|
+
this.isBrowser = isPlatformBrowser(this.platformId);
|
|
24
|
+
effect(() => {
|
|
25
|
+
const initial = this.initialPosition();
|
|
26
|
+
this.sliderPosition.set(Math.max(0, Math.min(100, initial)));
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
ngAfterViewInit() {
|
|
30
|
+
if (this.isBrowser) {
|
|
31
|
+
this.updateContainerRect();
|
|
32
|
+
if (typeof ResizeObserver !== 'undefined' && this.sliderContainerRef() && this.sliderContainerRef().nativeElement) {
|
|
33
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
34
|
+
this.updateContainerRect();
|
|
35
|
+
});
|
|
36
|
+
this.resizeObserver.observe(this.sliderContainerRef().nativeElement);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
ngOnDestroy() {
|
|
41
|
+
if (this.isBrowser) {
|
|
42
|
+
this.removeGlobalListeners();
|
|
43
|
+
if (this.resizeObserver) {
|
|
44
|
+
this.resizeObserver.disconnect();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
updateContainerRect() {
|
|
49
|
+
if (this.isBrowser && this.sliderContainerRef() && this.sliderContainerRef().nativeElement &&
|
|
50
|
+
typeof this.sliderContainerRef().nativeElement.getBoundingClientRect === 'function') {
|
|
51
|
+
this.containerRect.set(this.sliderContainerRef().nativeElement.getBoundingClientRect());
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.containerRect.set(null);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
handleLeftStyle = computed(() => `${this.sliderPosition()}%`, ...(ngDevMode ? [{ debugName: "handleLeftStyle" }] : []));
|
|
58
|
+
afterImageClipStyle = computed(() => `inset(0 ${100 - this.sliderPosition()}% 0 0)`, ...(ngDevMode ? [{ debugName: "afterImageClipStyle" }] : []));
|
|
59
|
+
onMouseDown(event) {
|
|
60
|
+
if (!this.isBrowser)
|
|
61
|
+
return;
|
|
62
|
+
this.isDragging.set(true);
|
|
63
|
+
this.updateContainerRect();
|
|
64
|
+
this.unlistenMouseMove = this.renderer.listen('document', 'mousemove', this.onMouseMove.bind(this));
|
|
65
|
+
this.unlistenMouseUp = this.renderer.listen('document', 'mouseup', this.onMouseUp.bind(this));
|
|
66
|
+
}
|
|
67
|
+
onTouchStart(event) {
|
|
68
|
+
if (!this.isBrowser)
|
|
69
|
+
return;
|
|
70
|
+
if (event.touches.length === 1) {
|
|
71
|
+
this.isDragging.set(true);
|
|
72
|
+
this.updateContainerRect();
|
|
73
|
+
this.unlistenTouchMove = this.renderer.listen('document', 'touchmove', this.onTouchMove.bind(this));
|
|
74
|
+
this.unlistenTouchEnd = this.renderer.listen('document', 'touchend', this.onTouchEnd.bind(this));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
onMouseMove(event) {
|
|
78
|
+
if (!this.isDragging())
|
|
79
|
+
return;
|
|
80
|
+
event.preventDefault();
|
|
81
|
+
this.updateSliderPosition(event.clientX);
|
|
82
|
+
}
|
|
83
|
+
onTouchMove(event) {
|
|
84
|
+
if (!this.isDragging() || event.touches.length !== 1)
|
|
85
|
+
return;
|
|
86
|
+
this.updateSliderPosition(event.touches[0].clientX);
|
|
87
|
+
}
|
|
88
|
+
updateSliderPosition(clientX) {
|
|
89
|
+
const rect = this.containerRect();
|
|
90
|
+
if (!rect)
|
|
91
|
+
return; // Важная проверка, rect будет null в SSR
|
|
92
|
+
const x = clientX - rect.left;
|
|
93
|
+
let percentage = (x / rect.width) * 100;
|
|
94
|
+
percentage = Math.max(0, Math.min(100, percentage));
|
|
95
|
+
this.sliderPosition.set(percentage);
|
|
96
|
+
}
|
|
97
|
+
onMouseUp() {
|
|
98
|
+
if (this.isDragging()) {
|
|
99
|
+
this.isDragging.set(false);
|
|
100
|
+
this.removeGlobalListeners();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
onTouchEnd() {
|
|
104
|
+
if (this.isDragging()) {
|
|
105
|
+
this.isDragging.set(false);
|
|
106
|
+
this.removeGlobalListeners();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
removeGlobalListeners() {
|
|
110
|
+
if (this.unlistenMouseMove) {
|
|
111
|
+
this.unlistenMouseMove();
|
|
112
|
+
this.unlistenMouseMove = null;
|
|
113
|
+
}
|
|
114
|
+
if (this.unlistenMouseUp) {
|
|
115
|
+
this.unlistenMouseUp();
|
|
116
|
+
this.unlistenMouseUp = null;
|
|
117
|
+
}
|
|
118
|
+
if (this.unlistenTouchMove) {
|
|
119
|
+
this.unlistenTouchMove();
|
|
120
|
+
this.unlistenTouchMove = null;
|
|
121
|
+
}
|
|
122
|
+
if (this.unlistenTouchEnd) {
|
|
123
|
+
this.unlistenTouchEnd();
|
|
124
|
+
this.unlistenTouchEnd = null;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
onContainerClick(event) {
|
|
128
|
+
if (!this.isBrowser) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (this.handleRef() && this.handleRef().nativeElement && this.handleRef().nativeElement.contains(event.target) || this.isDragging()) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
this.updateContainerRect();
|
|
135
|
+
this.updateSliderPosition(event.clientX);
|
|
136
|
+
this.onMouseDown(event);
|
|
137
|
+
}
|
|
138
|
+
onDragStart(event) {
|
|
139
|
+
event.preventDefault();
|
|
140
|
+
event.stopPropagation();
|
|
141
|
+
}
|
|
142
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ComparisonSliderComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.10", type: ComparisonSliderComponent, isStandalone: true, selector: "emr-comparison-slider", inputs: { initialPosition: { classPropertyName: "initialPosition", publicName: "initialPosition", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "emr-comparison-slider" }, viewQueries: [{ propertyName: "sliderContainerRef", first: true, predicate: ["sliderContainer"], descendants: true, isSignal: true }, { propertyName: "handleRef", first: true, predicate: ["handle"], descendants: true, isSignal: true }], exportAs: ["emrComparisonSlider"], ngImport: i0, template: "<div\r\n #sliderContainer\r\n class=\"comparison-slider-container\"\r\n (mousedown)=\"onContainerClick($event)\">\r\n <div class=\"image-wrapper before-image-slot\">\r\n <ng-content select=\"[emrComparisonSliderBeforeImage]\"/>\r\n </div>\r\n <div class=\"image-wrapper after-image-slot\" [style.clipPath]=\"afterImageClipStyle()\">\r\n <ng-content select=\"[emrComparisonSliderAfterImage]\"/>\r\n </div>\r\n <div\r\n #handle\r\n class=\"slider-handle\"\r\n [style.left]=\"handleLeftStyle()\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (touchstart)=\"onTouchStart($event)\"\r\n role=\"slider\"\r\n aria-orientation=\"horizontal\"\r\n [attr.aria-valuenow]=\"sliderPosition()\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [attr.aria-label]=\"'Image comparison slider control'\">\r\n <div class=\"handle-line\"></div>\r\n <div class=\"handle-grip\">\r\n <mat-icon>chevron_backward</mat-icon>\r\n <mat-icon>chevron_forward</mat-icon>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;position:relative;overflow:hidden;width:100%;max-width:800px;height:450px;-webkit-user-select:none;user-select:none}:host .comparison-slider-container{position:relative;width:100%;height:100%;overflow:hidden;cursor:default}:host .image-wrapper{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}:host .image-wrapper>::slotted(*){display:block;width:100%;height:100%;object-fit:cover}:host .before-image-slot{z-index:1}:host .after-image-slot{z-index:2}:host .slider-handle{position:absolute;top:0;bottom:0;width:40px;transform:translate(-50%);cursor:ew-resize;display:flex;align-items:center;justify-content:center;z-index:10}:host .slider-handle .handle-line{position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%);width:4px;background-color:#fff;pointer-events:none}:host .slider-handle .handle-line:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:1px;background:#000}:host .slider-handle .handle-line:after{content:\"\";position:absolute;top:0;bottom:0;right:0;width:1px;background:#000}:host .slider-handle .handle-grip{height:36px;display:flex;align-items:center;justify-content:center;z-index:1;pointer-events:none;gap:calc(var(--spacing, .25rem) * 3)}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
144
|
+
}
|
|
145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ComparisonSliderComponent, decorators: [{
|
|
146
|
+
type: Component,
|
|
147
|
+
args: [{ selector: 'emr-comparison-slider', exportAs: 'emrComparisonSlider', imports: [
|
|
148
|
+
MatIcon,
|
|
149
|
+
], host: {
|
|
150
|
+
'class': 'emr-comparison-slider',
|
|
151
|
+
}, template: "<div\r\n #sliderContainer\r\n class=\"comparison-slider-container\"\r\n (mousedown)=\"onContainerClick($event)\">\r\n <div class=\"image-wrapper before-image-slot\">\r\n <ng-content select=\"[emrComparisonSliderBeforeImage]\"/>\r\n </div>\r\n <div class=\"image-wrapper after-image-slot\" [style.clipPath]=\"afterImageClipStyle()\">\r\n <ng-content select=\"[emrComparisonSliderAfterImage]\"/>\r\n </div>\r\n <div\r\n #handle\r\n class=\"slider-handle\"\r\n [style.left]=\"handleLeftStyle()\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (touchstart)=\"onTouchStart($event)\"\r\n role=\"slider\"\r\n aria-orientation=\"horizontal\"\r\n [attr.aria-valuenow]=\"sliderPosition()\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [attr.aria-label]=\"'Image comparison slider control'\">\r\n <div class=\"handle-line\"></div>\r\n <div class=\"handle-grip\">\r\n <mat-icon>chevron_backward</mat-icon>\r\n <mat-icon>chevron_forward</mat-icon>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;position:relative;overflow:hidden;width:100%;max-width:800px;height:450px;-webkit-user-select:none;user-select:none}:host .comparison-slider-container{position:relative;width:100%;height:100%;overflow:hidden;cursor:default}:host .image-wrapper{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}:host .image-wrapper>::slotted(*){display:block;width:100%;height:100%;object-fit:cover}:host .before-image-slot{z-index:1}:host .after-image-slot{z-index:2}:host .slider-handle{position:absolute;top:0;bottom:0;width:40px;transform:translate(-50%);cursor:ew-resize;display:flex;align-items:center;justify-content:center;z-index:10}:host .slider-handle .handle-line{position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%);width:4px;background-color:#fff;pointer-events:none}:host .slider-handle .handle-line:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:1px;background:#000}:host .slider-handle .handle-line:after{content:\"\";position:absolute;top:0;bottom:0;right:0;width:1px;background:#000}:host .slider-handle .handle-grip{height:36px;display:flex;align-items:center;justify-content:center;z-index:1;pointer-events:none;gap:calc(var(--spacing, .25rem) * 3)}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] }]
|
|
152
|
+
}], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { initialPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialPosition", required: false }] }], sliderContainerRef: [{ type: i0.ViewChild, args: ['sliderContainer', { isSignal: true }] }], handleRef: [{ type: i0.ViewChild, args: ['handle', { isSignal: true }] }] } });
|
|
153
|
+
|
|
154
|
+
class ComparisonSliderAfterImageDirective {
|
|
155
|
+
onDragStart(event) {
|
|
156
|
+
event.preventDefault();
|
|
157
|
+
}
|
|
158
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ComparisonSliderAfterImageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
159
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.10", type: ComparisonSliderAfterImageDirective, isStandalone: true, selector: "[emrComparisonSliderAfterImage]", host: { listeners: { "dragstart": "onDragStart($event)" } }, ngImport: i0 });
|
|
160
|
+
}
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ComparisonSliderAfterImageDirective, decorators: [{
|
|
162
|
+
type: Directive,
|
|
163
|
+
args: [{
|
|
164
|
+
selector: '[emrComparisonSliderAfterImage]',
|
|
165
|
+
host: {
|
|
166
|
+
'(dragstart)': 'onDragStart($event)'
|
|
167
|
+
}
|
|
168
|
+
}]
|
|
169
|
+
}] });
|
|
170
|
+
|
|
171
|
+
class ComparisonSliderBeforeImageDirective {
|
|
172
|
+
onDragStart(event) {
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
}
|
|
175
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ComparisonSliderBeforeImageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
176
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.10", type: ComparisonSliderBeforeImageDirective, isStandalone: true, selector: "[emrComparisonSliderBeforeImage]", host: { listeners: { "dragstart": "onDragStart($event)" } }, ngImport: i0 });
|
|
177
|
+
}
|
|
178
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ComparisonSliderBeforeImageDirective, decorators: [{
|
|
179
|
+
type: Directive,
|
|
180
|
+
args: [{
|
|
181
|
+
selector: '[emrComparisonSliderBeforeImage]',
|
|
182
|
+
host: {
|
|
183
|
+
'(dragstart)': 'onDragStart($event)'
|
|
184
|
+
}
|
|
185
|
+
}]
|
|
186
|
+
}] });
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Generated bundle index. Do not edit.
|
|
190
|
+
*/
|
|
191
|
+
|
|
192
|
+
export { ComparisonSliderAfterImageDirective, ComparisonSliderBeforeImageDirective, ComparisonSliderComponent };
|
|
193
|
+
//# sourceMappingURL=elementar-rt-components-comparison-slider.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elementar-rt-components-comparison-slider.mjs","sources":["../../../projects/components/comparison-slider/src/comparison-slider/comparison-slider.component.ts","../../../projects/components/comparison-slider/src/comparison-slider/comparison-slider.component.html","../../../projects/components/comparison-slider/src/comparison-slider-after-image.directive.ts","../../../projects/components/comparison-slider/src/comparison-slider-before-image.directive.ts","../../../projects/components/comparison-slider/elementar-rt-components-comparison-slider.ts"],"sourcesContent":["import {\r\n Component,\r\n input,\r\n signal,\r\n ElementRef,\r\n viewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n Renderer2,\r\n effect,\r\n computed,\r\n PLATFORM_ID,\r\n inject\r\n} from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'emr-comparison-slider',\r\n exportAs: 'emrComparisonSlider',\r\n imports: [\r\n MatIcon,\r\n ],\r\n templateUrl: './comparison-slider.component.html',\r\n styleUrl: './comparison-slider.component.scss',\r\n host: {\r\n 'class': 'emr-comparison-slider',\r\n }\r\n})\r\nexport class ComparisonSliderComponent implements AfterViewInit, OnDestroy {\r\n initialPosition = input<number>(50);\r\n\r\n sliderPosition = signal<number>(0);\r\n isDragging = signal<boolean>(false);\r\n\r\n private sliderContainerRef = viewChild.required<ElementRef<HTMLDivElement>>('sliderContainer');\r\n private handleRef = viewChild.required<ElementRef<HTMLDivElement>>('handle');\r\n\r\n private containerRect = signal<DOMRect | null>(null);\r\n private unlistenMouseMove: (() => void) | null = null;\r\n private unlistenMouseUp: (() => void) | null = null;\r\n private unlistenTouchMove: (() => void) | null = null;\r\n private unlistenTouchEnd: (() => void) | null = null;\r\n\r\n private resizeObserver: ResizeObserver | null = null;\r\n\r\n private platformId = inject(PLATFORM_ID);\r\n private isBrowser: boolean;\r\n\r\n constructor(private renderer: Renderer2) {\r\n this.isBrowser = isPlatformBrowser(this.platformId);\r\n\r\n effect(() => {\r\n const initial = this.initialPosition();\r\n this.sliderPosition.set(Math.max(0, Math.min(100, initial)));\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.isBrowser) {\r\n this.updateContainerRect();\r\n\r\n if (typeof ResizeObserver !== 'undefined' && this.sliderContainerRef() && this.sliderContainerRef().nativeElement) {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.updateContainerRect();\r\n });\r\n this.resizeObserver.observe(this.sliderContainerRef().nativeElement);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.isBrowser) {\r\n this.removeGlobalListeners();\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n }\r\n\r\n private updateContainerRect(): void {\r\n if (this.isBrowser && this.sliderContainerRef() && this.sliderContainerRef().nativeElement &&\r\n typeof this.sliderContainerRef().nativeElement.getBoundingClientRect === 'function') {\r\n this.containerRect.set(this.sliderContainerRef().nativeElement.getBoundingClientRect());\r\n } else {\r\n this.containerRect.set(null);\r\n }\r\n }\r\n\r\n handleLeftStyle = computed(() => `${this.sliderPosition()}%`);\r\n afterImageClipStyle = computed(() => `inset(0 ${100 - this.sliderPosition()}% 0 0)`);\r\n\r\n onMouseDown(event: MouseEvent): void {\r\n if (!this.isBrowser) return;\r\n\r\n this.isDragging.set(true);\r\n this.updateContainerRect();\r\n\r\n this.unlistenMouseMove = this.renderer.listen('document', 'mousemove', this.onMouseMove.bind(this));\r\n this.unlistenMouseUp = this.renderer.listen('document', 'mouseup', this.onMouseUp.bind(this));\r\n }\r\n\r\n onTouchStart(event: TouchEvent): void {\r\n if (!this.isBrowser) return;\r\n\r\n if (event.touches.length === 1) {\r\n this.isDragging.set(true);\r\n this.updateContainerRect();\r\n\r\n this.unlistenTouchMove = this.renderer.listen('document', 'touchmove', this.onTouchMove.bind(this));\r\n this.unlistenTouchEnd = this.renderer.listen('document', 'touchend', this.onTouchEnd.bind(this));\r\n }\r\n }\r\n\r\n private onMouseMove(event: MouseEvent): void {\r\n if (!this.isDragging()) return;\r\n event.preventDefault();\r\n this.updateSliderPosition(event.clientX);\r\n }\r\n\r\n private onTouchMove(event: TouchEvent): void {\r\n if (!this.isDragging() || event.touches.length !== 1) return;\r\n this.updateSliderPosition(event.touches[0].clientX);\r\n }\r\n\r\n private updateSliderPosition(clientX: number): void {\r\n const rect = this.containerRect();\r\n if (!rect) return; // Важная проверка, rect будет null в SSR\r\n\r\n const x = clientX - rect.left;\r\n let percentage = (x / rect.width) * 100;\r\n percentage = Math.max(0, Math.min(100, percentage));\r\n this.sliderPosition.set(percentage);\r\n }\r\n\r\n private onMouseUp(): void {\r\n if (this.isDragging()) {\r\n this.isDragging.set(false);\r\n this.removeGlobalListeners();\r\n }\r\n }\r\n\r\n private onTouchEnd(): void {\r\n if (this.isDragging()) {\r\n this.isDragging.set(false);\r\n this.removeGlobalListeners();\r\n }\r\n }\r\n\r\n private removeGlobalListeners(): void {\r\n if (this.unlistenMouseMove) {\r\n this.unlistenMouseMove();\r\n this.unlistenMouseMove = null;\r\n }\r\n if (this.unlistenMouseUp) {\r\n this.unlistenMouseUp();\r\n this.unlistenMouseUp = null;\r\n }\r\n if (this.unlistenTouchMove) {\r\n this.unlistenTouchMove();\r\n this.unlistenTouchMove = null;\r\n }\r\n if (this.unlistenTouchEnd) {\r\n this.unlistenTouchEnd();\r\n this.unlistenTouchEnd = null;\r\n }\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (!this.isBrowser) {\r\n return;\r\n }\r\n\r\n if (this.handleRef() && this.handleRef().nativeElement && this.handleRef().nativeElement.contains(event.target as Node) || this.isDragging()) {\r\n return;\r\n }\r\n\r\n this.updateContainerRect();\r\n this.updateSliderPosition(event.clientX);\r\n this.onMouseDown(event);\r\n }\r\n\r\n onDragStart(event: MouseEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n}\r\n","<div\r\n #sliderContainer\r\n class=\"comparison-slider-container\"\r\n (mousedown)=\"onContainerClick($event)\">\r\n <div class=\"image-wrapper before-image-slot\">\r\n <ng-content select=\"[emrComparisonSliderBeforeImage]\"/>\r\n </div>\r\n <div class=\"image-wrapper after-image-slot\" [style.clipPath]=\"afterImageClipStyle()\">\r\n <ng-content select=\"[emrComparisonSliderAfterImage]\"/>\r\n </div>\r\n <div\r\n #handle\r\n class=\"slider-handle\"\r\n [style.left]=\"handleLeftStyle()\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (touchstart)=\"onTouchStart($event)\"\r\n role=\"slider\"\r\n aria-orientation=\"horizontal\"\r\n [attr.aria-valuenow]=\"sliderPosition()\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n [attr.aria-label]=\"'Image comparison slider control'\">\r\n <div class=\"handle-line\"></div>\r\n <div class=\"handle-grip\">\r\n <mat-icon>chevron_backward</mat-icon>\r\n <mat-icon>chevron_forward</mat-icon>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[emrComparisonSliderAfterImage]',\r\n host: {\r\n '(dragstart)': 'onDragStart($event)'\r\n }\r\n})\r\nexport class ComparisonSliderAfterImageDirective {\r\n protected onDragStart(event: DragEvent) {\r\n event.preventDefault();\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[emrComparisonSliderBeforeImage]',\r\n host: {\r\n '(dragstart)': 'onDragStart($event)'\r\n }\r\n})\r\nexport class ComparisonSliderBeforeImageDirective {\r\n protected onDragStart(event: DragEvent) {\r\n event.preventDefault();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, inject, Component, DestroyRef, Injectable } from '@angular/core';
|
|
3
|
+
import { MatButton } from '@angular/material/button';
|
|
4
|
+
import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
|
|
5
|
+
import { MatDialogActions, MatDialogContent, MatDialogTitle, MatDialogClose, MatDialog } from '@angular/material/dialog';
|
|
6
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
7
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
|
+
|
|
9
|
+
class ConfirmRef {
|
|
10
|
+
canceled = new EventEmitter();
|
|
11
|
+
confirmed = new EventEmitter();
|
|
12
|
+
closed = new EventEmitter();
|
|
13
|
+
close() {
|
|
14
|
+
this.closed.emit();
|
|
15
|
+
}
|
|
16
|
+
cancel() {
|
|
17
|
+
this.canceled.emit();
|
|
18
|
+
this.close();
|
|
19
|
+
}
|
|
20
|
+
confirm() {
|
|
21
|
+
this.confirmed.emit();
|
|
22
|
+
this.close();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
class ConfirmComponent {
|
|
27
|
+
_data = inject(DIALOG_DATA);
|
|
28
|
+
_dialogRef = inject(DialogRef);
|
|
29
|
+
title = this._data.title;
|
|
30
|
+
description = this._data.description;
|
|
31
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ConfirmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.10", type: ConfirmComponent, isStandalone: true, selector: "emr-confirm", host: { classAttribute: "emr-confirm" }, exportAs: ["emrConfirm"], ngImport: i0, template: "<h3 class=\"mat-title-large\" mat-dialog-title>{{ title }}</h3>\r\n<mat-dialog-content>\r\n {{ description }}\r\n</mat-dialog-content>\r\n<mat-dialog-actions align=\"end\">\r\n <button mat-button [mat-dialog-close]=\"false\">Cancel</button>\r\n <button mat-flat-button color=\"primary\" [mat-dialog-close]=\"true\" cdkFocusInitial>Confirm</button>\r\n</mat-dialog-actions>\r\n", styles: [":host{display:block;width:500px}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }] });
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ConfirmComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ selector: 'emr-confirm', exportAs: 'emrConfirm', imports: [
|
|
37
|
+
MatButton,
|
|
38
|
+
MatDialogActions,
|
|
39
|
+
MatDialogContent,
|
|
40
|
+
MatDialogTitle,
|
|
41
|
+
ReactiveFormsModule,
|
|
42
|
+
MatDialogClose
|
|
43
|
+
], host: {
|
|
44
|
+
'class': 'emr-confirm'
|
|
45
|
+
}, template: "<h3 class=\"mat-title-large\" mat-dialog-title>{{ title }}</h3>\r\n<mat-dialog-content>\r\n {{ description }}\r\n</mat-dialog-content>\r\n<mat-dialog-actions align=\"end\">\r\n <button mat-button [mat-dialog-close]=\"false\">Cancel</button>\r\n <button mat-flat-button color=\"primary\" [mat-dialog-close]=\"true\" cdkFocusInitial>Confirm</button>\r\n</mat-dialog-actions>\r\n", styles: [":host{display:block;width:500px}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] }]
|
|
46
|
+
}] });
|
|
47
|
+
|
|
48
|
+
class ConfirmManager {
|
|
49
|
+
_dialog = inject(MatDialog);
|
|
50
|
+
_destroyRef = inject(DestroyRef);
|
|
51
|
+
open(options) {
|
|
52
|
+
const confirmRef = new ConfirmRef();
|
|
53
|
+
const dialogRef = this._dialog.open(ConfirmComponent, {
|
|
54
|
+
data: options,
|
|
55
|
+
closeOnNavigation: true,
|
|
56
|
+
disableClose: true
|
|
57
|
+
});
|
|
58
|
+
dialogRef
|
|
59
|
+
.afterClosed()
|
|
60
|
+
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
61
|
+
.subscribe((isConfirmed) => {
|
|
62
|
+
if (isConfirmed) {
|
|
63
|
+
confirmRef.confirm();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
confirmRef.cancel();
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return confirmRef;
|
|
70
|
+
}
|
|
71
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ConfirmManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
72
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ConfirmManager, providedIn: 'root' });
|
|
73
|
+
}
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ConfirmManager, decorators: [{
|
|
75
|
+
type: Injectable,
|
|
76
|
+
args: [{
|
|
77
|
+
providedIn: 'root'
|
|
78
|
+
}]
|
|
79
|
+
}] });
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Generated bundle index. Do not edit.
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
export { ConfirmComponent, ConfirmManager, ConfirmRef };
|
|
86
|
+
//# sourceMappingURL=elementar-rt-components-confirm.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elementar-rt-components-confirm.mjs","sources":["../../../projects/components/confirm/src/confirm-ref.ts","../../../projects/components/confirm/src/confirm/confirm.component.ts","../../../projects/components/confirm/src/confirm/confirm.component.html","../../../projects/components/confirm/src/confirm-manager.ts","../../../projects/components/confirm/elementar-rt-components-confirm.ts"],"sourcesContent":["import { EventEmitter } from '@angular/core';\r\n\r\nexport class ConfirmRef {\r\n readonly canceled = new EventEmitter();\r\n readonly confirmed = new EventEmitter();\r\n readonly closed = new EventEmitter();\r\n\r\n close(): void {\r\n this.closed.emit();\r\n }\r\n\r\n cancel(): void {\r\n this.canceled.emit();\r\n this.close();\r\n }\r\n\r\n confirm(): void {\r\n this.confirmed.emit();\r\n this.close();\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\r\nimport { MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'emr-confirm',\r\n exportAs: 'emrConfirm',\r\n imports: [\r\n MatButton,\r\n MatDialogActions,\r\n MatDialogContent,\r\n MatDialogTitle,\r\n ReactiveFormsModule,\r\n MatDialogClose\r\n ],\r\n templateUrl: './confirm.component.html',\r\n styleUrl: './confirm.component.scss',\r\n host: {\r\n 'class': 'emr-confirm'\r\n }\r\n})\r\nexport class ConfirmComponent {\r\n private _data = inject(DIALOG_DATA);\r\n private _dialogRef = inject(DialogRef);\r\n\r\n title = this._data.title;\r\n description = this._data.description;\r\n}\r\n","<h3 class=\"mat-title-large\" mat-dialog-title>{{ title }}</h3>\r\n<mat-dialog-content>\r\n {{ description }}\r\n</mat-dialog-content>\r\n<mat-dialog-actions align=\"end\">\r\n <button mat-button [mat-dialog-close]=\"false\">Cancel</button>\r\n <button mat-flat-button color=\"primary\" [mat-dialog-close]=\"true\" cdkFocusInitial>Confirm</button>\r\n</mat-dialog-actions>\r\n","import { DestroyRef, inject, Injectable } from '@angular/core';\r\nimport { ConfirmOptions } from './types';\r\nimport { ConfirmRef } from './confirm-ref';\r\nimport { ConfirmComponent } from './confirm/confirm.component';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfirmManager {\r\n private _dialog = inject(MatDialog);\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n open(options: ConfirmOptions): ConfirmRef {\r\n const confirmRef = new ConfirmRef();\r\n const dialogRef = this._dialog.open(ConfirmComponent, {\r\n data: options,\r\n closeOnNavigation: true,\r\n disableClose: true\r\n });\r\n dialogRef\r\n .afterClosed()\r\n .pipe(\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe((isConfirmed: any) => {\r\n if (isConfirmed) {\r\n confirmRef.confirm();\r\n } else {\r\n confirmRef.cancel();\r\n }\r\n })\r\n ;\r\n return confirmRef;\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, ElementRef, input, Component } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
class ContentFadeComponent {
|
|
5
|
+
_elementRef = inject(ElementRef);
|
|
6
|
+
color = input(...(ngDevMode ? [undefined, { debugName: "color" }] : []));
|
|
7
|
+
width = input(...(ngDevMode ? [undefined, { debugName: "width" }] : []));
|
|
8
|
+
position = input('both', ...(ngDevMode ? [{ debugName: "position" }] : []));
|
|
9
|
+
ngOnChanges(changes) {
|
|
10
|
+
if (changes['width']) {
|
|
11
|
+
this._elementRef.nativeElement.style.setProperty('--emr-content-fade-width', changes['width'].currentValue, 'important');
|
|
12
|
+
}
|
|
13
|
+
if (changes['color']) {
|
|
14
|
+
this._elementRef.nativeElement.style.setProperty('--emr-content-fade-color', changes['color'].currentValue, 'important');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ContentFadeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.10", type: ContentFadeComponent, isStandalone: true, selector: "emr-content-fade", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.position-both": "position() === \"both\"", "class.position-start": "position() === \"start\"", "class.position-end": "position() === \"end\"" }, classAttribute: "emr-content-fade" }, exportAs: ["emrContentFade"], usesOnChanges: true, ngImport: i0, template: "<ng-content/>\r\n", styles: [":host{--emr-content-fade-color: var(--color-background);--emr-content-fade-width: 20%;display:block;position:relative}:host.position-both:before,:host.position-start:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:var(--emr-content-fade-width);background:linear-gradient(to left,transparent,var(--emr-content-fade-color))}:host.position-both:after,:host.position-end:after{content:\"\";position:absolute;top:0;bottom:0;right:0;width:var(--emr-content-fade-width);background:linear-gradient(to right,transparent,var(--emr-content-fade-color))}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] });
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.10", ngImport: i0, type: ContentFadeComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ selector: 'emr-content-fade', exportAs: 'emrContentFade', host: {
|
|
23
|
+
'class': 'emr-content-fade',
|
|
24
|
+
'[class.position-both]': 'position() === "both"',
|
|
25
|
+
'[class.position-start]': 'position() === "start"',
|
|
26
|
+
'[class.position-end]': 'position() === "end"',
|
|
27
|
+
}, template: "<ng-content/>\r\n", styles: [":host{--emr-content-fade-color: var(--color-background);--emr-content-fade-width: 20%;display:block;position:relative}:host.position-both:before,:host.position-start:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:var(--emr-content-fade-width);background:linear-gradient(to left,transparent,var(--emr-content-fade-color))}:host.position-both:after,:host.position-end:after{content:\"\";position:absolute;top:0;bottom:0;right:0;width:var(--emr-content-fade-width);background:linear-gradient(to right,transparent,var(--emr-content-fade-color))}\n/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n"] }]
|
|
28
|
+
}], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }] } });
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Generated bundle index. Do not edit.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
export { ContentFadeComponent };
|
|
35
|
+
//# sourceMappingURL=elementar-rt-components-content-fade.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elementar-rt-components-content-fade.mjs","sources":["../../../projects/components/content-fade/src/content-fade/content-fade.component.ts","../../../projects/components/content-fade/src/content-fade/content-fade.component.html","../../../projects/components/content-fade/elementar-rt-components-content-fade.ts"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n inject,\r\n input,\r\n OnChanges,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { ContentFadePosition } from '../types';\r\n\r\n@Component({\r\n selector: 'emr-content-fade',\r\n exportAs: 'emrContentFade',\r\n templateUrl: './content-fade.component.html',\r\n styleUrl: './content-fade.component.scss',\r\n host: {\r\n 'class': 'emr-content-fade',\r\n '[class.position-both]': 'position() === \"both\"',\r\n '[class.position-start]': 'position() === \"start\"',\r\n '[class.position-end]': 'position() === \"end\"',\r\n }\r\n})\r\nexport class ContentFadeComponent implements OnChanges {\r\n private _elementRef = inject(ElementRef);\r\n\r\n color = input();\r\n width = input();\r\n position = input<ContentFadePosition>('both');\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['width']) {\r\n (this._elementRef.nativeElement as HTMLElement).style.setProperty('--emr-content-fade-width', changes['width'].currentValue, 'important');\r\n }\r\n\r\n if (changes['color']) {\r\n (this._elementRef.nativeElement as HTMLElement).style.setProperty('--emr-content-fade-color', changes['color'].currentValue, 'important');\r\n }\r\n }\r\n}\r\n","<ng-content/>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAsBa,oBAAoB,CAAA;AACvB,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAExC,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAE;IACf,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAE;AACf,IAAA,QAAQ,GAAG,KAAK,CAAsB,MAAM,oDAAC;AAE7C,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACnB,IAAI,CAAC,WAAW,CAAC,aAA6B,CAAC,KAAK,CAAC,WAAW,CAAC,0BAA0B,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC;QAC3I;AAEA,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACnB,IAAI,CAAC,WAAW,CAAC,aAA6B,CAAC,KAAK,CAAC,WAAW,CAAC,0BAA0B,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC;QAC3I;IACF;wGAfW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,gtBCtBjC,mBACA,EAAA,MAAA,EAAA,CAAA,wnBAAA,CAAA,EAAA,CAAA;;4FDqBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAZhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAClB,gBAAgB,EAAA,IAAA,EAGpB;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,uBAAuB,EAAE,uBAAuB;AAChD,wBAAA,wBAAwB,EAAE,wBAAwB;AAClD,wBAAA,sBAAsB,EAAE,sBAAsB;AAC/C,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,wnBAAA,CAAA,EAAA;;;AEpBH;;AAEG;;;;"}
|