@unipin/angular-applet 18.9.7 → 21.0.1
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 -10
- package/common/assets/sprites/flagGlobal.png +0 -0
- package/common/assets/sprites/flagSprite42.webp +0 -0
- package/common/assets/styles/freakflags.scss +263 -0
- package/common/assets/styles/theme.css +69 -0
- package/fesm2022/unipin-angular-applet-accordion.mjs +242 -0
- package/fesm2022/unipin-angular-applet-accordion.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs +267 -0
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-alert.mjs +94 -0
- package/fesm2022/unipin-angular-applet-alert.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-auth.mjs +707 -0
- package/fesm2022/unipin-angular-applet-auth.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-avatar.mjs +41 -0
- package/fesm2022/unipin-angular-applet-avatar.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-badge.mjs +50 -0
- package/fesm2022/unipin-angular-applet-badge.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-buttons.mjs +263 -0
- package/fesm2022/unipin-angular-applet-buttons.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-calendar.mjs +492 -0
- package/fesm2022/unipin-angular-applet-calendar.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-collapsible.mjs +97 -0
- package/fesm2022/unipin-angular-applet-collapsible.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-common.mjs +342 -0
- package/fesm2022/unipin-angular-applet-common.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-containers.mjs +472 -0
- package/fesm2022/unipin-angular-applet-containers.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-dialog.mjs +535 -0
- package/fesm2022/unipin-angular-applet-dialog.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-forms.mjs +1699 -0
- package/fesm2022/unipin-angular-applet-forms.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-froala.mjs +298 -0
- package/fesm2022/unipin-angular-applet-froala.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-grids.mjs +105 -0
- package/fesm2022/unipin-angular-applet-grids.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-infinite-scroll.mjs +86 -0
- package/fesm2022/unipin-angular-applet-infinite-scroll.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-json-viewer.mjs +71 -0
- package/fesm2022/unipin-angular-applet-json-viewer.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-loading-dialog.mjs +252 -0
- package/fesm2022/unipin-angular-applet-loading-dialog.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-markdown.mjs +703 -0
- package/fesm2022/unipin-angular-applet-markdown.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-micro-frontend.mjs +75 -0
- package/fesm2022/unipin-angular-applet-micro-frontend.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-popover.mjs +333 -0
- package/fesm2022/unipin-angular-applet-popover.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-progress-bar.mjs +38 -0
- package/fesm2022/unipin-angular-applet-progress-bar.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-skeleton.mjs +32 -0
- package/fesm2022/unipin-angular-applet-skeleton.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-spinner.mjs +144 -0
- package/fesm2022/unipin-angular-applet-spinner.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-swipeable.mjs +270 -0
- package/fesm2022/unipin-angular-applet-swipeable.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-tabs.mjs +142 -0
- package/fesm2022/unipin-angular-applet-tabs.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-tooltip.mjs +118 -0
- package/fesm2022/unipin-angular-applet-tooltip.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet.mjs +5 -4617
- package/fesm2022/unipin-angular-applet.mjs.map +1 -1
- package/package.json +132 -29
- package/types/unipin-angular-applet-accordion.d.ts +60 -0
- package/types/unipin-angular-applet-alert-dialog.d.ts +35 -0
- package/types/unipin-angular-applet-alert.d.ts +34 -0
- package/types/unipin-angular-applet-auth.d.ts +225 -0
- package/types/unipin-angular-applet-avatar.d.ts +16 -0
- package/types/unipin-angular-applet-badge.d.ts +20 -0
- package/types/unipin-angular-applet-buttons.d.ts +37 -0
- package/types/unipin-angular-applet-calendar.d.ts +44 -0
- package/types/unipin-angular-applet-collapsible.d.ts +35 -0
- package/types/unipin-angular-applet-common.d.ts +94 -0
- package/types/unipin-angular-applet-containers.d.ts +179 -0
- package/types/unipin-angular-applet-dialog.d.ts +180 -0
- package/types/unipin-angular-applet-forms.d.ts +412 -0
- package/types/unipin-angular-applet-froala.d.ts +85 -0
- package/types/unipin-angular-applet-grids.d.ts +22 -0
- package/types/unipin-angular-applet-infinite-scroll.d.ts +51 -0
- package/types/unipin-angular-applet-json-viewer.d.ts +30 -0
- package/types/unipin-angular-applet-loading-dialog.d.ts +19 -0
- package/types/unipin-angular-applet-markdown.d.ts +119 -0
- package/types/unipin-angular-applet-micro-frontend.d.ts +11 -0
- package/types/unipin-angular-applet-popover.d.ts +58 -0
- package/types/unipin-angular-applet-progress-bar.d.ts +14 -0
- package/types/unipin-angular-applet-skeleton.d.ts +11 -0
- package/types/unipin-angular-applet-spinner.d.ts +12 -0
- package/types/unipin-angular-applet-swipeable.d.ts +66 -0
- package/types/unipin-angular-applet-tabs.d.ts +40 -0
- package/types/unipin-angular-applet-tooltip.d.ts +32 -0
- package/types/unipin-angular-applet.d.ts +3 -0
- package/esm2022/graphql/generated.mjs +0 -938
- package/esm2022/lib/components/approval/detail/approval-detail.component.mjs +0 -78
- package/esm2022/lib/components/approval/form/approval-form.component.mjs +0 -128
- package/esm2022/lib/components/approval/index.mjs +0 -5
- package/esm2022/lib/components/approval/list/approval-list.component.mjs +0 -114
- package/esm2022/lib/components/approval/list/provide-approval-entities.util.mjs +0 -9
- package/esm2022/lib/components/approval/services/approval.service.mjs +0 -46
- package/esm2022/lib/components/audit/detail/audit-detail.component.mjs +0 -123
- package/esm2022/lib/components/audit/index.mjs +0 -3
- package/esm2022/lib/components/audit/list/audit-list.component.mjs +0 -81
- package/esm2022/lib/components/audit/service/audit.service.mjs +0 -49
- package/esm2022/lib/components/audit/types/audit-detail-form.type.mjs +0 -2
- package/esm2022/lib/components/buttons/group/btn-group.component.mjs +0 -43
- package/esm2022/lib/components/buttons/group/interfaces/btn-group-config.interface.mjs +0 -2
- package/esm2022/lib/components/buttons/index.mjs +0 -3
- package/esm2022/lib/components/buttons/loading/btn-loading.component.mjs +0 -48
- package/esm2022/lib/components/containers/applet-container/applet-container.component.mjs +0 -55
- package/esm2022/lib/components/containers/applet-container/provide-applet-config.util.mjs +0 -9
- package/esm2022/lib/components/containers/colum-header-container/column-header-container.component.mjs +0 -23
- package/esm2022/lib/components/containers/column-container/column-container.component.mjs +0 -79
- package/esm2022/lib/components/containers/column-container/directives/lazy-route.directive.mjs +0 -57
- package/esm2022/lib/components/containers/index.mjs +0 -7
- package/esm2022/lib/components/containers/list-container/index.mjs +0 -3
- package/esm2022/lib/components/containers/list-container/interfaces/list-container-config.interface.mjs +0 -2
- package/esm2022/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.mjs +0 -58
- package/esm2022/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.mjs +0 -57
- package/esm2022/lib/components/containers/modal-container/modal-container.component.mjs +0 -40
- package/esm2022/lib/components/filter/filter.component.mjs +0 -222
- package/esm2022/lib/components/filter/index.mjs +0 -2
- package/esm2022/lib/components/filter/interfaces/filter-config.interface.mjs +0 -2
- package/esm2022/lib/components/filter/interfaces/filter-field.interface.mjs +0 -2
- package/esm2022/lib/components/filter/interfaces/filter-search-event.interface.mjs +0 -2
- package/esm2022/lib/components/forms/country-input/form-country-input.component.mjs +0 -122
- package/esm2022/lib/components/forms/currency-input/form-currency-input.component.mjs +0 -157
- package/esm2022/lib/components/forms/date/form-date.component.mjs +0 -117
- package/esm2022/lib/components/forms/image-picker/directives/drag-n-drop.directive.mjs +0 -49
- package/esm2022/lib/components/forms/image-picker/form-image-picker.component.mjs +0 -68
- package/esm2022/lib/components/forms/index.mjs +0 -12
- package/esm2022/lib/components/forms/input/form-input.component.mjs +0 -98
- package/esm2022/lib/components/forms/number/form-number.component.mjs +0 -97
- package/esm2022/lib/components/forms/number/pipes/locale-number.pipe.mjs +0 -33
- package/esm2022/lib/components/forms/password/form-password.component.mjs +0 -100
- package/esm2022/lib/components/forms/rate-group-code-input/form-rate-group-code-input.component.mjs +0 -135
- package/esm2022/lib/components/forms/searchable-select/form-searchable-select.component.mjs +0 -138
- package/esm2022/lib/components/forms/select/form-select.component.mjs +0 -119
- package/esm2022/lib/components/forms/textarea/form-textarea.component.mjs +0 -88
- package/esm2022/lib/components/grids/grid-pagination/grid-pagination.component.mjs +0 -111
- package/esm2022/lib/components/grids/grid-snapshot/grid-snapshot.component.mjs +0 -109
- package/esm2022/lib/components/grids/index.mjs +0 -4
- package/esm2022/lib/components/grids/interfaces/grid-config.interface.mjs +0 -2
- package/esm2022/lib/components/grids/services/grid.service.mjs +0 -25
- package/esm2022/lib/components/index.mjs +0 -9
- package/esm2022/lib/components/infinite-scroll/directive/infinite-scroll.directive.mjs +0 -43
- package/esm2022/lib/components/infinite-scroll/index.mjs +0 -3
- package/esm2022/lib/components/infinite-scroll/infinite-scroll.component.mjs +0 -36
- package/esm2022/lib/components/tabs/index.mjs +0 -3
- package/esm2022/lib/components/tabs/tab-content/tab-content.component.mjs +0 -37
- package/esm2022/lib/components/tabs/tab-group/tab-group.component.mjs +0 -47
- package/esm2022/lib/guards/auth/auth.guard.mjs +0 -10
- package/esm2022/lib/guards/index.mjs +0 -2
- package/esm2022/lib/interceptors/header/header.interceptor.mjs +0 -29
- package/esm2022/lib/interceptors/index.mjs +0 -3
- package/esm2022/lib/interceptors/refresh-token/refresh-token.interceptor.mjs +0 -83
- package/esm2022/lib/interfaces/index.mjs +0 -2
- package/esm2022/lib/interfaces/user/user.interface.mjs +0 -2
- package/esm2022/lib/modules/index.mjs +0 -3
- package/esm2022/lib/modules/micro-frontend/index.mjs +0 -2
- package/esm2022/lib/modules/micro-frontend/utils/mf-bootstrap.util.mjs +0 -55
- package/esm2022/lib/modules/micro-frontend/utils/mf-global-state.util.mjs +0 -14
- package/esm2022/lib/modules/permission/directive/permission.directive.mjs +0 -41
- package/esm2022/lib/modules/permission/guards/permission.guard.mjs +0 -26
- package/esm2022/lib/modules/permission/index.mjs +0 -7
- package/esm2022/lib/modules/permission/pages/401/unauthorized.page.mjs +0 -15
- package/esm2022/lib/modules/permission/pages/loading/loading.page.mjs +0 -65
- package/esm2022/lib/modules/permission/pages/loading/provide-loading-config.util.mjs +0 -9
- package/esm2022/lib/modules/permission/services/permission.service.mjs +0 -50
- package/esm2022/lib/resolvers/auth/auth.resolver.mjs +0 -87
- package/esm2022/lib/resolvers/index.mjs +0 -2
- package/esm2022/lib/services/auth/auth.service.mjs +0 -171
- package/esm2022/lib/services/country/country.service.mjs +0 -43
- package/esm2022/lib/services/currency/currency.service.mjs +0 -40
- package/esm2022/lib/services/index.mjs +0 -6
- package/esm2022/lib/services/profile/profile.service.mjs +0 -82
- package/esm2022/lib/services/rate-group-code/rate-group-code.service.mjs +0 -31
- package/esm2022/lib/utils/contrast-color-generator/contrast-color-generator.util.mjs +0 -16
- package/esm2022/lib/utils/form-error-message/form-error-message.util.mjs +0 -21
- package/esm2022/lib/utils/format-capitalize/format-capitalize.util.mjs +0 -18
- package/esm2022/lib/utils/index.mjs +0 -5
- package/esm2022/lib/utils/redirect-to-first-menu/redirect-to-first-menu.util.mjs +0 -9
- package/esm2022/public-api.mjs +0 -10
- package/esm2022/unipin-angular-applet.mjs +0 -2
- package/graphql/generated.d.ts +0 -16225
- package/index.d.ts +0 -2
- package/lib/components/approval/detail/approval-detail.component.d.ts +0 -26
- package/lib/components/approval/form/approval-form.component.d.ts +0 -33
- package/lib/components/approval/index.d.ts +0 -4
- package/lib/components/approval/list/approval-list.component.d.ts +0 -33
- package/lib/components/approval/list/provide-approval-entities.util.d.ts +0 -3
- package/lib/components/approval/services/approval.service.d.ts +0 -18
- package/lib/components/audit/detail/audit-detail.component.d.ts +0 -33
- package/lib/components/audit/index.d.ts +0 -2
- package/lib/components/audit/list/audit-list.component.d.ts +0 -31
- package/lib/components/audit/service/audit.service.d.ts +0 -15
- package/lib/components/audit/types/audit-detail-form.type.d.ts +0 -12
- package/lib/components/buttons/group/btn-group.component.d.ts +0 -18
- package/lib/components/buttons/group/interfaces/btn-group-config.interface.d.ts +0 -11
- package/lib/components/buttons/index.d.ts +0 -3
- package/lib/components/buttons/loading/btn-loading.component.d.ts +0 -19
- package/lib/components/containers/applet-container/applet-container.component.d.ts +0 -22
- package/lib/components/containers/applet-container/provide-applet-config.util.d.ts +0 -15
- package/lib/components/containers/colum-header-container/column-header-container.component.d.ts +0 -7
- package/lib/components/containers/column-container/column-container.component.d.ts +0 -26
- package/lib/components/containers/column-container/directives/lazy-route.directive.d.ts +0 -17
- package/lib/components/containers/index.d.ts +0 -6
- package/lib/components/containers/list-container/index.d.ts +0 -3
- package/lib/components/containers/list-container/interfaces/list-container-config.interface.d.ts +0 -9
- package/lib/components/containers/list-container/list-pagination-container/list-pagination-container.component.d.ts +0 -23
- package/lib/components/containers/list-container/list-snapshot-container/list-snapshot-container.component.d.ts +0 -23
- package/lib/components/containers/modal-container/modal-container.component.d.ts +0 -16
- package/lib/components/filter/filter.component.d.ts +0 -44
- package/lib/components/filter/index.d.ts +0 -4
- package/lib/components/filter/interfaces/filter-config.interface.d.ts +0 -5
- package/lib/components/filter/interfaces/filter-field.interface.d.ts +0 -24
- package/lib/components/filter/interfaces/filter-search-event.interface.d.ts +0 -4
- package/lib/components/forms/country-input/form-country-input.component.d.ts +0 -41
- package/lib/components/forms/currency-input/form-currency-input.component.d.ts +0 -52
- package/lib/components/forms/date/form-date.component.d.ts +0 -33
- package/lib/components/forms/image-picker/directives/drag-n-drop.directive.d.ts +0 -10
- package/lib/components/forms/image-picker/form-image-picker.component.d.ts +0 -21
- package/lib/components/forms/index.d.ts +0 -11
- package/lib/components/forms/input/form-input.component.d.ts +0 -31
- package/lib/components/forms/number/form-number.component.d.ts +0 -27
- package/lib/components/forms/number/pipes/locale-number.pipe.d.ts +0 -8
- package/lib/components/forms/password/form-password.component.d.ts +0 -27
- package/lib/components/forms/rate-group-code-input/form-rate-group-code-input.component.d.ts +0 -41
- package/lib/components/forms/searchable-select/form-searchable-select.component.d.ts +0 -42
- package/lib/components/forms/select/form-select.component.d.ts +0 -34
- package/lib/components/forms/textarea/form-textarea.component.d.ts +0 -26
- package/lib/components/grids/grid-pagination/grid-pagination.component.d.ts +0 -33
- package/lib/components/grids/grid-snapshot/grid-snapshot.component.d.ts +0 -36
- package/lib/components/grids/index.d.ts +0 -4
- package/lib/components/grids/interfaces/grid-config.interface.d.ts +0 -16
- package/lib/components/grids/services/grid.service.d.ts +0 -12
- package/lib/components/index.d.ts +0 -8
- package/lib/components/infinite-scroll/directive/infinite-scroll.directive.d.ts +0 -15
- package/lib/components/infinite-scroll/index.d.ts +0 -2
- package/lib/components/infinite-scroll/infinite-scroll.component.d.ts +0 -12
- package/lib/components/tabs/index.d.ts +0 -6
- package/lib/components/tabs/tab-content/tab-content.component.d.ts +0 -14
- package/lib/components/tabs/tab-group/tab-group.component.d.ts +0 -18
- package/lib/guards/auth/auth.guard.d.ts +0 -1
- package/lib/guards/index.d.ts +0 -1
- package/lib/interceptors/header/header.interceptor.d.ts +0 -9
- package/lib/interceptors/index.d.ts +0 -2
- package/lib/interceptors/refresh-token/refresh-token.interceptor.d.ts +0 -14
- package/lib/interfaces/index.d.ts +0 -1
- package/lib/interfaces/user/user.interface.d.ts +0 -27
- package/lib/modules/index.d.ts +0 -2
- package/lib/modules/micro-frontend/index.d.ts +0 -1
- package/lib/modules/micro-frontend/utils/mf-bootstrap.util.d.ts +0 -9
- package/lib/modules/micro-frontend/utils/mf-global-state.util.d.ts +0 -4
- package/lib/modules/permission/directive/permission.directive.d.ts +0 -16
- package/lib/modules/permission/guards/permission.guard.d.ts +0 -2
- package/lib/modules/permission/index.d.ts +0 -6
- package/lib/modules/permission/pages/401/unauthorized.page.d.ts +0 -5
- package/lib/modules/permission/pages/loading/loading.page.d.ts +0 -18
- package/lib/modules/permission/pages/loading/provide-loading-config.util.d.ts +0 -10
- package/lib/modules/permission/services/permission.service.d.ts +0 -21
- package/lib/resolvers/auth/auth.resolver.d.ts +0 -14
- package/lib/resolvers/index.d.ts +0 -1
- package/lib/services/auth/auth.service.d.ts +0 -39
- package/lib/services/country/country.service.d.ts +0 -16
- package/lib/services/currency/currency.service.d.ts +0 -16
- package/lib/services/index.d.ts +0 -5
- package/lib/services/profile/profile.service.d.ts +0 -12
- package/lib/services/rate-group-code/rate-group-code.service.d.ts +0 -14
- package/lib/utils/contrast-color-generator/contrast-color-generator.util.d.ts +0 -4
- package/lib/utils/form-error-message/form-error-message.util.d.ts +0 -2
- package/lib/utils/format-capitalize/format-capitalize.util.d.ts +0 -1
- package/lib/utils/index.d.ts +0 -4
- package/lib/utils/redirect-to-first-menu/redirect-to-first-menu.util.d.ts +0 -2
- package/public-api.d.ts +0 -11
- package/src/assets/scss/forms.scss +0 -65
- package/src/assets/scss/grid.scss +0 -7505
- package/src/assets/scss/select.scss +0 -328
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unipin-angular-applet-markdown.mjs","sources":["../../../projects/unipin-angular/markdown/utils/markdown-style.utils.ts","../../../projects/unipin-angular/markdown/directives/markdown.directive.ts","../../../projects/unipin-angular/markdown/services/markdown.services.ts","../../../projects/unipin-angular/markdown/components/markdown-input.component.ts","../../../projects/unipin-angular/markdown/components/markdown-input.component.html","../../../projects/unipin-angular/markdown/unipin-angular-applet-markdown.ts"],"sourcesContent":["export type SelectionType = {\n end: number;\n word: string;\n start: number;\n}\n\nexport function toggleBold(textarea: HTMLTextAreaElement, selection: SelectionType): string{\n \n const { word, start, end } = getWordAtCursor(textarea.value, selection.start);\n let newText: string;\n\n //add with selection\n if (\n selection.start < selection.end &&\n !selection.word.startsWith('**') &&\n !selection.word.endsWith('**')\n ) {\n newText = textarea.value.slice(0, selection.start) + `**${selection.word}**` + textarea.value.slice(selection.end);\n \n setTimeout(\n () => {\n textarea.setSelectionRange(selection.end + 2, selection.end + 2);\n textarea.focus();\n }\n );\n return newText;\n }\n \n //add without selection\n if (\n selection.start === selection.end &&\n !word.startsWith('**') &&\n !word.endsWith('**')\n ) {\n newText = textarea.value.slice(0, start) + `**${word}**` + textarea.value.slice(end);\n\n setTimeout(\n () => {\n textarea.setSelectionRange(end + 2, end + 2);\n textarea.focus();\n }\n );\n return newText;\n }\n\n //remove without selection\n if (\n word.startsWith('**') &&\n word.endsWith('**')\n ) {\n newText = textarea.value.slice(0, start) + word.slice(2, -2) + textarea.value.slice(end);\n \n setTimeout(\n () => {\n textarea.setSelectionRange(selection.start, selection.end);\n textarea.focus();\n }\n );\n return newText;\n }\n\n //remove with selection\n if (\n selection.word.startsWith('**') &&\n selection.word.endsWith('**')\n ) {\n newText = textarea.value.slice(0, selection.start) + selection.word.slice(2, -2) + textarea.value.slice(selection.end);\n \n setTimeout(\n () => {\n textarea.setSelectionRange(selection.start, selection.start);\n textarea.focus();\n }\n );\n return newText;\n }\n return textarea.value;\n}\n\nexport function toggleUnderline(textarea: HTMLTextAreaElement, selection: SelectionType): string{\n \n const { word, start, end } = getWordAtCursor(textarea.value, selection.start);\n let newText: string;\n\n //add with selection\n if (\n selection.start < selection.end &&\n !selection.word.startsWith('++') &&\n !selection.word.endsWith('++')\n ) {\n newText = textarea.value.slice(0, selection.start) + `++${selection.word}++` + textarea.value.slice(selection.end);\n \n setTimeout(\n () => {\n textarea.setSelectionRange(selection.end + 2, selection.end + 2);\n textarea.focus();\n }\n );\n return newText;\n }\n \n //add without selection\n if (\n selection.start === selection.end &&\n !word.startsWith('++') &&\n !word.endsWith('++')\n ) {\n newText = textarea.value.slice(0, start) + `++${word}++` + textarea.value.slice(end);\n\n setTimeout(\n () => {\n textarea.setSelectionRange(end + 2, end + 2);\n textarea.focus();\n }\n );\n return newText;\n }\n\n //remove without selection\n if (word.startsWith('++') && word.endsWith('++')) {\n newText = textarea.value.slice(0, start) + word.slice(2, -2) + textarea.value.slice(end);\n \n setTimeout(\n () => {\n textarea.setSelectionRange(selection.start, selection.end);\n textarea.focus();\n }\n );\n return newText;\n }\n\n //remove with selection\n if (\n selection.word.startsWith('++') &&\n selection.word.endsWith('++')\n ) {\n newText = textarea.value.slice(0, selection.start) + selection.word.slice(2, -2) + textarea.value.slice(selection.end);\n \n setTimeout(\n () => {\n textarea.setSelectionRange(selection.start, selection.start);\n textarea.focus();\n }\n );\n return newText;\n }\n return textarea.value;\n}\n\nexport function toggleItalic(textarea: HTMLTextAreaElement, selection: SelectionType): string{\n \n const { word, start, end } = getWordAtCursor(textarea.value, selection.start);\n let newText: string;\n\n //add with selection\n if (\n selection.start < selection.end &&\n !selection.word.startsWith('_') &&\n !selection.word.endsWith('_')\n ) {\n newText = textarea.value.slice(0, selection.start) + `_${selection.word}_` + textarea.value.slice(selection.end);\n \n setTimeout(\n () => {\n textarea.setSelectionRange(selection.end + 2, selection.end + 2);\n textarea.focus();\n }\n );\n return newText;\n }\n \n //add without selection\n if (selection.start === selection.end && !word.startsWith('_') && !word.endsWith('_')) {\n newText = textarea.value.slice(0, start) + `_${word}_` + textarea.value.slice(end);\n\n setTimeout(\n () => {\n textarea.setSelectionRange(end + 1, end + 1);\n textarea.focus();\n }\n );\n return newText;\n }\n\n //remove without selection\n if (word.startsWith('_') && word.endsWith('_')) {\n newText = textarea.value.slice(0, start) + word.slice(1, -1) + textarea.value.slice(end);\n \n setTimeout(\n () => {\n textarea.setSelectionRange(selection.start, selection.end);\n textarea.focus();\n }\n );\n return newText;\n }\n\n //remove with selection\n if (selection.word.startsWith('_') && selection.word.endsWith('_')) {\n newText = textarea.value.slice(0, selection.start) + selection.word.slice(1, -1) + textarea.value.slice(selection.end);\n \n setTimeout(\n () => {\n textarea.setSelectionRange(selection.start, selection.start);\n textarea.focus();\n }\n );\n return newText;\n }\n return textarea.value;\n}\n\n\nexport function toggleUnorderedList(text: string, cursorPos: number): string{\n \n const lines = text.split('\\n');\n let currentLineIndex = 0;\n let charCount = 0;\n\n for (let i = 0; i < lines.length; i++) {\n charCount += lines[i].length + 1;\n \n if (charCount > cursorPos) {\n currentLineIndex = i;\n break;\n }\n }\n const line = lines[currentLineIndex];\n\n if (line.startsWith('- ')) {\n lines[currentLineIndex] = line.slice(2);\n } else {\n lines[currentLineIndex] = `- ${line}`;\n }\n return lines.join('\\n');\n}\n\nexport function toggleOrderedList(text: string, cursorPos: number): string{\n \n const lines = text.split('\\n');\n let currentLineIndex = 0;\n let charCount = 0;\n\n for (let i = 0; i < lines.length; i++) {\n charCount += lines[i].length + 1;\n \n if (charCount > cursorPos) {\n currentLineIndex = i;\n break;\n }\n }\n\n const line = lines[currentLineIndex];\n const match = line.match(/^(\\d+)\\.\\s(.*)$/);\n\n if (match) {\n lines[currentLineIndex] = match[2];\n } else {\n let number = 1;\n \n for (let i = 0; i < currentLineIndex; i++) {\n const prevMatch = lines[i].match(/^(\\d+)\\.\\s/);\n \n if (prevMatch) {\n number = parseInt(prevMatch[1], 10) + 1;\n }\n }\n lines[currentLineIndex] = `${number}. ${line}`;\n }\n return lines.join('\\n');\n}\n\nexport function toggleTaskList(text: string, cursorPos: number): string {\n \n const lines = text.split('\\n');\n let currentLineIndex = 0;\n let charCount = 0;\n\n for (let i = 0; i < lines.length; i++) {\n charCount += lines[i].length + 1;\n \n if (charCount > cursorPos) {\n currentLineIndex = i;\n break;\n }\n }\n const line = lines[currentLineIndex];\n\n if (/^- \\[ \\]\\s/.test(line)) {\n lines[currentLineIndex] = line.replace(/^- \\[ \\]\\s/, '- [x] ');\n } else if (/^- \\[x\\]\\s/.test(line)) {\n lines[currentLineIndex] = line.replace(/^- \\[x\\]\\s/, '');\n } else {\n lines[currentLineIndex] = `- [ ] ${line}`;\n }\n return lines.join('\\n');\n}\n\nexport function toggleHeading(textarea: HTMLTextAreaElement, selection: { start: number; end: number }): string {\n \n const lines = textarea.value.split('\\n');\n\n let charCount = 0;\n let lineIndex = 0;\n for (let i = 0; i < lines.length; i++) {\n charCount += lines[i].length + 1;\n \n if (selection.start < charCount) {\n lineIndex = i;\n break;\n }\n }\n let lineContent = lines[lineIndex];\n\n if (lineContent.startsWith('### ')) {\n lines[lineIndex] = lineContent.slice(4);\n selection.start -= 4;\n selection.end -= 4;\n } else {\n lines[lineIndex] = `### ${lineContent}`;\n selection.start += 4;\n selection.end += 4;\n }\n\n const newText = lines.join('\\n');\n setTimeout(\n () => {\n textarea.focus();\n textarea.setSelectionRange(selection.start, selection.end);\n }\n );\n return newText;\n}\n\nexport function toggleBlockQuote(textarea: HTMLTextAreaElement, selection: { start: number; end: number }): string {\n \n const lines = textarea.value.split('\\n');\n\n let charCount = 0;\n let lineIndex = 0;\n for (let i = 0; i < lines.length; i++) {\n charCount += lines[i].length + 1;\n \n if (selection.start < charCount) {\n lineIndex = i;\n break;\n }\n }\n let lineContent = lines[lineIndex];\n\n if (lineContent.startsWith('> ')) {\n lines[lineIndex] = lineContent.slice(2);\n selection.start -= 2;\n selection.end -= 2;\n } else {\n lines[lineIndex] = `> ${lineContent}`;\n selection.start += 2;\n selection.end += 2;\n }\n\n const newText = lines.join('\\n');\n setTimeout(\n () => {\n textarea.focus();\n textarea.setSelectionRange(selection.start, selection.end);\n }\n );\n return newText;\n}\n\nfunction getWordAtCursor(text: string, cursorPosition: number): SelectionType{\n \n if (!text || cursorPosition < 0 || cursorPosition > text.length) {\n return {\n start: cursorPosition,\n end: cursorPosition,\n word: ''\n };\n }\n\n let start = cursorPosition;\n while (start > 0 && !isWordSeparator(text[start - 1])) {\n start--;\n }\n\n let end = cursorPosition;\n while (end < text.length && !isWordSeparator(text[end])) {\n end++;\n }\n\n return {\n start,\n end,\n word: text.substring(start, end)\n };\n}\n\nfunction isWordSeparator(char: string): boolean {\n return /\\s|\\t|\\n|\\r|,|\\.|!|\\?|:|;|\\(|\\)/.test(char);\n}\n","import { Directive, ElementRef, Renderer2, signal, effect, WritableSignal, OnDestroy } from '@angular/core';\nimport { marked } from 'marked';\n\n@Directive({\n standalone: true,\n exportAs: 'upMarkdown',\n selector: '[upMarkdown]',\n host: {\n '[class]': 'class',\n }\n})\nexport class UpMarkdownDirective implements OnDestroy {\n \n protected readonly markdown: WritableSignal<string> = signal('');\n protected readonly class: string = `\n [&_h1]:text-4xl [&_h1]:font-bold [&_h1]:mt-0 [&_h1]:mb-4 [&_h1]:border-b [&_h1]:border-[#eeeeee]\n [&_h2]:text-2xl [&_h2]:font-bold [&_h2]:mt-0 [&_h2]:mb-4 [&_h2]:border-b [&_h2]:border-[#eeeeee]\n [&_h3]:text-xl [&_h3]:font-bold [&_h3]:mt-0 [&_h3]:mb-4 [&_h3]:border-b [&_h3]:border-[#eeeeee]\n [&_h4]:text-base [&_h4]:font-bold [&_h4]:mt-0 [&_h4]:mb-4 [&_h4]:border-b [&_h4]:border-[#eeeeee]\n [&_h5]:text-sm [&_h5]:font-bold [&_h5]:mt-0 [&_h5]:mb-4 [&_h5]:border-b [&_h5]:border-[#eeeeee]\n [&_h6]:text-xs [&_h6]:font-bold [&_h6]:mt-0 [&_h6]:mb-4 [&_h6]:border-b [&_h6]:border-[#eeeeee]\n\n [&_p]:mt-0 [&_p]:mb-4\n\n [&_ul]:mt-0 [&_ul]:pl-5 [&_ul]:list-disc [&_ul]:mb-4\n [&_ol]:mt-0 [&_ol]:pl-5 [&_ol]:list-decimal [&_ol]:mb-4\n\n [&_blockquote]:pl-3 [&_blockquote]:border-l-2 [&_blockquote]:border-[var(--color-primary)] [&_blockquote]:text-gray-700\n\n [&_a]:text-[var(--color-primary)] [&_a]:underline\n `;\n protected observer: MutationObserver;\n\n constructor(\n protected readonly el: ElementRef,\n protected readonly renderer: Renderer2,\n ) {\n this.observer = new MutationObserver(\n () => {\n this.markdown.set(this.el.nativeElement.innerHTML || '');\n }\n );\n\n this.observer.observe(\n this.el.nativeElement, \n {\n subtree: true,\n childList: true,\n characterData: true,\n }\n );\n\n effect(\n () => {\n const native: HTMLElement = (this.el.nativeElement);\n \n this.markdown.set(native.innerHTML);\n this.renderer.setProperty(\n native, \n 'innerHTML', \n marked(\n this.markdown()\n .replace(/>/g, '>')\n .replace(/\\+\\+(.*?)\\+\\+/g, '<u>$1</u>')\n )\n );\n }\n );\n }\n\n public ngOnDestroy(): void{\n this.observer.disconnect();\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { UNIPIN_GQL_CONFIG, UniPinGqlConfig } from '@unipin/angular-gql';\n\n@Injectable({ \n providedIn: 'root'\n})\nexport class MarkdownService {\n\n constructor(\n @Inject(UNIPIN_GQL_CONFIG) public readonly config: UniPinGqlConfig,\n protected readonly http: HttpClient\n ) { }\n\n public uploadImage(file: File): Observable<any>{\n const formData = new FormData();\n \n formData.append(\n 'operations', \n JSON.stringify({\n query: `\n mutation ($attachment: Upload!) {\n fileMgmtSysMsFileUpload(attachment: $attachment, isPublic: true) {\n guid\n fileName\n publicUrl\n }\n }\n `\n })\n );\n \n formData.append('file', file);\n formData.append(\n 'map', \n JSON.stringify(\n { \n file: ['variables.attachment'] \n }\n )\n );\n \n return this.http.post(\n this.config.uri, \n formData, \n {\n headers: new HttpHeaders({\n 'x-apollo-operation-name': 'fileUpload'\n })\n }\n );\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, forwardRef, HostListener, input, InputSignal, model, viewChild } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { ClassValue } from 'clsx';\nimport { NgIcon, provideIcons } from '@ng-icons/core';\nimport { matChecklistRound, matFormatQuoteRound, matFormatBoldRound, matFormatItalicRound, matFormatListBulletedRound, matFormatListNumberedRound, matFormatUnderlinedRound } from '@ng-icons/material-icons/round';\nimport { up } from '@unipin/angular-applet/common';\nimport { compressImage } from '@unipin/angular-applet/common';\nimport { UpButtonDirective } from '@unipin/angular-applet/buttons';\nimport { UpFieldControl, UpFieldControlComponent } from '@unipin/angular-applet/forms';\nimport { SelectionType, toggleBlockQuote, toggleBold, toggleHeading, toggleItalic, toggleOrderedList, toggleTaskList, toggleUnderline, toggleUnorderedList } from '../utils/markdown-style.utils';\nimport { UpMarkdownDirective } from '../directives/markdown.directive';\nimport { MarkdownService } from '../services/markdown.services';\n\n@Component({\n standalone: true,\n selector: 'up-markdown-input',\n templateUrl: './markdown-input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': '_computedClass()',\n },\n providers: [\n {\n provide: UpFieldControl,\n useExisting: forwardRef(() => UpMarkdownInputComponent)\n },\n provideIcons(\n {\n matFormatBoldRound,\n matFormatQuoteRound,\n matFormatItalicRound,\n matFormatUnderlinedRound,\n matFormatListNumberedRound,\n matFormatListBulletedRound,\n matChecklistRound,\n customHeading: `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M6 4v16h3V13h6v7h3V4h-3v7H9V4H6z\" transform=\"scale(0.8) translate(3,2)\"/>\n </svg>\n `\n }\n ),\n ],\n imports: [\n NgIcon,\n UpMarkdownDirective,\n UpButtonDirective\n ],\n})\nexport class UpMarkdownInputComponent extends UpFieldControlComponent implements ControlValueAccessor {\n\n public readonly value = model('');\n public readonly placeholder = input('');\n public readonly mode = model<'write' | 'preview'>('write');\n public readonly inlineClass = input<ClassValue>('', { alias: 'class' });\n\n public readonly textarea = viewChild<{ nativeElement: HTMLTextAreaElement }>('textarea');\n public readonly buttons = [\n { icon: 'customHeading', action: 'heading' },\n { icon: 'matFormatBoldRound', action: 'bold' },\n { icon: 'matFormatItalicRound', action: 'italic' },\n { icon: 'matFormatUnderlinedRound', action: 'underline' },\n { icon: 'matFormatQuoteRound', action: 'blockQuote' },\n { icon: 'matFormatListNumberedRound', action: 'ol' },\n { icon: 'matFormatListBulletedRound', action: 'ul' },\n { icon: 'matChecklistRound', action: 'taskList' },\n ];\n\n public readonly disabled = input(\n false, \n { \n transform: booleanAttribute \n }\n );\n public readonly contextGuid: InputSignal<string> = input('');\n public readonly contextType: InputSignal<string> = input('');\n\n public isTouched: boolean = false;\n \n protected readonly _computedClass = computed(\n () => {\n return up(\n 'peer placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex flex-col min-h-48 size-full min-w-0 rounded-md border bg-transparent text-base shadow-xs transition-[color,box-shadow] outline-none md:text-sm overflow-hidden',\n 'has-[textarea:focus-visible]:border-ring has-[textarea:focus-visible]:ring-ring/50 has-[textarea:focus-visible]:ring-[3px] has-[textarea:focus-visible]:outline-none',\n this.error()? 'ring-destructive/20 dark:ring-destructive/40 border-destructive has-[textarea:focus-visible]:ring-destructive/50' : '',\n this.inlineClass(),\n );\n }\n );\n\n protected imageData?: any;\n protected selection?: SelectionType;\n protected sub: Subscription | null = null;\n\n /**\n * Callback function to handle value changes in the markdown input component.\n * @type {(_val: any) => void}\n */\n protected _onChange: (_val: any) => void = (_val: any): void => {};\n\n /**\n * Callback function to handle touch events in the markdown input component.\n * @type {() => void}\n */\n protected _onTouched: () => void = (): void => {};\n\n constructor(\n protected readonly markdownService: MarkdownService\n ) {\n super();\n\n if (this.ngControl !== null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /**\n * Handles keyboard events and button actions for the markdown input.\n *\n * @param {KeyboardEvent} event - The keyboard event.\n */\n @HostListener('document:keyup', ['$event'])\n protected handleStyleWithKeyboard(event: KeyboardEvent): void{\n if (\n !this.textarea() ||\n this.textarea()!.nativeElement.tagName !== 'TEXTAREA'\n ) {\n return;\n }\n\n if (\n event.ctrlKey || \n event.metaKey\n ) {\n let result = null;\n\n if (event.key.toLowerCase() === 'b') {\n result = this.setStyle('bold', this.textarea()!.nativeElement);\n }\n\n if (event.key.toLowerCase() === 'i') {\n result = this.setStyle('italic', this.textarea()!.nativeElement);\n }\n\n if (event.key.toLowerCase() === 'u') {\n result = this.setStyle('underline', this.textarea()!.nativeElement);\n }\n\n if (result !== null) {\n this.value.set(result);\n this._onChange(result);\n }\n }\n }\n \n public ngOnDestroy(): void{\n this.sub?.unsubscribe()\n }\n\n /**\n * Registers a callback function to be called when the password input value changes.\n * @param {(_val: any) => void} fn - Callback function for value changes.\n */\n public registerOnChange(fn: any): void{\n this._onChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the password input is touched.\n * @param {() => void} fn - Callback function for touch events.\n */\n public registerOnTouched(fn: any): void{\n this._onTouched = fn;\n }\n\n /**\n * Writes a new value to the markdown input.\n * @param {*} val - The new value to be set.\n */\n public writeValue(val: any): void{\n this.value.set(val?? '');\n }\n\n /**\n * Event handler to handle touch status.\n *\n * @returns {void}\n */\n public touch(): void{\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n this.value.set(this.textarea()!.nativeElement.value);\n }\n\n public change(event: Event): void{\n const value = (event.target as HTMLTextAreaElement).value;\n\n if (!this.isTouched) {\n this._onTouched();\n this.isTouched = true;\n }\n this._onChange(value);\n }\n\n /**\n * Handles button actions for the markdown input.\n *\n * @param {string} action - The action to perform.\n * @returns {void}\n */\n public applyStyle(action: string): void {\n const textarea = this.textarea()?.nativeElement;\n if (!textarea) {\n return;\n }\n\n const result = this.setStyle(action, textarea);\n if (result !== null) {\n this.value.set(result);\n this._onChange(result);\n }\n }\n\n public changeSelection(event: Event): void{\n const target = event.target as HTMLTextAreaElement;\n const word = target.value.substring(target.selectionStart, target.selectionEnd);\n\n this.selection = {\n word,\n end: target.selectionEnd,\n start: target.selectionStart,\n };\n }\n\n public async pasteImage(event: ClipboardEvent): Promise<void>{\n const cursor = this.selection?.start;\n const items = event.clipboardData?.items;\n const textarea = this.textarea()?.nativeElement;\n \n if (\n !items || \n cursor === undefined ||\n cursor === null ||\n !textarea\n ) {\n return;\n } \n\n for (let i = 0; i < items.length; i++) {\n if (items[i].type.startsWith('image/')) {\n const file = await compressImage(\n {\n quality: 0.8,\n file: items[i].getAsFile()!,\n }\n );\n\n if (!file) {\n return;\n }\n\n const errorImageText = `<!-- Upload image failed -->`;\n const errorImageSizeText = `<!-- Image size must be less than 5MB -->`;\n const uploadText = `<!-- Uploading \"${ file?.name.replace(/ /g, '-') }\"... -->`;\n\n textarea.value = textarea.value.substring(0, cursor) + uploadText;\n \n this.value.set(textarea.value);\n this._onChange(textarea.value);\n\n setTimeout(\n () => {\n textarea.setSelectionRange( cursor + uploadText.length, cursor + uploadText.length,);\n textarea.focus();\n }\n );\n\n if (\n file?.size && \n file?.size > 5 * 1024 * 1024\n ) {\n this.replaceAndSetCursor(\n textarea!,\n {\n searchValue: uploadText,\n replaceValue: errorImageSizeText\n },\n {\n start: cursor! + errorImageSizeText.length,\n end: cursor! + errorImageSizeText.length\n }\n )\n return;\n }\n\n this.sub?.unsubscribe();\n this.sub = this.markdownService.uploadImage(file).subscribe({\n error: () => {\n this.replaceAndSetCursor(\n textarea,\n {\n searchValue: uploadText,\n replaceValue: errorImageText\n },\n {\n start: cursor + errorImageText.length,\n end: cursor + errorImageText.length\n }\n );\n },\n next: ({ data:{ fileMgmtSysMsFileUpload }}) => {\n this.imageData = fileMgmtSysMsFileUpload;\n \n const markdownImageText = ` })`;\n this.replaceAndSetCursor(\n textarea,\n {\n searchValue: uploadText,\n replaceValue: markdownImageText\n },\n {\n start: cursor + markdownImageText.length,\n end: cursor + markdownImageText.length\n }\n );\n },\n });\n }\n }\n }\n\n protected replaceAndSetCursor(\n textarea: HTMLTextAreaElement, \n textReplace: {\n searchValue: string, replaceValue: string\n }, \n cursorPosition: {\n start: number, end: number\n }\n ): void{\n this.value.set(\n textarea.value.replace(\n textReplace.searchValue, \n textReplace.replaceValue\n )\n );\n \n this._onChange(\n textarea.value.replace(\n textReplace.searchValue, \n textReplace.replaceValue\n )\n );\n\n setTimeout(\n () => {\n textarea.setSelectionRange( cursorPosition.start, cursorPosition.end );\n textarea.focus();\n }\n );\n }\n\n protected setStyle(action: string, textarea: HTMLTextAreaElement): string | null{\n if (\n !textarea ||\n textarea.tagName !== 'TEXTAREA' ||\n !this.selection\n ) {\n return null;\n }\n\n switch (action) {\n case 'bold':\n return toggleBold(textarea, this.selection);\n\n case 'italic':\n return toggleItalic(textarea, this.selection);\n\n case 'underline':\n return toggleUnderline(textarea, this.selection);\n\n case 'ul':\n return toggleUnorderedList(textarea.value, this.selection.start);\n\n case 'ol':\n return toggleOrderedList(textarea.value, this.selection.start);\n\n case 'heading':\n return toggleHeading(textarea, this.selection);\n\n case 'taskList':\n return toggleTaskList(textarea.value, this.selection.start);\n\n case 'blockQuote':\n return toggleBlockQuote(textarea, this.selection);\n\n default:\n return null;\n }\n }\n}\n","<div class=\"shrink-0 w-full flex flex-col-reverse md:flex-row md:items-center justify-between gap-1 bg-[#f5f7f6]\">\n <div class=\"flex items-center h-full\">\n <button\n upButton\n variant=\"ghost\"\n class=\"transition-none rounded-none rounded-t-md\"\n [class]=\"\n mode() !== 'write'? '' : 'border-r border-input bg-white'\n \"\n (click)=\"mode.set('write')\"\n >\n Write\n </button>\n\n <button\n upButton\n variant=\"ghost\"\n class=\"transition-none rounded-none rounded-t-md\"\n [class]=\"\n mode() !== 'preview'? '' : 'border-x border-input bg-white'\n \"\n (click)=\"mode.set('preview')\"\n >\n Preview\n </button>\n </div>\n\n @if (mode() === 'write') {\n <div class=\"flex justify-start md:justify-end items-center gap-0.5\">\n @for (btn of buttons; track btn.action) {\n <button\n upButton\n size=\"sm\"\n variant=\"ghost\"\n class=\"p-0 px-2 py-1\"\n [disabled]=\"disabled()\"\n (click)=\"applyStyle(btn.action)\"\n >\n <ng-icon\n size=\"16px\" \n [name]=\"btn.icon\"\n />\n </button>\n }\n </div>\n }\n</div>\n\n<div class=\"grow relative\">\n @if (mode() === 'preview') {\n <div\n upMarkdown\n class=\"size-full absolute top-0 left-0 bg-white p-2 outline-none text-wrap break-words overflow-y-auto\"\n [innerHTML]=\"(value() || 'Nothing to preview')\"\n ></div>\n }\n @else {\n <textarea\n #textarea\n class=\"size-full absolute top-0 left-0 bg-white p-2 outline-none resize-none\" \n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [placeholder]=\"placeholder()\"\n (blur)=\"touch()\"\n (input)=\"change($event)\"\n (paste)=\"pasteImage($event)\"\n (keyup)=\"changeSelection($event)\"\n (mouseup)=\"changeSelection($event)\"\n ></textarea>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MarkdownService"],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { enableProdMode, NgZone } from '@angular/core';
|
|
2
|
+
import { Location } from '@angular/common';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { bootstrapApplication, createApplication } from '@angular/platform-browser';
|
|
5
|
+
import { createCustomElement } from '@angular/elements';
|
|
6
|
+
|
|
7
|
+
const packageNamespace = '@angular-architects/module-federation-tools';
|
|
8
|
+
function getGlobalState() {
|
|
9
|
+
const globalState = window;
|
|
10
|
+
globalState[packageNamespace] = globalState[packageNamespace] || {};
|
|
11
|
+
return globalState[packageNamespace];
|
|
12
|
+
}
|
|
13
|
+
function getGlobalStateSlice(selector) {
|
|
14
|
+
const globalState = getGlobalState();
|
|
15
|
+
return selector ? selector(globalState) : globalState;
|
|
16
|
+
}
|
|
17
|
+
function setGlobalStateSlice(slice) {
|
|
18
|
+
return Object.assign(getGlobalState(), slice);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function getNgZone() {
|
|
22
|
+
return (getGlobalStateSlice((state) => state.ngZone));
|
|
23
|
+
}
|
|
24
|
+
function shareNgZone(zone) {
|
|
25
|
+
setGlobalStateSlice({ ngZone: zone });
|
|
26
|
+
}
|
|
27
|
+
function bootstrap(component, options, config) {
|
|
28
|
+
options.production && enableProdMode();
|
|
29
|
+
if (options.appType === 'shell') {
|
|
30
|
+
bootstrapApplication(component, config).then((ref) => {
|
|
31
|
+
shareShellZone(ref.injector);
|
|
32
|
+
});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (!getNgZone() && isLocalhost()) {
|
|
36
|
+
bootstrapApplication(component, config).then((ref) => {
|
|
37
|
+
connectMicroFrontendRouter(ref.injector);
|
|
38
|
+
});
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
(async () => {
|
|
42
|
+
config.providers.push({ provide: NgZone, useValue: getNgZone() });
|
|
43
|
+
const app = await createApplication(config);
|
|
44
|
+
customElements.define(options.elementName, createCustomElement(component, { injector: app.injector }));
|
|
45
|
+
connectMicroFrontendRouter(app.injector);
|
|
46
|
+
})();
|
|
47
|
+
}
|
|
48
|
+
function shareShellZone(injector) {
|
|
49
|
+
const ngZone = injector.get(NgZone, null);
|
|
50
|
+
if (!ngZone) {
|
|
51
|
+
console.warn('No NgZone to share found');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
shareNgZone(ngZone);
|
|
55
|
+
}
|
|
56
|
+
function connectMicroFrontendRouter(injector) {
|
|
57
|
+
const router = injector.get(Router);
|
|
58
|
+
const location = injector.get(Location);
|
|
59
|
+
if (!router) {
|
|
60
|
+
console.warn('No router to connect found');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
router.navigateByUrl(location.path() + window.location.hash);
|
|
64
|
+
}
|
|
65
|
+
function isLocalhost() {
|
|
66
|
+
const hostname = window.location.hostname;
|
|
67
|
+
return hostname === 'localhost' || hostname === '127.0.0.1';
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Generated bundle index. Do not edit.
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
export { bootstrap };
|
|
75
|
+
//# sourceMappingURL=unipin-angular-applet-micro-frontend.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unipin-angular-applet-micro-frontend.mjs","sources":["../../../projects/unipin-angular/micro-frontend/mf-global-state.util.ts","../../../projects/unipin-angular/micro-frontend/mf-bootstrap.util.ts","../../../projects/unipin-angular/micro-frontend/unipin-angular-applet-micro-frontend.ts"],"sourcesContent":["export const packageNamespace = '@angular-architects/module-federation-tools';\n\nfunction getGlobalState<T>(): T {\n const globalState = window as unknown as { [packageNamespace]: T };\n globalState[packageNamespace] = globalState[packageNamespace] || ({} as unknown as T);\n \n return globalState[packageNamespace];\n}\n\nexport function getGlobalStateSlice<T>(): T;\nexport function getGlobalStateSlice<T, R>(selector: (globalState: T) => R): R;\n\nexport function getGlobalStateSlice<T, R>(selector?: (globalState: T) => R): R | T {\n const globalState = getGlobalState<T>();\n return selector? selector(globalState) : globalState;\n}\n\nexport function setGlobalStateSlice<T extends object>(slice: T): T {\n return Object.assign(getGlobalState<T>(), slice);\n}\n","import { ApplicationConfig, enableProdMode, Injector, NgZone, Type } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { bootstrapApplication, createApplication } from '@angular/platform-browser';\nimport { createCustomElement } from '@angular/elements';\nimport { getGlobalStateSlice, setGlobalStateSlice } from './mf-global-state.util';\n\nexport type AppType = 'shell' | 'microfrontend';\n\nexport type Options = {\n production: boolean;\n appType: AppType;\n elementName?: string;\n};\n\nfunction getNgZone(): NgZone{\n return (getGlobalStateSlice((state: { ngZone: NgZone }) => state.ngZone));\n}\n\nexport function shareNgZone(zone: NgZone): void{\n setGlobalStateSlice({ ngZone: zone });\n}\n\nexport function bootstrap<M>(component: Type<M>, options: Options, config: ApplicationConfig): void{\n options.production && enableProdMode();\n\n if (options.appType === 'shell') {\n bootstrapApplication(component, config).then((ref) => {\n shareShellZone(ref.injector);\n });\n return;\n }\n\n if (!getNgZone() && isLocalhost()) {\n bootstrapApplication(component, config).then((ref) => {\n connectMicroFrontendRouter(ref.injector);\n });\n return;\n }\n \n (async () => {\n config.providers.push({ provide: NgZone, useValue: getNgZone() });\n\n const app = await createApplication(config);\n customElements.define(<string> options.elementName, createCustomElement(component, { injector: app.injector }));\n\n connectMicroFrontendRouter(app.injector);\n })();\n}\n\nfunction shareShellZone(injector: Injector): void{\n const ngZone = injector.get(NgZone, null);\n if (!ngZone) {\n console.warn('No NgZone to share found');\n return;\n }\n shareNgZone(ngZone);\n}\n\nfunction connectMicroFrontendRouter(injector: Injector): void{\n const router = injector.get(Router);\n const location = injector.get(Location);\n\n if (!router) {\n console.warn('No router to connect found');\n return;\n }\n router.navigateByUrl(location.path() + window.location.hash);\n}\n\nfunction isLocalhost(): boolean{\n const hostname = window.location.hostname;\n return hostname === 'localhost' || hostname === '127.0.0.1';\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Directive, inject, ElementRef, input, computed, numberAttribute, effect, untracked, forwardRef, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
|
|
3
|
+
import { UpDialogCloseDirective, UpDialogTriggerDirective, injectExposesStateProvider, UpDialogContentRefDirective, provideExposesStateProviderExisting, UpDialog, provideDialogDefaultOptions } from '@unipin/angular-applet/dialog';
|
|
4
|
+
import { up } from '@unipin/angular-applet/common';
|
|
5
|
+
|
|
6
|
+
class UpPopoverCloseDirective extends UpDialogCloseDirective {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpPopoverCloseDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.0", type: UpPopoverCloseDirective, isStandalone: true, selector: "[upPopoverClose]", exportAs: ["upPopoverClose"], usesInheritance: true, ngImport: i0 }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpPopoverCloseDirective, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{
|
|
13
|
+
standalone: true,
|
|
14
|
+
exportAs: 'upPopoverClose',
|
|
15
|
+
selector: '[upPopoverClose]',
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
|
|
19
|
+
class UpPopoverTriggerDirective extends UpDialogTriggerDirective {
|
|
20
|
+
constructor() {
|
|
21
|
+
super();
|
|
22
|
+
this.host = inject(ElementRef, { host: true });
|
|
23
|
+
if (!this.dialog) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
this.dialog.mutableAttachTo().set(this.host.nativeElement);
|
|
27
|
+
this.dialog.mutableCloseOnOutsidePointerEvents().set(true);
|
|
28
|
+
}
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpPopoverTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
30
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.0", type: UpPopoverTriggerDirective, isStandalone: true, selector: "[upPopoverTrigger]", host: { attributes: { "aria-haspopup": "dialog" }, properties: { "id": "id()", "attr.data-state": "state()" } }, exportAs: ["upPopoverTrigger"], usesInheritance: true, ngImport: i0 }); }
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpPopoverTriggerDirective, decorators: [{
|
|
33
|
+
type: Directive,
|
|
34
|
+
args: [{
|
|
35
|
+
standalone: true,
|
|
36
|
+
exportAs: 'upPopoverTrigger',
|
|
37
|
+
selector: '[upPopoverTrigger]',
|
|
38
|
+
host: {
|
|
39
|
+
'[id]': 'id()',
|
|
40
|
+
'aria-haspopup': 'dialog',
|
|
41
|
+
'[attr.data-state]': 'state()',
|
|
42
|
+
},
|
|
43
|
+
}]
|
|
44
|
+
}], ctorParameters: () => [] });
|
|
45
|
+
|
|
46
|
+
class UpPopoverContentDirective {
|
|
47
|
+
constructor() {
|
|
48
|
+
this.stateProvider = injectExposesStateProvider({ host: true });
|
|
49
|
+
this.userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
|
|
50
|
+
this._computedClass = computed(() => {
|
|
51
|
+
return up('relative border-border w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none transition-all duration-100 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', this.userClass());
|
|
52
|
+
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
53
|
+
}
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpPopoverContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
55
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.0", type: UpPopoverContentDirective, isStandalone: true, selector: "[upPopoverContent]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()", "attr.data-state": "'open'" } }, exportAs: ["upPopoverContent"], ngImport: i0 }); }
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpPopoverContentDirective, decorators: [{
|
|
58
|
+
type: Directive,
|
|
59
|
+
args: [{
|
|
60
|
+
standalone: true,
|
|
61
|
+
exportAs: 'upPopoverContent',
|
|
62
|
+
selector: '[upPopoverContent]',
|
|
63
|
+
host: {
|
|
64
|
+
'[class]': '_computedClass()',
|
|
65
|
+
'[attr.data-state]': `'open'`,
|
|
66
|
+
},
|
|
67
|
+
}]
|
|
68
|
+
}], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
69
|
+
|
|
70
|
+
class UpPopoverContentRefDirective extends UpDialogContentRefDirective {
|
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpPopoverContentRefDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
72
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.0", type: UpPopoverContentRefDirective, isStandalone: true, selector: "[upPopoverContentRef]", providers: [
|
|
73
|
+
provideExposesStateProviderExisting(() => UpPopoverContentRefDirective)
|
|
74
|
+
], exportAs: ["upPopoverContentRef"], usesInheritance: true, ngImport: i0 }); }
|
|
75
|
+
}
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpPopoverContentRefDirective, decorators: [{
|
|
77
|
+
type: Directive,
|
|
78
|
+
args: [{
|
|
79
|
+
standalone: true,
|
|
80
|
+
exportAs: 'upPopoverContentRef',
|
|
81
|
+
selector: '[upPopoverContentRef]',
|
|
82
|
+
providers: [
|
|
83
|
+
provideExposesStateProviderExisting(() => UpPopoverContentRefDirective)
|
|
84
|
+
],
|
|
85
|
+
}]
|
|
86
|
+
}] });
|
|
87
|
+
|
|
88
|
+
class UpPopoverComponent extends UpDialog {
|
|
89
|
+
constructor() {
|
|
90
|
+
super();
|
|
91
|
+
this.placement = input('bottom', ...(ngDevMode ? [{ debugName: "placement" }] : []));
|
|
92
|
+
this.alignment = input('center', ...(ngDevMode ? [{ debugName: "alignment" }] : []));
|
|
93
|
+
this.placementOffset = input(0, ...(ngDevMode ? [{ debugName: "placementOffset", transform: numberAttribute }] : [{
|
|
94
|
+
transform: numberAttribute
|
|
95
|
+
}]));
|
|
96
|
+
this.alignmentOffset = input(0, ...(ngDevMode ? [{ debugName: "alignmentOffset", transform: numberAttribute }] : [{
|
|
97
|
+
transform: numberAttribute
|
|
98
|
+
}]));
|
|
99
|
+
effect(() => {
|
|
100
|
+
const placement = this.placement();
|
|
101
|
+
const alignment = this.alignment();
|
|
102
|
+
untracked(() => {
|
|
103
|
+
this.updatePositions(placement, alignment);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
effect(() => {
|
|
107
|
+
const placementOffset = this.placementOffset();
|
|
108
|
+
const alignmentOffset = this.alignmentOffset();
|
|
109
|
+
untracked(() => {
|
|
110
|
+
this.applyPlacementOffset(placementOffset);
|
|
111
|
+
this.applyAlignOffset(alignmentOffset);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
updatePositions(placement, alignment) {
|
|
116
|
+
const positions = this.generatePositions(placement, alignment);
|
|
117
|
+
this.mutableAttachPositions().set(positions);
|
|
118
|
+
}
|
|
119
|
+
generatePositions(placement, alignment) {
|
|
120
|
+
const alignmentMap = {
|
|
121
|
+
end: { x: 'end', y: 'bottom' },
|
|
122
|
+
start: { x: 'start', y: 'top' },
|
|
123
|
+
center: { x: 'center', y: 'center' },
|
|
124
|
+
};
|
|
125
|
+
const alignmentX = alignmentMap[alignment].x;
|
|
126
|
+
const alignmentY = alignmentMap[alignment].y;
|
|
127
|
+
switch (placement) {
|
|
128
|
+
case 'top':
|
|
129
|
+
return [
|
|
130
|
+
{
|
|
131
|
+
originX: alignmentX,
|
|
132
|
+
originY: 'top',
|
|
133
|
+
overlayX: alignmentX,
|
|
134
|
+
overlayY: 'bottom',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
originX: alignmentX,
|
|
138
|
+
originY: 'bottom',
|
|
139
|
+
overlayX: alignmentX,
|
|
140
|
+
overlayY: 'top',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
originX: 'start',
|
|
144
|
+
originY: alignmentY,
|
|
145
|
+
overlayX: 'end',
|
|
146
|
+
overlayY: alignmentY,
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
originX: 'end',
|
|
150
|
+
originY: alignmentY,
|
|
151
|
+
overlayX: 'start',
|
|
152
|
+
overlayY: alignmentY,
|
|
153
|
+
}
|
|
154
|
+
];
|
|
155
|
+
case 'right':
|
|
156
|
+
return [
|
|
157
|
+
{
|
|
158
|
+
originX: 'end',
|
|
159
|
+
originY: alignmentY,
|
|
160
|
+
overlayX: 'start',
|
|
161
|
+
overlayY: alignmentY,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
originX: 'start',
|
|
165
|
+
originY: alignmentY,
|
|
166
|
+
overlayX: 'end',
|
|
167
|
+
overlayY: alignmentY,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
originX: alignmentX,
|
|
171
|
+
originY: 'bottom',
|
|
172
|
+
overlayX: alignmentX,
|
|
173
|
+
overlayY: 'top',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
originX: alignmentX,
|
|
177
|
+
originY: 'top',
|
|
178
|
+
overlayX: alignmentX,
|
|
179
|
+
overlayY: 'bottom',
|
|
180
|
+
}
|
|
181
|
+
];
|
|
182
|
+
case 'bottom':
|
|
183
|
+
return [
|
|
184
|
+
{
|
|
185
|
+
originX: alignmentX,
|
|
186
|
+
originY: 'bottom',
|
|
187
|
+
overlayX: alignmentX,
|
|
188
|
+
overlayY: 'top',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
originX: alignmentX,
|
|
192
|
+
originY: 'top',
|
|
193
|
+
overlayX: alignmentX,
|
|
194
|
+
overlayY: 'bottom',
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
originY: alignmentY,
|
|
198
|
+
originX: 'end',
|
|
199
|
+
overlayY: alignmentY,
|
|
200
|
+
overlayX: 'start',
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
originY: alignmentY,
|
|
204
|
+
originX: 'start',
|
|
205
|
+
overlayY: alignmentY,
|
|
206
|
+
overlayX: 'end',
|
|
207
|
+
}
|
|
208
|
+
];
|
|
209
|
+
case 'left':
|
|
210
|
+
return [
|
|
211
|
+
{
|
|
212
|
+
originY: alignmentY,
|
|
213
|
+
originX: 'start',
|
|
214
|
+
overlayY: alignmentY,
|
|
215
|
+
overlayX: 'end',
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
originY: alignmentY,
|
|
219
|
+
originX: 'end',
|
|
220
|
+
overlayY: alignmentY,
|
|
221
|
+
overlayX: 'start',
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
originX: alignmentX,
|
|
225
|
+
originY: 'bottom',
|
|
226
|
+
overlayX: alignmentX,
|
|
227
|
+
overlayY: 'top',
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
originX: alignmentX,
|
|
231
|
+
originY: 'top',
|
|
232
|
+
overlayX: alignmentX,
|
|
233
|
+
overlayY: 'bottom',
|
|
234
|
+
}
|
|
235
|
+
];
|
|
236
|
+
default:
|
|
237
|
+
return this.generatePositions('bottom', alignment);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
applyPlacementOffset(placementOffset) {
|
|
241
|
+
const placement = this.placement();
|
|
242
|
+
this.mutableAttachPositions().update((positions) => {
|
|
243
|
+
return positions.map((position) => {
|
|
244
|
+
let offsetX = position.offsetX || 0;
|
|
245
|
+
let offsetY = position.offsetY || 0;
|
|
246
|
+
switch (placement) {
|
|
247
|
+
case 'top':
|
|
248
|
+
offsetY = -placementOffset;
|
|
249
|
+
break;
|
|
250
|
+
case 'bottom':
|
|
251
|
+
offsetY = placementOffset;
|
|
252
|
+
break;
|
|
253
|
+
case 'left':
|
|
254
|
+
offsetX = -placementOffset;
|
|
255
|
+
break;
|
|
256
|
+
case 'right':
|
|
257
|
+
offsetX = placementOffset;
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
return {
|
|
261
|
+
...position,
|
|
262
|
+
offsetX,
|
|
263
|
+
offsetY,
|
|
264
|
+
};
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
applyAlignOffset(alignOffset) {
|
|
269
|
+
if (alignOffset === 0) {
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
const placement = this.placement();
|
|
273
|
+
this.mutableAttachPositions().update((positions) => {
|
|
274
|
+
return positions.map((position) => {
|
|
275
|
+
let offsetX = position.offsetX || 0;
|
|
276
|
+
let offsetY = position.offsetY || 0;
|
|
277
|
+
if (['top', 'bottom'].includes(placement)) {
|
|
278
|
+
offsetX += alignOffset;
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
offsetY += alignOffset;
|
|
282
|
+
}
|
|
283
|
+
return {
|
|
284
|
+
...position,
|
|
285
|
+
offsetX,
|
|
286
|
+
offsetY,
|
|
287
|
+
};
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
292
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: UpPopoverComponent, isStandalone: true, selector: "up-popover", inputs: { placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null }, placementOffset: { classPropertyName: "placementOffset", publicName: "placementOffset", isSignal: true, isRequired: false, transformFunction: null }, alignmentOffset: { classPropertyName: "alignmentOffset", publicName: "alignmentOffset", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
293
|
+
{
|
|
294
|
+
provide: UpDialog,
|
|
295
|
+
useExisting: forwardRef(() => UpPopoverComponent)
|
|
296
|
+
},
|
|
297
|
+
provideDialogDefaultOptions({
|
|
298
|
+
hasBackdrop: false,
|
|
299
|
+
scrollStrategy: 'reposition'
|
|
300
|
+
})
|
|
301
|
+
], usesInheritance: true, ngImport: i0, template: `
|
|
302
|
+
<ng-content />
|
|
303
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
304
|
+
}
|
|
305
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: UpPopoverComponent, decorators: [{
|
|
306
|
+
type: Component,
|
|
307
|
+
args: [{
|
|
308
|
+
standalone: true,
|
|
309
|
+
selector: 'up-popover',
|
|
310
|
+
encapsulation: ViewEncapsulation.None,
|
|
311
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
312
|
+
template: `
|
|
313
|
+
<ng-content />
|
|
314
|
+
`,
|
|
315
|
+
providers: [
|
|
316
|
+
{
|
|
317
|
+
provide: UpDialog,
|
|
318
|
+
useExisting: forwardRef(() => UpPopoverComponent)
|
|
319
|
+
},
|
|
320
|
+
provideDialogDefaultOptions({
|
|
321
|
+
hasBackdrop: false,
|
|
322
|
+
scrollStrategy: 'reposition'
|
|
323
|
+
})
|
|
324
|
+
]
|
|
325
|
+
}]
|
|
326
|
+
}], ctorParameters: () => [], propDecorators: { placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], alignment: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignment", required: false }] }], placementOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "placementOffset", required: false }] }], alignmentOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignmentOffset", required: false }] }] } });
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Generated bundle index. Do not edit.
|
|
330
|
+
*/
|
|
331
|
+
|
|
332
|
+
export { UpPopoverCloseDirective, UpPopoverComponent, UpPopoverContentDirective, UpPopoverContentRefDirective, UpPopoverTriggerDirective };
|
|
333
|
+
//# sourceMappingURL=unipin-angular-applet-popover.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unipin-angular-applet-popover.mjs","sources":["../../../projects/unipin-angular/popover/directives/popover-close.directive.ts","../../../projects/unipin-angular/popover/directives/popover-trigger.directive.ts","../../../projects/unipin-angular/popover/directives/popover-content.directive.ts","../../../projects/unipin-angular/popover/directives/popover-content-ref.directive.ts","../../../projects/unipin-angular/popover/components/popover.component.ts","../../../projects/unipin-angular/popover/unipin-angular-applet-popover.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { UpDialogCloseDirective } from '@unipin/angular-applet/dialog';\n\n@Directive({\n standalone: true,\n exportAs: 'upPopoverClose',\n selector: '[upPopoverClose]',\n})\nexport class UpPopoverCloseDirective extends UpDialogCloseDirective {}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { UpDialogTriggerDirective } from '@unipin/angular-applet/dialog';\n\n@Directive({\n standalone: true,\n exportAs: 'upPopoverTrigger',\n selector: '[upPopoverTrigger]',\n host: {\n '[id]': 'id()',\n 'aria-haspopup': 'dialog',\n '[attr.data-state]': 'state()',\n },\n})\nexport class UpPopoverTriggerDirective extends UpDialogTriggerDirective {\n\n protected readonly host = inject(ElementRef, { host: true });\n\n constructor() {\n super();\n if (!this.dialog) {\n return;\n }\n \n this.dialog.mutableAttachTo().set(this.host.nativeElement);\n this.dialog.mutableCloseOnOutsidePointerEvents().set(true);\n }\n}\n","import { Directive, computed, input } from '@angular/core';\nimport type { ClassValue } from 'clsx';\nimport { up } from '@unipin/angular-applet/common';\nimport { injectExposesStateProvider } from '@unipin/angular-applet/dialog';\n\n@Directive({\n standalone: true,\n exportAs: 'upPopoverContent',\n selector: '[upPopoverContent]',\n host: {\n '[class]': '_computedClass()',\n '[attr.data-state]': `'open'`,\n },\n})\nexport class UpPopoverContentDirective {\n\n public readonly stateProvider = injectExposesStateProvider({ host: true });\n\n public readonly userClass = input<ClassValue>('', { alias: 'class' });\n\n protected readonly _computedClass = computed(\n () => {\n return up(\n 'relative border-border w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none transition-all duration-100 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n this.userClass(),\n );\n }\n );\n}\n","import { Directive } from '@angular/core';\nimport { provideExposesStateProviderExisting, UpDialogContentRefDirective } from '@unipin/angular-applet/dialog';\n\n@Directive({\n standalone: true,\n exportAs: 'upPopoverContentRef',\n selector: '[upPopoverContentRef]',\n providers: [\n provideExposesStateProviderExisting(() => UpPopoverContentRefDirective)\n ],\n})\nexport class UpPopoverContentRefDirective<T> extends UpDialogContentRefDirective<T> {}\n","import { ChangeDetectionStrategy, Component, effect, forwardRef, input, numberAttribute, untracked, ViewEncapsulation } from '@angular/core';\nimport { UpDialog, provideDialogDefaultOptions } from '@unipin/angular-applet/dialog';\nimport { AttachPosition, UpPopoverAlignment, UpPopoverPlacement } from '../types/popover.type';\n\n@Component({\n standalone: true,\n selector: 'up-popover',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-content />\n `,\n providers: [\n {\n provide: UpDialog,\n useExisting: forwardRef(() => UpPopoverComponent)\n },\n provideDialogDefaultOptions(\n {\n hasBackdrop: false, \n scrollStrategy: 'reposition'\n }\n )\n ]\n})\nexport class UpPopoverComponent extends UpDialog {\n\n public readonly placement = input<UpPopoverPlacement>('bottom');\n public readonly alignment = input<UpPopoverAlignment>('center');\n\n public readonly placementOffset = input(\n 0, \n { \n transform: numberAttribute \n }\n );\n public readonly alignmentOffset = input(\n 0, \n { \n transform: numberAttribute \n }\n );\n\n constructor() {\n super();\n\n effect(\n () => {\n const placement = this.placement();\n const alignment = this.alignment();\n\n untracked(\n () => {\n this.updatePositions(placement, alignment);\n }\n );\n }\n );\n\n effect(\n () => {\n const placementOffset = this.placementOffset();\n const alignmentOffset = this.alignmentOffset();\n\n untracked(\n () => {\n this.applyPlacementOffset(placementOffset);\n this.applyAlignOffset(alignmentOffset);\n }\n );\n }\n );\n }\n\n protected updatePositions(placement: UpPopoverPlacement, alignment: UpPopoverAlignment): void{\n const positions = this.generatePositions(placement, alignment);\n this.mutableAttachPositions().set(positions);\n }\n\n protected generatePositions(placement: UpPopoverPlacement, alignment: UpPopoverAlignment): AttachPosition[]{\n const alignmentMap = {\n end: { x: 'end', y: 'bottom' },\n start: { x: 'start', y: 'top' },\n center: { x: 'center', y: 'center' },\n };\n\n const alignmentX = alignmentMap[alignment].x as 'start' | 'center' | 'end';\n const alignmentY = alignmentMap[alignment].y as 'top' | 'center' | 'bottom';\n\n switch (placement) {\n case 'top':\n return [\n {\n originX: alignmentX,\n originY: 'top' as const,\n overlayX: alignmentX,\n overlayY: 'bottom' as const,\n },\n {\n originX: alignmentX,\n originY: 'bottom' as const,\n overlayX: alignmentX,\n overlayY: 'top' as const,\n },\n {\n originX: 'start' as const,\n originY: alignmentY,\n overlayX: 'end' as const,\n overlayY: alignmentY,\n },\n {\n originX: 'end' as const,\n originY: alignmentY,\n overlayX: 'start' as const,\n overlayY: alignmentY,\n }\n ];\n\n case 'right':\n return [\n {\n originX: 'end' as const,\n originY: alignmentY,\n overlayX: 'start' as const,\n overlayY: alignmentY,\n },\n {\n originX: 'start' as const,\n originY: alignmentY,\n overlayX: 'end' as const,\n overlayY: alignmentY,\n },\n {\n originX: alignmentX,\n originY: 'bottom' as const,\n overlayX: alignmentX,\n overlayY: 'top' as const,\n },\n {\n originX: alignmentX,\n originY: 'top' as const,\n overlayX: alignmentX,\n overlayY: 'bottom' as const,\n }\n ];\n\n case 'bottom':\n return [\n {\n originX: alignmentX,\n originY: 'bottom' as const,\n overlayX: alignmentX,\n overlayY: 'top' as const,\n },\n {\n originX: alignmentX,\n originY: 'top' as const,\n overlayX: alignmentX,\n overlayY: 'bottom' as const,\n },\n {\n originY: alignmentY,\n originX: 'end' as const,\n overlayY: alignmentY,\n overlayX: 'start' as const,\n },\n {\n originY: alignmentY,\n originX: 'start' as const,\n overlayY: alignmentY,\n overlayX: 'end' as const,\n }\n ];\n\n case 'left':\n return [\n {\n originY: alignmentY,\n originX: 'start' as const,\n overlayY: alignmentY,\n overlayX: 'end' as const,\n },\n {\n originY: alignmentY,\n originX: 'end' as const,\n overlayY: alignmentY,\n overlayX: 'start' as const,\n },\n {\n originX: alignmentX,\n originY: 'bottom' as const,\n overlayX: alignmentX,\n overlayY: 'top' as const,\n },\n {\n originX: alignmentX,\n originY: 'top' as const,\n overlayX: alignmentX,\n overlayY: 'bottom' as const,\n }\n ] as AttachPosition[];\n\n default:\n return this.generatePositions('bottom', alignment);\n }\n }\n\n protected applyPlacementOffset(placementOffset: number): void{\n const placement = this.placement();\n\n this.mutableAttachPositions().update(\n (positions) => {\n return positions.map(\n (position) => {\n let offsetX = position.offsetX || 0;\n let offsetY = position.offsetY || 0;\n \n switch (placement) {\n case 'top':\n offsetY = -placementOffset;\n break;\n \n case 'bottom':\n offsetY = placementOffset;\n break;\n \n case 'left':\n offsetX = -placementOffset;\n break;\n \n case 'right':\n offsetX = placementOffset;\n break;\n }\n \n return {\n ...position,\n offsetX,\n offsetY,\n };\n }\n );\n }\n );\n }\n\n protected applyAlignOffset(alignOffset: number): void{\n if (alignOffset === 0) {\n return;\n }\n const placement = this.placement();\n\n this.mutableAttachPositions().update(\n (positions) => {\n return positions.map(\n (position) => {\n let offsetX = position.offsetX || 0;\n let offsetY = position.offsetY || 0;\n\n if (['top', 'bottom'].includes(placement)) {\n offsetX += alignOffset;\n } else {\n offsetY += alignOffset;\n }\n\n return {\n ...position,\n offsetX,\n offsetY,\n };\n }\n );\n }\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|