@unipin/angular-applet 21.1.3 → 21.3.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/common/assets/styles/theme.css +8 -0
- package/fesm2022/unipin-angular-applet-accordion.mjs +12 -12
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs +10 -7
- package/fesm2022/unipin-angular-applet-alert-dialog.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-alert.mjs +9 -9
- package/fesm2022/unipin-angular-applet-approval.mjs +6 -6
- package/fesm2022/unipin-angular-applet-audit-audit-modal.component-3a2P0bZr.mjs +280 -0
- package/fesm2022/unipin-angular-applet-audit-audit-modal.component-3a2P0bZr.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-audit.mjs +220 -0
- package/fesm2022/unipin-angular-applet-audit.mjs.map +1 -0
- package/fesm2022/unipin-angular-applet-auth.mjs +21 -21
- package/fesm2022/unipin-angular-applet-avatar.mjs +25 -8
- package/fesm2022/unipin-angular-applet-avatar.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-badge.mjs +3 -3
- package/fesm2022/unipin-angular-applet-buttons.mjs +6 -6
- package/fesm2022/unipin-angular-applet-calendar.mjs +26 -12
- package/fesm2022/unipin-angular-applet-calendar.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-collapsible.mjs +9 -9
- package/fesm2022/unipin-angular-applet-common.mjs +24 -24
- package/fesm2022/unipin-angular-applet-containers.mjs +12 -12
- package/fesm2022/unipin-angular-applet-dialog.mjs +30 -45
- package/fesm2022/unipin-angular-applet-dialog.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-forms.mjs +960 -311
- package/fesm2022/unipin-angular-applet-forms.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-froala.mjs +4 -4
- package/fesm2022/unipin-angular-applet-froala.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-grids.mjs +17 -1
- package/fesm2022/unipin-angular-applet-grids.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-infinite-scroll.mjs +3 -3
- package/fesm2022/unipin-angular-applet-json-viewer.mjs +3 -3
- package/fesm2022/unipin-angular-applet-kbd.mjs +3 -3
- package/fesm2022/unipin-angular-applet-loading-dialog.mjs +6 -6
- package/fesm2022/unipin-angular-applet-markdown.mjs +10 -10
- package/fesm2022/unipin-angular-applet-markdown.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-popover.mjs +18 -18
- package/fesm2022/unipin-angular-applet-popover.mjs.map +1 -1
- package/fesm2022/unipin-angular-applet-progress-bar.mjs +3 -3
- package/fesm2022/unipin-angular-applet-skeleton.mjs +3 -3
- package/fesm2022/unipin-angular-applet-spinner.mjs +3 -3
- package/fesm2022/unipin-angular-applet-stepper.mjs +6 -6
- package/fesm2022/unipin-angular-applet-swipeable.mjs +12 -12
- package/fesm2022/unipin-angular-applet-tabs.mjs +9 -9
- package/fesm2022/unipin-angular-applet-tooltip.mjs +3 -3
- package/package.json +5 -1
- package/types/unipin-angular-applet-audit.d.ts +49 -0
- package/types/unipin-angular-applet-avatar.d.ts +3 -2
- package/types/unipin-angular-applet-containers.d.ts +1 -1
- package/types/unipin-angular-applet-dialog.d.ts +13 -13
- package/types/unipin-angular-applet-forms.d.ts +133 -51
- package/types/unipin-angular-applet-grids.d.ts +17 -1
- package/types/unipin-angular-applet-popover.d.ts +2 -2
|
@@ -1 +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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"}
|
|
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/30 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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"}
|
|
@@ -4,10 +4,10 @@ import { UpDialogCloseDirective, UpDialogTriggerDirective, injectExposesStatePro
|
|
|
4
4
|
import { up } from '@unipin/angular-applet/common';
|
|
5
5
|
|
|
6
6
|
class UpPopoverCloseDirective extends UpDialogCloseDirective {
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
8
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPopoverCloseDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.5", type: UpPopoverCloseDirective, isStandalone: true, selector: "[upPopoverClose]", exportAs: ["upPopoverClose"], usesInheritance: true, ngImport: i0 }); }
|
|
9
9
|
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPopoverCloseDirective, decorators: [{
|
|
11
11
|
type: Directive,
|
|
12
12
|
args: [{
|
|
13
13
|
standalone: true,
|
|
@@ -26,10 +26,10 @@ class UpPopoverTriggerDirective extends UpDialogTriggerDirective {
|
|
|
26
26
|
this.dialog.mutableAttachTo().set(this.host.nativeElement);
|
|
27
27
|
this.dialog.mutableCloseOnOutsidePointerEvents().set(true);
|
|
28
28
|
}
|
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
30
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.
|
|
29
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPopoverTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
30
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.5", 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
31
|
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPopoverTriggerDirective, decorators: [{
|
|
33
33
|
type: Directive,
|
|
34
34
|
args: [{
|
|
35
35
|
standalone: true,
|
|
@@ -46,15 +46,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
46
46
|
class UpPopoverContentDirective {
|
|
47
47
|
constructor() {
|
|
48
48
|
this.stateProvider = injectExposesStateProvider({ host: true });
|
|
49
|
-
this.
|
|
49
|
+
this.inlineClass = input('', { ...(ngDevMode ? { debugName: "inlineClass" } : {}), alias: 'class' });
|
|
50
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.
|
|
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.inlineClass());
|
|
52
52
|
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
53
53
|
}
|
|
54
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
55
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPopoverContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
55
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: UpPopoverContentDirective, isStandalone: true, selector: "[upPopoverContent]", inputs: { inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()", "attr.data-state": "'open'" } }, exportAs: ["upPopoverContent"], ngImport: i0 }); }
|
|
56
56
|
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPopoverContentDirective, decorators: [{
|
|
58
58
|
type: Directive,
|
|
59
59
|
args: [{
|
|
60
60
|
standalone: true,
|
|
@@ -65,15 +65,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
65
65
|
'[attr.data-state]': `'open'`,
|
|
66
66
|
},
|
|
67
67
|
}]
|
|
68
|
-
}], propDecorators: {
|
|
68
|
+
}], propDecorators: { inlineClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
|
|
69
69
|
|
|
70
70
|
class UpPopoverContentRefDirective extends UpDialogContentRefDirective {
|
|
71
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
72
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.
|
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPopoverContentRefDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
72
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.5", type: UpPopoverContentRefDirective, isStandalone: true, selector: "[upPopoverContentRef]", providers: [
|
|
73
73
|
provideExposesStateProviderExisting(() => UpPopoverContentRefDirective)
|
|
74
74
|
], exportAs: ["upPopoverContentRef"], usesInheritance: true, ngImport: i0 }); }
|
|
75
75
|
}
|
|
76
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPopoverContentRefDirective, decorators: [{
|
|
77
77
|
type: Directive,
|
|
78
78
|
args: [{
|
|
79
79
|
standalone: true,
|
|
@@ -284,8 +284,8 @@ class UpPopoverComponent extends UpDialog {
|
|
|
284
284
|
});
|
|
285
285
|
});
|
|
286
286
|
}
|
|
287
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
288
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
287
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
288
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.5", 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: [
|
|
289
289
|
{
|
|
290
290
|
provide: UpDialog,
|
|
291
291
|
useExisting: forwardRef(() => UpPopoverComponent)
|
|
@@ -298,7 +298,7 @@ class UpPopoverComponent extends UpDialog {
|
|
|
298
298
|
<ng-content />
|
|
299
299
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
300
300
|
}
|
|
301
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpPopoverComponent, decorators: [{
|
|
302
302
|
type: Component,
|
|
303
303
|
args: [{
|
|
304
304
|
standalone: true,
|
|
@@ -1 +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":";;;;;AAQM,MAAO,uBAAwB,SAAQ,sBAAsB,CAAA;8GAAtD,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;;;ACMK,MAAO,yBAA0B,SAAQ,wBAAwB,CAAA;AAIrE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAHU,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAI1D,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,kCAAkC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5D;8GAZW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,eAAe,EAAE,QAAQ;AACzB,wBAAA,mBAAmB,EAAE,SAAS;AAC/B,qBAAA;AACF,iBAAA;;;MCEY,yBAAyB,CAAA;AATtC,IAAA,WAAA,GAAA;QAWkB,IAAA,CAAA,aAAa,GAAG,0BAA0B,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAE1D,IAAA,CAAA,SAAS,GAAG,KAAK,CAAa,EAAE,sDAAI,KAAK,EAAE,OAAO,EAAA,CAAG;AAElD,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAC1C,MAAK;YACH,OAAO,EAAE,CACP,0dAA0d,EAC1d,IAAI,CAAC,SAAS,EAAE,CACjB;AACH,QAAA,CAAC,0DACF;AACF,IAAA;8GAdY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,mBAAmB,EAAE,CAAA,MAAA,CAAQ;AAC9B,qBAAA;AACF,iBAAA;;;ACFK,MAAO,4BAAgC,SAAQ,2BAA8B,CAAA;8GAAtE,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,SAAA,EAJ5B;AACT,YAAA,mCAAmC,CAAC,MAAM,4BAA4B;AACvE,SAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,SAAS,EAAE;AACT,wBAAA,mCAAmC,CAAC,MAAK,4BAA6B;AACvE,qBAAA;AACF,iBAAA;;;ACeK,MAAO,kBAAmB,SAAQ,QAAQ,CAAA;AAkB9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAjBO,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,QAAQ,qDAAC;AAC/C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAqB,QAAQ,qDAAC;QAE/C,IAAA,CAAA,eAAe,GAAG,KAAK,CACrC,CAAC,4DAEC,SAAS,EAAE,eAAe,EAAA,CAE7B;QACe,IAAA,CAAA,eAAe,GAAG,KAAK,CACrC,CAAC,4DAEC,SAAS,EAAE,eAAe,EAAA,CAE7B;QAKC,MAAM,CACJ,MAAK;AACH,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;YAElC,SAAS,CACP,MAAK;AACH,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC;AAC5C,YAAA,CAAC,CACF;AACH,QAAA,CAAC,CACF;QAED,MAAM,CACJ,MAAK;AACH,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;YAE9C,SAAS,CACP,MAAK;AACH,gBAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC;AAC1C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;AACxC,YAAA,CAAC,CACF;AACH,QAAA,CAAC,CACF;IACH;IAEU,eAAe,CAAC,SAA6B,EAAE,SAA6B,EAAA;QACpF,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9D,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;IAC9C;IAEU,iBAAiB,CAAC,SAA6B,EAAE,SAA6B,EAAA;AACtF,QAAA,MAAM,YAAY,GAAG;YACnB,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE;YAC9B,KAAK,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE;YAC/B,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE;SACrC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAA+B;QAC1E,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAgC;QAE3E,QAAQ,SAAS;AACf,YAAA,KAAK,KAAK;gBACR,OAAO;AACL,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,KAAc;AACvB,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,QAAiB;AAC5B,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,QAAiB;AAC1B,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,KAAc;AACzB,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,OAAgB;AACzB,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,QAAQ,EAAE,KAAc;AACxB,wBAAA,QAAQ,EAAE,UAAU;AACrB,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,KAAc;AACvB,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,QAAQ,EAAE,OAAgB;AAC1B,wBAAA,QAAQ,EAAE,UAAU;AACrB;iBACF;AAEH,YAAA,KAAK,OAAO;gBACV,OAAO;AACL,oBAAA;AACE,wBAAA,OAAO,EAAE,KAAc;AACvB,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,QAAQ,EAAE,OAAgB;AAC1B,wBAAA,QAAQ,EAAE,UAAU;AACrB,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,OAAgB;AACzB,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,QAAQ,EAAE,KAAc;AACxB,wBAAA,QAAQ,EAAE,UAAU;AACrB,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,QAAiB;AAC1B,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,KAAc;AACzB,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,KAAc;AACvB,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,QAAiB;AAC5B;iBACF;AAEH,YAAA,KAAK,QAAQ;gBACX,OAAO;AACL,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,QAAiB;AAC1B,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,KAAc;AACzB,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,KAAc;AACvB,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,QAAiB;AAC5B,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,KAAc;AACvB,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,OAAgB;AAC3B,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,OAAgB;AACzB,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,KAAc;AACzB;iBACF;AAEH,YAAA,KAAK,MAAM;gBACT,OAAO;AACL,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,OAAgB;AACzB,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,KAAc;AACzB,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,KAAc;AACvB,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,OAAgB;AAC3B,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,QAAiB;AAC1B,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,KAAc;AACzB,qBAAA;AACD,oBAAA;AACE,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,OAAO,EAAE,KAAc;AACvB,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,QAAQ,EAAE,QAAiB;AAC5B;iBACkB;AAEvB,YAAA;gBACE,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC;;IAExD;AAEU,IAAA,oBAAoB,CAAC,eAAuB,EAAA;AACpD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAElC,IAAI,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAClC,CAAC,SAAS,KAAI;AACZ,YAAA,OAAO,SAAS,CAAC,GAAG,CAClB,CAAC,QAAQ,KAAI;AACX,gBAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC;AACnC,gBAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC;gBAEnC,QAAQ,SAAS;AACf,oBAAA,KAAK,KAAK;wBACR,OAAO,GAAG,CAAC,eAAe;wBAC1B;AAEF,oBAAA,KAAK,QAAQ;wBACX,OAAO,GAAG,eAAe;wBACzB;AAEF,oBAAA,KAAK,MAAM;wBACT,OAAO,GAAG,CAAC,eAAe;wBAC1B;AAEF,oBAAA,KAAK,OAAO;wBACV,OAAO,GAAG,eAAe;wBACzB;;gBAGJ,OAAO;AACL,oBAAA,GAAG,QAAQ;oBACX,OAAO;oBACP,OAAO;iBACR;AACH,YAAA,CAAC,CACF;AACH,QAAA,CAAC,CACF;IACH;AAEU,IAAA,gBAAgB,CAAC,WAAmB,EAAA;AAC5C,QAAA,IAAI,WAAW,KAAK,CAAC,EAAE;YACrB;QACF;AACA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAElC,IAAI,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAClC,CAAC,SAAS,KAAI;AACZ,YAAA,OAAO,SAAS,CAAC,GAAG,CAClB,CAAC,QAAQ,KAAI;AACX,gBAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC;AACnC,gBAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC;gBAEnC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;oBACzC,OAAO,IAAI,WAAW;gBACxB;qBAAO;oBACL,OAAO,IAAI,WAAW;gBACxB;gBAEA,OAAO;AACL,oBAAA,GAAG,QAAQ;oBACX,OAAO;oBACP,OAAO;iBACR;AACH,YAAA,CAAC,CACF;AACH,QAAA,CAAC,CACF;IACH;8GAzPW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAblB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB;AACjD,aAAA;AACD,YAAA,2BAA2B,CACzB;AACE,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,cAAc,EAAE;aACjB;SAEJ,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdS;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAcU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBArB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,YAAY;oBACtB,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;AAET,EAAA,CAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,QAAQ;AACjB,4BAAA,WAAW,EAAE,UAAU,CAAC,wBAAwB;AACjD,yBAAA;AACD,wBAAA,2BAA2B,CACzB;AACE,4BAAA,WAAW,EAAE,KAAK;AAClB,4BAAA,cAAc,EAAE;yBACjB;AAEJ;AACF,iBAAA;;;ACxBD;;AAEG;;;;"}
|
|
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 inlineClass = 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.inlineClass(),\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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"}
|
|
@@ -14,10 +14,10 @@ class UpProgressBarDirective {
|
|
|
14
14
|
return `${Math.max(0, Math.min(100, (this.progress() / this.max()) * 100 || 0))}%`;
|
|
15
15
|
}, ...(ngDevMode ? [{ debugName: "_progressWidth" }] : []));
|
|
16
16
|
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
18
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpProgressBarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
18
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: UpProgressBarDirective, isStandalone: true, selector: "[upProgressBar]", inputs: { max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: true, transformFunction: null }, progress: { classPropertyName: "progress", publicName: "progress", isSignal: true, isRequired: true, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()", "style.--progress-width": "_progressWidth()" } }, exportAs: ["upProgressBar"], ngImport: i0 }); }
|
|
19
19
|
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpProgressBarDirective, decorators: [{
|
|
21
21
|
type: Directive,
|
|
22
22
|
args: [{
|
|
23
23
|
standalone: true,
|
|
@@ -9,10 +9,10 @@ class UpSkeletonDirective {
|
|
|
9
9
|
return up('block animate-pulse rounded-md bg-muted', this.inlineClass());
|
|
10
10
|
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
11
11
|
}
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
13
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpSkeletonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
13
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: UpSkeletonDirective, isStandalone: true, selector: "[upSkeleton]", inputs: { inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, exportAs: ["upSkeleton"], ngImport: i0 }); }
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpSkeletonDirective, decorators: [{
|
|
16
16
|
type: Directive,
|
|
17
17
|
args: [{
|
|
18
18
|
standalone: true,
|
|
@@ -10,8 +10,8 @@ class UpSpinnerComponent {
|
|
|
10
10
|
return up('inline-block size-8 text-primary', this.inlineClass());
|
|
11
11
|
}, ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
|
|
12
12
|
}
|
|
13
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
14
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.5", type: UpSpinnerComponent, isStandalone: true, selector: "up-spinner", inputs: { stokeWidth: { classPropertyName: "stokeWidth", publicName: "stokeWidth", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "inlineClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0, template: `
|
|
15
15
|
<svg
|
|
16
16
|
aria-hidden="true"
|
|
17
17
|
viewBox="0 0 80 80"
|
|
@@ -71,7 +71,7 @@ class UpSpinnerComponent {
|
|
|
71
71
|
</svg>
|
|
72
72
|
`, isInline: true, styles: ["@keyframes lds-ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-ring-1{animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;animation-delay:-.45s;transform-origin:50% 50%}.animate-ring-2{animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;animation-delay:-.3s;transform-origin:50% 50%}.animate-ring-3{animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;animation-delay:-.15s;transform-origin:50% 50%}.animate-ring-4{animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;animation-delay:0s;transform-origin:50% 50%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
73
73
|
}
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpSpinnerComponent, decorators: [{
|
|
75
75
|
type: Component,
|
|
76
76
|
args: [{ standalone: true, selector: 'up-spinner', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
77
77
|
'[class]': '_computedClass()',
|
|
@@ -79,8 +79,8 @@ class UpStepperComponent {
|
|
|
79
79
|
return 'PENDING';
|
|
80
80
|
return 'DISABLED';
|
|
81
81
|
}
|
|
82
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
83
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
82
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
83
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: UpStepperComponent, isStandalone: true, selector: "up-stepper", inputs: { initialStep: { classPropertyName: "initialStep", publicName: "initialStep", isSignal: true, isRequired: false, transformFunction: null }, inlineClass: { classPropertyName: "inlineClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, queries: [{ propertyName: "stepContents", predicate: i0.forwardRef(() => UpStepperContentDirective), descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
84
84
|
<div class="hidden sm:flex items-center justify-between select-none shrink-0">
|
|
85
85
|
@for (step of steps(); track $index) {
|
|
86
86
|
<div class="flex flex-col items-center relative lg:static lg:flex-row lg:gap-2">
|
|
@@ -159,7 +159,7 @@ class UpStepperComponent {
|
|
|
159
159
|
<ng-content/>
|
|
160
160
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
161
161
|
}
|
|
162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpStepperComponent, decorators: [{
|
|
163
163
|
type: Component,
|
|
164
164
|
args: [{
|
|
165
165
|
standalone: true,
|
|
@@ -265,10 +265,10 @@ class UpStepperContentDirective {
|
|
|
265
265
|
this.isActive.set(this.parent.activeStep() === this.index());
|
|
266
266
|
});
|
|
267
267
|
}
|
|
268
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
269
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.
|
|
268
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpStepperContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
269
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.5", type: UpStepperContentDirective, isStandalone: true, selector: "[upStepperContent]", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, allowReopen: { classPropertyName: "allowReopen", publicName: "allowReopen", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "hidden": "!isActive()" } }, exportAs: ["upStepperContent"], ngImport: i0 }); }
|
|
270
270
|
}
|
|
271
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
271
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: UpStepperContentDirective, decorators: [{
|
|
272
272
|
type: Directive,
|
|
273
273
|
args: [{
|
|
274
274
|
standalone: true,
|