@allsorter/ui-components 0.0.398 → 0.0.400

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.
@@ -1 +1 @@
1
- {"version":3,"file":"allsorter-ui-components.mjs","sources":["../../../projects/allsorter-lib/src/lib/allsorter-lib.service.ts","../../../projects/allsorter-lib/src/lib/allsorter-lib.component.ts","../../../projects/allsorter-lib/src/lib/utils/icon-utils.ts","../../../projects/allsorter-lib/src/lib/button/button.component.ts","../../../projects/allsorter-lib/src/lib/button/button.component.html","../../../projects/allsorter-lib/src/lib/button/button.module.ts","../../../projects/allsorter-lib/src/lib/input/input.component.ts","../../../projects/allsorter-lib/src/lib/input/input.component.html","../../../projects/allsorter-lib/src/lib/input/input.module.ts","../../../projects/allsorter-lib/src/lib/general-container/colors.constants.ts","../../../projects/allsorter-lib/src/lib/general-container/general-container.component.ts","../../../projects/allsorter-lib/src/lib/general-container/general-container.component.html","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.component.ts","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.component.html","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.component.ts","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.component.html","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.module.ts","../../../projects/allsorter-lib/src/lib/utils/image-utils.ts","../../../projects/allsorter-lib/src/lib/newresumeheader/newresumeheader.component.ts","../../../projects/allsorter-lib/src/lib/newresumeheader/newresumeheader.component.html","../../../projects/allsorter-lib/src/lib/newresumeheader/newresumeheader.module.ts","../../../projects/allsorter-lib/src/lib/loader/loader.component.ts","../../../projects/allsorter-lib/src/lib/loader/loader.component.html","../../../projects/allsorter-lib/src/lib/loader/loader.module.ts","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.component.ts","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.component.html","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.component.ts","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.component.html","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.module.ts","../../../projects/allsorter-lib/src/lib/radio/radio.component.ts","../../../projects/allsorter-lib/src/lib/radio/radio.component.html","../../../projects/allsorter-lib/src/lib/radio/radio.module.ts","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.component.ts","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.component.html","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.module.ts","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.component.ts","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.component.html","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.module.ts","../../../projects/allsorter-lib/src/lib/icon-button/icon-button.component.ts","../../../projects/allsorter-lib/src/lib/icon-button/icon-button.component.html","../../../projects/allsorter-lib/src/lib/ai-apply-bar/ai-apply-bar.component.ts","../../../projects/allsorter-lib/src/lib/ai-apply-bar/ai-apply-bar.component.html","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.component.ts","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.component.html","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.module.ts","../../../projects/allsorter-lib/src/lib/custom-editor/table/table.component.ts","../../../projects/allsorter-lib/src/lib/custom-editor/table/table.component.html","../../../projects/allsorter-lib/src/lib/custom-editor/bullet-utils.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.component.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.component.html","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.module.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor-demo.component.ts","../../../projects/allsorter-lib/src/lib/date-range/date-range.component.ts","../../../projects/allsorter-lib/src/lib/date-range/date-range.component.html","../../../projects/allsorter-lib/src/lib/date-range/date-range.module.ts","../../../projects/allsorter-lib/src/lib/tabs/tabs.component.ts","../../../projects/allsorter-lib/src/lib/tabs/tabs.component.html","../../../projects/allsorter-lib/src/lib/tabs/tabs.module.ts","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.component.ts","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.component.html","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.module.ts","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.component.ts","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.component.html","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.module.ts","../../../projects/allsorter-lib/src/lib/new-typography/new-typography.component.ts","../../../projects/allsorter-lib/src/lib/new-typography/new-typography.component.html","../../../projects/allsorter-lib/src/lib/editable-form-wrapper/editable-form-wrapper.component.ts","../../../projects/allsorter-lib/src/lib/editable-form-wrapper/editable-form-wrapper.component.html","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.module.ts","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.module.ts","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.component.ts","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.component.html","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.module.ts","../../../projects/allsorter-lib/src/lib/toolbar-left/toolbar-left.component.ts","../../../projects/allsorter-lib/src/lib/toolbar-left/toolbar-left.component.html","../../../projects/allsorter-lib/src/lib/toolbar-right/toolbar-right.component.ts","../../../projects/allsorter-lib/src/lib/toolbar-right/toolbar-right.component.html","../../../projects/allsorter-lib/src/lib/toolbar-right/toolbar-right.module.ts","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.component.ts","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.component.html","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.module.ts","../../../projects/allsorter-lib/src/lib/general-container/general-container.module.ts","../../../projects/allsorter-lib/src/lib/toolbar-left/toolbar-left.module.ts","../../../projects/allsorter-lib/src/lib/side-action-bar-wrapper/side-action-bar-wrapper.component.ts","../../../projects/allsorter-lib/src/lib/side-action-bar-wrapper/side-action-bar-wrapper.component.html","../../../projects/allsorter-lib/src/lib/side-action-bar-wrapper/side-action-bar-wrapper.module.ts","../../../projects/allsorter-lib/src/lib/ai-wrapper/ai-wrapper.component.ts","../../../projects/allsorter-lib/src/lib/ai-wrapper/ai-wrapper.component.html","../../../projects/allsorter-lib/src/lib/ai-wrapper/ai-wrapper.module.ts","../../../projects/allsorter-lib/src/public-api.ts","../../../projects/allsorter-lib/src/allsorter-ui-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AllsorterLibService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-allsorter-lib',\n template: `\n <p>\n allsorter-lib works!\n </p>\n `,\n styles: ``\n})\nexport class AllsorterLibComponent {\n\n}\n","/**\n * Utility functions for handling Material Icons, including fallback logic\n * for icons that don't have outlined versions and icons with different names\n * for their outlined versions.\n */\n\n/**\n * Set of Material Icons that are known to NOT have outlined versions in the\n * 'material-icons-outlined' font set. These icons will automatically fall back\n * to the filled version even when iconOutlined is set to true.\n *\n * Note: This list should only include icons that definitely do NOT exist in\n * the material-icons-outlined font set. Many common icons like 'home', 'search',\n * 'visibility', 'settings', etc. DO have outlined versions and should NOT be\n * in this list.\n */\nconst ICONS_WITHOUT_OUTLINED: Set<string> = new Set([ // Basic action icons without outlined versions\n 'add',\n 'remove',\n 'refresh',\n 'menu',\n 'more_vert',\n 'more_horiz',\n // Navigation arrows (these specific ones don't have outlined versions)\n 'arrow_back',\n 'arrow_forward',\n 'arrow_upward',\n 'arrow_downward',\n 'chevron_left',\n 'chevron_right',\n 'chevron_up',\n 'chevron_down',\n 'keyboard_arrow_down',\n 'keyboard_arrow_up',\n 'keyboard_arrow_left',\n 'keyboard_arrow_right',\n 'arrow_drop_down',\n 'arrow_drop_up',\n // Media control icons\n 'play_arrow',\n 'pause',\n 'stop',\n 'skip_next',\n 'skip_previous',\n 'fast_forward',\n 'fast_rewind',\n 'volume_up',\n 'volume_down',\n 'volume_off',\n 'volume_mute',\n 'fullscreen',\n 'fullscreen_exit',\n 'network_node',\n]);\n\n/**\n * Mapping of icon names to their outlined equivalents.\n * Some icons have different names for their outlined versions, but they\n * still use the 'material-icons' font set (not 'material-icons-outlined').\n *\n * Examples:\n * - 'favorite' -> 'favorite_border' (outlined heart is a separate icon in material-icons)\n * - 'star' -> 'star_border' (outlined star is a separate icon in material-icons)\n */\nconst ICON_OUTLINED_MAPPING: Map<string,\n string> = new Map([['favorite', 'favorite_border'],\n ['star', 'star_border'],\n ]);\n\n/**\n * Gets the effective icon name to use, considering outlined mappings.\n * Some icons have different names for their outlined versions.\n *\n * @param iconName - The name of the Material Icon\n * @param iconOutlined - Whether the outlined version is requested\n * @returns The effective icon name to use\n *\n * @example\n * getEffectiveIconName('favorite', true) // Returns 'favorite_border'\n * getEffectiveIconName('favorite', false) // Returns 'favorite'\n * getEffectiveIconName('star', true) // Returns 'star_border'\n * getEffectiveIconName('visibility', true) // Returns 'visibility'\n */\nexport function getEffectiveIconName(iconName: string, iconOutlined: boolean): string {\n\n // If outlined is not requested, use the original name\n if (!iconOutlined) {\n return iconName;\n }\n\n // Check if this icon has a mapped outlined version\n if (ICON_OUTLINED_MAPPING.has(iconName)) {\n return ICON_OUTLINED_MAPPING.get(iconName)!;\n }\n\n // Use the original name (it should work with material-icons-outlined font set)\n return iconName;\n}\n\n/**\n * Set of Material Symbols icon names (icons that use Material Symbols font instead of Material Icons)\n * These icons typically have underscores in their names (e.g., network_node, account_circle, etc.)\n */\nconst MATERIAL_SYMBOLS_ICONS: Set<string> = new Set(['network_node',\n // Add other Material Symbols icons as needed\n]);\n\n/**\n * Checks if an icon name is a Material Symbols icon.\n * Material Symbols icons typically have underscores in their names.\n */\nfunction isMaterialSymbolsIcon(iconName: string): boolean {\n\n // Check explicit list first\n if (MATERIAL_SYMBOLS_ICONS.has(iconName)) {\n return true;\n }\n\n // Heuristic: Material Symbols icons often have underscores (e.g., network_node, account_circle)\n // But we need to be careful not to match Material Icons that also have underscores\n // For now, we'll use the explicit list and add icons as needed\n return false;\n}\n\n/**\n * Determines the effective font set to use for a Material Icon.\n *\n * @param iconName - The name of the Material Icon\n * @param iconOutlined - Whether the outlined version is requested\n * @returns The font set to use: 'material-icons-outlined', 'material-icons', or 'material-symbols-outlined'\n *\n * @example\n * getEffectiveFontSet('add', true) // Returns 'material-icons' (add has no outlined version)\n * getEffectiveFontSet('visibility', true) // Returns 'material-icons-outlined' (if available)\n * getEffectiveFontSet('favorite', true) // Returns 'material-icons' (uses favorite_border in material-icons)\n * getEffectiveFontSet('network_node', false) // Returns 'material-symbols-outlined' (Material Symbols icon)\n * getEffectiveFontSet('add', false) // Returns 'material-icons'\n */\nexport function getEffectiveFontSet(iconName: string, iconOutlined: boolean): string {\n\n // Check if this is a Material Symbols icon\n if (isMaterialSymbolsIcon(iconName)) {\n return 'material-symbols-outlined';\n }\n\n // If outlined is not requested, always use filled\n if (!iconOutlined) {\n return 'material-icons';\n }\n\n // Check if this icon has a mapped outlined version (different name, same font set)\n if (ICON_OUTLINED_MAPPING.has(iconName)) {\n return 'material-icons'; // Use filled font set but with the mapped name\n }\n\n // Check if this icon is known to not have an outlined version\n if (ICONS_WITHOUT_OUTLINED.has(iconName)) {\n return 'material-icons';\n }\n\n // For other icons, try outlined version\n // Note: If the icon doesn't exist in outlined font, Material Icons will\n // automatically fall back to filled, but we can be more explicit here\n return 'material-icons-outlined';\n}\n\n/**\n * Checks if an icon is known to have an outlined version available.\n *\n * @param iconName - The name of the Material Icon\n * @returns true if the icon has an outlined version, false otherwise\n */\nexport function hasOutlinedVersion(iconName: string): boolean {\n return !ICONS_WITHOUT_OUTLINED.has(iconName);\n}\n\n/**\n * Gets the effective iconOutlined value, considering whether the icon\n * actually supports outlined versions.\n *\n * @param iconName - The name of the Material Icon\n * @param iconOutlined - Whether the outlined version is requested\n * @returns The effective iconOutlined value (may be false even if requested true)\n */\nexport function getEffectiveIconOutlined(iconName: string, iconOutlined: boolean): boolean {\n if (!iconOutlined) {\n return false;\n }\n\n return hasOutlinedVersion(iconName);\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewChild, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { getEffectiveIconName, getEffectiveFontSet } from '../utils/icon-utils';\n\n@Component({\n selector: 'al-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n imports: [CommonModule, MatButtonModule, MatIconModule, MatMenuModule, MatTooltipModule],\n standalone: true,\n})\nexport class ButtonComponent implements OnDestroy, OnChanges {\n /**\n * Returns the typography class to apply. If the consumer passes `fontClass`,\n * that value wins. Otherwise we derive a sensible default based on `size`.\n */\n get effectiveFontClass(): string {\n if (this.fontClass) {\n return this.fontClass;\n }\n switch (this.size) {\n case 'xs':\n return 'font-body-small';\n case 'sm':\n case 'base':\n return 'font-body-medium';\n case 'l':\n case 'xl':\n case 'header':\n return 'font-body-large';\n default:\n return '';\n }\n }\n @Input() state: 'default' | 'hover' | 'pressed' | 'disabled' = 'default';\n /**\n * Explicit disabled state for the button.\n * When true, the button is visually and functionally disabled regardless of `state`.\n * Existing usages that rely on `state = 'disabled'` continue to work as before.\n */\n @Input() disabled: boolean = false;\n /** Button color (blue, green, grey, error, gradient, white, success) */\n @Input() color: 'blue' | 'green' | 'grey' | 'error' | 'gradient' | 'white' | 'success' = 'blue';\n /** DEPRECATED: category -> color */\n @Input() set category(val: string) {\n if (val !== undefined) {\n console.warn('[al-button] \"category\" is deprecated. Use \"color\" instead.');\n this.color = val as any;\n }\n }\n /** Button outline style (true = outlined, false = filled) */\n @Input() outline: boolean = false;\n\n @Input() labelText: string | undefined = ' '; // Default label\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string | undefined) {\n if (val !== undefined) {\n console.warn('[al-button] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() arialabel: string | undefined = ' '; // Default label\n @Input() iconOnly: boolean = false; // Toggle for icon-only button\n @Input() leftIcon: string | null | undefined = null;\n @Input() rightIcon: string | null | undefined = null;\n /** Alias input: `icon` maps to `leftIcon` for convenience across types. */\n private _icon: string | null | undefined = null;\n @Input() set icon(value: string | null | undefined) {\n this._icon = value;\n // If provided, mirror into leftIcon so all templates and types pick it up.\n if (value !== undefined) {\n this.leftIcon = value;\n }\n }\n get icon(): string | null | undefined {\n return this._icon;\n }\n /** If true, use outlined style for icons (new name). */\n @Input() iconOutlined: boolean = false;\n /** DEPRECATED: outlined -> iconOutlined (remove next major) */\n @Input() set outlined(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"outlined\" is deprecated. Use \"iconOutlined\" instead.');\n this.iconOutlined = val;\n }\n }\n /** Text size option for label and icons */\n @Input() size: 'header' | 'xs' | 'sm' | 'base' | 'l' | 'xl' = 'base';\n\n /** Visual type of button: icon only circle, icon+label, two icons + label */\n @Input() buttonType: 'icon-circle' | 'icon-label' | 'two-icon-label' | 'dropdown' = 'icon-label';\n\n /** Optional typography class, e.g. 'font-display-large' */\n @Input() fontClass: string = '';\n /** Optional data-test-id for e2e or integration tests */\n @Input() dataTestId: string | undefined;\n /** Tooltip text */\n @Input() tooltip: string | undefined;\n /** Tooltip position */\n @Input() tooltipPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n\n /** Getter to check if tooltip should be enabled */\n get hasTooltip(): boolean {\n return !!this.tooltip && this.tooltip.trim() !== '';\n }\n\n @Output() onClick = new EventEmitter<Event>(); // Initialize\n @Output() onHover = new EventEmitter<Event>(); // Initialize\n @Output() onMouseLeave = new EventEmitter<Event>(); // Initialize\n\n /** Dropdown items (new). */\n @Input() dropdownItems: Array<{ label: string; value?: any } | string> = [];\n /** DEPRECATED: dropdownOptions -> dropdownItems */\n @Input() set dropdownOptions(opts: Array<{ label: string; value?: any } | string>) {\n if (opts !== undefined) {\n console.warn('[al-button] \"dropdownOptions\" is deprecated. Use \"dropdownItems\" instead.');\n this.dropdownItems = opts;\n }\n }\n /** Enable dropdown behavior. */\n @Input() hasDropDown: boolean = false;\n /** DEPRECATED: dropdown -> hasDropDown */\n @Input() set dropdown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"dropdown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n /** DEPRECATED: hasDropdown -> hasDropDown */\n @Input() set hasDropdown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"hasDropdown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n /** DEPRECATED: isDropdown -> hasDropDown */\n @Input() set isDropdown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"isDropdown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n\n /** Emits the selected dropdown option's value */\n @Output() optionSelect = new EventEmitter<any>();\n\n selectOption(option: any) {\n this.optionSelect.emit(option?.value ?? option);\n }\n\n computeGap(): number {\n const hasLabel = !!(this.labelText && this.labelText.trim()) && !this.iconOnly;\n const leftIconPresent = !!(this.leftIcon && this.leftIcon.toString().trim());\n const rightIconPresent = !!(this.rightIcon && this.rightIcon.toString().trim());\n const iconCount = (leftIconPresent ? 1 : 0) + (rightIconPresent ? 1 : 0);\n\n // If labelText exists and iconOnly is false, gap should be 0\n if (this.labelText && !this.iconOnly) {\n return 0;\n }\n\n // Header size logic\n if (this.size === 'header' || this.size === 'xl' || this.size === 'l' || this.size === 'sm' || this.size === 'xs') {\n // 0 gap for icon-only buttons with single icon\n return 0;\n }\n\n // 0 gap for purely icon-only buttons (≤1 icon and no label)\n if (!hasLabel && iconCount <= 1) {\n return 0;\n }\n\n // Tighter gap when we have two icons and no label (e.g., two-icon buttons)\n if (iconCount === 2 && !hasLabel) {\n return 4;\n }\n\n // Default gap\n return 8;\n }\n\n // Icon utility methods for proper icon rendering\n getLeftIconName(): string {\n const iconName = (this.buttonType === 'icon-circle' ? (this.icon || this.leftIcon) : this.leftIcon) || '';\n return getEffectiveIconName(iconName, this.iconOutlined);\n }\n\n getRightIconName(): string {\n const iconName = this.rightIcon || '';\n return getEffectiveIconName(iconName, this.iconOutlined);\n }\n\n getIconName(): string {\n const iconName = this.icon || this.leftIcon || '';\n return getEffectiveIconName(iconName, this.iconOutlined);\n }\n\n getLeftIconFontSet(): string {\n const iconName = (this.buttonType === 'icon-circle' ? (this.icon || this.leftIcon) : this.leftIcon) || '';\n return getEffectiveFontSet(iconName, this.iconOutlined);\n }\n\n getRightIconFontSet(): string {\n const iconName = this.rightIcon || '';\n return getEffectiveFontSet(iconName, this.iconOutlined);\n }\n\n getIconFontSet(): string {\n const iconName = this.icon || this.leftIcon || '';\n return getEffectiveFontSet(iconName, this.iconOutlined);\n }\n\n // List of SVG icon names that should use svgIcon attribute\n private svgIconNames: Set<string> = new Set([\n 'year_month_icon', 'year', 'calendar_year',\n 'delete-icon', 'delete',\n 'multi-drag-drop', 'arrow_downward',\n 'subrole', 'subrole_active', 'subrole_icon_white',\n 'hide_section', 'unhide_section',\n 'edit_icon', 'handle', 'search',\n 'add-section', 'add_left-icon_section', 'add-right_icon_section',\n 'font_case_icon',\n 'retry_AI_icon',\n 'ordering_icon',\n 'collapse_icon',\n 'add_education_icon'\n ]);\n\n // Check if an icon should use svgIcon attribute\n isSvgIcon(iconName: string | null | undefined): boolean {\n if (!iconName) return false;\n return this.svgIconNames.has(iconName.trim());\n }\n\n // Get the icon name for svgIcon (returns null if not an SVG icon)\n getSvgIconName(iconName: string | null | undefined): string | null {\n if (!this.isSvgIcon(iconName)) return null;\n return iconName?.trim() || null;\n }\n\n // Get left icon name for svgIcon\n getLeftSvgIconName(): string | null {\n const iconName = (this.buttonType === 'icon-circle' ? (this.icon || this.leftIcon) : this.leftIcon) || '';\n return this.getSvgIconName(iconName);\n }\n\n // Get right icon name for svgIcon\n getRightSvgIconName(): string | null {\n return this.getSvgIconName(this.rightIcon);\n }\n\n /**\n * Effective state used for styling and disabling.\n * If `disabled` is true, this getter returns 'disabled' regardless of the `state` input.\n */\n get effectiveState(): 'default' | 'hover' | 'pressed' | 'disabled' {\n return this.disabled ? 'disabled' : this.state;\n }\n\n get isDisabled(): boolean {\n return this.effectiveState === 'disabled';\n }\n\n stateClasses: { [key: string]: string } = {\n default: 'btn-default',\n hover: 'btn-hover',\n pressed: 'btn-pressed',\n disabled: 'btn-disabled',\n };\n\n // Reference to the MatMenu trigger; used to proactively close overlays on state changes\n @ViewChild(MatMenuTrigger, { static: false }) private menuTrigger?: MatMenuTrigger;\n\n constructor(private iconRegistry: MatIconRegistry) {\n this.iconRegistry.registerFontClassAlias('material-icons-outlined', 'material-icons-outlined');\n this.iconRegistry.registerFontClassAlias('material-icons', 'material-icons');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // If dropdown gets disabled due to control changes, ensure any open menu is closed\n if (changes['hasDropDown'] || changes['buttonType'] || changes['disabled']) {\n const dropdownEnabled = (this.hasDropDown || this.buttonType === 'dropdown') && !this.isDisabled;\n if (!dropdownEnabled) {\n this.menuTrigger?.closeMenu();\n }\n }\n }\n\n ngOnDestroy(): void {\n // Ensure overlay is cleaned up when component is destroyed\n this.menuTrigger?.closeMenu();\n }\n}\n","<!-- Regular button types -->\n<ng-container *ngIf=\"!(hasDropDown || buttonType === 'dropdown'); else dropdownTpl\">\n <button mat-flat-button class=\"btn custom-button\" [class]=\"effectiveFontClass\" [attr.data-test-id]=\"dataTestId\"\n [ngClass]=\"{\n 'size-header': size === 'header' && !fontClass,\n 'size-xs': size === 'xs' && !fontClass,\n 'size-sm': size === 'sm' && !fontClass,\n 'size-base': size === 'base' && !fontClass,\n 'size-l': size === 'l' && !fontClass,\n 'size-xl': size === 'xl' && !fontClass,\n 'mat-raised-button': variant === 'raised',\n 'mat-flat-button': variant === 'flat',\n\n 'mat-stroked-button': variant === 'stroked',\n 'mat-fab': variant === 'fab',\n 'mat-icon-button': variant === 'icon',\n 'icon-circle': buttonType === 'icon-circle',\n 'blue': color === 'blue',\n 'green': color === 'green',\n 'grey': color === 'grey',\n 'error': color === 'error',\n 'success': color === 'success',\n 'gradient': color === 'gradient',\n 'white': color === 'white',\n 'btn-outlined': outline,\n 'btn-default': effectiveState === 'default',\n 'btn-hover': effectiveState === 'hover',\n 'btn-pressed': effectiveState === 'pressed',\n 'btn-disabled': effectiveState === 'disabled'\n }\" [disabled]=\"isDisabled\" [matTooltip]=\"hasTooltip ? tooltip : null\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipDisabled]=\"!hasTooltip\" (click)=\"onClick.emit($event)\" (mouseenter)=\"onHover.emit($event)\"\n (mouseleave)=\"onMouseLeave.emit($event)\" [style.display]=\"'inline-flex'\" [style.align-items]=\"'center'\"\n [style.gap.px]=\"computeGap()\">\n\n <!-- Left Icon (only if provided; for icon-circle prefer `icon` over `leftIcon`) -->\n <ng-container *ngIf=\"(buttonType === 'icon-circle' ? (icon || leftIcon) : leftIcon)?.trim() as leftIconText\">\n <ng-container *ngIf=\"getLeftSvgIconName() as svgIconName; else leftIconFont\">\n <mat-icon [svgIcon]=\"svgIconName\" class=\"left-icon\"></mat-icon>\n </ng-container>\n <ng-template #leftIconFont>\n <mat-icon [fontSet]=\"getLeftIconFontSet()\" class=\"left-icon\">\n {{ getLeftIconName() }}\n </mat-icon>\n </ng-template>\n </ng-container>\n\n <!-- Label (hidden when iconOnly is true) -->\n <span *ngIf=\"!iconOnly && buttonType !== 'icon-circle'\" class=\"button-label\">\n {{ labelText || '' }}\n </span>\n\n <!-- Right icon (only if provided) -->\n <ng-container *ngIf=\"rightIcon?.trim() as rightIconText\">\n <ng-container *ngIf=\"getRightSvgIconName() as svgIconName; else rightIconFont\">\n <mat-icon [svgIcon]=\"svgIconName\" class=\"right-icon\"></mat-icon>\n </ng-container>\n <ng-template #rightIconFont>\n <mat-icon [fontSet]=\"getRightIconFontSet()\" class=\"right-icon\">\n {{ getRightIconName() }}\n </mat-icon>\n </ng-template>\n </ng-container>\n </button>\n</ng-container>\n\n<!-- Dropdown button template -->\n<ng-template #dropdownTpl>\n <button mat-flat-button class=\"btn custom-button\" [class]=\"effectiveFontClass\" [attr.data-test-id]=\"dataTestId\"\n [ngClass]=\"{\n 'size-header': size === 'header' && !fontClass,\n 'size-xs': size === 'xs' && !fontClass,\n 'size-sm': size === 'sm' && !fontClass,\n 'size-base': size === 'base' && !fontClass,\n 'size-l': size === 'l' && !fontClass,\n 'size-xl': size === 'xl' && !fontClass,\n 'mat-raised-button': variant === 'raised',\n 'mat-flat-button': variant === 'flat',\n 'mat-stroked-button': variant === 'stroked',\n 'mat-fab': variant === 'fab',\n 'mat-icon-button': variant === 'icon',\n 'icon-label': true,\n 'blue': color === 'blue',\n 'green': color === 'green',\n 'grey': color === 'grey',\n 'error': color === 'error',\n 'success': color === 'success',\n 'gradient': color === 'gradient',\n 'white': color === 'white',\n 'btn-outlined': outline,\n 'btn-default': effectiveState === 'default',\n 'btn-hover': effectiveState === 'hover',\n 'btn-pressed': effectiveState === 'pressed',\n 'btn-disabled': effectiveState === 'disabled'\n }\" [disabled]=\"isDisabled\" [matTooltip]=\"hasTooltip ? tooltip : null\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipDisabled]=\"!hasTooltip\" (mouseenter)=\"onHover.emit($event)\" (mouseleave)=\"onMouseLeave.emit($event)\"\n [style.display]=\"'inline-flex'\" [style.align-items]=\"'center'\" [style.gap.px]=\"computeGap()\"\n [matMenuTriggerFor]=\"menu\">\n\n <!-- Left Icon (optional) -->\n <ng-container *ngIf=\"leftIcon?.trim() as leftIconText\">\n <ng-container *ngIf=\"getSvgIconName(leftIcon) as svgIconName; else leftIconFontDropdown\">\n <mat-icon [svgIcon]=\"svgIconName\" class=\"left-icon\"></mat-icon>\n </ng-container>\n <ng-template #leftIconFontDropdown>\n <mat-icon [fontSet]=\"getLeftIconFontSet()\" class=\"left-icon\">\n {{ getLeftIconName() }}\n </mat-icon>\n </ng-template>\n </ng-container>\n\n <!-- Label -->\n <span *ngIf=\"!iconOnly\" class=\"button-label\">\n {{ labelText || '' }}\n </span>\n\n <!-- Dropdown arrow icon -->\n <mat-icon class=\"right-icon\">arrow_drop_down</mat-icon>\n </button>\n</ng-template>\n\n<!-- Mat Menu kept outside conditional to avoid portal reattachment across toggles -->\n<mat-menu #menu=\"matMenu\" panelClass=\"custom-dropdown-menu\">\n <button mat-menu-item *ngFor=\"let opt of dropdownItems\" (click)=\"selectOption(opt)\" [ngClass]=\"effectiveFontClass\">\n {{ opt.label || opt }}\n </button>\n</mat-menu>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent } from './button.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, ButtonComponent],\n exports: [ButtonComponent],\n})\nexport class ButtonModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // register the CSS class alias so <mat-icon> knows about it…\n this.iconRegistry.registerFontClassAlias(\n 'material-symbols-outlined',\n 'material-symbols-outlined'\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, forwardRef, ViewChild, OnInit, OnChanges, SimpleChanges, AfterViewInit, ElementRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { MatDatepickerModule, MatDatepicker } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'al-input',\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatSelectModule,\n MatOptionModule,\n MatAutocompleteModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatButtonModule,\n MatTooltipModule\n ],\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ]\n})\nexport class InputComponent implements ControlValueAccessor, OnInit, OnChanges, AfterViewInit {\n @Input() labelText: string = '';\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string) {\n if (val !== undefined) {\n console.warn('[al-input] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() placeholder: string = '';\n @Input() value: string | string[] = '';\n @Input() formControlName: string = '';\n @Input() dataTestId: string = '';\n\n @Input() type: 'text' | 'email' | 'number' | 'password' | 'tel' | 'url' | 'date' | 'color' = 'text';\n @Input() disabled: boolean = false;\n @Input() helperText: string = '';\n @Input() error: boolean = false;\n @Input() errorMessage: string = '';\n @Input() leftIcon: string = '';\n @Input() rightIcon: string = '';\n @Input() hasDropDown: boolean = false;\n /** DEPRECATED: dropDown -> hasDropDown */\n @Input() set dropDown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-input] \"dropDown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n @Input() searchfilter: boolean = false;\n @Input() multipleSelect: boolean = false;\n @Input() options: string[] = [];\n @Input() size: 'xs' | 'small' | 'base' | 'large' | 'header' = 'base';\n @Input() types: 'simple' | 'primary' | 'success' | 'error' | 'disabled' | 'plain' = 'plain';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n @Input() matDatepicker?: MatDatepicker<any>;\n @Input() dateType: string = '';\n @ViewChild('dp', { static: false }) internalDatepicker?: MatDatepicker<any>;\n @ViewChild('autocompleteTrigger', { static: false, read: MatAutocompleteTrigger }) autocompleteTrigger?: MatAutocompleteTrigger;\n @ViewChild('searchInput', { static: false }) searchInput?: ElementRef<HTMLInputElement>;\n noBorder: boolean = false;\n outlined: boolean = false;\n\n // Date picker specific properties - matching Calendar component\n selectedDate: Date | null = null;\n\n // Searchable dropdown properties\n filteredOptions: string[] = [];\n searchValue: string = '';\n private justSelected: boolean = false; // Flag to prevent panel reopening after selection\n\n // Multiple selection properties\n selectedValues: string[] = [];\n\n get datepickerRef(): MatDatepicker<any> | undefined {\n return this.matDatepicker || this.internalDatepicker;\n }\n\n @Output() change = new EventEmitter<string>();\n /** DEPRECATED: valueChange -> change */\n @Output() valueChange = new EventEmitter<string>();\n @Output() onColorChange = new EventEmitter<string>();\n @Output() monthSelected = new EventEmitter<{ date: Date; datepicker?: MatDatepicker<any> }>();\n @Output() yearSelected = new EventEmitter<{ date: Date; datepicker?: MatDatepicker<any> }>();\n\n private onChange = (value: string) => { };\n onTouched = () => { };\n\n get isDisabled(): boolean {\n return this.disabled || this.types === 'disabled';\n }\n\n // Check if date picker should be shown\n get isDatePicker(): boolean {\n const valueStr = typeof this.value === 'string' ? this.value : '';\n return this.type === 'date' || this.shouldShowDatePicker(valueStr);\n }\n\n // Check if color picker should be shown\n get isColorPicker(): boolean {\n return this.type === 'color';\n }\n\n // Check if dropdown should be searchable (multipleSelect and searchfilter are mutually exclusive)\n get isSearchableDropdown(): boolean {\n return !!(this.hasDropDown && this.searchfilter && !this.multipleSelect);\n }\n\n // Check if dropdown should support multiple selection\n get isMultipleDropdown(): boolean {\n return !!(this.hasDropDown && this.multipleSelect && !this.searchfilter);\n }\n\n ngOnInit(): void {\n // Initialize filtered options for searchable dropdown\n if (this.isSearchableDropdown && this.options && this.options.length > 0) {\n this.filteredOptions = [...this.options];\n this.searchValue = (typeof this.value === 'string' ? this.value : '') || '';\n }\n\n // Initialize multiple selection\n if (this.isMultipleDropdown) {\n if (Array.isArray(this.value)) {\n this.selectedValues = [...this.value];\n } else if (this.value && typeof this.value === 'string') {\n this.selectedValues = [this.value];\n } else {\n this.selectedValues = [];\n }\n }\n }\n\n ngAfterViewInit(): void {\n // Ensure filtered options are initialized after view init\n if (this.isSearchableDropdown && this.options && this.options.length > 0) {\n this.filteredOptions = [...this.options];\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Update filtered options when options array changes\n if (changes['options'] && this.isSearchableDropdown) {\n this.filteredOptions = this.options && this.options.length > 0 ? [...this.options] : [];\n // Re-filter with current search value if exists\n if (this.searchValue) {\n this.filterOptions(this.searchValue);\n }\n }\n\n // Initialize searchable dropdown when searchfilter or hasDropDown changes\n if ((changes['searchfilter'] || changes['hasDropDown']) && this.isSearchableDropdown) {\n this.filteredOptions = this.options && this.options.length > 0 ? [...this.options] : [];\n const valueStr = typeof this.value === 'string' ? this.value : '';\n this.searchValue = valueStr || '';\n }\n\n // Update search value when value changes for searchable dropdown\n if (changes['value'] && this.isSearchableDropdown) {\n const valueStr = typeof this.value === 'string' ? this.value : '';\n if (valueStr !== this.searchValue) {\n this.searchValue = valueStr || '';\n this.filterOptions(this.searchValue);\n }\n }\n\n // Update multiple selection when value changes\n if (changes['value'] && this.isMultipleDropdown) {\n if (Array.isArray(this.value)) {\n this.selectedValues = [...this.value];\n } else if (this.value && typeof this.value === 'string') {\n this.selectedValues = [this.value];\n } else {\n this.selectedValues = [];\n }\n }\n\n // Initialize multiple selection when multipleSelect or hasDropDown changes\n if ((changes['multipleSelect'] || changes['hasDropDown']) && this.isMultipleDropdown) {\n if (Array.isArray(this.value)) {\n this.selectedValues = [...this.value];\n } else if (this.value && typeof this.value === 'string') {\n this.selectedValues = [this.value];\n } else {\n this.selectedValues = [];\n }\n }\n }\n\n writeValue(value: string | Date | any | null | undefined): void {\n // Handle date picker values - can be string, Date, Moment object, or null\n if (this.isDatePicker) {\n if (!value) {\n this.selectedDate = null;\n this.value = '';\n return;\n }\n\n // Handle Moment objects (from Angular Material datepicker with moment adapter)\n if (value && typeof value === 'object' && value.format && typeof value.format === 'function') {\n // It's a Moment object\n this.selectedDate = value.toDate();\n this.value = value.format('YYYY-MM-DD');\n return;\n }\n\n // Handle Date objects\n if (value instanceof Date) {\n this.selectedDate = value;\n this.value = value.toISOString().split(\"T\")[0];\n return;\n }\n\n // Handle string values\n if (typeof value === 'string') {\n this.value = value;\n try {\n this.selectedDate = new Date(value);\n // Validate the date\n if (isNaN(this.selectedDate.getTime())) {\n this.selectedDate = null;\n }\n } catch (e) {\n this.selectedDate = null;\n }\n return;\n }\n\n // Fallback: try to convert to Date\n try {\n this.selectedDate = new Date(value);\n if (isNaN(this.selectedDate.getTime())) {\n this.selectedDate = null;\n this.value = '';\n } else {\n this.value = this.selectedDate.toISOString().split(\"T\")[0];\n }\n } catch (e) {\n this.selectedDate = null;\n this.value = '';\n }\n } else {\n // For non-date inputs\n if (this.multipleSelect && Array.isArray(value)) {\n // Handle multiple selection\n this.selectedValues = [...value];\n this.value = value as any;\n } else {\n // Handle single value\n this.value = (value || '') as string;\n // Update search value for searchable dropdown\n if (this.isSearchableDropdown) {\n const valueStr = typeof this.value === 'string' ? this.value : '';\n this.searchValue = valueStr || '';\n this.filterOptions(this.searchValue);\n }\n }\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(value: string): void {\n this.value = value;\n this.onChange(value);\n this.change.emit(value);\n // Deprecated: emit to valueChange for backward compatibility\n this.valueChange.emit(value);\n }\n\n onSelectionChange(value: string | string[]): void {\n if (this.multipleSelect) {\n // Handle multiple selection\n this.selectedValues = Array.isArray(value) ? value : [];\n this.value = this.selectedValues as any;\n this.onChange(this.selectedValues as any);\n this.change.emit(this.selectedValues.join(', ') as any);\n // Deprecated: emit to valueChange for backward compatibility\n this.valueChange.emit(this.selectedValues.join(', ') as any);\n } else {\n // Handle single selection\n this.value = value as string;\n this.onChange(value as string);\n this.change.emit(value as string);\n // Deprecated: emit to valueChange for backward compatibility\n this.valueChange.emit(value as string);\n }\n }\n\n // Handle searchable dropdown input change\n onSearchInputChange(event: Event): void {\n // Don't filter if we just selected a value (prevents reopening panel)\n if (this.justSelected) {\n return;\n }\n const inputValue = (event.target as HTMLInputElement).value;\n this.searchValue = inputValue;\n this.filterOptions(inputValue);\n }\n\n // Handle option selection from autocomplete\n onOptionSelected(event: any): void {\n const option = event?.option?.value || event?.value || event;\n if (!option || typeof option !== 'string') return;\n\n this.justSelected = true;\n this.value = option;\n this.searchValue = option;\n this.onChange(option);\n this.onTouched();\n this.change.emit(option);\n this.valueChange.emit(option);\n // Reset filtered options to show all options\n this.filteredOptions = [...this.options];\n\n // Close the autocomplete panel and blur the input\n setTimeout(() => {\n if (this.autocompleteTrigger) {\n this.autocompleteTrigger.closePanel();\n }\n // Blur the input to prevent it from reopening\n if (this.searchInput && this.searchInput.nativeElement) {\n this.searchInput.nativeElement.blur();\n }\n // Reset the flag after a short delay\n setTimeout(() => {\n this.justSelected = false;\n }, 300);\n }, 0);\n }\n\n // Filter options based on search input\n filterOptions(searchTerm: string): void {\n if (!this.options || this.options.length === 0) {\n this.filteredOptions = [];\n return;\n }\n\n if (!searchTerm || searchTerm.trim() === '') {\n this.filteredOptions = [...this.options];\n } else {\n const lowerSearchTerm = searchTerm.toLowerCase().trim();\n this.filteredOptions = this.options.filter(option =>\n option && typeof option === 'string' && option.toLowerCase().includes(lowerSearchTerm)\n );\n }\n }\n // Handle focus event for searchable dropdown\n onSearchFocus(): void {\n // Don't open panel if we just selected a value\n if (this.justSelected) {\n return;\n }\n\n // Show all options when focused\n if (this.options && this.options.length > 0) {\n this.filteredOptions = [...this.options];\n } else {\n this.filteredOptions = [];\n }\n\n // If there's a current value, set it as search value\n if (this.value && !this.searchValue) {\n const valueStr = typeof this.value === 'string' ? this.value : '';\n if (valueStr) {\n this.searchValue = valueStr;\n }\n }\n\n // Open autocomplete panel on focus\n setTimeout(() => {\n if (this.autocompleteTrigger && this.filteredOptions.length > 0 && !this.autocompleteTrigger.panelOpen && !this.justSelected) {\n this.autocompleteTrigger.openPanel();\n }\n }, 100);\n }\n\n // Display function for autocomplete\n displayFn = (value: string): string => {\n return value || '';\n }\n\n // Handle color picker change\n handleColorChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.onChange(target.value);\n this.change.emit(target.value);\n // Deprecated: emit to valueChange for backward compatibility\n this.valueChange.emit(target.value);\n this.onColorChange.emit(target.value);\n }\n\n // Handle month selection - matching Calendar component exactly\n onMonthSelected(event: any, dp: any) {\n // Handle both Date and Moment objects\n const dateValue = event && typeof event === 'object' && event.toDate\n ? event.toDate() // Moment object\n : event instanceof Date\n ? event\n : new Date(event);\n\n this.selectedDate = dateValue;\n this.onChange(dateValue.toISOString().split(\"T\")[0]);\n this.onTouched();\n // Emit the original event (could be Moment or Date) for parent component compatibility\n this.monthSelected.emit({ date: event, datepicker: dp || this.datepickerRef });\n\n // Close datepicker if dateType is 'Month/Year' (after month selection)\n const datepicker = dp || this.datepickerRef;\n if (this.dateType === 'Month/Year' && datepicker) {\n datepicker.close();\n }\n }\n\n // Handle year selection\n onYearSelected(event: any, dp: any) {\n // Handle both Date and Moment objects\n const dateValue = event && typeof event === 'object' && event.toDate\n ? event.toDate() // Moment object\n : event instanceof Date\n ? event\n : new Date(event);\n\n this.selectedDate = dateValue;// Default typography on host so inner content can inherit,\n this.onChange(dateValue.toISOString().split(\"T\")[0]);\n this.onTouched();\n // Emit the original event (could be Moment or Date) for parent component compatibility\n this.yearSelected.emit({ date: event, datepicker: dp || this.datepickerRef });\n\n // Close datepicker if dateType is 'Year' (after year selection)\n const datepicker = dp || this.datepickerRef;\n if (this.dateType === 'Year' && datepicker) {\n datepicker.close();\n }\n }\n\n // Handle date change from datepicker (works for both internal and external datepickers)\n onDateChange(event: any) {\n if (event && event.value) {\n const dateValue = event.value instanceof Date ? event.value : new Date(event.value);\n this.selectedDate = dateValue;\n const dateString = dateValue.toISOString().split(\"T\")[0];\n this.value = dateString;\n this.onChange(dateString);\n this.onTouched();\n this.change.emit(dateString);\n this.valueChange.emit(dateString);\n } else if (event && event.value === null) {\n this.selectedDate = null;\n this.value = '';\n this.onChange('');\n this.onTouched();\n this.change.emit('');\n this.valueChange.emit('');\n }\n }\n private shouldShowDatePicker(value: string): boolean {\n if (value && typeof value === 'object') {\n return false;\n }\n // Check if the selected value indicates a date picker should be shown\n const dateKeywords = ['date', 'birth', 'start', 'end', 'due', 'deadline', 'calendar'];\n return dateKeywords.some(keyword => value?.toLowerCase()?.includes(keyword));\n }\n\n getSizeClass(): string {\n return 'al-input-size-' + this.size;\n }\n\n getCategoryClass(): string {\n if (this.disabled) {\n return 'al-input-category-disabled';\n }\n if (this.types === 'plain') {\n return 'al-input-category-plain';\n }\n return 'al-input-category-' + this.types;\n }\n}\n","<!-- Standard floating label layout for all inputs including date picker -->\n<mat-form-field #formField appearance=\"outline\" class=\"al-input-field\" [ngClass]=\"[\n helperText ? 'has-helper-text' : '',\n getSizeClass(),\n getCategoryClass(),\n noBorder ? 'al-input-no-border' : '',\n leftIcon ? 'has-left-icon' : ''\n ]\" [attr.data-test-id]=\"dataTestId\" [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipDisabled]=\"!tooltip\">\n <mat-label *ngIf=\"labelText && !noBorder\">{{ labelText }}</mat-label>\n\n <mat-icon *ngIf=\"leftIcon?.trim() as leftIconText\" [fontSet]=\"outlined ? 'material-icons-outlined' : 'material-icons'\"\n matPrefix class=\"left-icon\">{{ leftIconText }}</mat-icon>\n\n <ng-container *ngIf=\"hasDropDown; else regularInput\">\n <!-- Searchable Dropdown with Autocomplete -->\n <ng-container *ngIf=\"isSearchableDropdown; else regularDropdown\">\n <input matInput #searchInput type=\"text\" [placeholder]=\"placeholder || labelText\" [disabled]=\"isDisabled\"\n [value]=\"searchValue\" (input)=\"onSearchInputChange($event)\" (focus)=\"onSearchFocus()\" (click)=\"onSearchFocus()\"\n (blur)=\"onTouched()\" [matAutocomplete]=\"auto\" #autocompleteTrigger=\"matAutocompleteTrigger\"\n autocomplete=\"off\" />\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onOptionSelected($event)\" [displayWith]=\"displayFn\"\n panelClass=\"al-searchable-dropdown-panel\" [autoActiveFirstOption]=\"false\" [panelWidth]=\"null\">\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">\n {{ option }}\n </mat-option>\n <mat-option *ngIf=\"filteredOptions.length === 0 && searchValue && searchValue.trim()\" disabled>\n <span style=\"display: flex; align-items: center; gap: 8px;\">\n <mat-icon style=\"font-size: 18px; width: 18px; height: 18px;\">search_off</mat-icon>\n <span>No results found</span>\n </span>\n </mat-option>\n </mat-autocomplete>\n <mat-icon matSuffix class=\"search-icon\" *ngIf=\"!rightIcon?.trim()\">search</mat-icon>\n <mat-icon *ngIf=\"rightIcon?.trim() && isSearchableDropdown\" matSuffix class=\"right-icon\">{{ rightIcon\n }}</mat-icon>\n </ng-container>\n\n <!-- Regular Dropdown (non-searchable) -->\n <ng-template #regularDropdown>\n <mat-select [disabled]=\"isDisabled\" [multiple]=\"multipleSelect\"\n [ngModel]=\"multipleSelect ? selectedValues : value\" (selectionChange)=\"onSelectionChange($event.value)\"\n [placeholder]=\"placeholder || labelText\">\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</mat-option>\n </mat-select>\n </ng-template>\n </ng-container>\n <ng-template #regularInput>\n <!-- Color Picker Input -->\n <ng-container *ngIf=\"isColorPicker; else datePickerInput\">\n <div class=\"color-picker-container\">\n <input matInput [placeholder]=\"placeholder || labelText\" [disabled]=\"isDisabled\" [(ngModel)]=\"value\"\n (input)=\"onInputChange($any($event.target).value)\" (blur)=\"onTouched()\" />\n <input type=\"color\" class=\"color-picker-input\" [value]=\"value || '#000000'\" [disabled]=\"isDisabled\"\n (input)=\"handleColorChange($event)\" (blur)=\"onTouched()\" />\n <mat-icon class=\"color-picker-icon\" matSuffix>palette</mat-icon>\n </div>\n </ng-container>\n\n <!-- Date Picker Input - with floating label animation -->\n <ng-template #datePickerInput>\n <ng-container *ngIf=\"isDatePicker; else standardInput\">\n <input matInput [matDatepicker]=\"datepickerRef\" [placeholder]=\"placeholder || labelText\" [disabled]=\"isDisabled\"\n [(ngModel)]=\"selectedDate\" (dateChange)=\"onDateChange($event)\" (blur)=\"onTouched()\" />\n <mat-datepicker-toggle matSuffix [for]=\"datepickerRef\"></mat-datepicker-toggle>\n <mat-datepicker #dp *ngIf=\"!matDatepicker\" startView=\"multi-year\" (monthSelected)=\"onMonthSelected($event, dp)\"\n (yearSelected)=\"onYearSelected($event, dp)\" panelClass=\"example-month-picker\">\n </mat-datepicker>\n </ng-container>\n\n <!-- Standard Input -->\n <ng-template #standardInput>\n <input matInput [placeholder]=\"placeholder || labelText\" [type]=\"type\" [disabled]=\"isDisabled\"\n [(ngModel)]=\"value\" (input)=\"onInputChange($any($event.target).value)\" (blur)=\"onTouched()\" />\n </ng-template>\n </ng-template>\n </ng-template>\n\n <!-- Right icon - only show when not date picker, not color picker, and not searchable dropdown -->\n <mat-icon *ngIf=\"!isDatePicker && !isColorPicker && !isSearchableDropdown && rightIcon?.trim() as rightIconText\"\n [fontSet]=\"outlined ? 'material-icons-outlined' : 'material-icons'\" matSuffix class=\"right-icon\">{{ rightIconText\n }}</mat-icon>\n\n <mat-error *ngIf=\"false && helperText\">{{ helperText }}</mat-error>\n <mat-hint *ngIf=\"helperText\">{{ helperText }}</mat-hint>\n</mat-form-field>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { InputComponent } from './input.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatSelectModule,\n MatOptionModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatButtonModule,\n InputComponent\n ],\n exports: [InputComponent],\n})\nexport class InputModule { }\n","/**\n * Color constants matching colors.scss\n * These values should be kept in sync with src/lib/styles/colors.scss\n */\n\nexport const COLORS = {\n // Blue scale\n blue: {\n '50': '#E5E9FC',\n '100': '#BBC7F6',\n '200': '#98ABF1',\n '300': '#768FED',\n '400': '#6581EA',\n '500': '#5473E8', // Base-Blue\n '600': '#1E46DF',\n '700': '#0F236F',\n '800': '#071238',\n '900': '#04091C',\n },\n // Green scale\n green: {\n '50': '#D7F3F5',\n '100': '#AFE6EB',\n '200': '#87DAE2',\n '300': '#5FCDD8',\n '400': '#4BC7D3',\n '500': '#37C1CE', // Base-Green\n '600': '#299DA8',\n '700': '#1F767E',\n '800': '#154E54',\n '900': '#0A272A',\n },\n // Grey scale\n grey: {\n '50': '#FAFBFB',\n '100': '#ECEDF1',\n '200': '#DEE0E6',\n '300': '#D1D3DB',\n '400': '#C3C5D1',\n '500': '#A2A6B8', // Base-Grey\n '600': '#717793',\n '700': '#4B4F62',\n '800': '#383B4A',\n '900': '#252831',\n },\n} as const;\n\n// Border color options for general-container component\nexport const BORDER_COLORS = [\n COLORS.green['200'], // #87DAE2\n COLORS.blue['200'], // #98ABF1\n COLORS.grey['500'], // #A2A6B8\n COLORS.grey['700'], // #4B4F62\n COLORS.blue['500'], // #5473E8\n COLORS.green['500'], // #37C1CE\n] as const;\n\nexport type BorderColorValue = typeof BORDER_COLORS[number];\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BORDER_COLORS, BorderColorValue } from './colors.constants';\n\nexport type BorderPosition = 'none' | 'top' | 'bottom' | 'both';\n\nexport type BorderColor = BorderColorValue;\n\n@Component({\n selector: 'al-general-container',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './general-container.component.html',\n styleUrls: ['./general-container.component.scss']\n})\nexport class GeneralContainerComponent {\n /** Background color of the container */\n @Input() backgroundColor: string = '#FFFFFF';\n\n /** Padding for the container */\n @Input() padding: string = '16px';\n\n /** Width of the container */\n @Input() width?: string;\n\n /** Height of the container */\n @Input() height?: string;\n\n /** Overflow-x property */\n @Input() overflowX?: string;\n\n /** Overflow-y property */\n @Input() overflowY?: string;\n\n /** Border position: 'none', 'top', 'bottom', or 'both' */\n @Input() borderPosition: BorderPosition = 'none';\n\n /** Border color - one of the predefined colors */\n @Input() borderColor: BorderColor = BORDER_COLORS[0];\n\n /** Border radius */\n @Input() borderRadius: string = '8px';\n\n /** Enable box shadow */\n @Input() boxShadow: boolean = true;\n\n /** Custom box shadow (overrides default if provided) */\n @Input() customBoxShadow?: string;\n\n /** Available border colors for dropdown */\n readonly borderColors: readonly BorderColor[] = BORDER_COLORS;\n\n get containerStyles(): { [key: string]: string } {\n const styles: { [key: string]: string } = {\n 'background-color': this.backgroundColor,\n 'padding': this.padding,\n 'border-radius': this.borderRadius,\n };\n\n // Width and height\n if (this.width) {\n styles['width'] = this.width;\n }\n if (this.height) {\n styles['height'] = this.height;\n }\n\n // Overflow\n if (this.overflowX) {\n styles['overflow-x'] = this.overflowX;\n }\n if (this.overflowY) {\n styles['overflow-y'] = this.overflowY;\n }\n\n // Box shadow\n if (this.boxShadow) {\n styles['box-shadow'] = this.customBoxShadow || '0 2px 4px 0 rgba(24, 43, 125, 0.15)';\n }\n\n // Auto-detect border position from border radius\n let effectiveBorderPosition = this.borderPosition;\n if (this.borderRadius === '0 0 16px 16px') {\n // Rounded bottom corners - apply bottom border\n effectiveBorderPosition = 'bottom';\n } else if (this.borderRadius === '16px 16px 0 0') {\n // Rounded top corners - apply top border\n effectiveBorderPosition = 'top';\n }\n\n // Border styles\n if (effectiveBorderPosition === 'top') {\n styles['border-top'] = `2px solid ${this.borderColor}`;\n styles['border-bottom'] = 'none';\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else if (effectiveBorderPosition === 'bottom') {\n styles['border-bottom'] = `2px solid ${this.borderColor}`;\n styles['border-top'] = 'none';\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else if (effectiveBorderPosition === 'both') {\n styles['border-top'] = `2px solid ${this.borderColor}`;\n styles['border-bottom'] = `2px solid ${this.borderColor}`;\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else {\n styles['border'] = 'none';\n }\n\n return styles;\n }\n}\n\n","<div class=\"general-container\" [ngStyle]=\"containerStyles\">\n <ng-content></ng-content>\n</div>\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n AfterViewInit,\n Component,\n HostBinding,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n SimpleChanges\n}\n\n from '@angular/core';\n\nimport {\n ElementRef\n}\n\n from '@angular/core';\n\n@Component({\n selector: 'al-responsive-columns',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './responsive-columns.component.html',\n styleUrls: ['./responsive-columns.component.scss'],\n}\n\n) export class ResponsiveColumnsComponent implements AfterViewInit,\n OnChanges,\n OnDestroy {\n /** Optional data-testid for test selectors */\n @Input() dataTestId?: string;\n\n /** Gap between the three columns */\n @Input() gap: string | number = '16px';\n\n /** Padding applied to the container (e.g. '12px 16px') */\n @Input() padding: string | number = 0;\n\n /** Optional explicit widths for side columns; default to compact 32px side rails */\n @Input() leftWidth: string = '32px';\n @Input() rightWidth: string = '32px';\n\n /** Breakpoint (px) below which columns stack vertically */\n @Input() stackAt: number = 480;\n\n @HostBinding('class.stack') isStacked = false;\n\n @HostBinding('attr.data-testid') get dataTestIdAttr() {\n return this.dataTestId || null;\n }\n\n @HostBinding('style.--gap') get cssGap() {\n return typeof this.gap === 'number' ? `$ {\n this.gap\n }\n\n px` : this.gap;\n }\n\n @HostBinding('style.--padding') get cssPadding() {\n return typeof this.padding === 'number' ? `$ {\n this.padding\n }\n\n px` : this.padding as string;\n }\n\n @HostBinding('style.--left-width') get cssLeftWidth() { return this.leftWidth || 'auto'; }\n\n @HostBinding('style.--right-width') get cssRightWidth() { return this.rightWidth || 'auto'; }\n\n @HostBinding('style.--stack-at') get cssStackAt() {\n return `$ {\n this.stackAt\n }\n\n px`;\n }\n\n // no dynamic template columns; side visibility controlled by widths only\n\n private resizeObserver?: ResizeObserver;\n\n constructor(private hostRef: ElementRef<HTMLElement>, private zone: NgZone) { }\n\n ngAfterViewInit(): void {\n this.zone.runOutsideAngular(() => {\n this.resizeObserver = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry?.contentRect?.width ?? this.hostRef.nativeElement.clientWidth;\n const shouldStack = width < this.stackAt;\n\n if (shouldStack !== this.isStacked) {\n this.zone.run(() => (this.isStacked = shouldStack));\n }\n }\n\n );\n this.resizeObserver.observe(this.hostRef.nativeElement);\n }\n\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['stackAt']) {\n const width = this.hostRef?.nativeElement?.clientWidth || 0;\n this.isStacked = width < this.stackAt;\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n}\n","<div class=\"container\">\n <div class=\"column left\"><ng-content select=\"[left],[slot=left],[data-slot=left]\"></ng-content></div>\n <div class=\"column center\"><ng-content></ng-content><ng-content\n select=\"[center],[slot=center],[data-slot=center]\"></ng-content></div>\n <div class=\"column right\"><ng-content select=\"[right],[slot=right],[data-slot=right]\"></ng-content></div>\n</div>","// Wrapper for Angular Material mat-checkbox\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n HostBinding\n}\n\n from '@angular/core';\n\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR\n}\n\n from '@angular/forms';\n\n@Component({\n\n selector: 'al-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n\n ]\n}\n\n) export class CheckboxComponent implements ControlValueAccessor {\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() labelPosition: 'before' | 'after' = 'after';\n @Input() name: string = '';\n @Input() required: boolean = false;\n @Input() value: any;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelText: string = '';\n @Input() helperText: string = '';\n @Input() showLabels: boolean = true;\n @Input() showHelperIcon: boolean = false;\n @Input() helperIconTooltip: string = '';\n @HostBinding('class.has-labels') get hasLabelsClass(): boolean {\n return !!this.labelText && this.labelText.trim().length > 0;\n }\n\n @Input() dataTestId: string = \"\";\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<boolean> = new EventEmitter();\n @Output() indeterminateChange: EventEmitter<boolean> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() helperIconClick: EventEmitter<void> = new EventEmitter();\n\n onChange = (_: any) => { }\n\n ;\n\n onTouched = () => { }\n\n ;\n\n writeValue(value: any): void {\n this.checked = ! !value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = event.checked;\n this.onChange(this.checked);\n this.change.emit(this.checked);\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n handleIndeterminateChange(value: boolean) {\n this.indeterminateChange.emit(value);\n }\n\n onHelperIconClick(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.helperIconClick.emit();\n }\n}\n","<mat-checkbox [checked]=\"checked\" [disabled]=\"disabled\" [labelPosition]=\"labelPosition\" [name]=\"name\"\n touchTargetSize=\"none\" [attr.data-testid]=\"dataTestId\" [required]=\"required\" [value]=\"value\" [color]=\"color\"\n [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!tooltip\"\n (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\"\n (indeterminateChange)=\"handleIndeterminateChange($event)\">\n <div class=\"checkbox-label-wrapper\" *ngIf=\"showLabels\">\n <div class=\"checkbox-label-main-row\" *ngIf=\"labelText\">\n <div class=\"checkbox-label-main\">\n {{ labelText }}\n </div>\n <button *ngIf=\"showHelperIcon\" type=\"button\" class=\"checkbox-helper-icon\"\n [matTooltip]=\"helperIconTooltip || helperText\" [matTooltipPosition]=\"tooltipPosition\" [disabled]=\"disabled\"\n (click)=\"onHelperIconClick($event)\">\n ?\n </button>\n </div>\n\n <div *ngIf=\"helperText\" class=\"checkbox-label-helper\">\n {{ helperText }}\n </div>\n </div>\n\n <ng-content></ng-content>\n</mat-checkbox>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, MatCheckboxModule, MatTooltipModule],\n exports: [CheckboxComponent]\n})\nexport class CheckboxModule { }\n","export const TABLE_ICONS = {\n 'table': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M4 7.25V5.125C4 4.56141 4.19901 4.02091 4.55324 3.6224C4.90748 3.22388 5.38792 3 5.88889 3H19.1111C19.6121 3 20.0925 3.22388 20.4468 3.6224C20.801 4.02091 21 4.56141 21 5.125V7.25M4 7.25V13.625M4 7.25H9.66667M21 7.25V13.625M21 7.25H9.66667M4 13.625V17.875C4 18.4386 4.19901 18.9791 4.55324 19.3776C4.90748 19.7761 5.38792 20 5.88889 20H9.66667M4 13.625H9.66667M9.66667 7.25V13.625M21 13.625V17.875C21 18.4386 20.801 18.9791 20.4468 19.3776C20.0925 19.7761 19.6121 20 19.1111 20H9.66667M21 13.625H9.66667M9.66667 20V13.625M15.3333 7.25V20\" stroke=\"#4B4F62\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>`,\n 'add-table': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M11.75 17.1524V17.1523L11.7508 15.2507L9.84915 15.2515H9.84909C9.7505 15.2515 9.65287 15.2321 9.56178 15.1944C9.47069 15.1567 9.38792 15.1014 9.31821 15.0316C9.24849 14.9619 9.19319 14.8792 9.15546 14.7881C9.11772 14.697 9.09831 14.5993 9.09831 14.5007C9.0983 14.4022 9.11772 14.3045 9.15546 14.2134C9.19319 14.1223 9.24849 14.0396 9.31821 13.9699C9.38792 13.9001 9.47069 13.8448 9.56178 13.8071C9.65287 13.7694 9.7505 13.75 9.84909 13.75L9.84915 13.75L11.7508 13.7508L11.75 11.8492L11.75 11.8491C11.75 11.65 11.8291 11.459 11.9699 11.3182C12.1107 11.1774 12.3016 11.0983 12.5007 11.0983C12.6999 11.0983 12.8908 11.1774 13.0316 11.3182C13.1724 11.459 13.2515 11.65 13.2515 11.8491L13.2515 11.8492L13.2507 13.7508L15.1522 13.75L15.1523 13.75L15.1524 13.875L11.75 17.1524ZM11.75 17.1524C11.75 17.251 11.7694 17.3486 11.8071 17.4397C11.8448 17.5308 11.9001 17.6136 11.9699 17.6833C12.0396 17.753 12.1223 17.8083 12.2134 17.846C12.3045 17.8838 12.4022 17.9032 12.5007 17.9032C12.5993 17.9032 12.697 17.8838 12.7881 17.846C12.8792 17.8083 12.9619 17.753 13.0316 17.6833C13.1014 17.6136 13.1567 17.5308 13.1944 17.4397C13.2321 17.3486 13.2515 17.251 13.2515 17.1524V17.1523M11.75 17.1524L13.2515 17.1523M13.2515 17.1523L13.2507 15.2507M13.2515 17.1523L13.2507 15.2507M13.2507 15.2507L15.1522 15.2515L13.2507 15.2507Z\"fill=\"#4B4F62\"stroke=\"#4B4F62\"stroke-width=\"0.25\"/> <path fill-rule=\"evenodd\"clip-rule=\"evenodd\"d=\"M5.21222 5.35953C5.39167 5.16021 5.61117 5.07129 5.8148 5.07129H19.1371C19.3407 5.07129 19.5602 5.16021 19.7397 5.35953C19.9222 5.56231 20.0403 5.85783 20.0403 6.18516V7.29904H15.3307H9.62117H4.91162V6.18516C4.91162 5.85783 5.02965 5.56231 5.21222 5.35953ZM16.3307 9.29904H20.0403V13.6407H17.9333C17.9772 13.9207 18.0001 14.2077 18.0001 14.5001C18.0001 14.8912 17.9592 15.2727 17.8817 15.6407H20.0403V18.8684C20.0403 19.1957 19.9222 19.4913 19.7397 19.694C19.5602 19.8934 19.3407 19.9823 19.1371 19.9823H16.3307V18.4468C15.7672 18.9939 15.0869 19.4213 14.3307 19.6881V19.9823H12.9463C12.7991 19.9941 12.6503 20.0001 12.5001 20.0001C12.3498 20.0001 12.201 19.9941 12.0538 19.9823H10.6212V19.6708C9.86272 19.3952 9.18209 18.9574 8.62117 18.3994V19.9823H5.8148C5.61117 19.9823 5.39167 19.8934 5.21222 19.694C5.02965 19.4913 4.91162 19.1957 4.91162 18.8684V15.6407H7.11847C7.04087 15.2727 7.00006 14.8912 7.00006 14.5001C7.00006 14.2077 7.02287 13.9207 7.06682 13.6407H4.91162V9.29904H8.62117V10.6009C9.18209 10.0429 9.86272 9.60507 10.6212 9.32941V9.29904H10.707C11.269 9.10532 11.8722 9.00012 12.5001 9.00012C13.1279 9.00012 13.7311 9.10532 14.2932 9.29904H14.3307V9.31214C15.0869 9.57895 15.7672 10.0064 16.3307 10.5535V9.29904ZM19.1371 21.9823H15.3307H9.62117H5.8148C5.00893 21.9823 4.26026 21.6258 3.72588 21.0322C3.19462 20.4422 2.91162 19.6623 2.91162 18.8684V14.6407V8.29904V6.18516C2.91162 5.39123 3.19462 4.6114 3.72588 4.02133C4.26026 3.42779 5.00893 3.07129 5.8148 3.07129H19.1371C19.943 3.07129 20.6916 3.42779 21.226 4.02133C21.7573 4.6114 22.0403 5.39122 22.0403 6.18516V8.29904V14.6407V18.8684C22.0403 19.6623 21.7573 20.4422 21.226 21.0322C20.6916 21.6258 19.943 21.9823 19.1371 21.9823Z\"fill=\"#4B4F62\"/> </svg>`,\n 'delete-table': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M13.8449 16.907L13.8449 16.907L12.5008 15.5617L11.1567 16.907L11.1567 16.907C11.087 16.9767 11.0042 17.032 10.9131 17.0698C10.822 17.1075 10.7244 17.1269 10.6258 17.1269C10.5272 17.1269 10.4296 17.1075 10.3385 17.0698C10.2474 17.032 10.1646 16.9767 10.0949 16.907C10.0252 16.8373 9.96988 16.7545 9.93215 16.6634C9.89442 16.5723 9.875 16.4747 9.875 16.3761C9.875 16.2775 9.89442 16.1799 9.93215 16.0888C9.96988 15.9977 10.0252 15.9149 10.0949 15.8452L10.0949 15.8452L11.4402 14.5011L10.0949 13.157L10.0949 13.157C9.9541 13.0162 9.875 12.8252 9.875 12.6261C9.875 12.427 9.9541 12.236 10.0949 12.0952C10.2357 11.9544 10.4267 11.8753 10.6258 11.8753C10.8249 11.8753 11.0159 11.9544 11.1567 12.0952L11.1567 12.0953L12.5008 13.4405L13.8448 12.0953L13.8449 12.0953L13.9333 12.1836L13.8449 16.907ZM13.8449 16.907C13.9146 16.9767 13.9974 17.032 14.0885 17.0698C14.1796 17.1075 14.2772 17.1269 14.3758 17.1269C14.4744 17.1269 14.572 17.1075 14.6631 17.0698C14.7542 17.032 14.837 16.9767 14.9067 16.907C14.9764 16.8373 15.0317 16.7545 15.0694 16.6634C15.1072 16.5723 15.1266 16.4747 15.1266 16.3761C15.1266 16.2775 15.1072 16.1799 15.0694 16.0888C15.0317 15.9977 14.9764 15.9149 14.9067 15.8452L14.9066 15.8452M13.8449 16.907L14.9066 15.8452M14.9066 15.8452L13.5614 14.5011M14.9066 15.8452L13.5614 14.5011M13.5614 14.5011L14.9066 13.1571L13.5614 14.5011Z\"fill=\"#4B4F62\"stroke=\"#4B4F62\"stroke-width=\"0.25\"/> <path fill-rule=\"evenodd\"clip-rule=\"evenodd\"d=\"M5.21222 5.35953C5.39167 5.16021 5.61117 5.07129 5.8148 5.07129H19.1371C19.3407 5.07129 19.5602 5.16021 19.7397 5.35953C19.9222 5.56231 20.0403 5.85783 20.0403 6.18516V7.29904H15.3307H9.62117H4.91162V6.18516C4.91162 5.85783 5.02965 5.56231 5.21222 5.35953ZM16.3307 9.29904H20.0403V13.6407H17.9333C17.9772 13.9207 18.0001 14.2077 18.0001 14.5001C18.0001 14.8912 17.9592 15.2727 17.8817 15.6407H20.0403V18.8684C20.0403 19.1957 19.9222 19.4913 19.7397 19.694C19.5602 19.8934 19.3407 19.9823 19.1371 19.9823H16.3307V18.4468C15.7672 18.9939 15.0869 19.4213 14.3307 19.6881V19.9823H12.9463C12.7991 19.9941 12.6503 20.0001 12.5001 20.0001C12.3498 20.0001 12.201 19.9941 12.0538 19.9823H10.6212V19.6708C9.86272 19.3952 9.18209 18.9574 8.62117 18.3994V19.9823H5.8148C5.61117 19.9823 5.39167 19.8934 5.21222 19.694C5.02965 19.4913 4.91162 19.1957 4.91162 18.8684V15.6407H7.11847C7.04087 15.2727 7.00006 14.8912 7.00006 14.5001C7.00006 14.2077 7.02287 13.9207 7.06682 13.6407H4.91162V9.29904H8.62117V10.6009C9.18209 10.0429 9.86272 9.60507 10.6212 9.32941V9.29904H10.707C11.269 9.10532 11.8722 9.00012 12.5001 9.00012C13.1279 9.00012 13.7311 9.10532 14.2932 9.29904H14.3307V9.31214C15.0869 9.57895 15.7672 10.0064 16.3307 10.5535V9.29904ZM19.1371 21.9823H15.3307H9.62117H5.8148C5.00893 21.9823 4.26026 21.6258 3.72588 21.0322C3.19462 20.4422 2.91162 19.6623 2.91162 18.8684V14.6407V8.29904V6.18516C2.91162 5.39123 3.19462 4.6114 3.72588 4.02133C4.26026 3.42779 5.00893 3.07129 5.8148 3.07129H19.1371C19.943 3.07129 20.6916 3.42779 21.226 4.02133C21.7573 4.6114 22.0403 5.39122 22.0403 6.18516V8.29904V14.6407V18.8684C22.0403 19.6623 21.7573 20.4422 21.226 21.0322C20.6916 21.6258 19.943 21.9823 19.1371 21.9823Z\"fill=\"#4B4F62\"/> </svg>`,\n 'column-left': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M13.8571 3C13.3772 3 12.917 3.20018 12.5776 3.5565C12.2383 3.91282 12.0476 4.39609 12.0476 4.9V20.1C12.0476 20.6039 12.2383 21.0872 12.5776 21.4435C12.917 21.7998 13.3772 22 13.8571 22H22V3H13.8571ZM20.1905 10.6V14.4H13.8571V10.6H20.1905ZM20.1905 16.3V20.1H13.8571V16.3H20.1905ZM20.1905 4.9V8.7H13.8571V4.9H20.1905ZM10.2381 12.5C10.2381 11.9753 9.81277 11.55 9.28809 11.55H7.52381V9.60476C7.52381 9.10508 7.11873 8.7 6.61905 8.7C6.11936 8.7 5.71429 9.10508 5.71429 9.60476V11.55H3.95C3.42533 11.55 3 11.9753 3 12.5C3 13.0247 3.42533 13.45 3.95 13.45H5.71429V15.3952C5.71429 15.8949 6.11936 16.3 6.61905 16.3C7.11873 16.3 7.52381 15.8949 7.52381 15.3952V13.45H9.2881C9.81277 13.45 10.2381 13.0247 10.2381 12.5Z\"fill=\"#4B4F62\"/> </svg>`,\n 'column-right': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M11.1429 3C11.6228 3 12.083 3.20018 12.4224 3.5565C12.7617 3.91282 12.9524 4.39609 12.9524 4.9V20.1C12.9524 20.6039 12.7617 21.0872 12.4224 21.4435C12.083 21.7998 11.6228 22 11.1429 22H3V3H11.1429ZM4.80952 10.6V14.4H11.1429V10.6H4.80952ZM4.80952 16.3V20.1H11.1429V16.3H4.80952ZM4.80952 4.9V8.7H11.1429V4.9H4.80952ZM14.7619 12.5C14.7619 11.9753 15.1872 11.55 15.7119 11.55H17.4762V9.60476C17.4762 9.10508 17.8813 8.7 18.381 8.7C18.8806 8.7 19.2857 9.10508 19.2857 9.60476V11.55H21.05C21.5747 11.55 22 11.9753 22 12.5C22 13.0247 21.5747 13.45 21.05 13.45H19.2857V15.3952C19.2857 15.8949 18.8806 16.3 18.381 16.3C17.8813 16.3 17.4762 15.8949 17.4762 15.3952V13.45H15.7119C15.1872 13.45 14.7619 13.0247 14.7619 12.5Z\"fill=\"#4B4F62\"/> </svg>`,\n 'row-top': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M22 15C22 14.4696 21.7998 13.9609 21.4435 13.5858C21.0872 13.2107 20.6039 13 20.1 13H4.9C4.39609 13 3.91282 13.2107 3.5565 13.5858C3.20018 13.9609 3 14.4696 3 15V22H4.9V20H8.7V22H10.6V20H14.4V22H16.3V20H20.1V22H22V15ZM4.9 15H8.7V18H4.9V15ZM10.6 15H14.4V18H10.6V15ZM20.1 15V18H16.3V15H20.1ZM11.55 10.05C11.55 10.5747 11.9753 11 12.5 11C13.0247 11 13.45 10.5747 13.45 10.05V8H15.3C15.8523 8 16.3 7.55228 16.3 7C16.3 6.44772 15.8523 6 15.3 6H13.45V3.95C13.45 3.42533 13.0247 3 12.5 3C11.9753 3 11.55 3.42533 11.55 3.95V6H9.7C9.14772 6 8.7 6.44772 8.7 7C8.7 7.55228 9.14772 8 9.7 8H11.55V10.05Z\"fill=\"#4B4F62\"/> </svg>`,\n 'row-bottom': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M22 10C22 10.5304 21.7998 11.0391 21.4435 11.4142C21.0872 11.7893 20.6039 12 20.1 12H4.9C4.39609 12 3.91282 11.7893 3.5565 11.4142C3.20018 11.0391 3 10.5304 3 10V3H4.9V5H8.7V3H10.6V5H14.4V3H16.3V5H20.1V3H22V10ZM4.9 10H8.7V7H4.9V10ZM10.6 10H14.4V7H10.6V10ZM20.1 10V7H16.3V10H20.1ZM11.55 15.0059C11.55 14.4503 12.0003 14 12.5559 14C13.0497 14 13.45 14.4003 13.45 14.8941V17H15.3C15.8523 17 16.3 17.4477 16.3 18C16.3 18.5523 15.8523 19 15.3 19H13.45V21.05C13.45 21.5747 13.0247 22 12.5 22C11.9753 22 11.55 21.5747 11.55 21.05V19H9.7C9.14772 19 8.7 18.5523 8.7 18C8.7 17.4477 9.14772 17 9.7 17H11.55V15.0059Z\"fill=\"#4B4F62\"/> </svg>`,\n 'delete-column': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <mask id=\"path-2-outside-1_5803_43959\"maskUnits=\"userSpaceOnUse\"x=\"2\"y=\"2\"width=\"21\"height=\"21\"fill=\"black\"> <rect fill=\"white\"x=\"2\"y=\"2\"width=\"21\"height=\"21\"/> <path d=\"M13.0938 3.59375C13.0938 3.43628 13.0312 3.28526 12.9198 3.17391C12.8085 3.06256 12.6575 3 12.5 3C12.3425 3 12.1915 3.06256 12.0802 3.17391C11.9688 3.28526 11.9062 3.43628 11.9062 3.59375V9.38281C12.0571 9.50987 12.196 9.65356 12.3337 9.79606L12.5 9.96588L12.6663 9.79606C12.804 9.65356 12.9429 9.51106 13.0938 9.38281V3.59375ZM11.9062 21.4062V15.6018C12.0571 15.4747 12.196 15.331 12.3337 15.1885L12.5 15.0187L12.6663 15.1885C12.804 15.331 12.9429 15.4735 13.0938 15.6018V21.4062C13.0938 21.5637 13.0312 21.7147 12.9198 21.8261C12.8085 21.9374 12.6575 22 12.5 22C12.3425 22 12.1915 21.9374 12.0802 21.8261C11.9688 21.7147 11.9062 21.5637 11.9062 21.4062ZM3 4.78125C3 4.62378 3.06256 4.47276 3.17391 4.36141C3.28526 4.25006 3.43628 4.1875 3.59375 4.1875H5.375C6.00489 4.1875 6.60898 4.43772 7.05438 4.88312C7.49978 5.32852 7.75 5.93261 7.75 6.5625V18.4375C7.75 19.0674 7.49978 19.6715 7.05438 20.1169C6.60898 20.5623 6.00489 20.8125 5.375 20.8125H3.59375C3.43628 20.8125 3.28526 20.7499 3.17391 20.6386C3.06256 20.5272 3 20.3762 3 20.2188C3 20.0613 3.06256 19.9103 3.17391 19.7989C3.28526 19.6876 3.43628 19.625 3.59375 19.625H5.375C5.68994 19.625 5.99199 19.4999 6.21469 19.2772C6.43739 19.0545 6.5625 18.7524 6.5625 18.4375V16.0625H3.59375C3.43628 16.0625 3.28526 15.9999 3.17391 15.8886C3.06256 15.7772 3 15.6262 3 15.4688C3 15.3113 3.06256 15.1603 3.17391 15.0489C3.28526 14.9376 3.43628 14.875 3.59375 14.875H6.5625V10.125H3.59375C3.43628 10.125 3.28526 10.0624 3.17391 9.95109C3.06256 9.83975 3 9.68872 3 9.53125C3 9.37378 3.06256 9.22275 3.17391 9.11141C3.28526 9.00006 3.43628 8.9375 3.59375 8.9375H6.5625V6.5625C6.5625 6.24756 6.43739 5.94551 6.21469 5.72281C5.99199 5.50011 5.68994 5.375 5.375 5.375H3.59375C3.43628 5.375 3.28526 5.31244 3.17391 5.20109C3.06256 5.08974 3 4.93872 3 4.78125ZM22 4.78125C22 4.62378 21.9374 4.47276 21.8261 4.36141C21.7147 4.25006 21.5637 4.1875 21.4062 4.1875H19.625C18.9951 4.1875 18.391 4.43772 17.9456 4.88312C17.5002 5.32852 17.25 5.93261 17.25 6.5625V18.4375C17.25 19.0674 17.5002 19.6715 17.9456 20.1169C18.391 20.5623 18.9951 20.8125 19.625 20.8125H21.4062C21.5637 20.8125 21.7147 20.7499 21.8261 20.6386C21.9374 20.5272 22 20.3762 22 20.2188C22 20.0613 21.9374 19.9103 21.8261 19.7989C21.7147 19.6876 21.5637 19.625 21.4062 19.625H19.625C19.3101 19.625 19.008 19.4999 18.7853 19.2772C18.5626 19.0545 18.4375 18.7524 18.4375 18.4375V16.0625H21.4062C21.5637 16.0625 21.7147 15.9999 21.8261 15.8886C21.9374 15.7772 22 15.6262 22 15.4688C22 15.3113 21.9374 15.1603 21.8261 15.0489C21.7147 14.9376 21.5637 14.875 21.4062 14.875H18.4375V10.125H21.4062C21.5637 10.125 21.7147 10.0624 21.8261 9.95109C21.9374 9.83975 22 9.68872 22 9.53125C22 9.37378 21.9374 9.22275 21.8261 9.11141C21.7147 9.00006 21.5637 8.9375 21.4062 8.9375H18.4375V6.5625C18.4375 6.24756 18.5626 5.94551 18.7853 5.72281C19.008 5.50011 19.3101 5.375 19.625 5.375H21.4062C21.5637 5.375 21.7147 5.31244 21.8261 5.20109C21.9374 5.08974 22 4.93872 22 4.78125ZM14.7016 10.2984C14.6465 10.2431 14.5809 10.1992 14.5088 10.1693C14.4367 10.1393 14.3593 10.1239 14.2812 10.1239C14.2032 10.1239 14.1258 10.1393 14.0537 10.1693C13.9816 10.1992 13.916 10.2431 13.8609 10.2984L12.5 11.6604L11.1391 10.2984C11.0276 10.1869 10.8764 10.1242 10.7188 10.1242C10.5611 10.1242 10.4099 10.1869 10.2984 10.2984C10.1869 10.4099 10.1242 10.5611 10.1242 10.7188C10.1242 10.8764 10.1869 11.0276 10.2984 11.1391L11.6604 12.5L10.2984 13.8609C10.2432 13.9161 10.1994 13.9816 10.1695 14.0537C10.1396 14.1259 10.1242 14.2032 10.1242 14.2812C10.1242 14.3593 10.1396 14.4366 10.1695 14.5088C10.1994 14.5809 10.2432 14.6464 10.2984 14.7016C10.3536 14.7568 10.4191 14.8006 10.4912 14.8305C10.5634 14.8604 10.6407 14.8757 10.7188 14.8757C10.7968 14.8757 10.8741 14.8604 10.9463 14.8305C11.0184 14.8006 11.0839 14.7568 11.1391 14.7016L12.5 13.3396L13.8609 14.7016C13.9161 14.7568 13.9816 14.8006 14.0537 14.8305C14.1259 14.8604 14.2032 14.8757 14.2812 14.8757C14.3593 14.8757 14.4366 14.8604 14.5088 14.8305C14.5809 14.8006 14.6464 14.7568 14.7016 14.7016C14.7568 14.6464 14.8006 14.5809 14.8305 14.5088C14.8604 14.4366 14.8757 14.3593 14.8757 14.2812C14.8757 14.2032 14.8604 14.1259 14.8305 14.0537C14.8006 13.9816 14.7568 13.9161 14.7016 13.8609L13.3396 12.5L14.7016 11.1391C14.7569 11.084 14.8008 11.0184 14.8307 10.9463C14.8607 10.8742 14.8761 10.7968 14.8761 10.7188C14.8761 10.6407 14.8607 10.5633 14.8307 10.4912C14.8008 10.4191 14.7569 10.3535 14.7016 10.2984Z\"/> </mask> <path d=\"M13.0938 3.59375C13.0938 3.43628 13.0312 3.28526 12.9198 3.17391C12.8085 3.06256 12.6575 3 12.5 3C12.3425 3 12.1915 3.06256 12.0802 3.17391C11.9688 3.28526 11.9062 3.43628 11.9062 3.59375V9.38281C12.0571 9.50987 12.196 9.65356 12.3337 9.79606L12.5 9.96588L12.6663 9.79606C12.804 9.65356 12.9429 9.51106 13.0938 9.38281V3.59375ZM11.9062 21.4062V15.6018C12.0571 15.4747 12.196 15.331 12.3337 15.1885L12.5 15.0187L12.6663 15.1885C12.804 15.331 12.9429 15.4735 13.0938 15.6018V21.4062C13.0938 21.5637 13.0312 21.7147 12.9198 21.8261C12.8085 21.9374 12.6575 22 12.5 22C12.3425 22 12.1915 21.9374 12.0802 21.8261C11.9688 21.7147 11.9062 21.5637 11.9062 21.4062ZM3 4.78125C3 4.62378 3.06256 4.47276 3.17391 4.36141C3.28526 4.25006 3.43628 4.1875 3.59375 4.1875H5.375C6.00489 4.1875 6.60898 4.43772 7.05438 4.88312C7.49978 5.32852 7.75 5.93261 7.75 6.5625V18.4375C7.75 19.0674 7.49978 19.6715 7.05438 20.1169C6.60898 20.5623 6.00489 20.8125 5.375 20.8125H3.59375C3.43628 20.8125 3.28526 20.7499 3.17391 20.6386C3.06256 20.5272 3 20.3762 3 20.2188C3 20.0613 3.06256 19.9103 3.17391 19.7989C3.28526 19.6876 3.43628 19.625 3.59375 19.625H5.375C5.68994 19.625 5.99199 19.4999 6.21469 19.2772C6.43739 19.0545 6.5625 18.7524 6.5625 18.4375V16.0625H3.59375C3.43628 16.0625 3.28526 15.9999 3.17391 15.8886C3.06256 15.7772 3 15.6262 3 15.4688C3 15.3113 3.06256 15.1603 3.17391 15.0489C3.28526 14.9376 3.43628 14.875 3.59375 14.875H6.5625V10.125H3.59375C3.43628 10.125 3.28526 10.0624 3.17391 9.95109C3.06256 9.83975 3 9.68872 3 9.53125C3 9.37378 3.06256 9.22275 3.17391 9.11141C3.28526 9.00006 3.43628 8.9375 3.59375 8.9375H6.5625V6.5625C6.5625 6.24756 6.43739 5.94551 6.21469 5.72281C5.99199 5.50011 5.68994 5.375 5.375 5.375H3.59375C3.43628 5.375 3.28526 5.31244 3.17391 5.20109C3.06256 5.08974 3 4.93872 3 4.78125ZM22 4.78125C22 4.62378 21.9374 4.47276 21.8261 4.36141C21.7147 4.25006 21.5637 4.1875 21.4062 4.1875H19.625C18.9951 4.1875 18.391 4.43772 17.9456 4.88312C17.5002 5.32852 17.25 5.93261 17.25 6.5625V18.4375C17.25 19.0674 17.5002 19.6715 17.9456 20.1169C18.391 20.5623 18.9951 20.8125 19.625 20.8125H21.4062C21.5637 20.8125 21.7147 20.7499 21.8261 20.6386C21.9374 20.5272 22 20.3762 22 20.2188C22 20.0613 21.9374 19.9103 21.8261 19.7989C21.7147 19.6876 21.5637 19.625 21.4062 19.625H19.625C19.3101 19.625 19.008 19.4999 18.7853 19.2772C18.5626 19.0545 18.4375 18.7524 18.4375 18.4375V16.0625H21.4062C21.5637 16.0625 21.7147 15.9999 21.8261 15.8886C21.9374 15.7772 22 15.6262 22 15.4688C22 15.3113 21.9374 15.1603 21.8261 15.0489C21.7147 14.9376 21.5637 14.875 21.4062 14.875H18.4375V10.125H21.4062C21.5637 10.125 21.7147 10.0624 21.8261 9.95109C21.9374 9.83975 22 9.68872 22 9.53125C22 9.37378 21.9374 9.22275 21.8261 9.11141C21.7147 9.00006 21.5637 8.9375 21.4062 8.9375H18.4375V6.5625C18.4375 6.24756 18.5626 5.94551 18.7853 5.72281C19.008 5.50011 19.3101 5.375 19.625 5.375H21.4062C21.5637 5.375 21.7147 5.31244 21.8261 5.20109C21.9374 5.08974 22 4.93872 22 4.78125ZM14.7016 10.2984C14.6465 10.2431 14.5809 10.1992 14.5088 10.1693C14.4367 10.1393 14.3593 10.1239 14.2812 10.1239C14.2032 10.1239 14.1258 10.1393 14.0537 10.1693C13.9816 10.1992 13.916 10.2431 13.8609 10.2984L12.5 11.6604L11.1391 10.2984C11.0276 10.1869 10.8764 10.1242 10.7188 10.1242C10.5611 10.1242 10.4099 10.1869 10.2984 10.2984C10.1869 10.4099 10.1242 10.5611 10.1242 10.7188C10.1242 10.8764 10.1869 11.0276 10.2984 11.1391L11.6604 12.5L10.2984 13.8609C10.2432 13.9161 10.1994 13.9816 10.1695 14.0537C10.1396 14.1259 10.1242 14.2032 10.1242 14.2812C10.1242 14.3593 10.1396 14.4366 10.1695 14.5088C10.1994 14.5809 10.2432 14.6464 10.2984 14.7016C10.3536 14.7568 10.4191 14.8006 10.4912 14.8305C10.5634 14.8604 10.6407 14.8757 10.7188 14.8757C10.7968 14.8757 10.8741 14.8604 10.9463 14.8305C11.0184 14.8006 11.0839 14.7568 11.1391 14.7016L12.5 13.3396L13.8609 14.7016C13.9161 14.7568 13.9816 14.8006 14.0537 14.8305C14.1259 14.8604 14.2032 14.8757 14.2812 14.8757C14.3593 14.8757 14.4366 14.8604 14.5088 14.8305C14.5809 14.8006 14.6464 14.7568 14.7016 14.7016C14.7568 14.6464 14.8006 14.5809 14.8305 14.5088C14.8604 14.4366 14.8757 14.3593 14.8757 14.2812C14.8757 14.2032 14.8604 14.1259 14.8305 14.0537C14.8006 13.9816 14.7568 13.9161 14.7016 13.8609L13.3396 12.5L14.7016 11.1391C14.7569 11.084 14.8008 11.0184 14.8307 10.9463C14.8607 10.8742 14.8761 10.7968 14.8761 10.7188C14.8761 10.6407 14.8607 10.5633 14.8307 10.4912C14.8008 10.4191 14.7569 10.3535 14.7016 10.2984Z\"fill=\"#4B4F62\"/> <path d=\"M13.0938 3.59375C13.0938 3.43628 13.0312 3.28526 12.9198 3.17391C12.8085 3.06256 12.6575 3 12.5 3C12.3425 3 12.1915 3.06256 12.0802 3.17391C11.9688 3.28526 11.9062 3.43628 11.9062 3.59375V9.38281C12.0571 9.50987 12.196 9.65356 12.3337 9.79606L12.5 9.96588L12.6663 9.79606C12.804 9.65356 12.9429 9.51106 13.0938 9.38281V3.59375ZM11.9062 21.4062V15.6018C12.0571 15.4747 12.196 15.331 12.3337 15.1885L12.5 15.0187L12.6663 15.1885C12.804 15.331 12.9429 15.4735 13.0938 15.6018V21.4062C13.0938 21.5637 13.0312 21.7147 12.9198 21.8261C12.8085 21.9374 12.6575 22 12.5 22C12.3425 22 12.1915 21.9374 12.0802 21.8261C11.9688 21.7147 11.9062 21.5637 11.9062 21.4062ZM3 4.78125C3 4.62378 3.06256 4.47276 3.17391 4.36141C3.28526 4.25006 3.43628 4.1875 3.59375 4.1875H5.375C6.00489 4.1875 6.60898 4.43772 7.05438 4.88312C7.49978 5.32852 7.75 5.93261 7.75 6.5625V18.4375C7.75 19.0674 7.49978 19.6715 7.05438 20.1169C6.60898 20.5623 6.00489 20.8125 5.375 20.8125H3.59375C3.43628 20.8125 3.28526 20.7499 3.17391 20.6386C3.06256 20.5272 3 20.3762 3 20.2188C3 20.0613 3.06256 19.9103 3.17391 19.7989C3.28526 19.6876 3.43628 19.625 3.59375 19.625H5.375C5.68994 19.625 5.99199 19.4999 6.21469 19.2772C6.43739 19.0545 6.5625 18.7524 6.5625 18.4375V16.0625H3.59375C3.43628 16.0625 3.28526 15.9999 3.17391 15.8886C3.06256 15.7772 3 15.6262 3 15.4688C3 15.3113 3.06256 15.1603 3.17391 15.0489C3.28526 14.9376 3.43628 14.875 3.59375 14.875H6.5625V10.125H3.59375C3.43628 10.125 3.28526 10.0624 3.17391 9.95109C3.06256 9.83975 3 9.68872 3 9.53125C3 9.37378 3.06256 9.22275 3.17391 9.11141C3.28526 9.00006 3.43628 8.9375 3.59375 8.9375H6.5625V6.5625C6.5625 6.24756 6.43739 5.94551 6.21469 5.72281C5.99199 5.50011 5.68994 5.375 5.375 5.375H3.59375C3.43628 5.375 3.28526 5.31244 3.17391 5.20109C3.06256 5.08974 3 4.93872 3 4.78125ZM22 4.78125C22 4.62378 21.9374 4.47276 21.8261 4.36141C21.7147 4.25006 21.5637 4.1875 21.4062 4.1875H19.625C18.9951 4.1875 18.391 4.43772 17.9456 4.88312C17.5002 5.32852 17.25 5.93261 17.25 6.5625V18.4375C17.25 19.0674 17.5002 19.6715 17.9456 20.1169C18.391 20.5623 18.9951 20.8125 19.625 20.8125H21.4062C21.5637 20.8125 21.7147 20.7499 21.8261 20.6386C21.9374 20.5272 22 20.3762 22 20.2188C22 20.0613 21.9374 19.9103 21.8261 19.7989C21.7147 19.6876 21.5637 19.625 21.4062 19.625H19.625C19.3101 19.625 19.008 19.4999 18.7853 19.2772C18.5626 19.0545 18.4375 18.7524 18.4375 18.4375V16.0625H21.4062C21.5637 16.0625 21.7147 15.9999 21.8261 15.8886C21.9374 15.7772 22 15.6262 22 15.4688C22 15.3113 21.9374 15.1603 21.8261 15.0489C21.7147 14.9376 21.5637 14.875 21.4062 14.875H18.4375V10.125H21.4062C21.5637 10.125 21.7147 10.0624 21.8261 9.95109C21.9374 9.83975 22 9.68872 22 9.53125C22 9.37378 21.9374 9.22275 21.8261 9.11141C21.7147 9.00006 21.5637 8.9375 21.4062 8.9375H18.4375V6.5625C18.4375 6.24756 18.5626 5.94551 18.7853 5.72281C19.008 5.50011 19.3101 5.375 19.625 5.375H21.4062C21.5637 5.375 21.7147 5.31244 21.8261 5.20109C21.9374 5.08974 22 4.93872 22 4.78125ZM14.7016 10.2984C14.6465 10.2431 14.5809 10.1992 14.5088 10.1693C14.4367 10.1393 14.3593 10.1239 14.2812 10.1239C14.2032 10.1239 14.1258 10.1393 14.0537 10.1693C13.9816 10.1992 13.916 10.2431 13.8609 10.2984L12.5 11.6604L11.1391 10.2984C11.0276 10.1869 10.8764 10.1242 10.7188 10.1242C10.5611 10.1242 10.4099 10.1869 10.2984 10.2984C10.1869 10.4099 10.1242 10.5611 10.1242 10.7188C10.1242 10.8764 10.1869 11.0276 10.2984 11.1391L11.6604 12.5L10.2984 13.8609C10.2432 13.9161 10.1994 13.9816 10.1695 14.0537C10.1396 14.1259 10.1242 14.2032 10.1242 14.2812C10.1242 14.3593 10.1396 14.4366 10.1695 14.5088C10.1994 14.5809 10.2432 14.6464 10.2984 14.7016C10.3536 14.7568 10.4191 14.8006 10.4912 14.8305C10.5634 14.8604 10.6407 14.8757 10.7188 14.8757C10.7968 14.8757 10.8741 14.8604 10.9463 14.8305C11.0184 14.8006 11.0839 14.7568 11.1391 14.7016L12.5 13.3396L13.8609 14.7016C13.9161 14.7568 13.9816 14.8006 14.0537 14.8305C14.1259 14.8604 14.2032 14.8757 14.2812 14.8757C14.3593 14.8757 14.4366 14.8604 14.5088 14.8305C14.5809 14.8006 14.6464 14.7568 14.7016 14.7016C14.7568 14.6464 14.8006 14.5809 14.8305 14.5088C14.8604 14.4366 14.8757 14.3593 14.8757 14.2812C14.8757 14.2032 14.8604 14.1259 14.8305 14.0537C14.8006 13.9816 14.7568 13.9161 14.7016 13.8609L13.3396 12.5L14.7016 11.1391C14.7569 11.084 14.8008 11.0184 14.8307 10.9463C14.8607 10.8742 14.8761 10.7968 14.8761 10.7188C14.8761 10.6407 14.8607 10.5633 14.8307 10.4912C14.8008 10.4191 14.7569 10.3535 14.7016 10.2984Z\"stroke=\"#4B4F62\"stroke-width=\"0.5\"mask=\"url(#path-2-outside-1_5803_43959)\"/> </svg>`,\n 'delete-row': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <mask id=\"path-2-outside-1_5803_43961\"maskUnits=\"userSpaceOnUse\"x=\"2\"y=\"2\"width=\"21\"height=\"21\"fill=\"black\"> <rect fill=\"white\"x=\"2\"y=\"2\"width=\"21\"height=\"21\"/> <path d=\"M4.6625 3C4.47353 3 4.29231 3.07507 4.15869 3.20869C4.02507 3.34231 3.95 3.52353 3.95 3.7125V4.6625C3.95 5.48136 4.27529 6.26667 4.85431 6.84569C5.43333 7.42471 6.21864 7.75 7.0375 7.75H17.9625C18.368 7.75 18.7694 7.67014 19.144 7.51498C19.5186 7.35982 19.859 7.13239 20.1457 6.84569C20.4324 6.55899 20.6598 6.21863 20.815 5.84403C20.9701 5.46944 21.05 5.06796 21.05 4.6625V3.7125C21.05 3.52353 20.9749 3.34231 20.8413 3.20869C20.7077 3.07507 20.5265 3 20.3375 3C20.1485 3 19.9673 3.07507 19.8337 3.20869C19.7001 3.34231 19.625 3.52353 19.625 3.7125V4.6625C19.625 5.10342 19.4498 5.52629 19.1381 5.83806C18.8263 6.14984 18.4034 6.325 17.9625 6.325H15.825V3.7125C15.825 3.52353 15.7499 3.34231 15.6163 3.20869C15.4827 3.07507 15.3015 3 15.1125 3C14.9235 3 14.7423 3.07507 14.6087 3.20869C14.4751 3.34231 14.4 3.52353 14.4 3.7125V6.325H10.6V3.7125C10.6 3.52353 10.5249 3.34231 10.3913 3.20869C10.2577 3.07507 10.0765 3 9.8875 3C9.69853 3 9.51731 3.07507 9.38369 3.20869C9.25007 3.34231 9.175 3.52353 9.175 3.7125V6.325H7.0375C6.59658 6.325 6.17371 6.14984 5.86194 5.83806C5.55016 5.52629 5.375 5.10342 5.375 4.6625V3.7125C5.375 3.52353 5.29993 3.34231 5.16631 3.20869C5.03269 3.07507 4.85147 3 4.6625 3ZM4.6625 22C4.47353 22 4.29231 21.9249 4.15869 21.7913C4.02507 21.6577 3.95 21.4765 3.95 21.2875V20.3375C3.95 19.5186 4.27529 18.7333 4.85431 18.1543C5.43333 17.5753 6.21864 17.25 7.0375 17.25H17.9625C18.7814 17.25 19.5667 17.5753 20.1457 18.1543C20.7247 18.7333 21.05 19.5186 21.05 20.3375V21.2875C21.05 21.4765 20.9749 21.6577 20.8413 21.7913C20.7077 21.9249 20.5265 22 20.3375 22C20.1485 22 19.9673 21.9249 19.8337 21.7913C19.7001 21.6577 19.625 21.4765 19.625 21.2875V20.3375C19.625 19.8966 19.4498 19.4737 19.1381 19.1619C18.8263 18.8502 18.4034 18.675 17.9625 18.675H15.825V21.2875C15.825 21.4765 15.7499 21.6577 15.6163 21.7913C15.4827 21.9249 15.3015 22 15.1125 22C14.9235 22 14.7423 21.9249 14.6087 21.7913C14.4751 21.6577 14.4 21.4765 14.4 21.2875V18.675H10.6V21.2875C10.6 21.4765 10.5249 21.6577 10.3913 21.7913C10.2577 21.9249 10.0765 22 9.8875 22C9.69853 22 9.51731 21.9249 9.38369 21.7913C9.25007 21.6577 9.175 21.4765 9.175 21.2875V18.675H7.0375C6.59658 18.675 6.17371 18.8502 5.86194 19.1619C5.55016 19.4737 5.375 19.8966 5.375 20.3375V21.2875C5.375 21.4765 5.29993 21.6577 5.16631 21.7913C5.03269 21.9249 4.85147 22 4.6625 22ZM12.5 13.507L13.8965 14.9035C13.9617 14.9735 14.0404 15.0296 14.1278 15.0686C14.2152 15.1075 14.3095 15.1285 14.4052 15.1302C14.5009 15.1319 14.5959 15.1143 14.6846 15.0784C14.7733 15.0426 14.8539 14.9892 14.9216 14.9216C14.9892 14.8539 15.0426 14.7733 15.0784 14.6846C15.1143 14.5959 15.1319 14.5009 15.1302 14.4052C15.1285 14.3095 15.1075 14.2152 15.0686 14.1278C15.0296 14.0404 14.9735 13.9617 14.9035 13.8965L13.507 12.5L14.9035 11.1035C14.9735 11.0383 15.0296 10.9596 15.0686 10.8722C15.1075 10.7848 15.1285 10.6905 15.1302 10.5948C15.1319 10.4991 15.1143 10.4041 15.0784 10.3154C15.0426 10.2267 14.9892 10.1461 14.9216 10.0784C14.8539 10.0108 14.7733 9.95742 14.6846 9.92158C14.5959 9.88575 14.5009 9.86815 14.4052 9.86984C14.3095 9.87153 14.2152 9.89247 14.1278 9.93141C14.0404 9.97035 13.9617 10.0265 13.8965 10.0965L12.5 11.493L11.1035 10.0965C11.0383 10.0265 10.9596 9.97035 10.8722 9.93141C10.7848 9.89247 10.6905 9.87153 10.5948 9.86984C10.4991 9.86815 10.4041 9.88575 10.3154 9.92158C10.2267 9.95742 10.1461 10.0108 10.0784 10.0784C10.0108 10.1461 9.95742 10.2267 9.92158 10.3154C9.88575 10.4041 9.86815 10.4991 9.86984 10.5948C9.87153 10.6905 9.89247 10.7848 9.93141 10.8722C9.97035 10.9596 10.0265 11.0383 10.0965 11.1035L11.493 12.5L10.0965 13.8965C10.0265 13.9617 9.97035 14.0404 9.93141 14.1278C9.89247 14.2152 9.87153 14.3095 9.86984 14.4052C9.86815 14.5009 9.88575 14.5959 9.92158 14.6846C9.95742 14.7733 10.0108 14.8539 10.0784 14.9216C10.1461 14.9892 10.2267 15.0426 10.3154 15.0784C10.4041 15.1143 10.4991 15.1319 10.5948 15.1302C10.6905 15.1285 10.7848 15.1075 10.8722 15.0686C10.9596 15.0296 11.0383 14.9735 11.1035 14.9035L12.5 13.507ZM9.39065 13.2125C9.41282 13.1878 9.43562 13.1637 9.45905 13.1403L10.0993 12.5L9.45905 11.8597L9.39065 11.7875H3.7125C3.52353 11.7875 3.34231 11.8626 3.20869 11.9962C3.07507 12.1298 3 12.311 3 12.5C3 12.689 3.07507 12.8702 3.20869 13.0038C3.34231 13.1374 3.7125 13.2125 3.90147 13.2125H9.39065ZM15.8468 13.2125H21.2875C21.4765 13.2125 21.6577 13.1374 21.7913 13.0038C21.9249 12.8702 22 12.689 22 12.5C22 12.311 21.9249 12.1298 21.7913 11.9962C21.6577 11.8626 21.4765 11.7875 21.2875 11.7875H15.8468L15.7785 11.8597L15.1382 12.5L15.7785 13.1403L15.8468 13.2125Z\"/> </mask> <path d=\"M4.6625 3C4.47353 3 4.29231 3.07507 4.15869 3.20869C4.02507 3.34231 3.95 3.52353 3.95 3.7125V4.6625C3.95 5.48136 4.27529 6.26667 4.85431 6.84569C5.43333 7.42471 6.21864 7.75 7.0375 7.75H17.9625C18.368 7.75 18.7694 7.67014 19.144 7.51498C19.5186 7.35982 19.859 7.13239 20.1457 6.84569C20.4324 6.55899 20.6598 6.21863 20.815 5.84403C20.9701 5.46944 21.05 5.06796 21.05 4.6625V3.7125C21.05 3.52353 20.9749 3.34231 20.8413 3.20869C20.7077 3.07507 20.5265 3 20.3375 3C20.1485 3 19.9673 3.07507 19.8337 3.20869C19.7001 3.34231 19.625 3.52353 19.625 3.7125V4.6625C19.625 5.10342 19.4498 5.52629 19.1381 5.83806C18.8263 6.14984 18.4034 6.325 17.9625 6.325H15.825V3.7125C15.825 3.52353 15.7499 3.34231 15.6163 3.20869C15.4827 3.07507 15.3015 3 15.1125 3C14.9235 3 14.7423 3.07507 14.6087 3.20869C14.4751 3.34231 14.4 3.52353 14.4 3.7125V6.325H10.6V3.7125C10.6 3.52353 10.5249 3.34231 10.3913 3.20869C10.2577 3.07507 10.0765 3 9.8875 3C9.69853 3 9.51731 3.07507 9.38369 3.20869C9.25007 3.34231 9.175 3.52353 9.175 3.7125V6.325H7.0375C6.59658 6.325 6.17371 6.14984 5.86194 5.83806C5.55016 5.52629 5.375 5.10342 5.375 4.6625V3.7125C5.375 3.52353 5.29993 3.34231 5.16631 3.20869C5.03269 3.07507 4.85147 3 4.6625 3ZM4.6625 22C4.47353 22 4.29231 21.9249 4.15869 21.7913C4.02507 21.6577 3.95 21.4765 3.95 21.2875V20.3375C3.95 19.5186 4.27529 18.7333 4.85431 18.1543C5.43333 17.5753 6.21864 17.25 7.0375 17.25H17.9625C18.7814 17.25 19.5667 17.5753 20.1457 18.1543C20.7247 18.7333 21.05 19.5186 21.05 20.3375V21.2875C21.05 21.4765 20.9749 21.6577 20.8413 21.7913C20.7077 21.9249 20.5265 22 20.3375 22C20.1485 22 19.9673 21.9249 19.8337 21.7913C19.7001 21.6577 19.625 21.4765 19.625 21.2875V20.3375C19.625 19.8966 19.4498 19.4737 19.1381 19.1619C18.8263 18.8502 18.4034 18.675 17.9625 18.675H15.825V21.2875C15.825 21.4765 15.7499 21.6577 15.6163 21.7913C15.4827 21.9249 15.3015 22 15.1125 22C14.9235 22 14.7423 21.9249 14.6087 21.7913C14.4751 21.6577 14.4 21.4765 14.4 21.2875V18.675H10.6V21.2875C10.6 21.4765 10.5249 21.6577 10.3913 21.7913C10.2577 21.9249 10.0765 22 9.8875 22C9.69853 22 9.51731 21.9249 9.38369 21.7913C9.25007 21.6577 9.175 21.4765 9.175 21.2875V18.675H7.0375C6.59658 18.675 6.17371 18.8502 5.86194 19.1619C5.55016 19.4737 5.375 19.8966 5.375 20.3375V21.2875C5.375 21.4765 5.29993 21.6577 5.16631 21.7913C5.03269 21.9249 4.85147 22 4.6625 22ZM12.5 13.507L13.8965 14.9035C13.9617 14.9735 14.0404 15.0296 14.1278 15.0686C14.2152 15.1075 14.3095 15.1285 14.4052 15.1302C14.5009 15.1319 14.5959 15.1143 14.6846 15.0784C14.7733 15.0426 14.8539 14.9892 14.9216 14.9216C14.9892 14.8539 15.0426 14.7733 15.0784 14.6846C15.1143 14.5959 15.1319 14.5009 15.1302 14.4052C15.1285 14.3095 15.1075 14.2152 15.0686 14.1278C15.0296 14.0404 14.9735 13.9617 14.9035 13.8965L13.507 12.5L14.9035 11.1035C14.9735 11.0383 15.0296 10.9596 15.0686 10.8722C15.1075 10.7848 15.1285 10.6905 15.1302 10.5948C15.1319 10.4991 15.1143 10.4041 15.0784 10.3154C15.0426 10.2267 14.9892 10.1461 14.9216 10.0784C14.8539 10.0108 14.7733 9.95742 14.6846 9.92158C14.5959 9.88575 14.5009 9.86815 14.4052 9.86984C14.3095 9.87153 14.2152 9.89247 14.1278 9.93141C14.0404 9.97035 13.9617 10.0265 13.8965 10.0965L12.5 11.493L11.1035 10.0965C11.0383 10.0265 10.9596 9.97035 10.8722 9.93141C10.7848 9.89247 10.6905 9.87153 10.5948 9.86984C10.4991 9.86815 10.4041 9.88575 10.3154 9.92158C10.2267 9.95742 10.1461 10.0108 10.0784 10.0784C10.0108 10.1461 9.95742 10.2267 9.92158 10.3154C9.88575 10.4041 9.86815 10.4991 9.86984 10.5948C9.87153 10.6905 9.89247 10.7848 9.93141 10.8722C9.97035 10.9596 10.0265 11.0383 10.0965 11.1035L11.493 12.5L10.0965 13.8965C10.0265 13.9617 9.97035 14.0404 9.93141 14.1278C9.89247 14.2152 9.87153 14.3095 9.86984 14.4052C9.86815 14.5009 9.88575 14.5959 9.92158 14.6846C9.95742 14.7733 10.0108 14.8539 10.0784 14.9216C10.1461 14.9892 10.2267 15.0426 10.3154 15.0784C10.4041 15.1143 10.4991 15.1319 10.5948 15.1302C10.6905 15.1285 10.7848 15.1075 10.8722 15.0686C10.9596 15.0296 11.0383 14.9735 11.1035 14.9035L12.5 13.507ZM9.39065 13.2125C9.41282 13.1878 9.43562 13.1637 9.45905 13.1403L10.0993 12.5L9.45905 11.8597L9.39065 11.7875H3.7125C3.52353 11.7875 3.34231 11.8626 3.20869 11.9962C3.07507 12.1298 3 12.311 3 12.5C3 12.689 3.07507 12.8702 3.20869 13.0038C3.34231 13.1374 3.7125 13.2125 3.90147 13.2125H9.39065ZM15.8468 13.2125H21.2875C21.4765 13.2125 21.6577 13.1374 21.7913 13.0038C21.9249 12.8702 22 12.689 22 12.5C22 12.311 21.9249 12.1298 21.7913 11.9962C21.6577 11.8626 21.4765 11.7875 21.2875 11.7875H15.8468L15.7785 11.8597L15.1382 12.5L15.7785 13.1403L15.8468 13.2125Z\"fill=\"#4B4F62\"/> <path d=\"M4.6625 3C4.47353 3 4.29231 3.07507 4.15869 3.20869C4.02507 3.34231 3.95 3.52353 3.95 3.7125V4.6625C3.95 5.48136 4.27529 6.26667 4.85431 6.84569C5.43333 7.42471 6.21864 7.75 7.0375 7.75H17.9625C18.368 7.75 18.7694 7.67014 19.144 7.51498C19.5186 7.35982 19.859 7.13239 20.1457 6.84569C20.4324 6.55899 20.6598 6.21863 20.815 5.84403C20.9701 5.46944 21.05 5.06796 21.05 4.6625V3.7125C21.05 3.52353 20.9749 3.34231 20.8413 3.20869C20.7077 3.07507 20.5265 3 20.3375 3C20.1485 3 19.9673 3.07507 19.8337 3.20869C19.7001 3.34231 19.625 3.52353 19.625 3.7125V4.6625C19.625 5.10342 19.4498 5.52629 19.1381 5.83806C18.8263 6.14984 18.4034 6.325 17.9625 6.325H15.825V3.7125C15.825 3.52353 15.7499 3.34231 15.6163 3.20869C15.4827 3.07507 15.3015 3 15.1125 3C14.9235 3 14.7423 3.07507 14.6087 3.20869C14.4751 3.34231 14.4 3.52353 14.4 3.7125V6.325H10.6V3.7125C10.6 3.52353 10.5249 3.34231 10.3913 3.20869C10.2577 3.07507 10.0765 3 9.8875 3C9.69853 3 9.51731 3.07507 9.38369 3.20869C9.25007 3.34231 9.175 3.52353 9.175 3.7125V6.325H7.0375C6.59658 6.325 6.17371 6.14984 5.86194 5.83806C5.55016 5.52629 5.375 5.10342 5.375 4.6625V3.7125C5.375 3.52353 5.29993 3.34231 5.16631 3.20869C5.03269 3.07507 4.85147 3 4.6625 3ZM4.6625 22C4.47353 22 4.29231 21.9249 4.15869 21.7913C4.02507 21.6577 3.95 21.4765 3.95 21.2875V20.3375C3.95 19.5186 4.27529 18.7333 4.85431 18.1543C5.43333 17.5753 6.21864 17.25 7.0375 17.25H17.9625C18.7814 17.25 19.5667 17.5753 20.1457 18.1543C20.7247 18.7333 21.05 19.5186 21.05 20.3375V21.2875C21.05 21.4765 20.9749 21.6577 20.8413 21.7913C20.7077 21.9249 20.5265 22 20.3375 22C20.1485 22 19.9673 21.9249 19.8337 21.7913C19.7001 21.6577 19.625 21.4765 19.625 21.2875V20.3375C19.625 19.8966 19.4498 19.4737 19.1381 19.1619C18.8263 18.8502 18.4034 18.675 17.9625 18.675H15.825V21.2875C15.825 21.4765 15.7499 21.6577 15.6163 21.7913C15.4827 21.9249 15.3015 22 15.1125 22C14.9235 22 14.7423 21.9249 14.6087 21.7913C14.4751 21.6577 14.4 21.4765 14.4 21.2875V18.675H10.6V21.2875C10.6 21.4765 10.5249 21.6577 10.3913 21.7913C10.2577 21.9249 10.0765 22 9.8875 22C9.69853 22 9.51731 21.9249 9.38369 21.7913C9.25007 21.6577 9.175 21.4765 9.175 21.2875V18.675H7.0375C6.59658 18.675 6.17371 18.8502 5.86194 19.1619C5.55016 19.4737 5.375 19.8966 5.375 20.3375V21.2875C5.375 21.4765 5.29993 21.6577 5.16631 21.7913C5.03269 21.9249 4.85147 22 4.6625 22ZM12.5 13.507L13.8965 14.9035C13.9617 14.9735 14.0404 15.0296 14.1278 15.0686C14.2152 15.1075 14.3095 15.1285 14.4052 15.1302C14.5009 15.1319 14.5959 15.1143 14.6846 15.0784C14.7733 15.0426 14.8539 14.9892 14.9216 14.9216C14.9892 14.8539 15.0426 14.7733 15.0784 14.6846C15.1143 14.5959 15.1319 14.5009 15.1302 14.4052C15.1285 14.3095 15.1075 14.2152 15.0686 14.1278C15.0296 14.0404 14.9735 13.9617 14.9035 13.8965L13.507 12.5L14.9035 11.1035C14.9735 11.0383 15.0296 10.9596 15.0686 10.8722C15.1075 10.7848 15.1285 10.6905 15.1302 10.5948C15.1319 10.4991 15.1143 10.4041 15.0784 10.3154C15.0426 10.2267 14.9892 10.1461 14.9216 10.0784C14.8539 10.0108 14.7733 9.95742 14.6846 9.92158C14.5959 9.88575 14.5009 9.86815 14.4052 9.86984C14.3095 9.87153 14.2152 9.89247 14.1278 9.93141C14.0404 9.97035 13.9617 10.0265 13.8965 10.0965L12.5 11.493L11.1035 10.0965C11.0383 10.0265 10.9596 9.97035 10.8722 9.93141C10.7848 9.89247 10.6905 9.87153 10.5948 9.86984C10.4991 9.86815 10.4041 9.88575 10.3154 9.92158C10.2267 9.95742 10.1461 10.0108 10.0784 10.0784C10.0108 10.1461 9.95742 10.2267 9.92158 10.3154C9.88575 10.4041 9.86815 10.4991 9.86984 10.5948C9.87153 10.6905 9.89247 10.7848 9.93141 10.8722C9.97035 10.9596 10.0265 11.0383 10.0965 11.1035L11.493 12.5L10.0965 13.8965C10.0265 13.9617 9.97035 14.0404 9.93141 14.1278C9.89247 14.2152 9.87153 14.3095 9.86984 14.4052C9.86815 14.5009 9.88575 14.5959 9.92158 14.6846C9.95742 14.7733 10.0108 14.8539 10.0784 14.9216C10.1461 14.9892 10.2267 15.0426 10.3154 15.0784C10.4041 15.1143 10.4991 15.1319 10.5948 15.1302C10.6905 15.1285 10.7848 15.1075 10.8722 15.0686C10.9596 15.0296 11.0383 14.9735 11.1035 14.9035L12.5 13.507ZM9.39065 13.2125C9.41282 13.1878 9.43562 13.1637 9.45905 13.1403L10.0993 12.5L9.45905 11.8597L9.39065 11.7875H3.7125C3.52353 11.7875 3.34231 11.8626 3.20869 11.9962C3.07507 12.1298 3 12.311 3 12.5C3 12.689 3.07507 12.8702 3.20869 13.0038C3.34231 13.1374 3.7125 13.2125 3.90147 13.2125H9.39065ZM15.8468 13.2125H21.2875C21.4765 13.2125 21.6577 13.1374 21.7913 13.0038C21.9249 12.8702 22 12.689 22 12.5C22 12.311 21.9249 12.1298 21.7913 11.9962C21.6577 11.8626 21.4765 11.7875 21.2875 11.7875H15.8468L15.7785 11.8597L15.1382 12.5L15.7785 13.1403L15.8468 13.2125Z\"stroke=\"#4B4F62\"stroke-width=\"0.4\"mask=\"url(#path-2-outside-1_5803_43961)\"/> </svg>`,\n}\n\n\nexport const LEFT_AND_RIGHT_ICON_CONSTANTS = {\n 'subrole': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"14\"height=\"14\"viewBox=\"0 0 14 14\"fill=\"none\"> <path d=\"M2.33333 13.3333C1.68889 13.3333 1.13889 13.1056 0.683333 12.65C0.227778 12.1944 0 11.6444 0 11C0 10.3556 0.227778 9.80555 0.683333 9.35C1.13889 8.89444 1.68889 8.66667 2.33333 8.66667C2.53333 8.66667 2.72778 8.69167 2.91667 8.74167C3.10556 8.79167 3.28333 8.86111 3.45 8.95L6 6.4V4.56667C5.51111 4.42222 5.11111 4.14722 4.8 3.74167C4.48889 3.33611 4.33333 2.86667 4.33333 2.33333C4.33333 1.68889 4.56111 1.13889 5.01667 0.683333C5.47222 0.227778 6.02222 0 6.66667 0C7.31111 0 7.86111 0.227778 8.31667 0.683333C8.77222 1.13889 9 1.68889 9 2.33333C9 2.86667 8.84444 3.33611 8.53333 3.74167C8.22222 4.14722 7.82222 4.42222 7.33333 4.56667V6.4L9.9 8.95C10.0667 8.86111 10.2417 8.79167 10.425 8.74167C10.6083 8.69167 10.8 8.66667 11 8.66667C11.6444 8.66667 12.1944 8.89444 12.65 9.35C13.1056 9.80555 13.3333 10.3556 13.3333 11C13.3333 11.6444 13.1056 12.1944 12.65 12.65C12.1944 13.1056 11.6444 13.3333 11 13.3333C10.3556 13.3333 9.80555 13.1056 9.35 12.65C8.89444 12.1944 8.66667 11.6444 8.66667 11C8.66667 10.8 8.69167 10.6056 8.74167 10.4167C8.79167 10.2278 8.86111 10.05 8.95 9.88333L6.66667 7.6L4.38333 9.88333C4.47222 10.05 4.54167 10.2278 4.59167 10.4167C4.64167 10.6056 4.66667 10.8 4.66667 11C4.66667 11.6444 4.43889 12.1944 3.98333 12.65C3.52778 13.1056 2.97778 13.3333 2.33333 13.3333ZM11 12C11.2778 12 11.5139 11.9028 11.7083 11.7083C11.9028 11.5139 12 11.2778 12 11C12 10.7222 11.9028 10.4861 11.7083 10.2917C11.5139 10.0972 11.2778 10 11 10C10.7222 10 10.4861 10.0972 10.2917 10.2917C10.0972 10.4861 10 10.7222 10 11C10 11.2778 10.0972 11.5139 10.2917 11.7083C10.4861 11.9028 10.7222 12 11 12ZM6.66667 3.33333C6.94444 3.33333 7.18056 3.23611 7.375 3.04167C7.56944 2.84722 7.66667 2.61111 7.66667 2.33333C7.66667 2.05556 7.56944 1.81944 7.375 1.625C7.18056 1.43056 6.94444 1.33333 6.66667 1.33333C6.38889 1.33333 6.15278 1.43056 5.95833 1.625C5.76389 1.81944 5.66667 2.05556 5.66667 2.33333C5.66667 2.61111 5.76389 2.84722 5.95833 3.04167C6.15278 3.23611 6.38889 3.33333 6.66667 3.33333ZM2.33333 12C2.61111 12 2.84722 11.9028 3.04167 11.7083C3.23611 11.5139 3.33333 11.2778 3.33333 11C3.33333 10.7222 3.23611 10.4861 3.04167 10.2917C2.84722 10.0972 2.61111 10 2.33333 10C2.05556 10 1.81944 10.0972 1.625 10.2917C1.43056 10.4861 1.33333 10.7222 1.33333 11C1.33333 11.2778 1.43056 11.5139 1.625 11.7083C1.81944 11.9028 2.05556 12 2.33333 12Z\"fill=\"white\"/> </svg>`,\n 'subrole_active': `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15.5556 16.875C15.1042 16.875 14.6991 16.7448 14.3403 16.4844C13.9815 16.224 13.7326 15.8912 13.5938 15.4861H10C9.23611 15.4861 8.58218 15.2141 8.03819 14.6701C7.49421 14.1262 7.22222 13.4722 7.22222 12.7083C7.22222 11.9444 7.49421 11.2905 8.03819 10.7465C8.58218 10.2025 9.23611 9.93056 10 9.93056H11.3889C11.7708 9.93056 12.0978 9.79456 12.3698 9.52257C12.6418 9.25058 12.7778 8.92361 12.7778 8.54167C12.7778 8.15972 12.6418 7.83275 12.3698 7.56076C12.0978 7.28877 11.7708 7.15278 11.3889 7.15278H7.79514C7.64468 7.55787 7.39294 7.89063 7.03993 8.15104C6.68692 8.41146 6.28472 8.54167 5.83333 8.54167C5.25463 8.54167 4.76273 8.33912 4.35764 7.93403C3.95255 7.52894 3.75 7.03704 3.75 6.45833C3.75 5.87963 3.95255 5.38773 4.35764 4.98264C4.76273 4.57755 5.25463 4.375 5.83333 4.375C6.28472 4.375 6.68692 4.50521 7.03993 4.76563C7.39294 5.02604 7.64468 5.3588 7.79514 5.76389H11.3889C12.1528 5.76389 12.8067 6.03588 13.3507 6.57986C13.8947 7.12384 14.1667 7.77778 14.1667 8.54167C14.1667 9.30556 13.8947 9.95949 13.3507 10.5035C12.8067 11.0475 12.1528 11.3194 11.3889 11.3194H10C9.61806 11.3194 9.29109 11.4554 9.0191 11.7274C8.74711 11.9994 8.61111 12.3264 8.61111 12.7083C8.61111 13.0903 8.74711 13.4172 9.0191 13.6892C9.29109 13.9612 9.61806 14.0972 10 14.0972H13.5938C13.7442 13.6921 13.9959 13.3594 14.349 13.099C14.702 12.8385 15.1042 12.7083 15.5556 12.7083C16.1343 12.7083 16.6262 12.9109 17.0313 13.316C17.4363 13.7211 17.6389 14.213 17.6389 14.7917C17.6389 15.3704 17.4363 15.8623 17.0313 16.2674C16.6262 16.6725 16.1343 16.875 15.5556 16.875ZM5.83333 7.15278C6.03009 7.15278 6.19502 7.08623 6.32813 6.95313C6.46123 6.82002 6.52778 6.65509 6.52778 6.45833C6.52778 6.26157 6.46123 6.09664 6.32813 5.96354C6.19502 5.83044 6.03009 5.76389 5.83333 5.76389C5.63657 5.76389 5.47164 5.83044 5.33854 5.96354C5.20544 6.09664 5.13889 6.26157 5.13889 6.45833C5.13889 6.65509 5.20544 6.82002 5.33854 6.95313C5.47164 7.08623 5.63657 7.15278 5.83333 7.15278Z\" fill=\"#717793\"/>\n</svg>`,\n 'hide_section': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"16\"viewBox=\"0 0 16 16\"fill=\"none\"> <path d=\"M8 3.98337C10.5267 3.98337 12.78 5.40337 13.88 7.65003C13.4867 8.46337 12.9333 9.16337 12.2733 9.73003L13.2133 10.67C14.14 9.85003 14.8733 8.82337 15.3333 7.65003C14.18 4.72337 11.3333 2.65003 8 2.65003C7.15333 2.65003 6.34 2.78337 5.57333 3.03003L6.67333 4.13003C7.10667 4.04337 7.54667 3.98337 8 3.98337ZM7.28667 4.74337L8.66667 6.12337C9.04667 6.29003 9.35333 6.5967 9.52 6.9767L10.9 8.3567C10.9533 8.13003 10.9933 7.89003 10.9933 7.64337C11 5.99003 9.65333 4.65003 8 4.65003C7.75333 4.65003 7.52 4.68337 7.28667 4.74337ZM1.34 2.56337L3.12667 4.35003C2.04 5.20337 1.18 6.3367 0.666667 7.65003C1.82 10.5767 4.66667 12.65 8 12.65C9.01333 12.65 9.98667 12.4567 10.88 12.1034L13.16 14.3834L14.1 13.4434L2.28 1.6167L1.34 2.56337ZM6.34 7.56337L8.08 9.30337C8.05333 9.31003 8.02667 9.3167 8 9.3167C7.08 9.3167 6.33333 8.57003 6.33333 7.65003C6.33333 7.6167 6.34 7.5967 6.34 7.56337ZM4.07333 5.2967L5.24 6.46337C5.08667 6.83003 5 7.23003 5 7.65003C5 9.30337 6.34667 10.65 8 10.65C8.42 10.65 8.82 10.5634 9.18 10.41L9.83333 11.0634C9.24667 11.2234 8.63333 11.3167 8 11.3167C5.47333 11.3167 3.22 9.8967 2.12 7.65003C2.58667 6.6967 3.26667 5.91003 4.07333 5.2967Z\"fill=\"#717793\"/> </svg>`,\n 'unhide_section': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"11\"viewBox=\"0 0 16 11\"fill=\"none\"> <path d=\"M7.63889 1.38889C10.2708 1.38889 12.6181 2.86806 13.7639 5.20833C12.6181 7.54861 10.2708 9.02778 7.63889 9.02778C5.00695 9.02778 2.65972 7.54861 1.51389 5.20833C2.65972 2.86806 5.00695 1.38889 7.63889 1.38889ZM7.63889 0C4.16667 0 1.20139 2.15972 0 5.20833C1.20139 8.25695 4.16667 10.4167 7.63889 10.4167C11.1111 10.4167 14.0764 8.25695 15.2778 5.20833C14.0764 2.15972 11.1111 0 7.63889 0ZM7.63889 3.47222C8.59722 3.47222 9.375 4.25 9.375 5.20833C9.375 6.16667 8.59722 6.94445 7.63889 6.94445C6.68056 6.94445 5.90278 6.16667 5.90278 5.20833C5.90278 4.25 6.68056 3.47222 7.63889 3.47222ZM7.63889 2.08333C5.91667 2.08333 4.51389 3.48611 4.51389 5.20833C4.51389 6.93056 5.91667 8.33333 7.63889 8.33333C9.36111 8.33333 10.7639 6.93056 10.7639 5.20833C10.7639 3.48611 9.36111 2.08333 7.63889 2.08333Z\"fill=\"#717793\"/> </svg>`,\n 'edit_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"16\"viewBox=\"0 0 16 16\"fill=\"none\"> <path d=\"M9.37248 6.01333L9.98581 6.62667L3.94581 12.6667H3.33248V12.0533L9.37248 6.01333ZM11.7725 2C11.6058 2 11.4325 2.06667 11.3058 2.19333L10.0858 3.41333L12.5858 5.91333L13.8058 4.69333C14.0658 4.43333 14.0658 4.01333 13.8058 3.75333L12.2458 2.19333C12.1125 2.06 11.9458 2 11.7725 2ZM9.37248 4.12667L1.99915 11.5V14H4.49915L11.8725 6.62667L9.37248 4.12667Z\"fill=\"#717793\"/> </svg>`,\n \"year_month_icon\": `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"18\"height=\"18\"viewBox=\"0 0 18 18\"fill=\"none\"> <path d=\"M15 2.25H14.25V0.75H12.75V2.25H5.25V0.75H3.75V2.25H3C2.175 2.25 1.5 2.925 1.5 3.75V15.75C1.5 16.575 2.175 17.25 3 17.25H15C15.825 17.25 16.5 16.575 16.5 15.75V3.75C16.5 2.925 15.825 2.25 15 2.25ZM15 15.75H3V5.62498H15V15.75Z\"fill=\"#FAFBFB\"/> <path d=\"M4.86422 13.5C4.76624 13.5 4.68105 13.4563 4.60863 13.369C4.53621 13.2817 4.5 13.1789 4.5 13.0608V8.31421C4.5 8.19606 4.53621 8.09332 4.60863 8.00599C4.68105 7.91866 4.76624 7.875 4.86422 7.875H5.02397C5.13472 7.875 5.23696 7.91096 5.33068 7.98288C5.4244 8.05479 5.49255 8.14983 5.53515 8.26798L6.65337 11.1807C6.65337 11.1858 6.6555 11.1884 6.65976 11.1884C6.66402 11.1884 6.66615 11.1858 6.66615 11.1807L7.78438 8.26798C7.82697 8.14983 7.89513 8.05479 7.98885 7.98288C8.08257 7.91096 8.1848 7.875 8.29556 7.875H8.48087C8.57885 7.875 8.66404 7.91866 8.73646 8.00599C8.80888 8.09332 8.84509 8.19606 8.84509 8.31421V13.0608C8.84509 13.1789 8.80888 13.2817 8.73646 13.369C8.66404 13.4563 8.57885 13.5 8.48087 13.5H8.34029C8.24231 13.5 8.15712 13.4563 8.0847 13.369C8.01228 13.2817 7.97607 13.1789 7.97607 13.0608V9.7089C7.97607 9.70377 7.97394 9.7012 7.96968 9.7012C7.96542 9.7012 7.96329 9.70377 7.96329 9.7089L7.19651 11.6892C7.14965 11.8074 7.07723 11.905 6.97926 11.982C6.88554 12.0539 6.78543 12.0899 6.67893 12.0899H6.64059C6.5341 12.0899 6.43186 12.0539 6.33388 11.982C6.24017 11.905 6.16988 11.8074 6.12302 11.6892L5.35624 9.7089C5.35624 9.70377 5.35411 9.7012 5.34985 9.7012C5.34559 9.7012 5.34346 9.70377 5.34346 9.7089V13.0608C5.34346 13.1789 5.30725 13.2817 5.23483 13.369C5.16241 13.4563 5.07722 13.5 4.97924 13.5H4.86422Z\"fill=\"#FAFBFB\"/> <path d=\"M11.1405 11.2115L9.79221 8.26027C9.75388 8.17808 9.75601 8.09332 9.7986 8.00599C9.8412 7.91866 9.90297 7.875 9.98391 7.875H10.2906C10.4014 7.875 10.5036 7.91096 10.5973 7.98288C10.6911 8.05479 10.7613 8.14983 10.8082 8.26798L11.6389 10.387C11.6389 10.3921 11.641 10.3947 11.6453 10.3947C11.6495 10.3947 11.6517 10.3921 11.6517 10.387L12.4823 8.26798C12.5292 8.14983 12.5995 8.05479 12.6932 7.98288C12.7869 7.91096 12.8892 7.875 12.9999 7.875H13.2811C13.362 7.875 13.4238 7.91866 13.4664 8.00599C13.509 8.09332 13.5111 8.17808 13.4728 8.26027L12.1245 11.2115C12.1032 11.2526 12.0926 11.2937 12.0926 11.3348V13.0608C12.0926 13.1789 12.0563 13.2817 11.9839 13.369C11.9158 13.4563 11.8327 13.5 11.7347 13.5H11.5302C11.4323 13.5 11.3471 13.4563 11.2747 13.369C11.2065 13.2817 11.1724 13.1789 11.1724 13.0608V11.3348C11.1724 11.2937 11.1618 11.2526 11.1405 11.2115Z\"fill=\"#FAFBFB\"/> </svg>`,\n \"year_only_icon\": `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"18\"height=\"18\"viewBox=\"0 0 18 18\"fill=\"none\"> <path d=\"M15.0002 2.25H14.2502V0.75H12.7502V2.25H5.25024V0.75H3.75024V2.25H3.00024C2.17524 2.25 1.50024 2.925 1.50024 3.75V15.75C1.50024 16.575 2.17524 17.25 3.00024 17.25H15.0002C15.8252 17.25 16.5002 16.575 16.5002 15.75V3.75C16.5002 2.925 15.8252 2.25 15.0002 2.25ZM15.0002 15.75H3.00024V5.62498H15.0002V15.75Z\"fill=\"#FAFBFB\"/> <path d=\"M8.416 11.2115L6.79161 8.26027C6.74542 8.17808 6.74798 8.09332 6.79931 8.00599C6.85063 7.91866 6.92505 7.875 7.02257 7.875H7.3921C7.52554 7.875 7.64871 7.91096 7.76163 7.98288C7.87454 8.05479 7.95922 8.14983 8.01568 8.26798L9.01649 10.387C9.01649 10.3921 9.01905 10.3947 9.02419 10.3947C9.02932 10.3947 9.03188 10.3921 9.03188 10.387L10.0327 8.26798C10.0892 8.14983 10.1738 8.05479 10.2867 7.98288C10.3997 7.91096 10.5228 7.875 10.6563 7.875H10.995C11.0925 7.875 11.1669 7.91866 11.2183 8.00599C11.2696 8.09332 11.2722 8.17808 11.226 8.26027L9.60158 11.2115C9.57591 11.2526 9.56308 11.2937 9.56308 11.3348V13.0608C9.56308 13.1789 9.51946 13.2817 9.43221 13.369C9.35009 13.4563 9.25001 13.5 9.13197 13.5H8.88561C8.76757 13.5 8.66492 13.4563 8.57767 13.369C8.49555 13.2817 8.45449 13.1789 8.45449 13.0608V11.3348C8.45449 11.2937 8.44166 11.2526 8.416 11.2115Z\"fill=\"#FAFBFB\"/> </svg>`,\n 'delete-icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"16\"viewBox=\"0 0 16 16\"fill=\"none\"> <path d=\"M10.6663 6V12.6667H5.33301V6H10.6663ZM9.66634 2H6.33301L5.66634 2.66667H3.33301V4H12.6663V2.66667H10.333L9.66634 2ZM11.9997 4.66667H3.99967V12.6667C3.99967 13.4 4.59967 14 5.33301 14H10.6663C11.3997 14 11.9997 13.4 11.9997 12.6667V4.66667Z\"fill=\"white\"/> </svg>`,\n 'handle': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <circle cx=\"7\"cy=\"4\"r=\"1.5\"fill=\"#717793\"/> <circle cx=\"13\"cy=\"4\"r=\"1.5\"fill=\"#717793\"/> <circle cx=\"7\"cy=\"10\"r=\"1.5\"fill=\"#717793\"/> <circle cx=\"13\"cy=\"10\"r=\"1.5\"fill=\"#717793\"/> <circle cx=\"7\"cy=\"16\"r=\"1.5\"fill=\"#717793\"/> <circle cx=\"13\"cy=\"16\"r=\"1.5\"fill=\"#717793\"/> </svg>`,\n 'search': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M13.1292 11.8791H12.4709L12.2375 11.6541C13.0542 10.7041 13.5459 9.47074 13.5459 8.12907C13.5459 5.1374 11.1209 2.7124 8.12919 2.7124C5.13752 2.7124 2.71252 5.1374 2.71252 8.12907C2.71252 11.1207 5.13752 13.5457 8.12919 13.5457C9.47086 13.5457 10.7042 13.0541 11.6542 12.2374L11.8792 12.4707V13.1291L16.0459 17.2874L17.2875 16.0457L13.1292 11.8791ZM8.12919 11.8791C6.05419 11.8791 4.37919 10.2041 4.37919 8.12907C4.37919 6.05407 6.05419 4.37907 8.12919 4.37907C10.2042 4.37907 11.8792 6.05407 11.8792 8.12907C11.8792 10.2041 10.2042 11.8791 8.12919 11.8791Z\"fill=\"#717793\"/> </svg>`,\n 'multi-drag-drop': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"16\"viewBox=\"0 0 16 16\"fill=\"none\"> <path d=\"M13.3337 7.99996L12.3937 7.05996L8.66699 10.78V2.66663H7.33366V10.78L3.61366 7.05329L2.66699 7.99996L8.00033 13.3333L13.3337 7.99996Z\"fill=\"white\"/> </svg>`,\n 'subrole-icon-grey': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"16\"viewBox=\"0 0 16 16\"fill=\"none\"> <path d=\"M3.66659 14.6666C3.02214 14.6666 2.47214 14.4389 2.01659 13.9833C1.56103 13.5278 1.33325 12.9778 1.33325 12.3333C1.33325 11.6889 1.56103 11.1389 2.01659 10.6833C2.47214 10.2278 3.02214 9.99998 3.66659 9.99998C3.86659 9.99998 4.06103 10.025 4.24992 10.075C4.43881 10.125 4.61659 10.1944 4.78325 10.2833L7.33325 7.73331V5.89998C6.84436 5.75554 6.44436 5.48054 6.13325 5.07498C5.82214 4.66942 5.66658 4.19998 5.66658 3.66665C5.66658 3.0222 5.89436 2.4722 6.34992 2.01665C6.80547 1.56109 7.35547 1.33331 7.99992 1.33331C8.64436 1.33331 9.19436 1.56109 9.64992 2.01665C10.1055 2.4722 10.3333 3.0222 10.3333 3.66665C10.3333 4.19998 10.1777 4.66942 9.86658 5.07498C9.55547 5.48054 9.15547 5.75554 8.66658 5.89998V7.73331L11.2333 10.2833C11.3999 10.1944 11.5749 10.125 11.7583 10.075C11.9416 10.025 12.1333 9.99998 12.3333 9.99998C12.9777 9.99998 13.5277 10.2278 13.9833 10.6833C14.4388 11.1389 14.6666 11.6889 14.6666 12.3333C14.6666 12.9778 14.4388 13.5278 13.9833 13.9833C13.5277 14.4389 12.9777 14.6666 12.3333 14.6666C11.6888 14.6666 11.1388 14.4389 10.6833 13.9833C10.2277 13.5278 9.99992 12.9778 9.99992 12.3333C9.99992 12.1333 10.0249 11.9389 10.0749 11.75C10.1249 11.5611 10.1944 11.3833 10.2833 11.2166L7.99992 8.93331L5.71659 11.2166C5.80547 11.3833 5.87492 11.5611 5.92492 11.75C5.97492 11.9389 5.99992 12.1333 5.99992 12.3333C5.99992 12.9778 5.77214 13.5278 5.31659 13.9833C4.86103 14.4389 4.31103 14.6666 3.66659 14.6666ZM12.3333 13.3333C12.611 13.3333 12.8471 13.2361 13.0416 13.0416C13.236 12.8472 13.3333 12.6111 13.3333 12.3333C13.3333 12.0555 13.236 11.8194 13.0416 11.625C12.8471 11.4305 12.611 11.3333 12.3333 11.3333C12.0555 11.3333 11.8194 11.4305 11.6249 11.625C11.4305 11.8194 11.3333 12.0555 11.3333 12.3333C11.3333 12.6111 11.4305 12.8472 11.6249 13.0416C11.8194 13.2361 12.0555 13.3333 12.3333 13.3333ZM7.99992 4.66665C8.2777 4.66665 8.51381 4.56942 8.70825 4.37498C8.9027 4.18054 8.99992 3.94442 8.99992 3.66665C8.99992 3.38887 8.9027 3.15276 8.70825 2.95831C8.51381 2.76387 8.2777 2.66665 7.99992 2.66665C7.72214 2.66665 7.48603 2.76387 7.29158 2.95831C7.09714 3.15276 6.99992 3.38887 6.99992 3.66665C6.99992 3.94442 7.09714 4.18054 7.29158 4.37498C7.48603 4.56942 7.72214 4.66665 7.99992 4.66665ZM3.66659 13.3333C3.94436 13.3333 4.18047 13.2361 4.37492 13.0416C4.56936 12.8472 4.66658 12.6111 4.66658 12.3333C4.66658 12.0555 4.56936 11.8194 4.37492 11.625C4.18047 11.4305 3.94436 11.3333 3.66659 11.3333C3.38881 11.3333 3.1527 11.4305 2.95825 11.625C2.76381 11.8194 2.66659 12.0555 2.66659 12.3333C2.66659 12.6111 2.76381 12.8472 2.95825 13.0416C3.1527 13.2361 3.38881 13.3333 3.66659 13.3333Z\"fill=\"#717793\"/> </svg>`,\n 'subrole_icon_white': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12.6668 14C12.2335 14 11.8446 13.875 11.5002 13.625C11.1557 13.375 10.9168 13.0556 10.7835 12.6667H7.3335C6.60016 12.6667 5.97238 12.4056 5.45016 11.8833C4.92794 11.3611 4.66683 10.7333 4.66683 10C4.66683 9.26667 4.92794 8.63889 5.45016 8.11667C5.97238 7.59444 6.60016 7.33333 7.3335 7.33333H8.66683C9.0335 7.33333 9.34738 7.20278 9.6085 6.94167C9.86961 6.68056 10.0002 6.36667 10.0002 6C10.0002 5.63333 9.86961 5.31944 9.6085 5.05833C9.34738 4.79722 9.0335 4.66667 8.66683 4.66667H5.21683C5.07238 5.05556 4.83072 5.375 4.49183 5.625C4.15294 5.875 3.76683 6 3.3335 6C2.77794 6 2.30572 5.80556 1.91683 5.41667C1.52794 5.02778 1.3335 4.55556 1.3335 4C1.3335 3.44444 1.52794 2.97222 1.91683 2.58333C2.30572 2.19444 2.77794 2 3.3335 2C3.76683 2 4.15294 2.125 4.49183 2.375C4.83072 2.625 5.07238 2.94444 5.21683 3.33333H8.66683C9.40016 3.33333 10.0279 3.59444 10.5502 4.11667C11.0724 4.63889 11.3335 5.26667 11.3335 6C11.3335 6.73333 11.0724 7.36111 10.5502 7.88333C10.0279 8.40556 9.40016 8.66667 8.66683 8.66667H7.3335C6.96683 8.66667 6.65294 8.79722 6.39183 9.05833C6.13072 9.31944 6.00016 9.63333 6.00016 10C6.00016 10.3667 6.13072 10.6806 6.39183 10.9417C6.65294 11.2028 6.96683 11.3333 7.3335 11.3333H10.7835C10.9279 10.9444 11.1696 10.625 11.5085 10.375C11.8474 10.125 12.2335 10 12.6668 10C13.2224 10 13.6946 10.1944 14.0835 10.5833C14.4724 10.9722 14.6668 11.4444 14.6668 12C14.6668 12.5556 14.4724 13.0278 14.0835 13.4167C13.6946 13.8056 13.2224 14 12.6668 14ZM3.3335 4.66667C3.52238 4.66667 3.68072 4.60278 3.8085 4.475C3.93627 4.34722 4.00016 4.18889 4.00016 4C4.00016 3.81111 3.93627 3.65278 3.8085 3.525C3.68072 3.39722 3.52238 3.33333 3.3335 3.33333C3.14461 3.33333 2.98627 3.39722 2.8585 3.525C2.73072 3.65278 2.66683 3.81111 2.66683 4C2.66683 4.18889 2.73072 4.34722 2.8585 4.475C2.98627 4.60278 3.14461 4.66667 3.3335 4.66667Z\" fill=\"white\"/>\n</svg>`\n}\n\n ;\n\nexport const Candidate_Section_ICON = {\n 'candidate_name': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M10.0002 5.00004C10.9168 5.00004 11.6668 5.75004 11.6668 6.66671C11.6668 7.58337 10.9168 8.33337 10.0002 8.33337C9.0835 8.33337 8.3335 7.58337 8.3335 6.66671C8.3335 5.75004 9.0835 5.00004 10.0002 5.00004ZM10.0002 13.3334C12.2502 13.3334 14.8335 14.4084 15.0002 15H5.00016C5.19183 14.4 7.7585 13.3334 10.0002 13.3334ZM10.0002 3.33337C8.1585 3.33337 6.66683 4.82504 6.66683 6.66671C6.66683 8.50837 8.1585 10 10.0002 10C11.8418 10 13.3335 8.50837 13.3335 6.66671C13.3335 4.82504 11.8418 3.33337 10.0002 3.33337ZM10.0002 11.6667C7.77516 11.6667 3.3335 12.7834 3.3335 15V16.6667H16.6668V15C16.6668 12.7834 12.2252 11.6667 10.0002 11.6667Z\" fill=\"#37C1CE\"/></svg>`,\n 'candidate_gender': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M13.6624 1.96216V3.21216H15.8893L13.7799 5.34091C13.026 4.77152 12.1072 4.46306 11.1624 4.46216C9.99365 4.46216 8.9024 4.92466 8.07615 5.75153C7.66774 6.15502 7.34349 6.63557 7.1222 7.16533C6.90092 7.69508 6.787 8.26349 6.78706 8.8376C6.78712 9.41171 6.90115 9.9801 7.12254 10.5098C7.34393 11.0395 7.66828 11.52 8.07678 11.9234C8.62053 12.4672 9.26803 12.8578 9.99053 13.0559C10.0618 13.0015 10.1418 12.9447 10.2055 12.8809C10.4675 12.6145 10.6557 12.2845 10.7518 11.9234C10.0713 11.8397 9.43854 11.53 8.9549 11.044C8.3649 10.4547 8.0374 9.67216 8.0374 8.83716C8.0374 8.00216 8.36553 7.22091 8.95615 6.63091C9.5449 6.03903 10.3274 5.71216 11.1624 5.71216C11.9974 5.71216 12.7793 6.04028 13.3687 6.63091C13.6602 6.91957 13.8915 7.26322 14.0492 7.64194C14.2069 8.02066 14.2879 8.42691 14.2874 8.83716C14.2874 9.37778 14.1343 9.88091 13.8774 10.3409C13.9374 10.6634 13.9749 11.0022 13.9749 11.3372C13.9749 11.6492 13.9489 11.9555 13.8968 12.2559C14.0218 12.154 14.133 12.0384 14.2487 11.9234C15.0749 11.0959 15.5374 10.0059 15.5374 8.83716C15.5374 7.88091 15.2224 6.97216 14.6587 6.21966L16.7874 4.11091V6.33716H18.0374V1.96216H13.6624ZM9.83428 7.11841C9.76303 7.17278 9.68303 7.22966 9.61928 7.29341C9.34928 7.56466 9.17303 7.89341 9.07303 8.25153C9.75428 8.33903 10.3762 8.63653 10.8699 9.13028C11.4605 9.71966 11.7887 10.5022 11.7887 11.3365C11.7887 12.1709 11.4605 12.9528 10.8699 13.5428C10.2799 14.1353 9.4974 14.4622 8.6624 14.4622C7.8274 14.4622 7.04553 14.134 6.45615 13.5434C6.16437 13.255 5.93287 12.9113 5.77514 12.5326C5.61741 12.1538 5.53659 11.7475 5.5374 11.3372C5.5374 10.7965 5.69053 10.2934 5.9474 9.83341C5.88536 9.50488 5.85273 9.17148 5.8499 8.83716C5.8499 8.52549 5.87594 8.21924 5.92803 7.91841C5.80303 8.02028 5.6924 8.13591 5.57615 8.25153C4.75115 9.07716 4.2874 10.1684 4.2874 11.3372C4.2874 12.2934 4.6024 13.2022 5.16615 13.9547L4.1124 15.009L2.8624 13.759L1.9624 14.6378L3.2124 15.8878L1.9624 17.1378L2.8624 18.0378L4.1124 16.7878L5.3624 18.0378L6.24053 17.1378L4.99053 15.8878L6.04553 14.834C6.79871 15.4043 7.71769 15.7127 8.6624 15.7122C9.83115 15.7122 10.9224 15.2497 11.7487 14.4228C12.5749 13.5972 13.0374 12.5059 13.0374 11.3372C13.0374 10.1684 12.5749 9.07841 11.748 8.25091C11.2043 7.70716 10.5568 7.31653 9.83428 7.11841Z\" fill=\"#37C1CE\"/></svg>`,\n 'candidate_phonenumber': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M5.45 4.16667C5.5 4.90833 5.625 5.63333 5.825 6.325L4.825 7.325C4.48333 6.325 4.26667 5.26667 4.19167 4.16667H5.45ZM13.6667 14.1833C14.375 14.3833 15.1 14.5083 15.8333 14.5583V15.8C14.7333 15.725 13.675 15.5083 12.6667 15.175L13.6667 14.1833ZM6.25 2.5H3.33333C2.875 2.5 2.5 2.875 2.5 3.33333C2.5 11.1583 8.84167 17.5 16.6667 17.5C17.125 17.5 17.5 17.125 17.5 16.6667V13.7583C17.5 13.3 17.125 12.925 16.6667 12.925C15.6333 12.925 14.625 12.7583 13.6917 12.45C13.6083 12.4167 13.5167 12.4083 13.4333 12.4083C13.2167 12.4083 13.0083 12.4917 12.8417 12.65L11.0083 14.4833C8.65 13.275 6.71667 11.35 5.51667 8.99167L7.35 7.15833C7.58333 6.925 7.65 6.6 7.55833 6.30833C7.25 5.375 7.08333 4.375 7.08333 3.33333C7.08333 2.875 6.70833 2.5 6.25 2.5Z\" fill=\"#37C1CE\"/></svg>`,\n\n 'candidate_email': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M18.3337 5.00004C18.3337 4.08337 17.5837 3.33337 16.667 3.33337H3.33366C2.41699 3.33337 1.66699 4.08337 1.66699 5.00004V15C1.66699 15.9167 2.41699 16.6667 3.33366 16.6667H16.667C17.5837 16.6667 18.3337 15.9167 18.3337 15V5.00004ZM16.667 5.00004L10.0003 9.16671L3.33366 5.00004H16.667ZM16.667 15H3.33366V6.66671L10.0003 10.8334L16.667 6.66671V15Z\" fill=\"#37C1CE\"/></svg>`,\n 'candidate_linkedin': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M4.15243 5.9975C5.15943 5.9975 5.97577 5.18116 5.97577 4.17416C5.97577 3.16716 5.15943 2.35083 4.15243 2.35083C3.14544 2.35083 2.3291 3.16716 2.3291 4.17416C2.3291 5.18116 3.14544 5.9975 4.15243 5.9975Z\" fill=\"#37C1CE\"/>\n <path d=\"M7.69744 7.37915V17.495H10.8383V12.4925C10.8383 11.1725 11.0866 9.89415 12.7233 9.89415C14.3374 9.89415 14.3574 11.4033 14.3574 12.5758V17.4958H17.4999V11.9483C17.4999 9.22332 16.9133 7.12915 13.7283 7.12915C12.1991 7.12915 11.1741 7.96832 10.7549 8.76248H10.7124V7.37915H7.69744ZM2.5791 7.37915H5.72493V17.495H2.5791V7.37915Z\" fill=\"#37C1CE\"/>\n</svg>`,\n\n\n 'candidate_address': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M9.99984 1.66663C6.77484 1.66663 4.1665 4.27496 4.1665 7.49996C4.1665 11.875 9.99984 18.3333 9.99984 18.3333C9.99984 18.3333 15.8332 11.875 15.8332 7.49996C15.8332 4.27496 13.2248 1.66663 9.99984 1.66663ZM5.83317 7.49996C5.83317 5.19996 7.69984 3.33329 9.99984 3.33329C12.2998 3.33329 14.1665 5.19996 14.1665 7.49996C14.1665 9.89996 11.7665 13.4916 9.99984 15.7333C8.2665 13.5083 5.83317 9.87496 5.83317 7.49996Z\" fill=\"#37C1CE\"/><path d=\"M9.99984 9.58329C11.1504 9.58329 12.0832 8.65055 12.0832 7.49996C12.0832 6.34937 11.1504 5.41663 9.99984 5.41663C8.84924 5.41663 7.9165 6.34937 7.9165 7.49996C7.9165 8.65055 8.84924 9.58329 9.99984 9.58329Z\" fill=\"#37C1CE\"/></svg>`,\n 'candidate_experience': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M9.9915 1.66663C5.3915 1.66663 1.6665 5.39996 1.6665 9.99996C1.6665 14.6 5.3915 18.3333 9.9915 18.3333C14.5998 18.3333 18.3332 14.6 18.3332 9.99996C18.3332 5.39996 14.5998 1.66663 9.9915 1.66663ZM9.99984 16.6666C6.3165 16.6666 3.33317 13.6833 3.33317 9.99996C3.33317 6.31663 6.3165 3.33329 9.99984 3.33329C13.6832 3.33329 16.6665 6.31663 16.6665 9.99996C16.6665 13.6833 13.6832 16.6666 9.99984 16.6666ZM10.4165 5.83329H9.1665V10.8333L13.5415 13.4583L14.1665 12.4333L10.4165 10.2083V5.83329Z\" fill=\"#37C1CE\"/></svg>`,\n 'candidate_most_recent': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M11.6665 5.41671V3.75004H8.33317V5.41671H11.6665ZM3.33317 7.08337V16.25H16.6665V7.08337H3.33317ZM16.6665 5.41671C17.5915 5.41671 18.3332 6.15837 18.3332 7.08337V16.25C18.3332 17.175 17.5915 17.9167 16.6665 17.9167H3.33317C2.40817 17.9167 1.6665 17.175 1.6665 16.25L1.67484 7.08337C1.67484 6.15837 2.40817 5.41671 3.33317 5.41671H6.6665V3.75004C6.6665 2.82504 7.40817 2.08337 8.33317 2.08337H11.6665C12.5915 2.08337 13.3332 2.82504 13.3332 3.75004V5.41671H16.6665Z\" fill=\"#37C1CE\"/></svg>`,\n\n\n}\n\n\nexport const Resume_Tab_icon = {\n 'resume_tab_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M13.7497 0.833374H3.74967C2.83301 0.833374 2.08301 1.58337 2.08301 2.50004V14.1667H3.74967V2.50004H13.7497V0.833374ZM12.9163 4.16671H7.08301C6.16634 4.16671 5.42467 4.91671 5.42467 5.83337L5.41634 17.5C5.41634 18.4167 6.15801 19.1667 7.07467 19.1667H16.2497C17.1663 19.1667 17.9163 18.4167 17.9163 17.5V9.16671L12.9163 4.16671ZM7.08301 17.5V5.83337H12.083V10H16.2497V17.5H7.08301Z\" fill=\"#4B4F62\"/>\n</svg>`,\n 'coversheet_tab_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M11.6663 1.66663H4.99967C4.08301 1.66663 3.34134 2.41663 3.34134 3.33329L3.33301 16.6666C3.33301 17.5833 4.07467 18.3333 4.99134 18.3333H14.9997C15.9163 18.3333 16.6663 17.5833 16.6663 16.6666V6.66663L11.6663 1.66663ZM14.9997 16.6666H4.99967V3.33329H10.833V7.49996H14.9997V16.6666ZM6.66634 12.5083L7.84134 13.6833L9.16634 12.3666V15.8333H10.833V12.3666L12.158 13.6916L13.333 12.5083L10.008 9.16663L6.66634 12.5083Z\" fill=\"#4B4F62\"/>\n</svg>`,\n 'Ai_tools_tab_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M16.2511 6.25L17.0344 4.53333L18.7511 3.75L17.0344 2.96667L16.2511 1.25L15.4678 2.96667L13.7511 3.75L15.4678 4.53333L16.2511 6.25Z\" fill=\"#4B4F62\"/>\n <path d=\"M6.66777 6.25L7.45111 4.53333L9.16777 3.75L7.45111 2.96667L6.66777 1.25L5.88444 2.96667L4.16777 3.75L5.88444 4.53333L6.66777 6.25Z\" fill=\"#4B4F62\"/>\n <path d=\"M16.2511 10.8333L15.4678 12.55L13.7511 13.3333L15.4678 14.1167L16.2511 15.8333L17.0344 14.1167L18.7511 13.3333L17.0344 12.55L16.2511 10.8333Z\" fill=\"#4B4F62\"/>\n <path d=\"M14.3428 8.01667L11.9844 5.65833C11.8178 5.5 11.6094 5.41667 11.3928 5.41667C11.1761 5.41667 10.9678 5.5 10.8011 5.65833L1.49277 14.9667C1.16777 15.2917 1.16777 15.8167 1.49277 16.1417L3.85111 18.5C4.01777 18.6667 4.22611 18.75 4.44277 18.75C4.65944 18.75 4.86777 18.6667 5.03444 18.5083L14.3428 9.2C14.6678 8.875 14.6678 8.34167 14.3428 8.01667ZM11.3928 7.43333L12.5678 8.60833L11.5928 9.58333L10.4178 8.40833L11.3928 7.43333ZM4.44277 16.7417L3.26777 15.5667L9.24277 9.58333L10.4178 10.7583L4.44277 16.7417Z\" fill=\"#4B4F62\"/>\n</svg>`,\n}\nexport const NewResume_Header_Component_ICON = {\n 'add-right_icon_section': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M11.6665 5.41665V3.74998H8.33317V5.41665H11.6665ZM3.33317 7.08331V16.25H16.6665V7.08331H3.33317ZM16.6665 5.41665C17.5915 5.41665 18.3332 6.15831 18.3332 7.08331V16.25C18.3332 17.175 17.5915 17.9166 16.6665 17.9166H3.33317C2.40817 17.9166 1.6665 17.175 1.6665 16.25L1.67484 7.08331C1.67484 6.15831 2.40817 5.41665 3.33317 5.41665H6.6665V3.74998C6.6665 2.82498 7.40817 2.08331 8.33317 2.08331H11.6665C12.5915 2.08331 13.3332 2.82498 13.3332 3.74998V5.41665H16.6665Z\"fill=\"white\"/> </svg>`,\n 'add_left-icon_section': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M15.8332 10.8334H10.8332V15.8334H9.1665V10.8334H4.1665V9.16669H9.1665V4.16669H10.8332V9.16669H15.8332V10.8334Z\"fill=\"white\"/> </svg>`,\n\n 'font_case_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M1 15.6184L5.3216 4.11548H7.39053L11.7041 15.6184H9.71509L8.6942 12.6894H4.0355L2.98879 15.6184H1ZM4.6213 11.0386H8.08284L6.40373 6.27228H6.29882L4.6213 11.0386ZM14.8728 15.8847C13.9675 15.8847 13.2618 15.6495 12.7559 15.1791C12.25 14.7087 11.997 14.0563 11.997 13.222C11.997 12.4409 12.2899 11.8152 12.8757 11.3448C13.4615 10.8744 14.2337 10.6391 15.1923 10.6391C15.5473 10.6391 15.9112 10.6746 16.284 10.7457C16.6568 10.8167 17.0118 10.9143 17.3491 11.0386V10.7989C17.3491 10.2683 17.1709 9.83829 16.8144 9.50882C16.458 9.17953 15.9841 9.01489 15.3928 9.01489C14.9929 9.01489 14.6331 9.09477 14.3136 9.25453C13.9941 9.4143 13.7012 9.66282 13.4349 10.0001L12.2367 9.06814C12.5917 8.58885 13.0488 8.22051 13.608 7.96311C14.1672 7.70572 14.784 7.57702 15.4586 7.57702C16.5947 7.57702 17.4689 7.8566 18.0814 8.41577C18.6938 8.97495 19 9.76045 19 10.7723V15.6184H17.3491V14.6599H17.2692C16.9675 15.0859 16.6213 15.3965 16.2308 15.5918C15.8402 15.7871 15.3876 15.8847 14.8728 15.8847ZM15.154 14.4735C15.7637 14.4735 16.282 14.2649 16.7087 13.8477C17.1357 13.4306 17.3491 12.9309 17.3491 12.3486C17.1006 12.2031 16.821 12.0948 16.5104 12.0238C16.1997 11.9528 15.8691 11.9173 15.5185 11.9173C14.9283 11.9173 14.4822 12.0282 14.1805 12.2501C13.8787 12.472 13.7278 12.7966 13.7278 13.2239C13.7278 13.5954 13.8609 13.8965 14.1272 14.1273C14.3935 14.3581 14.7357 14.4735 15.154 14.4735Z\"fill=\"white\"/> </svg>`,\n 'retry_AI_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M17.9609 8.10742H13.0674V12.8115C13.0673 12.8672 13.0529 12.9137 13.0225 12.9492C12.992 12.9845 12.9521 13.0019 12.9043 13.002H11.9873C11.9398 13.0019 11.9005 12.9842 11.8701 12.9492C11.8396 12.9137 11.8243 12.8672 11.8242 12.8115V7.8584C11.8243 7.83763 11.8277 7.81873 11.832 7.80078V6.55566H15.457C14.8857 5.64188 14.1245 4.91315 13.1748 4.36914C12.2252 3.82499 11.1759 3.55189 10.0273 3.55176C8.23037 3.55176 6.70222 4.17986 5.44434 5.43359C4.18666 6.68726 3.55762 8.20911 3.55762 10C3.55762 11.7909 4.18666 13.3127 5.44434 14.5664C6.70222 15.8201 8.23037 16.4482 10.0273 16.4482C11.7042 16.4481 13.1421 15.8953 14.3398 14.791C15.5376 13.6866 16.2256 12.3276 16.4053 10.7158H18C17.8357 12.7837 16.9945 14.5154 15.4766 15.9092C13.9585 17.3027 12.1418 17.9998 10.0273 18C7.7986 18 5.90273 17.2225 4.3418 15.667C2.78067 14.1114 2.00005 12.2228 2 10.002C2.00001 7.78111 2.78067 5.89175 4.3418 4.33496C5.90273 2.77828 7.79859 2 10.0273 2C11.3478 2.00013 12.5589 2.296 13.6592 2.88672C14.759 3.47763 15.674 4.25894 16.4033 5.23047V2H17.9609V8.10742ZM9.08984 7.66797C9.15921 7.66812 9.21381 7.68911 9.25293 7.72949C9.29203 7.77006 9.31897 7.81831 9.33203 7.87402L10.8887 12.7734C10.893 12.7936 10.8955 12.8166 10.8955 12.8418C10.8954 12.8822 10.8824 12.9207 10.8564 12.9561C10.8304 12.9862 10.7977 13.0018 10.7588 13.002H10.0771C10.0122 13.0019 9.96411 12.9844 9.93359 12.9492C9.90305 12.9137 9.88373 12.8791 9.875 12.8486L9.59277 11.9961H7.74707L7.46484 12.8486C7.45612 12.8791 7.43777 12.9137 7.40723 12.9492C7.37672 12.9846 7.32786 13.0019 7.2627 13.002H6.58203C6.54295 13.0019 6.50949 12.9864 6.4834 12.9561C6.45742 12.9207 6.4444 12.8822 6.44434 12.8418C6.44435 12.8166 6.44685 12.7936 6.45117 12.7734L8.00879 7.87402C8.02189 7.81823 8.04868 7.77008 8.08789 7.72949C8.1271 7.68903 8.18139 7.66802 8.25098 7.66797H9.08984ZM7.98926 11.0127H9.34473L8.66992 8.81836L7.98926 11.0127Z\"fill=\"white\"/> </svg>`,\n 'ordering_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M2.0835 14.1666H3.75016V14.5833H2.91683V15.4166H3.75016V15.8333H2.0835V16.6666H4.5835V13.3333H2.0835V14.1666ZM2.91683 6.66665H3.75016V3.33331H2.0835V4.16665H2.91683V6.66665ZM2.0835 9.16665H3.5835L2.0835 10.9166V11.6666H4.5835V10.8333H3.0835L4.5835 9.08331V8.33331H2.0835V9.16665ZM6.25016 4.16665V5.83331H17.9168V4.16665H6.25016ZM6.25016 15.8333H17.9168V14.1666H6.25016V15.8333ZM6.25016 10.8333H17.9168V9.16665H6.25016V10.8333Z\"fill=\"white\"/> </svg>`,\n 'collapse_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M6.66683 15.8333H9.16683V19.1666H10.8335V15.8333H13.3335L10.0002 12.5L6.66683 15.8333ZM13.3335 4.16665H10.8335V0.833313H9.16683V4.16665H6.66683L10.0002 7.49998L13.3335 4.16665ZM3.3335 9.16665V10.8333H16.6668V9.16665H3.3335Z\"fill=\"white\"/> </svg>`,\n 'add_education_icon': `<svg width=\"19\" height=\"15\" viewBox=\"0 0 19 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.16667 0L0 5L3.33333 6.81667V11.8167L9.16667 15L15 11.8167V6.81667L16.6667 5.90833V11.6667H18.3333V5L9.16667 0ZM14.85 5L9.16667 8.1L3.48333 5L9.16667 1.9L14.85 5ZM13.3333 10.825L9.16667 13.1L5 10.825V7.725L9.16667 10L13.3333 7.725V10.825Z\" fill=\"white\"/>\n</svg>`\n}\n\n\n/**\n * Gets an icon from Candidate_Section_ICON and converts it to a data URL format\n * that can be used with the field-placeholder component.\n *\n * @param iconKey - The key from Candidate_Section_ICON (e.g., 'candidate_name', 'candidate_email')\n * @returns A data URL string for the SVG icon, or undefined if the key doesn't exist\n *\n * @example\n * getIconCandidateSection('candidate_name') // Returns 'data:image/svg+xml;charset=utf-8,...'\n */\nexport function getIconCandidateSection(iconKey: keyof typeof Candidate_Section_ICON): string | undefined {\n const svgString = Candidate_Section_ICON[iconKey];\n\n if (!svgString) {\n return undefined;\n }\n\n // Convert SVG string to data URL\n const encodedSvg = encodeURIComponent(svgString);\n return `data:image/svg+xml;charset=utf-8,${encodedSvg}`;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, OnInit, OnDestroy, AfterViewInit, OnChanges, SimpleChanges, ChangeDetectorRef, ViewChild, ElementRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { GeneralContainerComponent } from '../general-container/general-container.component';\nimport { ResponsiveColumnsComponent } from '../responsive-columns/responsive-columns.component';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport { ButtonComponent } from '../button/button.component';\nimport { EyeIconConfig, HeaderButton } from '../resume-header/resume-header.model';\nimport { LEFT_AND_RIGHT_ICON_CONSTANTS, NewResume_Header_Component_ICON } from '../utils/image-utils';\n// import { expandCollapse } from '../utils/animations';\n\n// Embedded SVG icons - using the same SVG provided by user for visibility_off\n// For visibility (open eye), we'll use a similar eye icon\nconst VISIBILITY_ICON_SVG = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"15\" viewBox=\"0 0 22 15\" fill=\"none\">\n <path d=\"M11 2C14.79 2 18.17 4.13 19.82 7.5C18.17 10.87 14.79 13 11 13C7.21 13 3.83 10.87 2.18 7.5C3.83 4.13 7.21 2 11 2ZM11 0C6 0 1.73 3.11 0 7.5C1.73 11.89 6 15 11 15C16 15 20.27 11.89 22 7.5C20.27 3.11 16 0 11 0ZM11 5C12.38 5 13.5 6.12 13.5 7.5C13.5 8.88 12.38 10 11 10C9.62 10 8.5 8.88 8.5 7.5C8.5 6.12 9.62 5 11 5ZM11 3C8.52 3 6.5 5.02 6.5 7.5C6.5 9.98 8.52 12 11 12C13.48 12 15.5 9.98 15.5 7.5C15.5 5.02 13.48 3 11 3Z\" fill=\"#717793\"/>\n</svg>`;\n\nconst VISIBILITY_OFF_ICON_SVG = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M11.6656 5.80832C15.3498 5.80832 18.6354 7.87886 20.2393 11.1548C19.6658 12.3407 18.859 13.3614 17.8966 14.1877L19.2673 15.5583C20.6185 14.3627 21.6878 12.8656 22.3585 11.1548C20.6768 6.88733 16.526 3.86415 11.6656 3.86415C10.431 3.86415 9.24508 4.05857 8.12719 4.41824L9.73113 6.02218C10.363 5.8958 11.0046 5.80832 11.6656 5.80832ZM10.6254 6.91649L12.6377 8.92871C13.1917 9.17173 13.6389 9.61888 13.8819 10.173L15.8941 12.1852C15.9719 11.8547 16.0302 11.5047 16.0302 11.1451C16.0399 8.73429 14.0763 6.7804 11.6656 6.7804C11.3059 6.7804 10.9657 6.829 10.6254 6.91649ZM1.95446 3.73778L4.55964 6.34296C2.97515 7.58723 1.72116 9.23977 0.972656 11.1548C2.65436 15.4222 6.80516 18.4454 11.6656 18.4454C13.1431 18.4454 14.5624 18.1635 15.865 17.6483L19.1895 20.9728L20.5601 19.6022L3.3251 2.35742L1.95446 3.73778ZM9.24509 11.0284L11.7822 13.5655C11.7433 13.5753 11.7045 13.585 11.6656 13.585C10.3241 13.585 9.23536 12.4963 9.23536 11.1548C9.23536 11.1062 9.24509 11.077 9.24509 11.0284ZM5.94 7.72332L7.64115 9.42447C7.41757 9.95911 7.2912 10.5424 7.2912 11.1548C7.2912 13.5655 9.25481 15.5292 11.6656 15.5292C12.278 15.5292 12.8612 15.4028 13.3862 15.1792L14.3388 16.1318C13.4834 16.3651 12.5891 16.5012 11.6656 16.5012C7.98138 16.5012 4.69574 14.4307 3.0918 11.1548C3.77226 9.7647 4.76378 8.61764 5.94 7.72332Z\" fill=\"#717793\"/>\n</svg>`;\n\n// Static flag to ensure icons are registered only once\nlet iconsRegistered = false;\n\n@Component({\n selector: 'al-newresumeheader',\n templateUrl: './newresumeheader.component.html',\n styleUrl: './newresumeheader.component.scss',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CdkAccordionModule,\n MatIconModule,\n MatTooltipModule,\n GeneralContainerComponent,\n ResponsiveColumnsComponent,\n CheckboxModule,\n ButtonComponent\n ],\n // animations: [expandCollapse]\n})\nexport class NewResumeHeaderComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n // Add your component properties here\n @Input() title: string = '';\n @Input() showHeaderCheckbox: boolean = true;\n @Input() headerCheckboxChecked: boolean = false;\n @Input() configEyeToggle: EyeIconConfig[] = [];\n @Input() hiddenSection: { headerSectionHidden: boolean } = { headerSectionHidden: false };\n\n /**\n * Whether the section is currently hidden.\n *\n * Priority:\n * 1. If any EyeIconConfig with canToggle is provided, use its `isHidden` flag\n * as the source of truth. This lets callers drive the state via configEyeToggle.\n * 2. Otherwise, fall back to `hiddenSection.headerSectionHidden` for backward compatibility.\n */\n get isSectionHidden(): boolean {\n if (this.configEyeToggle && this.configEyeToggle.length) {\n // First check for any config with isHidden === true (handles manual setting)\n const hiddenConfig = this.configEyeToggle.find(cfg => cfg && cfg.isHidden === true);\n if (hiddenConfig) {\n return true;\n }\n // Also check for canToggle === true configs for backward compatibility\n const toggleConfig = this.configEyeToggle.find(cfg => cfg && cfg.canToggle === true);\n if (toggleConfig) {\n return toggleConfig.isHidden === true;\n }\n }\n return this.hiddenSection?.headerSectionHidden === true;\n }\n @Input() buttonConfig: HeaderButton[] = [];\n @Input() isLargeScreen: boolean = true;\n private resizeListener?: () => void;\n @Input() popOutButtonLabel: string = 'Run Deep Extraction';\n @Input() popOutButtonIcon: string = 'auto_fix_high';\n @Input() popOutButtonTooltip: string = 'Deep Extraction';\n @Input() popOutButtonTooltipPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n @Input() showPopOutPanel: boolean = false;\n @Input() popOutMessage: string = 'Takes a little longer, but deals with tricky resumes much better than fast extraction.';\n @Input() dataTestId?: string;\n\n // Computed property for pop-out visibility\n get shouldShowPopOut(): boolean {\n return this.showPopOutPanel && !this.isPopOutDismissed;\n }\n\n /**\n * Combined state for expand/collapse animation.\n * Returns true when the accordion body should be expanded and visible.\n * Returns false when collapsed (accordion) or hidden (eye icon).\n * This is used by the expandCollapse animation trigger.\n */\n // get isBodyExpanded(): boolean {\n // return this._isAccordionExpanded && !this.isSectionHidden;\n // }\n\n /**\n * Reference to the accordion item instance from ViewChild.\n * Used to track the accordion expansion state for animations.\n */\n // @ViewChild('accordionItem', { static: true }) accordionItem: any;\n\n /**\n * Local tracking of accordion expanded state for animation.\n * This is the single source of truth for the animation state.\n * Made public for template access (chevron icon, aria attributes).\n */\n _isAccordionExpanded: boolean = true;\n @Output() titleChange = new EventEmitter<string>();\n @Output() sectionToggled = new EventEmitter<boolean>();\n @Output() headerCheckboxChange = new EventEmitter<boolean>();\n @Output() showHideToggleSection = new EventEmitter<{ isHidden: boolean; accordionItem?: any; config: EyeIconConfig }>();\n @Output() buttonClicked = new EventEmitter<HeaderButton>();\n @Output() popOutButtonClick = new EventEmitter<void>();\n\n isTitleEditing: boolean = false;\n editedTitle: string = '';\n isInputFocused: boolean = false;\n isMenuVisible: boolean = false;\n isPopOutDismissed: boolean = false;\n isPopOutNarrow: boolean = false; // Track if pop-out panel is ≤ 440px\n private clickOutsideListener?: (event: Event) => void;\n private resizeObserver?: ResizeObserver;\n private popOutResizeObserver?: ResizeObserver;\n @ViewChild('titleInput') titleInput?: ElementRef<HTMLInputElement>;\n @ViewChild('accordionHeader', { read: ElementRef }) accordionHeader?: ElementRef<HTMLElement>;\n @ViewChild('generalContainer', { read: ElementRef }) generalContainer?: ElementRef<HTMLElement>;\n @ViewChild('popOutPanel', { read: ElementRef }) popOutPanel?: ElementRef<HTMLElement>;\n\n constructor(\n private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n private iconRegistry: MatIconRegistry\n ) {\n // Register icons synchronously - this must happen before template rendering\n this.registerIcons();\n }\n\n private registerIcons(): void {\n try {\n // Always register icons - MatIconRegistry handles duplicates gracefully\n // This ensures icons are available even if registration happened in a different component instance\n this.iconRegistry.addSvgIconLiteral(\n 'visibility',\n this.sanitizer.bypassSecurityTrustHtml(VISIBILITY_ICON_SVG)\n );\n this.iconRegistry.addSvgIconLiteral(\n 'visibility_off',\n this.sanitizer.bypassSecurityTrustHtml(VISIBILITY_OFF_ICON_SVG)\n );\n // Register edit icon from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'edit_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['edit_icon'])\n );\n // Register add left and right icons from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'add_left-icon_section',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['add_left-icon_section'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'add-right_icon_section',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['add-right_icon_section'])\n );\n // Register font_case_icon from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'font_case_icon',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['font_case_icon'])\n );\n\n this.iconRegistry.addSvgIconLiteral(\n 'retry_AI_icon',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['retry_AI_icon'])\n );\n // Register ordering_icon from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'ordering_icon',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['ordering_icon'])\n );\n // Register collapse_icon from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'collapse_icon',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['collapse_icon'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'add_education_icon',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['add_education_icon'])\n );\n\n\n if (!iconsRegistered) {\n iconsRegistered = true;\n console.log('Visibility icons registered successfully');\n }\n } catch (error) {\n console.error('Failed to register new resume header icons:', error);\n }\n }\n\n // toggleAccordion(accordionItem: any) {\n // // Update local state first - this triggers the animation\n // this._isAccordionExpanded = !this._isAccordionExpanded;\n\n // // Sync with cdk-accordion-item\n // if (this._isAccordionExpanded) {\n // accordionItem.open();\n // } else {\n // accordionItem.close();\n // }\n\n // this.sectionToggled.emit(this._isAccordionExpanded);\n // // Trigger change detection to ensure animation updates\n // this.cdr.detectChanges();\n // }\n\n toggleAccordion(accordionItem: any) {\n accordionItem.toggle();\n this.sectionToggled.emit(accordionItem.expanded);\n }\n\n /**\n * Handles clicks on the eye icon.\n *\n * - Toggles the isHidden flag on the corresponding EyeIconConfig (if canToggle is true)\n * - Keeps hiddenSection.headerSectionHidden in sync for backwards compatibility\n * - When showing a hidden section, also expands the accordion for smooth animation\n * - Emits the showHideToggleSection event with the *new* isHidden state\n */\n onEyeIconClick(\n currentHidden: boolean,\n accordionItem: any,\n config: EyeIconConfig\n ): void {\n const nextHidden = !currentHidden;\n\n // Update the matching config in the local array so isSectionHidden reflects the new state\n // Create a new array to ensure Angular's change detection picks up the change\n if (this.configEyeToggle && config) {\n const idx = this.configEyeToggle.indexOf(config);\n if (idx !== -1 && this.configEyeToggle[idx].canToggle) {\n // Create new array and new object to trigger change detection\n // this.configEyeToggle = [\n // ...this.configEyeToggle.slice(0, idx),\n // { ...this.configEyeToggle[idx], isHidden: nextHidden },\n // ...this.configEyeToggle.slice(idx + 1)\n // ];\n this.configEyeToggle[idx] = {\n ...this.configEyeToggle[idx],\n isHidden: nextHidden,\n };\n }\n }\n\n // Keep legacy hiddenSection flag in sync\n this.hiddenSection = {\n headerSectionHidden: nextHidden,\n };\n\n // Note: We do NOT change the accordion expansion state when toggling visibility.\n // The accordion remains in its current state - only visibility changes.\n // This maintains a single source of truth for each state.\n\n this.showHideToggleSection.emit({\n isHidden: nextHidden,\n accordionItem,\n config,\n });\n\n // Mark for check to ensure child components receive the updated state\n // This is critical for resume-entries to update its is-hidden class\n this.cdr.markForCheck();\n }\n\n onHeaderCheckboxChange(checked: boolean) {\n this.headerCheckboxChecked = checked;\n this.headerCheckboxChange.emit(checked);\n }\n\n /**\n * Resolves the left and right icon names for a button based on its configuration.\n * This centralizes all icon mapping logic, making it easier to maintain.\n *\n * @param btn - The HeaderButton configuration\n * @returns An object with leftIcon and rightIcon properties\n */\n getButtonIcons(btn: HeaderButton): { leftIcon: string | null | undefined; rightIcon: string | null | undefined } {\n // Check if this is an \"add\" button that should use special icons\n // const isAddButton = btn.leftIcon === 'add' || btn.dataTestId === 'add-education-button';\n\n // if (isAddButton) {\n // return {\n // leftIcon: 'add_left-icon_section',\n // rightIcon: 'add-right_icon_section'\n // };\n // }\n\n // Check if this is a \"menu\" button - keep the menu icon as is\n if (btn.leftIcon === 'font_case_icon') {\n return {\n leftIcon: 'font_case_icon',\n rightIcon: btn.rightIcon\n };\n }\n\n // Return the button's original icon configuration\n return {\n leftIcon: btn.leftIcon,\n rightIcon: btn.rightIcon\n };\n }\n\n /**\n * Gets the tooltip text for a button based on its configuration.\n * Tooltips follow title case (e.g., \"Menu\", \"Add Section\").\n *\n * @param btn - The HeaderButton configuration\n * @returns The tooltip text or undefined\n */\n // getButtonTooltip(btn: HeaderButton): string | undefined {\n // // Check if this is an \"add\" button that should have a specific tooltip\n // const isAddButton = btn.leftIcon === 'add' || btn.dataTestId === 'add-education-button';\n\n // if (isAddButton) {\n // return 'Add Section';\n // }\n\n // // Check if this is a \"font_case_icon\" button\n // if (btn.leftIcon === 'font_case_icon') {\n // return 'Font Case';\n // }\n\n // // Check if this is a \"retry_AI_icon\" button\n // if (btn.leftIcon === 'retry_AI_icon' || btn.dataTestId === 'refresh-button') {\n // return 'Retry initial Extraction';\n // }\n\n // // Check if this is a \"collapse_icon\" button\n // if (btn.leftIcon === 'collapse_icon' || btn.dataTestId === 'collapse-button') {\n // return 'Collapse Description';\n // }\n\n // // Check if this is an \"ordering_icon\" button\n // if (btn.leftIcon === 'ordering_icon') {\n // return 'Education Ordering';\n // }\n\n // // Check if this is the \"Run Deep Extraction\" button\n // if (btn.dataTestId === 'header-run-deep-extraction') {\n // return 'Deep Extraction';\n // }\n\n // return undefined;\n // }\n\n onButtonClick(btn: HeaderButton, event: Event) {\n // If button has a custom onClick handler, call it\n if (btn.onClick) {\n btn.onClick(event);\n }\n\n // Special case: Deep Extraction header button (identified by dataTestId)\n if (btn.dataTestId === 'header-run-deep-extraction') {\n this.popOutButtonClick.emit();\n }\n\n // If button doesn't have dropdown, emit the buttonClicked event\n if (!btn.hasDropDown) {\n this.buttonClicked.emit(btn);\n }\n }\n\n onDropdownSelect(btn: HeaderButton, value: any) {\n if (btn.hasDropDown && btn.dropdownItems) {\n // Find the selected option\n const selectedOption = btn.dropdownItems.find((item) => {\n return item.value === value || item.label === value;\n });\n\n // If the option has a custom function, call it\n if (selectedOption?.function) {\n selectedOption.function();\n }\n\n // Always emit the buttonClicked event for tracking\n this.buttonClicked.emit(btn);\n }\n }\n\n onTitleClick() {\n if (!this.isTitleEditing) {\n this.isTitleEditing = true;\n this.editedTitle = this.title;\n // Focus the input after view update\n setTimeout(() => {\n this.titleInput?.nativeElement?.focus();\n this.titleInput?.nativeElement?.select();\n }, 0);\n }\n }\n\n onTitleFocus() {\n this.isInputFocused = true;\n }\n\n onTitleBlur() {\n this.isInputFocused = false;\n this.saveTitle();\n }\n\n onTitleKeyPress(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.saveTitle();\n } else if (event.key === 'Escape') {\n this.cancelTitleEdit();\n }\n }\n\n saveTitle() {\n if (this.isTitleEditing) {\n this.title = this.editedTitle;\n this.titleChange.emit(this.title);\n this.isTitleEditing = false;\n }\n }\n\n cancelTitleEdit() {\n this.editedTitle = this.title;\n this.isTitleEditing = false;\n }\n\n toggleMenu() {\n this.isMenuVisible = !this.isMenuVisible;\n }\n\n handleClickOutside(event: Event) {\n const target = event.target as HTMLElement;\n if (!target.closest('.hover-menu-container') && !target.closest('.slide-out-panel')) {\n this.isMenuVisible = false;\n }\n }\n\n ngOnInit(): void {\n // Initialize component\n this.editedTitle = this.title;\n // Ensure hiddenSection is properly initialized\n if (!this.hiddenSection) {\n this.hiddenSection = { headerSectionHidden: false };\n }\n // Check screen size and set up resize listener\n this.checkScreenSize();\n this.resizeListener = () => this.checkScreenSize();\n window.addEventListener('resize', this.resizeListener);\n // Add click outside listener to close menu on small screens\n this.clickOutsideListener = (event: Event) => this.handleClickOutside(event);\n document.addEventListener('click', this.clickOutsideListener);\n }\n\n private checkScreenSize() {\n // Check container width only - ignore window width\n let containerWidth = 0;\n\n // Try to get container width from general container first, then fallback to header\n if (this.generalContainer?.nativeElement) {\n containerWidth = this.generalContainer.nativeElement.offsetWidth ||\n (this.generalContainer.nativeElement as any).clientWidth || 0;\n } else if (this.accordionHeader?.nativeElement) {\n containerWidth = this.accordionHeader.nativeElement.offsetWidth ||\n this.accordionHeader.nativeElement.clientWidth || 0;\n }\n\n // Set isLargeScreen to true only if container is >= 500px\n this.isLargeScreen = containerWidth >= 500;\n\n // Close menu when screen becomes large\n if (this.isLargeScreen) {\n this.isMenuVisible = false;\n }\n }\n\n private checkPopOutSize() {\n // Check pop-out panel width\n if (this.popOutPanel?.nativeElement) {\n const popOutWidth = this.popOutPanel.nativeElement.offsetWidth ||\n this.popOutPanel.nativeElement.clientWidth || 0;\n this.isPopOutNarrow = popOutWidth <= 440;\n this.cdr.detectChanges();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Trigger change detection when configEyeToggle changes to update icon\n if (changes['configEyeToggle']) {\n // Ensure icons are registered before change detection\n this.registerIcons();\n // Force change detection to update the view when configEyeToggle changes\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 0);\n }\n // Reset dismissed flag when showPopOutPanel changes to true\n if (changes['showPopOutPanel'] && this.showPopOutPanel) {\n this.isPopOutDismissed = false;\n // Setup ResizeObserver for pop-out panel when it becomes visible\n setTimeout(() => {\n if (this.popOutPanel?.nativeElement && !this.popOutResizeObserver) {\n this.checkPopOutSize();\n this.popOutResizeObserver = new ResizeObserver(() => {\n this.checkPopOutSize();\n });\n this.popOutResizeObserver.observe(this.popOutPanel.nativeElement);\n }\n }, 0);\n }\n // Close menu when isLargeScreen becomes true (large screen)\n if (changes['isLargeScreen'] && this.isLargeScreen) {\n this.isMenuVisible = false;\n }\n // Ensure hiddenSection is properly initialized\n if (changes['hiddenSection']) {\n if (!this.hiddenSection) {\n this.hiddenSection = { headerSectionHidden: false };\n }\n // Force change detection to update the view\n this.cdr.detectChanges();\n }\n }\n\n dismissPopOut() {\n // Hide the panel by setting dismissed flag\n this.isPopOutDismissed = true;\n }\n\n get sanitizedMessage(): SafeHtml {\n const message = this.popOutMessage || 'Takes a little longer, but deals with tricky resumes much better than fast extraction.';\n // Replace \"Click here\" with a styled link and add line break before it\n const processedMessage = message.replace(\n /Click here/g,\n '<br><a href=\"#\" class=\"pop-out-link\">Click here</a>'\n );\n return this.sanitizer.bypassSecurityTrustHtml(processedMessage);\n }\n\n ngAfterViewInit(): void {\n // Sync initial accordion state from the ViewChild reference\n // Note: cdk-accordion-item starts with expanded=true from template\n // Our local state should match this initial value\n // this._isAccordionExpanded = true;\n // Ensure icons are registered after view init\n this.registerIcons();\n // Force change detection to ensure icon renders\n setTimeout(() => {\n this.cdr.detectChanges();\n\n // Initial check after view init\n this.checkScreenSize();\n this.cdr.detectChanges();\n\n // Setup ResizeObserver to watch container size\n // Try general container first, then fallback to header\n const elementToObserve = this.generalContainer?.nativeElement ||\n this.accordionHeader?.nativeElement;\n\n if (elementToObserve) {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkScreenSize();\n this.cdr.detectChanges();\n });\n this.resizeObserver.observe(elementToObserve);\n }\n\n // Setup ResizeObserver to watch pop-out panel size\n if (this.popOutPanel?.nativeElement) {\n this.checkPopOutSize();\n this.popOutResizeObserver = new ResizeObserver(() => {\n this.checkPopOutSize();\n });\n this.popOutResizeObserver.observe(this.popOutPanel.nativeElement);\n }\n }, 0);\n }\n\n ngOnDestroy(): void {\n // Cleanup\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n }\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n if (this.popOutResizeObserver) {\n this.popOutResizeObserver.disconnect();\n }\n if (this.clickOutsideListener) {\n document.removeEventListener('click', this.clickOutsideListener);\n }\n }\n}\n\n","<al-general-container #generalContainer [borderRadius]=\"'0'\" [borderPosition]=\"'none'\" [boxShadow]=\"false\"\n [padding]=\"'0'\" [width]=\"'100%'\"><cdk-accordion class=\"example-accordion\"><cdk-accordion-item\n #accordionItem=\"cdkAccordionItem\" [expanded]=\"true\" class=\"example-accordion-item\">\n <div class=\"example-accordion-item-header\" #accordionHeader\n [ngClass]=\"{'header-hidden': isSectionHidden, 'header-with-bottom-margin': !showPopOutPanel}\">\n <!-- Normal header layout (shows when section is NOT hidden) --><ng-container\n *ngIf=\"!isSectionHidden; else hiddenHeaderLayout\"><al-responsive-columns [stackAt]=\"0\" [gap]=\"'12px'\"\n [padding]=\"'8px 12px'\">\n <div left>\n <button (click)=\"toggleAccordion(accordionItem)\" tabindex=\"0\" class=\"toggle-button align-center\"\n [attr.aria-expanded]=\"accordionItem.expanded\"\n [matTooltip]=\"accordionItem.expanded ? 'Collapse' : 'Expand'\" matTooltipPosition=\"above\">\n <!-- When section is OPEN (expanded === true), show an UP chevron.\n When section is CLOSED, show a DOWN chevron. -->\n <span class=\"material-icons-outlined\" *ngIf=\"accordionItem.expanded\">\n expand_less\n </span>\n <span class=\"material-icons-outlined\" *ngIf=\"!accordionItem.expanded\">\n expand_more\n </span>\n </button>\n <ng-content select=\"[header-left]\"></ng-content>\n </div>\n <div center><al-responsive-columns [stackAt]=\"0\" [gap]=\"'12px'\" [padding]=\"'0'\" [leftWidth]=\"'auto'\"\n [rightWidth]=\"'32px'\" [ngClass]=\"{'input-focused': isInputFocused}\">\n <div left>\n <div class=\"edit-input-group\" [ngClass]=\"{'input-focused': isInputFocused}\">\n <div class=\"content_width\"><span *ngIf=\"!isTitleEditing\" class=\"title-text\"\n (click)=\"onTitleClick()\">\n {{ title || 'Click to edit' }}\n </span><input *ngIf=\"isTitleEditing\" #titleInput type=\"text\" [(ngModel)]=\"editedTitle\"\n (focus)=\"onTitleFocus()\" (blur)=\"onTitleBlur()\" (keydown)=\"onTitleKeyPress($event)\"\n class=\"title-input onfocus-input-text\" /><ng-content select=\"[header-center-left]\"></ng-content>\n </div><mat-icon class=\"edit-icon\" svgIcon=\"edit_icon\" matTooltip=\"Edit title\"\n matTooltipPosition=\"above\" (click)=\"onTitleClick()\"></mat-icon>\n </div>\n </div>\n <div center><ng-content select=\"[header-center-center]\"></ng-content>\n <!-- Header buttons for large screens (including Deep Extraction via buttonConfig) --><ng-container\n *ngIf=\"isLargeScreen\"><ng-container\n *ngTemplateOutlet=\"headerButtonsTemplate; context: { buttons: buttonConfig }\"></ng-container></ng-container>\n <!-- Menu trigger and slide-out panel for small screens only -->\n <div class=\"hover-menu-container\" *ngIf=\"!isLargeScreen\">\n <div class=\"menu-trigger\" (click)=\"toggleMenu()\"><al-button buttonType=\"icon-label\" iconOnly\n size=\"header\" category=\"grey\" leftIcon=\"more_vert\" aria-label=\"More options\"\n [dataTestId]=\"'resume-header-more-menu'\"></al-button></div>\n <div class=\"slide-out-panel\" [class.visible]=\"isMenuVisible\">\n <div class=\"fit-panel\"><ng-container\n *ngTemplateOutlet=\"headerButtonsTemplate; context: { buttons: buttonConfig }\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n <div right><ng-content select=\"[header-center-right]\"></ng-content>\n <!-- Eye icon - uses actual isHidden value from config, always visible --><ng-container\n *ngIf=\"configEyeToggle && configEyeToggle.length > 0\"><ng-container\n *ngFor=\"let eyeConfig of configEyeToggle\"><ng-container *ngIf=\"eyeConfig\"><ng-container\n *ngTemplateOutlet=\"eyeIconTemplate; context: { isHidden: eyeConfig.isHidden === true, accordionItem: accordionItem, configEyeToggle: eyeConfig }\"></ng-container></ng-container></ng-container></ng-container>\n </div>\n </al-responsive-columns></div>\n <div right><al-checkbox *ngIf=\"showHeaderCheckbox\" [checked]=\"headerCheckboxChecked\" [showLabels]=\"false\"\n (change)=\"onHeaderCheckboxChange($event)\"></al-checkbox><ng-content\n select=\"[header-right]\"></ng-content></div>\n </al-responsive-columns></ng-container>\n <!-- Hidden header layout (shows when section IS hidden) --><ng-template\n #hiddenHeaderLayout><al-responsive-columns [stackAt]=\"0\" [gap]=\"'12px'\" [padding]=\"'8px 12px'\">\n <div left>\n <!-- Toggle button hidden when section is hidden --><ng-content select=\"[header-left]\"></ng-content>\n </div>\n <div center><al-responsive-columns [stackAt]=\"0\" [gap]=\"'12px'\" [padding]=\"'0'\" [leftWidth]=\"'auto'\"\n [rightWidth]=\"'32px'\">\n <div left>\n <div class=\"edit-input-group hide-header-title\">\n <div class=\"content_width\"><span class=\"title-text header-text-turncate\">\n {{ title }}\n </span></div>\n </div>\n </div>\n <div center>\n <div class=\"hidden-write\">Section hidden</div>\n </div>\n <div right><ng-content select=\"[header-center-right]\"></ng-content>\n <!-- Eye icon - uses actual isHidden value from config, always visible --><ng-container\n *ngIf=\"configEyeToggle && configEyeToggle.length > 0\"><ng-container\n *ngFor=\"let eyeConfig of configEyeToggle\"><ng-container *ngIf=\"eyeConfig\"><ng-container\n *ngTemplateOutlet=\"eyeIconTemplate; context: { isHidden: eyeConfig.isHidden === true, accordionItem: accordionItem, configEyeToggle: eyeConfig }\"></ng-container></ng-container></ng-container></ng-container>\n </div>\n </al-responsive-columns></div>\n <div right>\n <!-- Checkbox hidden when section is hidden --><ng-content select=\"[header-right]\"></ng-content>\n </div>\n </al-responsive-columns></ng-template>\n </div>\n <!-- Accordion body with expand/collapse animation -->\n <div class=\"example-accordion-item-body-wrapper\">\n <div class=\"example-accordion-item-body\" *ngIf=\"accordionItem.expanded && !isSectionHidden\">\n <!-- Pop-out Panel -->\n <div *ngIf=\"shouldShowPopOut\" #popOutPanel class=\"pop-out-panel\"\n [ngClass]=\"{'pop-out-narrow': isPopOutNarrow}\">\n <div class=\"pop-out-content\">\n <al-button [labelText]=\"popOutButtonLabel\" [rightIcon]=\"popOutButtonIcon\" [buttonType]=\"'icon-label'\"\n [category]=\"'gradient'\" [size]=\"'xs'\" [iconOnly]=\"false\" (onClick)=\"popOutButtonClick.emit()\"\n [dataTestId]=\"'pop-out-run-deep-extraction'\" [title]=\"popOutButtonLabel\"></al-button>\n <p class=\"pop-out-message\" [innerHTML]=\"sanitizedMessage\"></p>\n <button type=\"button\" class=\"pop-out-close\" (click)=\"dismissPopOut()\"\n aria-label=\"Close pop-out panel\"><span class=\"material-icons-outlined\">close</span></button>\n </div>\n </div>\n <!-- Single body content slot - child component will handle 3-column layout internally -->\n <ng-content></ng-content>\n </div>\n </div>\n </cdk-accordion-item></cdk-accordion></al-general-container><ng-template #headerButtonsTemplate\n let-buttons=\"buttons\" let-handleClick=\"handleClick\"><ng-container *ngFor=\"let btn of buttonConfig\"><al-button\n *ngIf=\"!btn.displayCondition || btn.displayCondition()\" [color]=\"btn.color\" [outline]=\"btn.outline\"\n [size]=\"btn.size\" [iconOutlined]=\"btn.iconOutlined\" [labelText]=\"btn.labelText\"\n [leftIcon]=\"getButtonIcons(btn).leftIcon\" [rightIcon]=\"getButtonIcons(btn).rightIcon\"\n [dataTestId]=\"btn.dataTestId\" [hasDropDown]=\"btn.hasDropDown\" [dropdownItems]=\"btn.dropdownItems\"\n [buttonType]=\"'icon-label'\" [iconOnly]=\"!btn.labelText\" [tooltip]=\"btn.tooltip\"\n [tooltipPosition]=\"btn.tooltipPosition || 'above'\" (onClick)=\"onButtonClick(btn, $event)\"\n (optionSelect)=\"onDropdownSelect(btn, $event)\"></al-button></ng-container></ng-template><ng-template\n #eyeIconTemplate let-isHidden=\"isHidden\" let-accordionItem=\"accordionItem\" let-configEyeToggle=\"configEyeToggle\">\n <div class=\"mat-checkbox-margin align-center\"\n [attr.data-test-id]=\"isHidden ? 'section-show-eye-div' : 'section-hide-eye-div'\"\n style=\"display: flex; align-items: center; justify-content: center;\"><mat-icon\n class=\"delete-multiple mat-fab.mat-accent eye-icon\" [svgIcon]=\"isHidden ? 'visibility' : 'visibility_off'\"\n [matTooltip]=\"configEyeToggle?.tooltips?.[isHidden ? 'collapse' : 'expand'] || (isHidden ? 'Show Section' : 'Hide Section')\"\n [matTooltipPosition]=\"configEyeToggle?.tooltips?.position || 'above'\"\n [attr.aria-label]=\"configEyeToggle?.ariaLabels?.[isHidden ? 'collapsed' : 'expanded'] || (isHidden ? 'Show section' : 'Hide section')\"\n (click)=\"onEyeIconClick(isHidden, accordionItem, configEyeToggle)\"\n [attr.data-test-id]=\"isHidden ? 'section-show-eye-icon' : 'section-hide-eye-icon'\"\n style=\"cursor: pointer; display: inline-block; width: 24px; height: 24px; font-size: 24px; color: #717793;\"\n [style.opacity]=\"1\" [style.visibility]=\"'visible'\"></mat-icon></div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n// import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { NewResumeHeaderComponent } from './newresumeheader.component';\n\n@NgModule({\n imports: [CommonModule, NewResumeHeaderComponent],\n exports: [NewResumeHeaderComponent],\n})\nexport class NewResumeHeaderModule { }\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, HostBinding, OnInit, OnDestroy } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n// Define a type for the possible status values for better type safety.\nexport type LoaderStatus = 'analyzing' | 'gathering' | 'processing' | 'applying' | 'done';\n\n@Component({\n selector: 'al-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n imports: [CommonModule, MatIconModule],\n standalone: true,\n})\nexport class LoaderComponent implements OnInit, OnDestroy {\n /**\n * Optional data-testid for QA/testing. If not provided, will auto-generate with 'loader_' prefix.\n */\n @Input() dataTestId?: string;\n public effectiveDataTestId!: string;\n\n private genLoaderId(): string {\n return 'loader_' + Math.random().toString(36).slice(2, 10);\n }\n\n \n @Input() status: LoaderStatus = 'analyzing';\n\n /**\n * Optional custom text to display instead of the default status text.\n */\n @Input() customText?: string;\n\n /**\n * Whether to show the text below the loader icon.\n * @default true\n */\n @Input() showText = true;\n\n /**\n * Size of the loader component.\n * @default 'medium'\n */\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether to automatically loop through all statuses.\n * @default false\n */\n @Input() autoLoop: boolean = false;\n\n /**\n * Duration in milliseconds for each status when auto-looping.\n * @default 3000\n */\n @Input() loopDuration: number = 3000;\n\n /**\n * Custom text array for each status. If provided, overrides default status text.\n * Array should have 5 elements corresponding to: analyzing, gathering, processing, applying, done\n */\n @Input() customTexts?: string[];\n\n /**\n * Whether to show completion state and stop looping when reaching 'done' status.\n * @default false\n */\n @Input() completeOnDone: boolean = false;\n\n // Private properties for looping functionality\n private loopInterval?: number;\n private currentLoopIndex = 0;\n private readonly statusOrder: LoaderStatus[] = ['analyzing', 'gathering', 'processing', 'applying', 'done'];\n\n /**\n * This @HostBinding adds a class to the component's host element (<al-loader>)\n * that matches the current status. For example, if status is 'processing',\n * it adds `class=\"status-processing\"`. This is what our CSS uses to show the right icon.\n */\n @HostBinding('class')\n get statusClass() {\n const classes = [`status-${this.status}`, `size-${this.size}`];\n if (this.autoLoop) {\n classes.push('auto-loop');\n }\n return classes.join(' ');\n }\n\n /**\n * Get the display text for the current status\n */\n get displayText(): string {\n if (this.customText) {\n return this.customText;\n }\n \n // Use custom texts array if provided\n if (this.customTexts && this.customTexts.length >= 5) {\n const statusIndex = this.statusOrder.indexOf(this.status);\n if (statusIndex >= 0) {\n return this.customTexts[statusIndex];\n }\n }\n \n switch (this.status) {\n case 'analyzing':\n return 'Analyzing...';\n case 'gathering':\n return 'Gathering...';\n case 'processing':\n return 'Processing...';\n case 'applying':\n return 'Applying...';\n case 'done':\n return 'Done!';\n default:\n return '';\n }\n }\n\n constructor() { }\n\n ngOnInit() {\n // Generate or use provided dataTestId\n this.updateEffectiveDataTestId();\n if (this.autoLoop) {\n this.startLoop();\n }\n }\n\n ngOnChanges() {\n this.updateEffectiveDataTestId();\n }\n\n private updateEffectiveDataTestId() {\n this.effectiveDataTestId = this.dataTestId && this.dataTestId.trim() ? this.dataTestId : this.genLoaderId();\n }\n\n ngOnDestroy() {\n this.stopLoop();\n }\n\n /**\n * Start the auto-loop functionality\n */\n startLoop() {\n if (this.loopInterval) {\n this.stopLoop();\n }\n \n // Set initial status\n this.status = this.statusOrder[this.currentLoopIndex];\n \n this.loopInterval = window.setInterval(() => {\n this.currentLoopIndex = (this.currentLoopIndex + 1) % this.statusOrder.length;\n this.status = this.statusOrder[this.currentLoopIndex];\n \n // If completeOnDone is true and we reach 'done', stop looping\n if (this.completeOnDone && this.status === 'done') {\n this.stopLoop();\n }\n }, this.loopDuration);\n }\n\n /**\n * Stop the auto-loop functionality\n */\n stopLoop() {\n if (this.loopInterval) {\n clearInterval(this.loopInterval);\n this.loopInterval = undefined;\n }\n }\n\n /**\n * Manually trigger completion (sets status to 'done' and stops loop)\n */\n triggerCompletion() {\n this.stopLoop();\n this.status = 'done';\n }\n\n /**\n * Reset the loader to the beginning\n */\n reset() {\n this.stopLoop();\n this.currentLoopIndex = 0;\n this.status = this.statusOrder[0];\n if (this.autoLoop) {\n this.startLoop();\n }\n }\n}\n","<div class=\"loader-container\" [attr.data-testid]=\"effectiveDataTestId\">\n <!-- Brain Icon -->\n <mat-icon class=\"loader-icon font-icon icon-brain\" fontSet=\"material-icons\">psychology</mat-icon>\n <!-- Settings/Gear Icon -->\n <mat-icon class=\"loader-icon font-icon icon-cog\" fontSet=\"material-icons-outlined\">settings</mat-icon>\n <!-- Document Icon -->\n <mat-icon class=\"loader-icon font-icon icon-document\" fontSet=\"material-icons\">article</mat-icon>\n <!-- Wand Icon -->\n <mat-icon class=\"loader-icon font-icon icon-wand\" fontSet=\"material-icons\">auto_awesome</mat-icon>\n <!-- Settings Icon -->\n <mat-icon class=\"loader-icon font-icon icon-tick\" fontSet=\"material-icons\">build</mat-icon>\n</div>\n<div class=\"text-container\" *ngIf=\"showText\">\n <span class=\"loader-text\">{{ displayText }}</span>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoaderComponent } from './loader.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, LoaderComponent],\n exports: [LoaderComponent],\n})\nexport class LoaderModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // register the CSS class alias so <mat-icon> knows about it…\n this.iconRegistry.registerFontClassAlias(\n 'material-symbols-outlined',\n 'material-symbols-outlined'\n );\n }\n}\n","\nimport { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\n/**\n * List of registered SVG icon names that should use [svgIcon] binding\n * instead of font icon binding.\n */\nconst REGISTERED_SVG_ICONS = [\n 'candidate_name',\n 'candidate_gender',\n 'candidate_phonenumber',\n 'candidate_email',\n 'candidate_linkedin',\n 'candidate_address',\n 'candidate_experience',\n 'candidate_most_recent',\n 'hide_section',\n 'visibility_off',\n 'unhide_section',\n 'visibility',\n 'subrole',\n 'subrole_icon_white',\n 'year_month_icon',\n 'year_only_icon',\n 'multi-drag-drop',\n 'arrow_downward',\n 'delete-icon',\n 'delete',\n];\n\n@Component({\n selector: 'lib-field-placeholder',\n standalone: true,\n imports: [CommonModule, MatTooltipModule, MatIconModule],\n templateUrl: './field-placeholder.component.html',\n styleUrls: ['./field-placeholder.component.scss'],\n})\nexport class FieldPlaceholderComponent {\n @Input() value: string | null | undefined = '';\n @Input() placeholder: string = '';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n @Input() testId: string = '';\n /** Optional CSS class(es) applied when showing the value text */\n @Input() valueClass: string | string[] | Set<string> | { [klass: string]: any } = '';\n /** Optional CSS class(es) applied when showing the placeholder text */\n @Input() placeholderClass: string | string[] | Set<string> | { [klass: string]: any } = '';\n /**\n * The image path or icon to display in the field row (left column).\n */\n @Input() icon: string = '';\n /**\n * The alt text for the icon image (for accessibility).\n */\n @Input() iconAlt: string = '';\n /**\n * The font set for Material icons (e.g., 'material-icons', 'material-icons-outlined').\n */\n @Input() iconFont: string = 'material-icons';\n /**\n * When true, applies the 'field-row-compact' class for 28px height.\n * Only applies when explicitly set to true from a parent component.\n */\n @Input() compact?: boolean;\n /**\n * When true, applies the 'field-row-padded' class for 8px top and bottom padding.\n * Only applies when explicitly set to true from a parent component.\n */\n @Input() padded?: boolean;\n\n isMaterialIcon(icon: string): boolean {\n return !!icon && !icon.includes('/') && !icon.includes('.');\n }\n\n isRegisteredSvgIcon(icon: string): boolean {\n return !!icon && REGISTERED_SVG_ICONS.includes(icon);\n }\n}\n","<div class=\"field-row\" [class.field-row-compact]=\"compact === true\" [class.field-row-padded]=\"padded === true\">\n <ng-container *ngIf=\"icon\">\n <span class=\"field-icon\">\n <ng-container *ngIf=\"icon === 'no-icon'\">\n <!-- Transparent spacer to maintain icon alignment -->\n </ng-container>\n <ng-container *ngIf=\"isRegisteredSvgIcon(icon) && icon !== 'no-icon'\">\n <mat-icon [svgIcon]=\"icon\"></mat-icon>\n </ng-container>\n <ng-container *ngIf=\"isMaterialIcon(icon) && !isRegisteredSvgIcon(icon) && icon !== 'no-icon'\">\n <mat-icon [fontSet]=\"iconFont\">{{ icon }}</mat-icon>\n </ng-container>\n <ng-container *ngIf=\"!isMaterialIcon(icon) && !isRegisteredSvgIcon(icon) && icon !== 'no-icon'\">\n <img [src]=\"icon\" [alt]=\"iconAlt || 'icon'\" />\n </ng-container>\n </span>\n </ng-container>\n <span [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!tooltip\"\n [ngClass]=\"value ? ['value-text', valueClass] : ['placeholder-text', placeholderClass]\" [attr.data-test-id]=\"testId\"\n [innerHTML]=\"value ? value : placeholder\">\n </span>\n\n</div>","// Wrapper for Angular Material mat-checkbox (template for candidate section)\nimport { AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { Candidate_Section_ICON } from '../utils/image-utils';\n\n// Static flag to ensure icons are registered only once\nlet iconsRegistered = false;\n\n\n@Component({\n selector: 'al-candidate-section',\n templateUrl: './candidate-section.component.html',\n styleUrls: ['./candidate-section.component.scss'],\n\n})\nexport class CandidateSectionComponent implements AfterViewInit, OnDestroy, OnInit {\n @ViewChild('candidateContainer', { static: true }) candidateContainer?: ElementRef<HTMLElement>;\n\n /**\n * When true, layout switches from 3 columns to \"2-column\" stacked layout.\n * This is driven by the container width (not screen size) and uses a 600px breakpoint.\n */\n isNarrowLayout: boolean = false;\n\n private resizeObserver?: ResizeObserver;\n @Input() useCustomHeader: boolean = false;\n @Input() candidateDetails: any;\n @Input() candidate_name: boolean = true;\n @Input() candidate_gender: boolean = true;\n @Input() candidate_phonenumber: boolean = true;\n @Input() candidate_email: boolean = true;\n @Input() candidate_linkedin: boolean = true;\n @Input() candidate_address: boolean = true;\n @Input() addressStreet: boolean = true;\n @Input() addressCity: boolean = true;\n @Input() addressRegion: boolean = true;\n @Input() addressRegionCode: boolean = true;\n @Input() addressCountry: boolean = true;\n @Input() addressPostCode: boolean = true;\n @Input() currentJob: boolean = true;\n @Input() candidate_experience: boolean = true;\n\n constructor(private iconRegistry: MatIconRegistry, private sanitizer: DomSanitizer) {\n this.registerIcons();\n }\n\n ngAfterViewInit(): void {\n // Initial measurement\n this.updateLayoutBreakpoint();\n\n // Watch container size so layout responds to container width, not viewport width\n if (this.candidateContainer?.nativeElement && typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n this.updateLayoutBreakpoint();\n });\n this.resizeObserver.observe(this.candidateContainer.nativeElement);\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = undefined;\n }\n }\n\n ngOnInit(): void {\n // Icons are registered in constructor\n }\n\n private registerIcons(): void {\n // Register icons only once using static flag\n if (!iconsRegistered) {\n try {\n // Register all candidate section icons\n Object.entries(Candidate_Section_ICON).forEach(([key, svgString]) => {\n this.iconRegistry.addSvgIconLiteral(\n key,\n this.sanitizer.bypassSecurityTrustHtml(svgString)\n );\n });\n iconsRegistered = true;\n } catch (error) {\n console.error('Failed to register candidate section icons:', error);\n }\n }\n }\n\n /**\n * Sets isNarrowLayout based on the current container width.\n * Uses 600px as the breakpoint where the layout switches from 3 to 2 columns.\n */\n private updateLayoutBreakpoint(): void {\n let width = 0;\n\n if (this.candidateContainer?.nativeElement) {\n const el = this.candidateContainer.nativeElement;\n width = el.offsetWidth || (el as any).clientWidth || 0;\n }\n\n // Fallback to window width if container width is not available\n if (!width && typeof window !== 'undefined') {\n width = window.innerWidth;\n }\n\n this.isNarrowLayout = width < 600;\n }\n\n getCurrentJob(): string {\n return this.candidateDetails?.currentJobTitle || '';\n }\n getCurrentEmployer(): string {\n return this.candidateDetails?.currentEmployer || '';\n }\n getTotalExpYears(): string {\n return this.candidateDetails?.totalExpYears || '';\n }\n\n hasValue(): boolean {\n return !!(this.candidateDetails?.firstName || this.candidateDetails?.lastName ||\n this.candidateDetails?.phone || this.candidateDetails?.email ||\n this.candidateDetails?.linkedin || this.candidateDetails?.gender);\n }\n\n hasAddressValue(): boolean {\n return !!(this.candidateDetails?.street || this.candidateDetails?.city ||\n this.candidateDetails?.region || this.candidateDetails?.regionCode ||\n this.candidateDetails?.country || this.candidateDetails?.postCode);\n }\n\n hasExperienceValue(): boolean {\n return !!(this.candidateDetails?.totalExpYears || this.candidateDetails?.currentJobTitle ||\n this.candidateDetails?.currentEmployer);\n }\n}\n","<div class=\"candidate-container\" #candidateContainer [ngClass]=\"{ 'narrow-layout': isNarrowLayout }\">\n <div class=\"columns-wrapper\">\n <div class=\"column first-column\">\n <div class=\"container\" data-test-id=\"candidate-section-name-container\"\n [style.opacity]=\"candidate_name ? '1' : '0.3'\"><lib-field-placeholder icon=\"candidate_name\"\n [value]=\"candidateDetails?.firstName && candidateDetails?.lastName ? candidateDetails?.firstName + ' ' + candidateDetails?.lastName : candidateDetails?.firstName || candidateDetails?.lastName\"\n [placeholder]=\"'Name'\" [tooltip]=\"candidateDetails?.firstName + ' ' + candidateDetails?.lastName\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-name'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-gender-container\"\n [style.opacity]=\"candidate_gender ? '1' : '0.3'\"><lib-field-placeholder icon=\"candidate_gender\"\n [value]=\"candidateDetails?.userAssignedGender\" [placeholder]=\"'Gender'\"\n [tooltip]=\"candidateDetails?.userAssignedGender\" tooltipPosition=\"right\" [testId]=\"'candidate-section-gender'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-phone-container\"\n [style.opacity]=\"candidate_phonenumber ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"candidate_phonenumber\" [value]=\"candidateDetails?.phoneNumber\" [placeholder]=\"'Phone Number'\"\n [tooltip]=\"candidateDetails?.phoneNumber\" tooltipPosition=\"right\" [testId]=\"'candidate-section-phone'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-email-container\"\n [style.opacity]=\"candidate_email ? '1' : '0.3'\"><lib-field-placeholder icon=\"candidate_email\"\n [value]=\"candidateDetails?.emailAddress\" [placeholder]=\"'Email Address'\"\n [tooltip]=\"candidateDetails?.emailAddress\" tooltipPosition=\"right\" [testId]=\"'candidate-section-email'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-linkedin-container\"\n [style.opacity]=\"candidate_linkedin ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"candidate_linkedin\" iconAlt=\"LinkedIn\" [value]=\"candidateDetails?.linkedin\" [placeholder]=\"'LinkedIn'\"\n [tooltip]=\"candidateDetails?.linkedin\" tooltipPosition=\"right\" [testId]=\"'candidate-section-linkedin'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n </div>\n <div class=\"column second-column\">\n <div data-test-id=\"candidate-section-address-container\"\n [style.opacity]=\"candidate_address ? '1' : '0.3'\">\n <div [style.opacity]=\"addressStreet ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"candidate_address\" [value]=\"candidateDetails?.street\" [placeholder]=\"'Street'\"\n [tooltip]=\"candidateDetails?.street\" tooltipPosition=\"right\" [testId]=\"'candidate-section-address-street'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div [style.opacity]=\"addressCity ? '1' : '0.3'\"><lib-field-placeholder icon=\"no-icon\"\n [value]=\"candidateDetails?.city\" [placeholder]=\"'City'\" [tooltip]=\"candidateDetails?.city\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-address-city'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n <div [style.opacity]=\"addressRegion ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"no-icon\" [value]=\"candidateDetails?.region\" [placeholder]=\"'Region'\"\n [tooltip]=\"candidateDetails?.region\" tooltipPosition=\"right\" [testId]=\"'candidate-section-address-region'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div [style.opacity]=\"addressRegionCode ? '1' : '0.3'\"><lib-field-placeholder\n [value]=\"candidateDetails?.regionCode\" [placeholder]=\"'Region Code'\" icon=\"no-icon\"\n [tooltip]=\"candidateDetails?.regionCode\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-region-code'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n <div [style.opacity]=\"addressCountry ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"no-icon\" [value]=\"candidateDetails?.country\" [placeholder]=\"'Country'\"\n [tooltip]=\"candidateDetails?.country\" tooltipPosition=\"right\" [testId]=\"'candidate-section-address-country'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div [style.opacity]=\"addressPostCode ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"no-icon\" [value]=\"candidateDetails?.postCode\" [placeholder]=\"'Post Code'\"\n [tooltip]=\"candidateDetails?.postCode\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-post-code'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n </div>\n </div>\n </div>\n <div class=\"column third-column\">\n <div class=\"container most-recent-container\" data-test-id=\"candidate-section-current-employer-container\">\n <div [style.opacity]=\"currentJob ? '1' : '0.3'\">\n <lib-field-placeholder icon=\"candidate_most_recent\"\n [value]=\"(getCurrentJob() || getCurrentEmployer()) ? 'Most Recently : <span class=\\'most-recent-inline\\'>' + (getCurrentJob() ? '<span class=\\'total-exp-value\\'>' + getCurrentJob() + '</span>' : '') + (getCurrentEmployer() ? (getCurrentJob() ? ' at <span class=\\'total-exp-value\\'>' + getCurrentEmployer() + '</span>' : '<span class=\\'total-exp-value\\'>' + getCurrentEmployer() + '</span>') : '') + '</span>' : ''\"\n [placeholder]=\"'Current Job'\"\n [tooltip]=\"(getCurrentJob() || getCurrentEmployer()) ? 'Most Recently : ' + getCurrentJob() + (getCurrentEmployer() ? ' at ' + getCurrentEmployer() : '') : 'Current Job'\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-current-job'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder>\n <div class=\"most-recent-details\">\n <div class=\"current-job-title\" *ngIf=\"getCurrentJob()\">{{getCurrentJob()}}</div>\n <div class=\"current-employer\" *ngIf=\"getCurrentEmployer()\">{{getCurrentEmployer()}}</div>\n </div>\n </div>\n </div>\n <div class=\"total-exp-parent container\" data-test-id=\"candidate-section-total-exp-parent\"\n [style.opacity]=\"candidate_experience ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"candidate_experience\"\n [value]=\"getTotalExpYears() ? 'Total Exp - <span class=\\'total-exp-value\\'>' + getTotalExpYears() + '</span> yrs' : ''\"\n [placeholder]=\"'Total Exp'\"\n [tooltip]=\"getTotalExpYears() ? 'Total Exp - ' + getTotalExpYears() + ' yrs' : 'Total Exp'\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-total-exp-value'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CandidateSectionComponent } from './candidate-section.component';\nimport { FieldPlaceholderComponent } from '../field-placeholder/field-placeholder.component';\n\n@NgModule({\n declarations: [CandidateSectionComponent],\n imports: [CommonModule, FieldPlaceholderComponent],\n exports: [CandidateSectionComponent]\n})\nexport class CandidateSectionModule { }\n","// Wrapper for Angular Material mat-radio-button\nimport { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\n\n@Component({\n selector: 'al-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true\n }\n ]\n})\nexport class RadioComponent implements ControlValueAccessor {\n @Input() value: any;\n @Input() name: string = '';\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelPosition: 'before' | 'after' = 'after';\n @Input() required: boolean = false;\n @Input() labelText: string = '';\n @Input() helperText: string = '';\n @Input() showLabels: boolean = true;\n @Input() showHelperIcon: boolean = false;\n @Input() helperIconTooltip: string = '';\n @Input() dataTestId: string = \"\";\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<any> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() helperIconClick: EventEmitter<void> = new EventEmitter();\n\n onChange = (_: any) => { };\n onTouched = () => { };\n\n writeValue(value: any): void {\n this.checked = value === this.value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = true;\n this.onChange(this.value);\n this.change.emit(this.value);\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n onHelperIconClick(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.helperIconClick.emit();\n }\n\n getColorClass(): string {\n if (this.color === 'green') {\n return 'mat-green';\n } else if (this.color === 'error') {\n return 'mat-error';\n }\n return '';\n }\n}\n","<mat-radio-button [value]=\"value\" [name]=\"name\" [checked]=\"checked\" [disabled]=\"disabled\" [color]=\"color\"\n [labelPosition]=\"labelPosition\" [required]=\"required\" [attr.data-testid]=\"dataTestId\" [ngClass]=\"getColorClass()\"\n [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!tooltip\"\n (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\">\n <div class=\"radio-label-wrapper\" *ngIf=\"showLabels\">\n <div class=\"radio-label-main-row\" *ngIf=\"labelText\">\n <div class=\"radio-label-main\">\n {{ labelText }}\n </div>\n <button *ngIf=\"showHelperIcon\" type=\"button\" class=\"radio-helper-icon\"\n [matTooltip]=\"helperIconTooltip || helperText\" [matTooltipPosition]=\"tooltipPosition\" [disabled]=\"disabled\"\n (click)=\"onHelperIconClick($event)\">\n ?\n </button>\n </div>\n\n <div *ngIf=\"helperText\" class=\"radio-label-helper\">\n {{ helperText }}\n </div>\n </div>\n\n <ng-content></ng-content>\n</mat-radio-button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RadioComponent } from './radio.component';\n\n@NgModule({\n declarations: [RadioComponent],\n imports: [CommonModule, MatRadioModule, MatTooltipModule],\n exports: [RadioComponent]\n})\nexport class RadioModule { }\n","import {\n Component,\n Input,\n Output,\n EventEmitter\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n MatButtonToggleModule\n}\n\n from '@angular/material/button-toggle';\n\nimport {\n MatIconModule\n}\n\n from '@angular/material/icon';\n\nimport {\n FormsModule\n}\n\n from '@angular/forms';\n\nexport interface ToggleButton {\n id: string;\n label?: string;\n icon?: string;\n disabled?: boolean;\n dataTestId?: string;\n}\n\n@Component({\n selector: 'al-toggle-buttons',\n templateUrl: './toggle-buttons.component.html',\n styleUrls: ['./toggle-buttons.component.scss'],\n standalone: true,\n imports: [CommonModule, MatButtonToggleModule, MatIconModule, FormsModule]\n}\n\n) export class ToggleButtonsComponent {\n @Input() buttons: ToggleButton[] = [];\n @Input() selectedId: string = '';\n @Input() disabled: boolean = false;\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() type: 'default' | 'text-only' | 'icon-only' = 'default';\n @Input() multiple: boolean = false;\n @Input() vertical: boolean = false;\n @Input() dataTestId: string = '';\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() buttonClick: EventEmitter<ToggleButton> = new EventEmitter<ToggleButton>();\n\n onSelectionChange(value: string): void {\n this.selectedId = value;\n this.selectionChange.emit(value);\n\n const selectedButton = this.buttons.find(btn => btn.id === value);\n\n if (selectedButton) {\n this.buttonClick.emit(selectedButton);\n }\n }\n\n getSelectedValue(): string {\n return this.selectedId;\n }\n\n getSizeClass(): string {\n return 'al-toggle-buttons-size-' + this.size;\n }\n\n computeGap(button: ToggleButton): number {\n const hasLabel = ! !(button.label && button.label.trim());\n const hasIcon = ! !(button.icon && button.icon.trim());\n\n // 0 gap for icon-only buttons\n if (this.type === 'icon-only' || (!hasLabel && hasIcon)) {\n return 0;\n }\n\n // 4px gap for default type (icon + text)\n if (this.type === 'default' && hasIcon && hasLabel) {\n return 4;\n }\n\n // 8px gap for text-only buttons\n return 8;\n }\n}\n","<mat-button-toggle-group [value]=\"getSelectedValue()\" [disabled]=\"disabled\" [multiple]=\"multiple\" [vertical]=\"vertical\"\n (change)=\"onSelectionChange($event.value)\" [ngClass]=\"[getSizeClass(), vertical ? 'al-toggle-vertical' : '']\">\n\n <mat-button-toggle *ngFor=\"let button of buttons\" [value]=\"button.id\" [disabled]=\"button.disabled\"\n [attr.aria-label]=\"button.label\" [style.display]=\"'inline-flex'\" [style.align-items]=\"'center'\"\n [style.gap.px]=\"computeGap(button)\" [attr.data-testid]=\"button.dataTestId || dataTestId\">\n\n <!-- Icon (shown based on type) -->\n <mat-icon *ngIf=\"(type === 'default' || type === 'icon-only') && button.icon?.trim()\" class=\"button-icon\">{{\n button.icon }}</mat-icon>\n\n <!-- Label (shown based on type) -->\n <span *ngIf=\"(type === 'default' || type === 'text-only') && button.label?.trim()\" class=\"button-label\">{{\n button.label }}</span>\n </mat-button-toggle>\n\n</mat-button-toggle-group>","import { NgModule } from '@angular/core';\nimport { ToggleButtonsComponent } from './toggle-buttons.component';\n\n@NgModule({\n imports: [ToggleButtonsComponent],\n exports: [ToggleButtonsComponent]\n})\nexport class ToggleButtonsModule { }\n","// Wrapper for Angular Material mat-slide-toggle with custom icons\nimport { Component, Input, Output, EventEmitter, forwardRef, AfterViewInit, ElementRef, Renderer2, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'al-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n standalone: true,\n imports: [CommonModule, MatSlideToggleModule, MatIconModule, MatTooltipModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggleComponent),\n multi: true\n }\n ]\n})\nexport class SlideToggleComponent implements ControlValueAccessor, AfterViewInit {\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() name: string = '';\n @Input() required: boolean = false;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelText: string = '';\n @Input() helperText: string = '';\n @Input() showLabels: boolean = true;\n @Input() onIcon: string = 'dark_mode'; // Material Icon for ON state\n @Input() offIcon: string = 'light_mode'; // Material Icon for OFF state\n @Input() showIcons: boolean = true; // Toggle to show/hide custom icons\n @Input() size: 'small' | 'medium' | 'large' = 'medium'; // Size variant\n @Input() dataTestId: string = '';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<boolean> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n\n @ViewChild('slideToggle', { read: ElementRef }) element: ElementRef | undefined;\n\n onChange = (_: any) => { };\n onTouched = () => { };\n\n constructor(private renderer: Renderer2) { }\n\n writeValue(value: any): void {\n this.checked = !!value;\n this.updateIcon();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = event.checked;\n this.onChange(this.checked);\n this.change.emit(this.checked);\n this.updateIcon();\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.setIcon();\n }, 100);\n }\n\n setIcon() {\n if (this.element && this.showIcons) {\n try {\n // Try multiple selectors to find the handle\n let targetSpan: HTMLElement | null = this.element.nativeElement.querySelector('.mdc-switch__handle');\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mat-slide-toggle-thumb');\n }\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mdc-switch__thumb');\n }\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mdc-switch__icon');\n }\n\n if (targetSpan) {\n // Clear existing content\n while (targetSpan.firstChild) {\n targetSpan.firstChild.remove();\n }\n\n // Create new icon element\n const elem = this.renderer.createElement('span');\n const icon = this.checked ? this.onIcon : this.offIcon;\n elem.setAttribute('class', 'material-icons slide-toggle-custom-icon');\n elem.textContent = icon;\n targetSpan.appendChild(elem);\n }\n } catch (error) {\n console.error('Error updating Material icons:', error);\n }\n }\n }\n\n private updateIcon() {\n setTimeout(() => {\n this.setIcon();\n }, 200);\n }\n\n\n}\n","<div class=\"slide-toggle-container\" [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\">\n <mat-slide-toggle #slideToggle [checked]=\"checked\" [disabled]=\"disabled\" [name]=\"name\" [required]=\"required\"\n [color]=\"color\" (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\"\n class=\"custom-slide-toggle\" [class.slide-toggle-small]=\"size === 'small'\"\n [class.slide-toggle-medium]=\"size === 'medium'\" [class.slide-toggle-large]=\"size === 'large'\"\n [attr.data-testid]=\"dataTestId\">\n <div *ngIf=\"showLabels\" class=\"slide-toggle-labels\">\n <div *ngIf=\"labelText\" class=\"slide-toggle-label-main\">\n {{ labelText }}\n </div>\n <div *ngIf=\"helperText\" class=\"slide-toggle-label-helper\">\n {{ helperText }}\n </div>\n </div>\n <ng-content></ng-content>\n </mat-slide-toggle>\n</div>\n","import { NgModule } from '@angular/core';\nimport { SlideToggleComponent } from './slide-toggle.component';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [CommonModule, SlideToggleComponent, MatTooltipModule],\n exports: [SlideToggleComponent]\n})\nexport class SlideToggleModule { }\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { getEffectiveIconName, getEffectiveFontSet } from '../utils/icon-utils';\n\n@Component({\n selector: 'al-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrls: ['./icon-button.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule],\n})\nexport class IconButtonComponent implements OnInit {\n /** Icon name (Material icon name) */\n @Input() icon!: string;\n\n /** Custom colour (CSS color value) - if provided, overrides the colour property */\n @Input() customColour?: string;\n\n /** Use outlined icon font */\n @Input() iconOutlined: boolean = false;\n\n /** Button size (xs, sm, base, l, xl, header) */\n @Input() size: 'xs' | 'sm' | 'base' | 'l' | 'xl' | 'header' = 'base';\n\n /** Button colour (blue, green, grey, error, gradient, etc.) */\n @Input() colour: string = 'blue';\n\n /** Disabled state */\n @Input() disabled: boolean = false;\n\n /** Optional custom data-testid for QA/testing */\n @Input() dataTestId?: string;\n public effectiveDataTestId!: string;\n\n /** Click event */\n @Output() onClick = new EventEmitter<Event>();\n\n constructor(private iconRegistry: MatIconRegistry, private sanitizer: DomSanitizer) {\n this.iconRegistry.registerFontClassAlias('material-icons-outlined', 'material-icons-outlined');\n this.iconRegistry.registerFontClassAlias('material-icons', 'material-icons');\n this.iconRegistry.registerFontClassAlias('material-symbols-outlined', 'material-symbols-outlined');\n }\n\n ngOnInit() {\n this.effectiveDataTestId = this.dataTestId && this.dataTestId.trim() ? this.dataTestId : this.genIconBtnId();\n }\n\n public genId(): string {\n return 'icon-btn_' + Math.random().toString(36).slice(2, 10);\n }\n\n private genIconBtnId(): string {\n return this.genId();\n }\n\n handleClick(event: Event) {\n if (!this.disabled) {\n this.onClick.emit(event);\n }\n }\n\n /**\n * Gets the effective icon name to use, considering outlined mappings.\n * Some icons like 'favorite' and 'star' have different names for outlined versions.\n */\n getEffectiveIconName(): string {\n if (!this.icon) {\n return '';\n }\n return getEffectiveIconName(this.icon, this.iconOutlined);\n }\n\n /**\n * Gets the effective font set to use for the icon.\n */\n getEffectiveFontSet(): string {\n if (!this.icon) {\n return 'material-icons';\n }\n return getEffectiveFontSet(this.icon, this.iconOutlined);\n }\n}\n","<button type=\"button\" class=\"icon-btn\" [ngClass]=\"[\n 'icon-btn',\n 'size-' + size,\n 'color-' + colour,\n iconOutlined ? 'icon-outlined' : '',\n disabled ? 'icon-btn-disabled' : ''\n ]\" [disabled]=\"disabled\" (click)=\"handleClick($event)\" [attr.aria-label]=\"icon\"\n [attr.data-test-id]=\"effectiveDataTestId\">\n <mat-icon [fontSet]=\"getEffectiveFontSet()\" class=\"icon-btn-icon\"\n [ngStyle]=\"customColour ? { color: customColour } : null\">{{ getEffectiveIconName()\n }}</mat-icon>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { InputComponent } from '../input/input.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'al-ai-apply-bar',\n standalone: true,\n imports: [CommonModule, InputComponent, ButtonComponent, IconButtonComponent],\n templateUrl: './ai-apply-bar.component.html',\n styleUrls: ['./ai-apply-bar.component.scss']\n})\nexport class AiApplyBarComponent {\n /** Optional data-test-id for QA/testing */\n @Input() dataTestId?: string;\n /**\n * If true, show chevron icon on Apply AI button (second variation).\n */\n @Input() showChevron: boolean = false;\n /**\n * If true, show a separate chevron button after the Apply AI button.\n */\n @Input() showChevronButton = true;\n\n // Input field (dropdown) API\n @Input() placeholder: string = 'Typing';\n @Input() options: string[] = ['Typing', 'Gathering', 'Processing'];\n @Input() value: string = '';\n @Input() disabled: boolean = false;\n\n // Apply button\n @Input() applyLabel: string = 'Apply AI';\n @Input() applyDisabled: boolean = false;\n @Input() showApplyButton: boolean = true;\n\n // Close button\n @Input() showClose: boolean = true;\n @Input() iconOutlined: boolean = false;\n @Input() closeButtonTooltip: string = 'Close';\n @Input() closeButtonTooltipPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n\n // Helper text (second row)\n @Input() showHelperText: boolean = false;\n @Input() helperText: string = 'Action will be applied globally to all sections';\n\n // Outputs\n @Output() valueChange = new EventEmitter<string>();\n @Output() applyClick = new EventEmitter<void>();\n @Output() closeClick = new EventEmitter<void>();\n /** Emitted when the chevron icon button is clicked */\n @Output() chevronClick = new EventEmitter<void>();\n\n // Animation state - bar show/hide\n @Input() isVisible: boolean = false;\n @Input() toggled: boolean = true;\n\n onValueChange(v: string) {\n this.value = v;\n this.valueChange.emit(v);\n }\n\n // Toggle bar visibility\n toggleBar(): void {\n this.isVisible = !this.isVisible;\n }\n\n // Close bar and emit event\n onClose(): void {\n this.isVisible = false;\n this.closeClick.emit();\n }\n}\n","<div class=\"ai-apply-container\" [attr.data-test-id]=\"dataTestId\">\n\n <!-- Toggle Button - AI Trigger or Close Button (Fixed Position) -->\n <div class=\"ai-toggle-button\">\n <!-- AI Trigger Button - Show when bar is hidden -->\n <al-button *ngIf=\"toggled && !isVisible\" [iconOnly]=\"true\" [buttonType]=\"'icon-circle'\" [icon]=\"'auto_fix_high'\"\n [iconOutlined]=\"true\" [color]=\"'gradient'\" [size]=\"'base'\" aria-label=\"AI Trigger\" (onClick)=\"toggleBar()\">\n </al-button>\n\n <!-- Close Button - Show when bar is visible -->\n <al-button *ngIf=\"toggled && isVisible && showClose\" [iconOnly]=\"true\" [buttonType]=\"'icon-circle'\" [icon]=\"'close'\"\n [color]=\"'grey'\" [size]=\"'base'\" aria-label=\"Close\" (onClick)=\"toggleBar()\">\n </al-button>\n\n <al-button *ngIf=\"!toggled\" [iconOnly]=\"true\" [buttonType]=\"'icon-circle'\" [icon]=\"'close'\"\n [color]=\"'grey'\" [size]=\"'base'\" aria-label=\"Close\" (onClick)=\"onClose()\">\n </al-button>\n </div>\n\n <!-- AI Apply Bar - Expands to the LEFT of button -->\n <div class=\"ai-apply-wrap\" [class.visible]=\"isVisible || !toggled\" [class.hidden]=\"!isVisible && toggled\">\n <div class=\"ai-apply-rail\">\n <div class=\"ai-apply-row\">\n <div class=\"ai-apply-input\">\n <al-input [labelText]=\"''\" [placeholder]=\"placeholder\" [value]=\"value\" [type]=\"'text'\" [disabled]=\"disabled\"\n [helperText]=\"false\" [leftIcon]=\"''\" [rightIcon]=\"'expand_more'\" [hasDropDown]=\"true\" [searchfilter]=\"true\"\n [multipleSelect]=\"false\" [options]=\"options\" [size]=\"'base'\" [types]=\"'plain'\"\n (change)=\"onValueChange($event)\">\n </al-input>\n </div>\n\n <div class=\"ai-apply-button\">\n <al-button *ngIf=\"showApplyButton\" [label]=\"applyLabel\" [buttonType]=\"'icon-label'\" [category]=\"'gradient'\"\n [size]=\"'base'\" [state]=\"applyDisabled ? 'disabled' : 'default'\" (onClick)=\"applyClick.emit()\">\n </al-button>\n <al-icon-button *ngIf=\"showChevronButton\" icon=\"chevron_right\" [iconOutlined]=\"true\"\n [customColour]=\"'#ffffff'\" [size]=\"'l'\" [disabled]=\"applyDisabled\" (onClick)=\"chevronClick.emit()\"\n [dataTestId]=\"'icon-btn_Uwofs4q_3kWU'\">\n </al-icon-button>\n </div>\n </div>\n\n <div class=\"ai-apply-helper\" *ngIf=\"showHelperText\">\n {{ helperText }}\n </div>\n </div>\n </div>\n\n</div>\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n Component,\n HostBinding,\n Input\n}\n\n from '@angular/core';\n\n/**\n * Responsive layout container that can behave as a row (columns) or a column (rows)\n * with breakpoint-specific item counts.\n *\n * Breakpoints (px):\n * - mobile: 0 - 500\n * - mobile-sm: 500 - 767\n * - tablet: 767 - 1024\n * - desktop: 1024+\n */\n@Component({\n selector: 'app-flex-grid',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './responsive-layout.component.html',\n styleUrls: ['./responsive-layout.component.scss'],\n}\n\n) export class ResponsiveLayoutComponent {\n /** Optional data-testid for test selectors */\n @Input() dataTestId?: string;\n /** Layout mode: 'row' has bottom margin, 'column' has no bottom margin. Both use responsive column counts. */\n @Input() type: 'row' | 'column' = 'row';\n\n /** Gap between items (in px) */\n @Input() gap: number | string = 8;\n\n /** Optional bottom margin for row mode. Set to false to remove. */\n @Input() marginBottom: number | string | boolean = 16;\n\n // Per-breakpoint counts. Defines number of columns at each breakpoint.\n @Input() countMobile: number = 1;\n @Input() countMobileSm: number = 2;\n @Input() countTablet: number = 3;\n @Input() countDesktop: number = 4;\n\n // Aliases for convenience (e.g., mobRow=\"3\" as requested). They map to countMobile.\n @Input() set mobRow(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countMobile = Number(v);\n }\n }\n\n @Input() set mobCols(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countMobile = Number(v);\n }\n }\n\n /** Alias: rows sets a base count used for all breakpoints unless overridden */\n @Input() set rows(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n const n = Number(v);\n this.countMobile = n;\n this.countMobileSm = n;\n this.countTablet = n;\n this.countDesktop = n;\n }\n }\n\n /** Alias for tablet breakpoint */\n @Input() set tabRow(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countTablet = Number(v);\n }\n }\n\n /** Alias for desktop breakpoint */\n @Input() set desktop(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countDesktop = Number(v);\n }\n }\n\n /** Minimum columns (e.g. 2) so this row never collapses to 1 column on small viewports. Use for \"Date Type + Current Role/Study\" row in certification/experience. */\n @Input() minColumns?: number;\n\n @HostBinding('class.min-cols-2') get hasMinCols2(): boolean {\n return this.minColumns === 2;\n }\n\n // Expose CSS variables on host for SCSS to pick up.\n @HostBinding('style.--gap') get cssGap() {\n return typeof this.gap === 'string' ? this.gap : `$ {\n this.gap\n }\n\n px`;\n }\n\n @HostBinding('style.--count-mobile') get cssCountMobile() {\n return this.countMobile;\n }\n\n @HostBinding('style.--count-mobile-sm') get cssCountMobileSm() {\n return this.countMobileSm;\n }\n\n @HostBinding('style.--count-tablet') get cssCountTablet() {\n return this.countTablet;\n }\n\n @HostBinding('style.--count-desktop') get cssCountDesktop() {\n return this.countDesktop;\n }\n\n // Expose bottom margin as CSS var. If explicitly false => 0px\n @HostBinding('style.--mb') get cssMarginBottom() {\n const v = this.marginBottom;\n if (v === false || v === 0 || v === '0') return '0px';\n if (typeof v === 'string') return v; // allow '1rem', '12px'\n\n return `$ {\n v\n }\n\n px`;\n }\n\n @HostBinding('class.row') get isRow() {\n return this.type === 'row';\n }\n\n @HostBinding('class.col') get isCol() {\n return this.type === 'column';\n }\n\n @HostBinding('attr.data-testid') get dataTestIdAttr() {\n return this.dataTestId || null;\n }\n}\n","<ng-content></ng-content>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResponsiveLayoutComponent } from './responsive-layout.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResponsiveLayoutComponent],\n exports: [ResponsiveLayoutComponent],\n})\nexport class ResponsiveLayoutModule {}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ViewChild,\n OnInit,\n AfterViewInit\n}\n\nfrom '@angular/core';\n\nimport {\n CommonModule\n}\n\nfrom '@angular/common';\n\nimport {\n MatTooltipModule\n}\n\nfrom '@angular/material/tooltip';\n\nimport {\n MatIconModule,\n MatIconRegistry\n}\n\nfrom '@angular/material/icon';\n\nimport {\n DomSanitizer\n}\n\nfrom '@angular/platform-browser';\n\nimport {\n TABLE_ICONS\n}\n\nfrom '../../utils/image-utils';\n\n@Component( {\n selector: 'app-table',\n standalone: true,\n imports: [CommonModule, MatTooltipModule, MatIconModule],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css']\n }\n\n) export class TableComponent implements OnInit,\nAfterViewInit {\n\n constructor(private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer) {\n this.iconRegistry.addSvgIconLiteral('table',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['table']));\n this.iconRegistry.addSvgIconLiteral('add-table',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['add-table']));\n this.iconRegistry.addSvgIconLiteral('delete-table',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['delete-table']));\n this.iconRegistry.addSvgIconLiteral('column-left',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['column-left']));\n this.iconRegistry.addSvgIconLiteral('column-right',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['column-right']));\n this.iconRegistry.addSvgIconLiteral('row-top',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['row-top']));\n this.iconRegistry.addSvgIconLiteral('row-bottom',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['row-bottom']));\n this.iconRegistry.addSvgIconLiteral('delete-row',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['delete-row']));\n this.iconRegistry.addSvgIconLiteral('delete-column',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['delete-column']));\n }\n\n @Input() getEditorElement !: ()=>HTMLElement | undefined;\n @Input() saveHistoryMethod !: ()=>void;\n @Input() textChangeMethod !: ()=>void;\n\n\n\n showTableDropdown=false;\n\n ngOnInit(): void {}\n\n ngAfterViewInit(): void {}\n\n toggleTableDropdown(): void {\n this.showTableDropdown= !this.showTableDropdown;\n }\n\n addTable(event: MouseEvent): void {\n const editorElement=this.getEditorElement();\n\n if ( !editorElement) {\n\n // Wait a bit and try again\n setTimeout(()=> {\n const retryEditorElement=this.getEditorElement();\n\n if (retryEditorElement) {\n this.addTable(event);\n }\n }\n\n , 100);\n return;\n }\n\n const tableHTML=` <table style=\"border-collapse: collapse; width: 100%;\"><tbody><tr height=34><td></td><td></td></tr><tr height=34><td></td><td></td></tr></tbody></table><br>`;\n\n // Focus the editor first\n editorElement.focus();\n\n // Execute the command in the context of the editor\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n\n // Ensure the range is within the editor\n if (editorElement.contains(range.startContainer)) {\n document.execCommand(\"insertHTML\", false, tableHTML);\n }\n }\n\n else {\n // If no selection, append to the end\n editorElement.innerHTML+=tableHTML;\n }\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n // Close dropdown after creating table\n this.showTableDropdown=false;\n }\n\n deleteTable(event: MouseEvent): void {\n const editorElement=this.getEditorElement();\n\n if (editorElement) {\n const table=editorElement.querySelector(\"table\");\n\n if (table) {\n table.remove();\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n }\n }\n\n this.showTableDropdown=false;\n }\n\n addRowBelow(event: MouseEvent): void {\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const row=(cell as HTMLElement).parentNode as HTMLElement;\n const table=row.parentNode as HTMLElement;\n\n if (row.nodeName===\"TR\"&& table.nodeName===\"TBODY\") {\n const newRow=row.cloneNode(true) as HTMLElement;\n Array.from(newRow.children).forEach(cell=> (cell.textContent=\"\"));\n newRow.setAttribute(\"height\", \"34\");\n row.insertAdjacentElement(\"afterend\", newRow);\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n }\n\n addRowAbove(event: MouseEvent): void {\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const row=(cell as HTMLElement).parentNode as HTMLElement;\n const table=row.parentNode as HTMLElement;\n\n if (row.nodeName===\"TR\"&& table.nodeName===\"TBODY\") {\n const newRow=row.cloneNode(true) as HTMLElement;\n Array.from(newRow.children).forEach(cell=> (cell.textContent=\"\"));\n newRow.setAttribute(\"height\", \"34\");\n row.insertAdjacentElement(\"beforebegin\", newRow);\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n }\n\n addColumnLeft(event: MouseEvent): void {\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const table=(cell as HTMLElement).closest(\"table\");\n\n if (table) {\n const rowIndex=Array.from((cell as HTMLElement).parentNode !.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row)=> {\n const newCell=row.cells[rowIndex].cloneNode(false) as HTMLElement;\n newCell.textContent=\"\";\n row.cells[rowIndex].insertAdjacentElement(\"beforebegin\", newCell);\n }\n\n );\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n }\n\n addColumnRight(event: MouseEvent): void {\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const table=(cell as HTMLElement).closest(\"table\");\n\n if (table) {\n const cellIndex=Array.from((cell as HTMLElement).parentNode !.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row)=> {\n const newCell=row.cells[cellIndex].cloneNode(false) as HTMLElement;\n newCell.textContent=\"\";\n row.cells[cellIndex].insertAdjacentElement(\"afterend\", newCell);\n }\n\n );\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n }\n\n deleteCurrentColumn(event: MouseEvent): void {\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const table=(cell as HTMLElement).closest(\"table\");\n if ( !table) return;\n const cellIndex=Array.from((cell as HTMLElement).parentNode !.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row)=> {\n if (row.cells.length > cellIndex) {\n row.deleteCell(cellIndex);\n }\n }\n\n );\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n\n deleteCurrentRow(event: MouseEvent): void {\n event.preventDefault();\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n // Find the nearest cell element\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const row=(cell as HTMLElement).parentNode as HTMLElement;\n const table=row.parentNode as HTMLElement;\n\n if (row.nodeName===\"TR\"&& table.nodeName===\"TBODY\") {\n row.remove();\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n }\n}\n","<div class=\"table-controls\"><button class=\"format-button table-button\" (click)=\"toggleTableDropdown()\"\n title=\"Table Operations\" type=\"button\"><mat-icon svgIcon=\"table\" class=\"table-icon\"></mat-icon></button>\n <div *ngIf=\"showTableDropdown\" class=\"table-dropdown\">\n <div class=\"table-row\"><button type=\"button\" class=\"table-btn\" (click)=\"addTable($event)\" title=\"Add table\"\n matTooltip=\"Add Table\" matTooltipPosition=\"above\"><mat-icon svgIcon=\"add-table\"></mat-icon></button><button\n type=\"button\" class=\"table-btn\" (click)=\"deleteTable($event)\" title=\"Delete table\" matTooltip=\"Delete Table\"\n matTooltipPosition=\"above\"><mat-icon svgIcon=\"delete-table\"></mat-icon></button><button type=\"button\"\n class=\"table-btn\" (click)=\"addColumnLeft($event)\" title=\"Column left\" matTooltip=\"Add Column Left\"\n matTooltipPosition=\"above\"><mat-icon svgIcon=\"column-left\"></mat-icon></button><button type=\"button\"\n class=\"table-btn\" (click)=\"addColumnRight($event)\" title=\"Column right\" matTooltip=\"Add Column Right\"\n matTooltipPosition=\"above\"><mat-icon svgIcon=\"column-right\"></mat-icon></button></div>\n <div class=\"table-row\"><button type=\"button\" class=\"table-btn\" (click)=\"addRowAbove($event)\" title=\"Row top\"\n matTooltip=\"Add Row Above\" matTooltipPosition=\"above\"><mat-icon svgIcon=\"row-top\"></mat-icon></button><button type=\"button\" class=\"table-btn\"\n (click)=\"addRowBelow($event)\" title=\"Row bottom\" matTooltip=\"Add Row Below\" matTooltipPosition=\"above\"><mat-icon svgIcon=\"row-bottom\"></mat-icon></button><button type=\"button\" class=\"table-btn\"\n (click)=\"deleteCurrentRow($event)\" title=\"Delete row\" matTooltip=\"Delete Current Row\"\n matTooltipPosition=\"above\"><mat-icon svgIcon=\"delete-row\"></mat-icon></button><button\n type=\"button\" class=\"table-btn\" (click)=\"deleteCurrentColumn($event)\" title=\"Delete column\"\n matTooltip=\"Delete Current Column\" matTooltipPosition=\"above\"><mat-icon\n svgIcon=\"delete-column\"></mat-icon></button></div>\n </div>\n</div>","\nexport default class BulletUtils {\n static sampleBullets = ['•', '●', '◎', '◍', '◌', '○', '◉', '▪'];\n static autoBullet(text: string) {\n var array = text.split('.');\n let final = \"<ul>\";\n const regexForStripHTML = /(<([^>]+)>)/ig;\n for (let i = 0; i < array.length; i++) {\n const stripContent = array[i].replace(regexForStripHTML, '');\n if (stripContent.trim().length) {\n final = final + \"<li>\" + stripContent + \"</li>\";\n }\n }\n return final + \"</ul>\";\n }\n\n static skillBullet(text: string) {\n text = text.replace(/<p[^>]*>/g, \"\");\n var array = text.split(',');\n let final = \"<ul>\"\n for (let i = 0; i < array.length; i++) {\n final = final + \"<li>\" + array[i] + \"</li>\";\n }\n return final + \"</ul>\";\n }\n\n static legacyOnPasteHandler(text: string) {\n let containsBullets = BulletUtils.sampleBullets.some(bullets => text.includes(bullets));\n let result = '';\n if (containsBullets) {\n const actualBullet = BulletUtils.sampleBullets.filter(bullets => text.includes(bullets));\n const charCodeOfBullet = Number(actualBullet[0].charCodeAt(0));\n const bulletTags = BulletUtils.getTagOfBullets(text, actualBullet[0]);\n const splittedText = text.split(bulletTags.beforeBulletTag + String.fromCharCode(charCodeOfBullet) + bulletTags.afterBullterTag);\n result = splittedText[0].length > 0 ? splittedText[0] : '';\n result = result + '<ul>';\n let bulletedText = '';\n for (let i = 1; i < splittedText.length; i++) {\n let splittedLine = splittedText[i].split('</p>');\n if (splittedLine[1] && splittedLine[1].length > 0)\n bulletedText = bulletedText + '<li>' + splittedLine[0].replace('<p>', '') + '</li>' + BulletUtils.otherBullets(splittedLine);\n else\n bulletedText = bulletedText + '<li>' + splittedLine[0].replace('<p>', '') + '</li>';\n }\n result = result + bulletedText + '</ul>';\n return result;\n }\n else\n return result = text;\n }\n\n\n static getFirstLineOnPaste(text: string, actualBullet: string[]) {\n return text.length > 0 && text.includes(actualBullet[0]) ?\n '<ul>' + '<li>' + text.replace(actualBullet[0], '') + '</li>' : '<p>' + text + '</p>';\n }\n\n static onPasteBulletHandler(text: string) {\n let result = '';\n let map = BulletUtils.extractExistedBullets(text);\n text = map.get('text');\n\n let containsBullets = BulletUtils.sampleBullets.some(bullets => text.includes(bullets));\n if (containsBullets) {\n let actualBullet = BulletUtils.sampleBullets.filter(bullets => text.includes(bullets));\n const parser = new DOMParser();\n const htmlDoc = parser.parseFromString(text, 'text/html');\n let bodyTag = htmlDoc.getElementsByTagName('body')[0].children;\n result = BulletUtils.getFirstLineOnPaste(bodyTag[0].innerHTML, actualBullet);\n let bulletedText = !result.includes('<ul>') ? '<ul>' : '';\n for (let i = 1; i < bodyTag.length; i++) {\n if (bodyTag[i].innerHTML.includes(actualBullet[0])) {\n if ((i < bodyTag.length - 1) && !bodyTag[i + 1].innerHTML.includes(actualBullet[0]) && bodyTag[i + 1].innerHTML.length > 5) {\n if (bodyTag[i].innerHTML === actualBullet[0]) {\n bulletedText = bulletedText + '<li>' + bodyTag[i + 1].innerHTML.replace(actualBullet[0], '') + '</li>';\n i = i + 1;\n }\n else if (bodyTag[i].innerHTML !== actualBullet[0] && !bulletedText.includes(bodyTag[i].innerHTML))\n bulletedText = bulletedText + '<li>' + bodyTag[i].innerHTML.replace(actualBullet[0], '') + '</li>';\n }\n else {\n let insideText = bodyTag[i].innerHTML.replace(actualBullet[0], '');\n bulletedText = bulletedText + '<li>' + insideText + '</li>';\n }\n }\n else if (bulletedText.length > 10 && !bodyTag[i].innerHTML.includes(actualBullet[0]) && i < bodyTag.length - 1 && bodyTag[i + 1].innerHTML.includes(actualBullet[0])) {\n bulletedText = bulletedText.substring(0, bulletedText.lastIndexOf('</li>'));\n bulletedText = bulletedText + bodyTag[i].innerHTML.replace(actualBullet[0], '') + '</li>';\n }\n else {\n if (bulletedText.length > 10) {\n result = result + bulletedText + '</ul>';\n if (!bodyTag[i].innerHTML.includes(actualBullet[0])) {\n if (bodyTag[i].innerHTML.startsWith('<span>') && bodyTag[i].innerHTML.endsWith('</span>'))\n result = result + bodyTag[i].innerHTML.replace('span', 'p');\n else if (bodyTag[i].innerHTML.startsWith('<p>') && !bodyTag[i].innerHTML.endsWith('</p>'))\n result = result + bodyTag[i].innerHTML.replace('span', 'p') + '</p>';\n else if (!bodyTag[i].innerHTML.startsWith('<p>') && bodyTag[i].innerHTML.endsWith('</p>'))\n result = result + '<p>' + bodyTag[i].innerHTML.replace('span', 'p');\n else\n result = result + '<p>' + bodyTag[i].innerHTML.replace('<p>', '').replace('</p>', '') + '</p>';\n }\n bulletedText = '<ul>';\n }\n else\n result = result + BulletUtils.transform(bodyTag[i] as HTMLElement);\n }\n\n }\n result = result + bulletedText + '</ul>';\n result = map.has('existedBullets') ? (map.get('existedBullets') + result) : result;\n return result;\n }\n else\n return map.has('existedBullets') ? (map.get('existedBullets') + result) + BulletUtils.sanitizeHtml(text) : result + BulletUtils.sanitizeHtml(text);\n\n }\n\n\n private static otherBullets(tag: any) {\n let otherTag = '</ul><p>'\n for (let i = 1; i < tag.length; i++)\n otherTag = otherTag + tag[i];\n return otherTag + '</p><ul>';\n }\n\n\n private static getTagOfBullets(text: string, actualBullet: string) {\n let beforeBulletTag = text.substring(0, text.indexOf(actualBullet));\n let afterBullterTag = text.substring(text.indexOf(actualBullet), text.length);\n beforeBulletTag = beforeBulletTag.substring(beforeBulletTag.lastIndexOf('<'), beforeBulletTag.length);\n afterBullterTag = afterBullterTag.substring(1, afterBullterTag.indexOf('>')) + '>';\n return {\n beforeBulletTag: beforeBulletTag,\n afterBullterTag: afterBullterTag\n };\n }\n private static transformSimpleText(text: string) {\n return text.startsWith('<p') || text.startsWith('<div') ?\n '<p>' + text.replaceAll('</p>', '&nbsp;').replaceAll('<p>', '') + '</p>' : '<span>' + text.replaceAll('</span>', '&nbsp;').replaceAll('<span>', '') + '</span>';\n\n }\n private static transform(node: HTMLElement) {\n if (node.tagName.startsWith('P')) {\n return '<p>' + node.innerHTML + '</p>';\n }\n else if (node.tagName.startsWith('S')) {\n return '<span>' + node.innerHTML + '</span>';\n }\n else\n return '<p>' + node.innerHTML + '</p>';\n }\n\n private static sanitizeHtml(text: string) {\n return new DOMParser().parseFromString(text, \"text/html\").body.innerHTML;\n }\n\n\n static onPasteBulletHandlerOriginalResume(text: string) {\n let result = '';\n text = text.replace(/style=\"[^\"]*color:\\s*transparent[^\"]*\"/g, 'style=\"color: black;\"');\n // let map = BulletUtils.extractExistedBullets(text);\n // text = BulletUtils.removeTags(map.get('text'), ['p'])\n // text = text.split('<p></p>').join('').split('<p> </p>').join('');\n result = BulletUtils.onPasteBulletHandler(text);\n // result = map.has('existedBullets') ? (map.get('existedBullets') + result) : result;\n return result;\n }\n\n // this function take html and tags we want to keep in the provided html and remove all other tags from html\n static removeTags(string: string, array: string[]) {\n return array ? string.split(\"<\").filter(function (val) { return f(array, val); }).map(function (val) { return f(array, val); }).join(\"\") : string.split(\"<\").map(function (d) { return d.split(\">\").pop(); }).join(\"\");\n function f(array: string[], value: string) {\n return array.map(function (d) { return value.includes(d + \">\"); }).indexOf(true) != -1 ? \"<\" + value : value.split(\">\")[1];\n }\n }\n\n /**\n * this funcation take the whole text we have in editor and\n * extract already exicted bullets in it.\n * @param text\n * @returns map -> with the following values\n * 1: 'existedBullets' if we have any in the text.\n * 2: 'text' newly pasted text in the editor\n */\n static extractExistedBullets(text: string) {\n let map = new Map();\n let existedBullets = text.substring(0, text.lastIndexOf('</ul>'));\n if (existedBullets) {\n existedBullets = existedBullets + '</ul>';\n map.set('existedBullets', existedBullets);\n let x = text.split(existedBullets);\n text = x[1] ? x[1] : '';\n }\n map.set('text', text);\n return map;\n }\n static cleanSpans(htmlString: string) {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n // Select all <li> elements\n const listItems = doc.querySelectorAll('li');\n listItems.forEach(li => {\n if (li?.childNodes?.length > 1) {\n let combinedText = '';\n // Iterate through all child nodes of the <li>\n li?.childNodes?.forEach(child => {\n // Only process element nodes (skip text nodes and other types)\n if (child.nodeType === Node.ELEMENT_NODE) {\n combinedText += (child.textContent || '').trim() + ' ';\n }\n });\n // Remove any trailing whitespace\n combinedText = combinedText.trim();\n // Clear the existing content of the <li> and set its text content\n li.innerHTML = combinedText;\n }\n });\n\n // Serialize the updated DOM back to an HTML string\n return doc.body.innerHTML;\n }\n\n static cleanDiv(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Select all <div> and <span> elements\n const divAndSpanItems = doc.querySelectorAll('div');\n divAndSpanItems.forEach(item => {\n // Create a new <p> element\n const p = document.createElement('p');\n\n let combinedText = '';\n // Iterate through all child nodes of the <div> or <span>\n item.childNodes.forEach(child => {\n // Only process element nodes (skip text nodes and other types)\n if (child.nodeType === Node.ELEMENT_NODE || child.nodeType === Node.TEXT_NODE) {\n combinedText += child.textContent?.replace(/\\u00A0/g, ' ') + ' ';\n }\n });\n combinedText = combinedText.trim();\n p.textContent = combinedText;\n\n // Replace the original <div> or <span> with the new <p>\n item.parentNode?.replaceChild(p, item);\n\n this.removeEmptyChildren(p);\n });\n\n return doc.body.innerHTML;\n }\n\n\n\n static removeEmptyChildren(element: HTMLElement): void {\n const children = Array.from(element.childNodes);\n\n children.forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE && (child as HTMLElement).innerHTML.trim() === '') {\n element.removeChild(child);\n }\n });\n }\n\n static cleanEmptyTags(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively remove empty tags\n function removeEmptyTags(element: HTMLElement): boolean {\n let hasData = false;\n\n const children = Array.from(element.childNodes);\n for (const child of children) {\n if (child.nodeType === Node.ELEMENT_NODE) {\n const el = child as HTMLElement;\n\n // Recursively clean children and check if they have data\n if (removeEmptyTags(el)) {\n hasData = true;\n }\n } else if (child.nodeType === Node.TEXT_NODE && child.textContent?.trim() !== '') {\n // If the text node has non-whitespace content, mark as having data\n hasData = true;\n }\n }\n\n // Remove the element if it has no data and no children with data\n if (!hasData) {\n element.parentNode?.removeChild(element);\n }\n\n return hasData;\n }\n removeEmptyTags(doc.body);\n return doc.body.innerHTML;\n }\n\n static refineAllTags(htmlString: string): string {\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to process b u and i contents\n function cleanBoldItalicUnderline(el: HTMLElement): string {\n let combinedContent = '';\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it is just a text\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n // clean child elements recursiverly\n combinedContent += cleanBoldItalicUnderline(elementChild);\n }\n });\n el.innerHTML = combinedContent;\n //remove empty child\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE && child.textContent === '') {\n el.removeChild(child);\n }\n });\n // cobine content wrap up in the b or u or i\n return `<${el.tagName.toLowerCase()}>${combinedContent}</${el.tagName.toLowerCase()}>`;\n }\n\n\n // Function to combine p\n function combinedivContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'div') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'div') {\n // If it's a nested <p> tag, combine its content recursively\n combinedContent += combinedivContents(elementChild);\n } else if (elementChild.tagName.toLowerCase() === 'p') {\n // Combine content of nested <span> elements\n combinedContent += combinedivContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <p> content\n el.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Function to combine span contents recursively\n function combineSpanContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'span') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'span') {\n // If it's a <span> element, process its content recursively\n combinedContent += combineSpanContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n // For other element nodes, add their outer HTML\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <span> content\n el.innerHTML = combinedContent;\n const ptag = document.createElement('p');\n ptag.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Function to combine p contents recursively\n function combinePContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'p') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'p') {\n // If it's a nested <p> tag, combine its content recursively\n combinedContent += combinePContents(elementChild);\n } else if (elementChild.tagName.toLowerCase() === 'span') {\n // Combine content of nested <span> elements\n combinedContent += combineSpanContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n // For other element nodes, add their outer HTML\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <p> content\n el.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Helper function to wrap adjacent <span> tags in a <p> tag if there are no ancestor tags\n function wrapSpansInP(element: HTMLElement): void {\n // Get all top-level child elements inside the body\n const children = Array.from(element.childNodes);\n const spanElements = children.filter(node => node.nodeType === Node.ELEMENT_NODE && (node as HTMLElement).tagName.toLowerCase() === 'span');\n\n // If all top-level elements are <span> tags, wrap them in a <p> tag\n if (spanElements.length === children.length && children.length > 0) {\n const pElement = document.createElement('p');\n spanElements.forEach(span => {\n pElement.appendChild(span); // Move the <span> elements inside the <p>\n });\n element.appendChild(pElement); // Replace with new <p>\n }\n }\n\n // Function to process all elements\n function processAllElements(element: HTMLElement): void {\n // Select all elements within the current element\n const allElements = Array.from(element.querySelectorAll('*'));\n\n allElements.forEach(el => {\n if (el instanceof HTMLElement) {\n if (el.tagName.toLowerCase() === 'p') {\n combinePContents(el);\n } else if (el.tagName.toLowerCase() === 'span') {\n combineSpanContents(el);\n }\n else if (el.tagName.toLowerCase() === 'div') {\n combinedivContents(el);\n }\n\n // Clean empty tags\n if (el.childNodes.length === 0 || el.textContent?.trim() === '') {\n el.parentNode?.removeChild(el);\n }\n }\n });\n\n // Recursively apply to all child elements\n Array.from(element.children).forEach(child => {\n if (child instanceof HTMLElement) {\n processAllElements(child);\n }\n });\n }\n // check whether the span within the p tags or not\n wrapSpansInP(doc.body);\n\n // Start processing from the body of the document\n processAllElements(doc.body);\n return doc.body.innerHTML;\n }\n\n\n static processParagraphs(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively combine child elements and text into a single <p> tag\n function flattenParagraphs(element: HTMLElement) {\n // Process each <p> element within the current element\n element.querySelectorAll('p').forEach(p => {\n let combinedText = '';\n\n // Iterate through child nodes and elements\n p.childNodes.forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n const el = child as HTMLElement;\n // Combine text from child elements\n combinedText += (el.textContent || '').trim() + ' ';\n // Recursively process child elements if they contain further <p> tags\n if (el.querySelector('p')) {\n flattenParagraphs(el);\n }\n } else if (child.nodeType === Node.TEXT_NODE) {\n combinedText += (child.textContent || '').trim() + ' ';\n }\n });\n\n // Remove any trailing whitespace\n combinedText = combinedText.trim();\n // Update the <p> tag with the combined text\n p.textContent = combinedText;\n\n // Remove all child <p> elements to avoid nested <p> tags\n p.querySelectorAll('p').forEach(childP => childP.remove());\n });\n\n // Recursively process any nested elements within the current element\n element.querySelectorAll('*').forEach(childElement => {\n if (childElement.tagName !== 'P') {\n flattenParagraphs(childElement as HTMLElement);\n }\n });\n }\n\n // Start the flattening process from the root of the document body\n flattenParagraphs(doc.body);\n\n // Serialize the updated DOM back to an HTML string\n return doc.body?.innerHTML;\n }\n\n\n static removeInlineStyles(htmlString: string) {\n // Create a new DOM parser\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively remove styles from all elements\n function removeStylesFromElement(element: HTMLElement) {\n // Remove the 'style' attribute from the current element\n element.removeAttribute('style');\n\n // Recursively remove styles from child nodes\n element.childNodes.forEach((child: Node) => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n removeStylesFromElement(child as HTMLElement);\n }\n });\n }\n\n // Start from the document body\n removeStylesFromElement(doc.body);\n\n // Serialize the document back to an HTML string\n return doc.body.innerHTML;\n }\n\n}\n","import {\n Component,\n ElementRef,\n ViewChild,\n OnInit,\n OnDestroy,\n AfterViewInit,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n HostListener,\n Renderer2,\n Inject\n}\n from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TableComponent } from './table/table.component';\nimport { ButtonComponent } from '../button/button.component';\nimport BulletUtils from './bullet-utils';\nimport { Subscription } from 'rxjs';\n\ninterface ToolbarItem {\n type: string;\n icon: string;\n title: string;\n command: string;\n}\n\n@Component({\n selector: 'app-custom-editor',\n standalone: true,\n imports: [CommonModule, TableComponent, MatTooltipModule, MatIconModule, ButtonComponent],\n templateUrl: './custom-editor.component.html',\n styleUrls: ['./custom-editor.component.scss'],\n encapsulation: ViewEncapsulation.None\n}\n\n) export class CustomEditorComponent implements OnInit,\n OnDestroy,\n AfterViewInit {\n constructor(\n @Inject(Renderer2) private renderer: Renderer2,\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n\n // Get base path dynamically\n const basePath = this.getBasePath();\n\n // Register SVG icons for custom editor\n // Note: Add more icons as SVG files become available\n this.iconRegistry.addSvgIcon(\n 'delete',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/delete.svg`)\n );\n // Register the Table.svg icon\n this.iconRegistry.addSvgIcon(\n 'table',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/Table.svg`)\n );\n // Add more icon registrations here as needed\n }\n\n /**\n * Dynamically determines the base path for assets\n * Handles both root deployment and subdirectory deployment (e.g., /allsorter-lib/)\n */\n private getBasePath(): string {\n // Check if we're in a browser environment\n if (typeof document === 'undefined') {\n return '';\n }\n\n // Get base href from document\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n // Remove trailing slash and return\n return baseHref.replace(/\\/$/, '');\n }\n\n // Fallback: extract base path from current location\n const pathname = window.location.pathname;\n // Check if pathname contains a known subdirectory pattern\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n // Default to root\n return '';\n }\n\n @ViewChild('editorReference', {\n static: true\n })\n editorReference!: ElementRef<HTMLElement>;\n\n @ViewChild('editorContainer', {\n static: true\n })\n editorContainer?: ElementRef<HTMLElement>;\n\n @Input() bold?: boolean;\n @Input() italic?: boolean;\n @Input() underline?: boolean;\n @Input() list?: boolean;\n @Input() isVisible: boolean = true;\n @Input() dataTestId: string = '';\n\n // Editor labels inputs\n @Input() showLabels: boolean = false;\n @Input() leftLabelText: string = 'Left Text';\n @Input() rightLabelText: string = 'Right Text';\n\n // New input properties\n @Input() initialValue: string = '';\n @Input() contentFromParent: string = '';\n @Input() editScreenSection: string = '';\n @Input() actionType: any;\n @Input() historyControls: boolean = true; // Single flag for undo/redo buttons\n @Input() autobullet: boolean = true;\n\n @Input() skillsBullet?: boolean;\n @Input() jsonData: any;\n @Input() formJsonData: any;\n @Input() editorId: string = 'editor';\n @Input() sectionId: any;\n @Input() actionId: any;\n\n // Undo/Redo controls\n @Input() undoCustom?: boolean;\n @Input() redoCustom?: boolean;\n @Input() undoSkill?: boolean;\n @Input() redoSkill?: boolean;\n\n // AI and table options\n @Input() matOptionAI?: boolean;\n @Input() hideTableOption?: boolean = false;\n @Input() hideAutoBulletOption?: boolean = false;\n @Input() hideAIOption?: boolean = false;\n @Input() showAIButton: boolean = true;\n\n // Table button controls\n @Input() insertTablebtn?: boolean;\n @Input() insertRowAbovebtn?: boolean;\n @Input() insertRowBelowbtn?: boolean;\n @Input() insertColumnLeftbtn?: boolean;\n @Input() insertColumnRightbtn?: boolean;\n @Input() deleteTablebtn?: boolean;\n @Input() deleteRowAbovebtn?: boolean;\n @Input() deleteRowBelowbtn?: boolean;\n @Input() deleteColumnLeftbtn?: boolean;\n @Input() deleteColumnRightbtn?: boolean;\n\n // Table visibility control\n @Input() showTable: boolean = true;\n\n @Output() contentChangeFromQuill = new EventEmitter<string>();\n @Output() ApplyAIinQuill = new EventEmitter<any>();\n @Output() onAutoBullet = new EventEmitter<any>();\n // Generic configuration approach\n @Input() toolbarConfig: ToolbarItem[] = [{\n type: 'bold', icon: 'format_bold', title: 'Bold', command: 'bold'\n },\n {\n type: 'italic', icon: 'format_italic', title: 'Italic', command: 'italic'\n },\n {\n type: 'underline', icon: 'format_underline', title: 'Underline ', command: 'underline'\n }\n\n ];\n\n // Text formatting configuration\n @Input() textFormattingConfig: ToolbarItem[] = [{\n type: 'list', icon: 'format_list_bulleted', title: 'Bullet List', command: 'insertUnorderedList'\n }];\n\n boldedText = false;\n italicTexted = false;\n underlineTexted = false;\n listTexted = false;\n\n // Auto bullet and skills bullet properties\n autoBulletDisable: boolean = false;\n isLoadingAI: boolean = false;\n isDisabled: boolean = false;\n AutoBulletButton: string = \"Auto Bullet\";\n ApplyAiButton: string = \"Apply AI\";\n skillsButton: string = \"Bullet Skills\";\n isSkillBullet: any = false;\n isAutoBullet: boolean = false;\n previousContent: string = '';\n previousContentForTextChange: string = '';\n\n // History management for undo/redo\n private history: string[] = [];\n private redoStack: string[] = [];\n private content: string = '';\n savedRange: any;\n\n // Additional properties from main project\n FormValue: any;\n forDisableButton: any;\n orgUUID: string = '';\n resumeId: number = 0;\n editSection$: string = '';\n wsSubsription?: Subscription;\n timeout: any = null;\n quillInstance: any = null;\n quill: any = null;\n table: any = null;\n isLoading: boolean = true;\n spellChecker$: boolean = false;\n checkPreserveOriginalScreen: boolean = false;\n checkSideBySideScreen: boolean = false;\n checkPreserveOriginalScreenforButtons: boolean = false;\n summaryAIBackGroundCheck: boolean = false;\n private overlayIdCounter: number = 1;\n\n // Responsive styling dropdown\n isSmallScreen: boolean = false;\n showStylingDropdown: boolean = false;\n showTextFormattingDropdown: boolean = false;\n\n // List of registered SVG icon names\n private registeredSvgIcons: Set<string> = new Set(['delete', 'table']);\n\n /**\n * Check if an icon has an SVG version registered\n */\n isSvgIcon(iconName: string): boolean {\n return this.registeredSvgIcons.has(iconName);\n }\n\n // Timeout handlers for dropdown hiding\n private stylingDropdownTimeout: any;\n private textFormattingDropdownTimeout: any;\n private resizeObserver?: ResizeObserver;\n\n ngOnInit(): void {\n\n // Initialize editor with initial value or default content\n if (this.editorReference?.nativeElement) {\n const content = this.initialValue || this.contentFromParent || '<p>Start typing here...</p>';\n this.editorReference.nativeElement.innerHTML = content;\n }\n\n // Check initial size based on container width\n this.checkScreenSize();\n\n // Add window resize listener as a fallback (container-based logic is in ResizeObserver)\n window.addEventListener('resize', () => this.checkScreenSize());\n\n // Add click outside listener to close dropdowns\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['contentFromParent'] && changes['contentFromParent'].currentValue !== undefined) {\n this.isLoadingAI = false;\n if (this.editorReference?.nativeElement) {\n this.updateEditorContentSafely(this.contentFromParent);\n this.autoBulletDisable = false;\n this.textChange();\n }\n }\n }\n\n private updateEditorContentSafely(newContent: string): void {\n if (!this.editorReference?.nativeElement || !newContent) {\n return;\n }\n const editorElement = this.editorReference.nativeElement;\n const currentContent = editorElement.innerHTML;\n\n if (currentContent === newContent) {\n return;\n }\n\n const selection = window.getSelection();\n let cursorPosition = 0;\n let range: Range | null = null;\n if (selection && selection.rangeCount > 0) {\n range = selection.getRangeAt(0);\n cursorPosition = this.getCursorPosition(range, editorElement);\n }\n\n if (newContent.startsWith(\"<p>\")) {\n editorElement.innerHTML = newContent;\n } else {\n editorElement.innerHTML = \"<p>\" + newContent + \"</p>\";\n }\n\n if (range && cursorPosition >= 0) {\n this.restoreCursorPosition(editorElement, cursorPosition);\n }\n }\n\n private getCursorPosition(range: Range, editorElement: HTMLElement): number {\n try {\n const preCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(editorElement);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n return preCaretRange.toString().length;\n } catch (error) {\n return 0;\n }\n }\n\n private restoreCursorPosition(editorElement: HTMLElement, position: number): void {\n try {\n const walker = document.createTreeWalker(\n editorElement,\n NodeFilter.SHOW_TEXT,\n null\n );\n let currentPosition = 0;\n let node: Node | null = null;\n while (walker.nextNode()) {\n const textNode = walker.currentNode;\n const textLength = textNode.textContent?.length || 0;\n if (currentPosition + textLength >= position) {\n node = textNode;\n break;\n }\n currentPosition += textLength;\n }\n if (node) {\n const range = document.createRange();\n const selection = window.getSelection();\n const offset = position - currentPosition;\n range.setStart(node, Math.min(offset, node.textContent?.length || 0));\n range.collapse(true);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n } catch (error) {\n const range = document.createRange();\n const selection = window.getSelection();\n range.selectNodeContents(editorElement);\n range.collapse(false);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }\n\n ngAfterViewInit(): void {\n const editorElement = this.editorReference.nativeElement;\n if (this.initialValue?.startsWith(\"<p>\")) {\n editorElement.innerHTML = this.initialValue;\n } else {\n editorElement.innerHTML = \"<p>\" + this.initialValue + \"</p>\";\n }\n\n const isOnlyPTag = /^<p>(.*?)<\\/p>$/.test(editorElement.innerHTML?.trim());\n const range = document.createRange();\n const sel = window.getSelection();\n if (isOnlyPTag) {\n const pTag = editorElement.querySelector(\"p\");\n if (pTag) {\n range.setStart(pTag, 0);\n range.collapse(true);\n }\n } else {\n range.selectNodeContents(editorElement);\n range.collapse(false);\n }\n sel?.removeAllRanges();\n sel?.addRange(range);\n\n this.assignUniqueIdAndStyle();\n this.saveHistory();\n\n // Observe container size so we can switch layout based on container width, not screen width\n if (this.editorContainer?.nativeElement && typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkScreenSize();\n });\n this.resizeObserver.observe(this.editorContainer.nativeElement);\n } else {\n // Fallback check\n this.checkScreenSize();\n }\n }\n\n @HostListener(\"click\")\n onClick(): void {\n setTimeout(() => this.assignUniqueIdAndStyle(), 0);\n }\n\n private assignUniqueIdAndStyle(): void {\n if (!this.renderer) return;\n\n const overlayPane = document.querySelector(\".cdk-overlay-pane\");\n if (overlayPane) {\n const isDialog = overlayPane.querySelector('mat-dialog-container');\n if (!isDialog) {\n const uniqueId = `cdk-overlay-${this.editorId}-${this.overlayIdCounter++}`;\n this.renderer.setAttribute(overlayPane, \"id\", uniqueId);\n this.renderer.setStyle(overlayPane, \"width\", \"216px\");\n this.renderer.setStyle(overlayPane, \"min-width\", \"216px\");\n }\n }\n }\n\n getEditorElement(): HTMLElement | undefined {\n return this.editorReference?.nativeElement;\n }\n\n // Bound methods for table component\n getBoundGetEditorElement(): () => HTMLElement | undefined {\n return () => this.getEditorElement();\n }\n\n getBoundSaveHistory(): () => void {\n return () => this.saveHistory();\n }\n\n getBoundTextChange(): () => void {\n return () => this.textChange();\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('resize', () => this.checkScreenSize());\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = undefined;\n }\n\n if (this.stylingDropdownTimeout) {\n clearTimeout(this.stylingDropdownTimeout);\n }\n if (this.textFormattingDropdownTimeout) {\n clearTimeout(this.textFormattingDropdownTimeout);\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (this.wsSubsription) {\n this.wsSubsription.unsubscribe();\n }\n }\n\n // Responsive methods\n private checkScreenSize(): void {\n let width = 0;\n\n if (this.editorContainer?.nativeElement) {\n const el = this.editorContainer.nativeElement;\n width = el.offsetWidth || (el as any).clientWidth || 0;\n }\n\n // Fallback to window width if container width is not available\n if (!width && typeof window !== 'undefined') {\n width = window.innerWidth;\n }\n\n // Small layout when container width is below 500px\n this.isSmallScreen = width < 500;\n }\n\n // Handle text formatting button clicks\n handleTextFormattingClick(event: MouseEvent, item: ToolbarItem): void {\n event.preventDefault();\n\n switch (item.command) {\n case 'table':\n // Table functionality is handled by the app-table component\n break;\n case 'autobullet':\n this.transformToBullets(event);\n break;\n case 'skillsbullet':\n this.transformToSkillsBullets(event);\n break;\n default:\n // For list and other commands, use the standard execCmd\n this.execCmd(event, item.command);\n break;\n }\n }\n\n // Toggle styling dropdown\n toggleStylingDropdown(): void {\n this.showStylingDropdown = !this.showStylingDropdown;\n if (this.showStylingDropdown) {\n this.showTextFormattingDropdown = false;\n }\n }\n\n // Toggle text formatting dropdown\n toggleTextFormattingDropdown(): void {\n this.showTextFormattingDropdown = !this.showTextFormattingDropdown;\n if (this.showTextFormattingDropdown) {\n this.showStylingDropdown = false;\n }\n }\n\n // Show styling dropdown on hover\n showStylingDropdownOnHover(): void {\n this.showStylingDropdown = true;\n this.showTextFormattingDropdown = false;\n }\n\n // Show text formatting dropdown on hover\n showTextFormattingDropdownOnHover(): void {\n this.showTextFormattingDropdown = true;\n this.showStylingDropdown = false;\n }\n\n // Hide styling dropdown with delay\n hideStylingDropdown(): void {\n this.stylingDropdownTimeout = setTimeout(() => {\n this.showStylingDropdown = false;\n }, 200);\n }\n\n // Hide text formatting dropdown with delay\n hideTextFormattingDropdown(): void {\n this.textFormattingDropdownTimeout = setTimeout(() => {\n this.showTextFormattingDropdown = false;\n }, 200);\n }\n\n // Clear timeout when re-entering dropdown\n clearStylingDropdownTimeout(): void {\n if (this.stylingDropdownTimeout) {\n clearTimeout(this.stylingDropdownTimeout);\n }\n }\n\n clearTextFormattingDropdownTimeout(): void {\n if (this.textFormattingDropdownTimeout) {\n clearTimeout(this.textFormattingDropdownTimeout);\n }\n }\n\n // Handle click outside to close dropdowns\n handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n if (!target.closest('.styling-dropdown') && !target.closest('.text-formatting-dropdown')) {\n this.showStylingDropdown = false;\n this.showTextFormattingDropdown = false;\n }\n }\n\n\n\n\n\n execCmd(event: MouseEvent, command: string, value: string | null = null): void {\n event.preventDefault();\n this.saveHistory();\n\n if (command === 'undo') {\n this.undo(event);\n return;\n } else if (command === 'redo') {\n this.redo(event);\n return;\n } else {\n document.execCommand(command, false, value || undefined);\n }\n\n this.updateTagHierarchy();\n }\n\n updateTagHierarchy(): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let element = range.startContainer as Node;\n\n // Reset flags at the beginning\n this.boldedText = false;\n this.underlineTexted = false;\n this.italicTexted = false;\n this.listTexted = false;\n const tags: string[] = [];\n\n // Traverse up the DOM tree to set flags\n while (element && element.nodeName !== \"DIV\") {\n if (element.nodeType === Node.ELEMENT_NODE) {\n const tagName = (element.nodeName || \"\").toLowerCase();\n tags.unshift(tagName);\n\n // Set flags based on tag names\n if (tagName === \"b\" || tagName === \"strong\") {\n this.boldedText = true;\n }\n\n else if (tagName === \"u\" || tagName === \"ins\") {\n this.underlineTexted = true;\n }\n\n else if (tagName === \"i\" || tagName === \"em\") {\n this.italicTexted = true;\n }\n\n else if (tagName === \"ul\" || tagName === \"ol\" || tagName === \"li\") {\n this.listTexted = true;\n }\n\n else if (tagName === \"h1\" || tagName === \"h2\" || tagName === \"h3\" || tagName === \"h4\" || tagName === \"h5\" || tagName === \"h6\") {\n // this.headerTexted = true; // Removed headerTexted\n }\n }\n\n element = element.parentNode!;\n }\n\n const tagHierarchyDiv = document.getElementById(\"tag-hierarchy\");\n\n if (tagHierarchyDiv) {\n tagHierarchyDiv.textContent = tags.join(\" > \");\n }\n }\n }\n\n onEditorInput(): void {\n // Save history on input changes\n this.saveHistory();\n // Emit content changes\n this.textChange();\n }\n\n getActiveState(type: string): boolean {\n switch (type) {\n case 'bold': return this.boldedText;\n case 'italic': return this.italicTexted;\n case 'underline': return this.underlineTexted;\n case 'header': return false; // Removed headerTexted\n case 'list': return this.listTexted;\n case 'table': return false; // Table button is never active\n case 'autobullet': return false; // Auto bullet button is never active\n case 'skillsbullet': return this.isSkillBullet; // Skills bullet button shows active state\n default: return false;\n }\n }\n\n undo(event: MouseEvent): void {\n event.preventDefault();\n const editor = document.getElementById(this.editorId);\n if (editor) {\n const lastState = this.history.pop();\n if (lastState !== undefined) {\n this.redoStack.push(editor.innerHTML);\n editor.innerHTML = lastState;\n }\n }\n this.textChange();\n }\n\n redo(event: MouseEvent): void {\n event.preventDefault();\n const editor = document.getElementById(this.editorId);\n if (editor) {\n const nextState = this.redoStack.pop();\n if (nextState !== undefined) {\n this.history.push(editor.innerHTML);\n editor.innerHTML = nextState;\n }\n }\n this.textChange();\n }\n\n textChange(): void {\n if (this.editorReference.nativeElement.innerHTML !== \"<p>Awaiting response from AI...</p>\") {\n this.content = this.editorReference.nativeElement.innerHTML;\n this.contentChangeFromQuill.emit(this.content);\n }\n }\n\n TextChange(): void {\n this.textChange();\n }\n\n saveHistory(): void {\n const editor = document.getElementById(this.editorId);\n if (editor && this.editorReference.nativeElement.innerHTML !== \"<p>Awaiting response from AI...</p>\") {\n this.history.push(editor.innerHTML);\n this.redoStack = [];\n }\n this.textChange();\n }\n\n\n toggleDiv(event: Event, visible: boolean): void {\n event.preventDefault();\n\n if (visible) {\n this.isVisible = false;\n }\n\n else {\n this.isVisible = true;\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n const selection = window.getSelection();\n const range = selection?.getRangeAt(0);\n const selectedLiTags = this.getSelectedLiTags();\n\n if (event.key === \"Enter\" && selection && range) {\n const parentElement = range.startContainer.parentElement;\n const parentNode = range.startContainer; // Get the current node\n\n // Check if the cursor is within an empty <p> tag\n if (parentElement && parentElement.tagName === \"P\" && parentElement.textContent?.trim() === \"\"\n\n ) {\n event.preventDefault(); // Prevent the default Enter behavior\n\n // Create the new <p><br></p> structure\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n // Insert the new element at the current cursor position\n range.deleteContents(); // Optional: clear any selected text\n range.insertNode(newParagraph);\n\n // Optionally, place the cursor at the end of the new paragraph\n const newRange = document.createRange();\n newRange.setStartAfter(newParagraph);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n\n else if ((parentElement?.tagName === \"B\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"U\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"I\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"SPAN\" && (parentElement.closest(\"b\") || parentElement.closest(\"u\") || parentElement.closest(\"i\")) && range.startOffset === 0) || (parentElement?.tagName === \"SPAN\" && (range.startOffset === 0 || range.endOffset === 0))) {\n event.preventDefault();\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n if (parentElement?.parentElement) {\n parentElement.parentElement.insertBefore(newParagraph, parentElement);\n }\n\n const newRange = document.createRange();\n const selection = window.getSelection();\n newRange.setStart(newParagraph, 0);\n newRange.collapse(true);\n selection?.removeAllRanges();\n selection?.addRange(newRange);\n }\n\n else if (parentNode.nodeType === Node.TEXT_NODE && parentElement?.tagName === \"DIV\" && range.startOffset === (parentElement.textContent?.length || 0)) {\n event.preventDefault();\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n if (parentElement?.parentElement) {\n parentElement.insertBefore(newParagraph, parentNode.nextSibling);\n }\n\n const newRange = document.createRange();\n newRange.setStart(newParagraph, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n }\n\n else if (event.key === \"Tab\") {\n event.preventDefault();\n\n if (event.shiftKey) {\n // Outdent if Shift + Tab is pressed\n document.execCommand(\"outdent\");\n }\n\n else {\n // Indent if Tab is pressed\n document.execCommand(\"indent\");\n }\n }\n\n else if (event.key === \"Backspace\") {\n if (selectedLiTags.length === 1) {\n if (range?.startOffset === 0) {\n if (!this.isTextHighlighted()) {\n event.preventDefault();\n this.handleBackspace(range, selectedLiTags[0]);\n return;\n }\n\n else {\n document.execCommand(\"insertUnorderedList\", false);\n }\n }\n }\n }\n\n this.saveHistory();\n }\n\n handleBackspace(range: Range, liElement: HTMLElement): void {\n if (range.startContainer.nodeType === Node.TEXT_NODE) {\n const pElement = document.createElement(\"p\");\n pElement.innerHTML = liElement.innerHTML;\n liElement.parentNode?.replaceChild(pElement, liElement);\n }\n\n document.execCommand(\"insertUnorderedList\", false);\n this.saveHistory();\n }\n\n\n isTextHighlighted(): boolean {\n const selection = window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n return !range.collapsed && range.toString().trim().length > 0;\n }\n\n\n handlePaste(event: ClipboardEvent): void {\n event.preventDefault();\n const clipboardData = event.clipboardData;\n if (!clipboardData) return;\n const selectedLiTags = this.getSelectedLiTags();\n let pastedData = this.getPastedData(clipboardData);\n\n if (selectedLiTags?.length >= 1) {\n pastedData = pastedData.replace(/<\\/?ul[^>]*>/gi, \"\");\n }\n\n pastedData = this.removeSpacesFromHtml(pastedData);\n pastedData = this.applyRegexTransformations(pastedData);\n pastedData = BulletUtils.refineAllTags(pastedData);\n pastedData = BulletUtils.removeInlineStyles(pastedData);\n pastedData = BulletUtils.cleanDiv(pastedData);\n\n let tempDiv = this.createTemporaryDiv(pastedData);\n this.removeStylesFromElements(tempDiv);\n\n const tables = tempDiv.getElementsByTagName(\"table\");\n\n if (tables.length > 0) {\n this.transformTableData(tables);\n }\n\n else {\n pastedData = this.applyBulletUtilsTransformations(pastedData);\n tempDiv.innerHTML = pastedData;\n }\n\n this.insertTransformedContent(tempDiv);\n this.saveHistory();\n this.updateTagHierarchy();\n }\n\n transformData(data: string): string {\n data = BulletUtils.onPasteBulletHandler(data);\n data = BulletUtils.cleanSpans(data);\n return data;\n }\n\n applyBulletUtilsTransformations(data: string): string {\n data = BulletUtils.onPasteBulletHandler(data);\n return data;\n }\n\n\n getSelectedLiTags(): HTMLElement[] {\n\n const selection = window.getSelection();\n const selectedLiTags: HTMLElement[] = [];\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n const startContainer = range.startContainer;\n const endContainer = range.endContainer;\n\n // Check up to 8 levels of ancestors for start and end containers\n const startLi = this.getAncestorLi(startContainer);\n const endLi = this.getAncestorLi(endContainer);\n\n if (startLi && startLi === endLi) {\n selectedLiTags.push(startLi);\n }\n }\n\n return selectedLiTags;\n }\n\n getAncestorLi(node: Node): HTMLElement | null {\n let currentNode: Node | null = node;\n\n for (let i = 0; i < 8 && currentNode; i++) {\n if (currentNode.nodeType === Node.ELEMENT_NODE && (currentNode as HTMLElement).nodeName === \"LI\"\n\n ) {\n return currentNode as HTMLElement;\n }\n\n currentNode = currentNode.parentNode;\n }\n\n return null;\n }\n\n getPastedData(clipboardData: DataTransfer): string {\n return (clipboardData.getData(\"text/html\") || clipboardData.getData(\"text/plain\"));\n }\n\n removeSpacesFromHtml(htmlString: string) {\n return htmlString?.replace(/\\n/g, \"\");\n }\n\n removeStylesFromHtml(htmlString: string): string {\n // Remove inline styles but preserve HTML structure\n return htmlString.replace(/style=\"[^\"]*\"/g, '');\n\n }\n\n applyRegexTransformations(data: string): string {\n const regexPattern = /<p>(.*?)<span.*?>(.*?)<\\/span>(.*?)<\\/p>/g;\n return data.replace(regexPattern, \"<p>$1$2$3</p>\");\n }\n\n createTemporaryDiv(data: string): HTMLDivElement {\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = data;\n return tempDiv;\n }\n\n removeStylesFromElements(tempDiv: HTMLDivElement): void {\n // Remove styles from <p> tags\n const pTags = tempDiv.getElementsByTagName(\"p\");\n\n Array.from(pTags).forEach((p) => {\n p.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <span> tags\n const spanTags = tempDiv.getElementsByTagName(\"span\");\n\n Array.from(spanTags).forEach((span) => {\n span.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <div> tags\n const divTags = tempDiv.getElementsByTagName(\"div\");\n\n Array.from(divTags).forEach((div) => {\n div.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <table> and its children\n const tables = tempDiv.getElementsByTagName(\"table\");\n\n Array.from(tables).forEach((table) => {\n table.removeAttribute(\"style\");\n\n Array.from(table.getElementsByTagName(\"tr\")).forEach((tr) => {\n tr.removeAttribute(\"style\");\n }\n\n );\n\n Array.from(table.getElementsByTagName(\"td\")).forEach((td) => {\n td.removeAttribute(\"style\");\n }\n\n );\n }\n\n );\n }\n\n insertTransformedContent(tempDiv: HTMLDivElement): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n const fragment = document.createDocumentFragment();\n let node;\n while ((node = tempDiv.firstChild)) {\n fragment.appendChild(node);\n }\n range.insertNode(fragment);\n selection.removeAllRanges();\n selection.addRange(range);\n } else {\n // Fallback: insert at cursor position or append to editor\n if (this.editorReference?.nativeElement) {\n const editor = this.editorReference.nativeElement;\n\n // Try to place cursor at the end and insert there\n const range = document.createRange();\n range.selectNodeContents(editor);\n range.collapse(false); // collapse to end\n\n const fragment = document.createDocumentFragment();\n let node;\n while ((node = tempDiv.firstChild)) {\n fragment.appendChild(node);\n }\n\n range.insertNode(fragment);\n range.collapse(false);\n\n // Set cursor position\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }\n }\n\n transformTableData(tables: HTMLCollectionOf<HTMLTableElement>): void {\n Array.from(tables).forEach((table) => {\n const rows = table.getElementsByTagName(\"tr\");\n\n Array.from(rows).forEach((row) => {\n const cells = row.getElementsByTagName(\"td\");\n\n Array.from(cells).forEach((cell) => {\n cell.innerHTML = this.transformData(cell.innerHTML);\n }\n\n );\n }\n\n );\n }\n\n );\n }\n\n // Auto bullet and skills bullet methods\n transformToBullets(event: MouseEvent): void {\n this.autoBulletDisable = true;\n event.preventDefault();\n this.transformToBulletsAlgorithmOverride();\n }\n\n transformToBulletsAlgorithmOverride(): void {\n if (!this.isAutoBullet) {\n this.previousContent = this.editorReference.nativeElement.innerHTML;\n this.isAutoBullet = true;\n this.editorReference.nativeElement.innerHTML = BulletUtils.autoBullet(this.previousContent);\n this.AutoBulletButton = \"Undo\";\n } else {\n this.isAutoBullet = false;\n this.editorReference.nativeElement.innerHTML = this.previousContent;\n this.AutoBulletButton = \"Auto Bullet\";\n }\n this.autoBulletDisable = false;\n }\n\n\n transformToSkillsBullets(event: MouseEvent): void {\n event.preventDefault();\n if (!this.isSkillBullet) {\n this.previousContent = this.editorReference.nativeElement.innerHTML;\n this.isSkillBullet = true;\n this.editorReference.nativeElement.innerHTML = BulletUtils.skillBullet(this.previousContent);\n this.skillsButton = \"Undo\";\n } else {\n this.isSkillBullet = false;\n this.editorReference.nativeElement.innerHTML = this.previousContent;\n this.skillsButton = \"Bullet Skills\";\n }\n this.saveHistory();\n this.textChange();\n }\n\n checkHtmlContent(content: string): boolean {\n if (!content) {\n return this.editorReference?.nativeElement?.innerHTML !== '<p>Start typing here...</p>' && this.editorReference?.nativeElement?.innerHTML.trim().length > 0;\n }\n return Boolean(content && content.trim().length > 0);\n }\n\n // Table operations\n addTable(event: MouseEvent): void {\n event.preventDefault();\n const tableHTML = `\n <table style=\"border-collapse: collapse; width: 100%;\">\n <tbody>\n <tr height=18>\n <td></td>\n <td></td>\n </tr>\n <tr height=18>\n <td></td>\n <td></td>\n </tr>\n </tbody>\n </table>\n <br>\n `;\n document.execCommand(\"insertHTML\", false, tableHTML);\n this.saveHistory();\n }\n\n deleteTable(event: MouseEvent): void {\n event.preventDefault();\n const editor = document.getElementById(this.editorId);\n if (editor) {\n const table = editor.querySelector(\"table\");\n if (!table) return;\n table.remove();\n this.saveHistory();\n }\n }\n\n addRowBelow(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = cell.parentNode;\n const table = row.parentNode;\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const newRow = row.cloneNode(true);\n Array.from(newRow.children).forEach((cell: any) => (cell.textContent = \"\"));\n newRow.setAttribute(\"height\", \"18\");\n row.insertAdjacentElement(\"afterend\", newRow);\n this.saveHistory();\n }\n }\n }\n }\n\n addRowAbove(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = cell.parentNode;\n const table = row.parentNode;\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const newRow = row.cloneNode(true);\n Array.from(newRow.children).forEach((cell: any) => (cell.textContent = \"\"));\n newRow.setAttribute(\"height\", \"18\");\n row.insertAdjacentElement(\"beforebegin\", newRow);\n this.saveHistory();\n }\n }\n }\n }\n\n addColumnLeft(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = cell.closest(\"table\");\n if (table) {\n const rowIndex = Array.from(cell.parentNode.children).indexOf(cell);\n Array.from(table.rows).forEach((row: any) => {\n const newCell = row.cells[rowIndex].cloneNode(false);\n newCell.textContent = \"\";\n row.cells[rowIndex].insertAdjacentElement(\"beforebegin\", newCell);\n });\n this.saveHistory();\n }\n }\n }\n }\n\n addColumnRight(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = cell.closest(\"table\");\n if (table) {\n const cellIndex = Array.from(cell.parentNode.children).indexOf(cell);\n Array.from(table.rows).forEach((row: any) => {\n const newCell = row.cells[cellIndex].cloneNode(false);\n newCell.textContent = \"\";\n row.cells[cellIndex].insertAdjacentElement(\"afterend\", newCell);\n });\n this.saveHistory();\n }\n }\n }\n }\n\n deleteColumnLeft(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = cell.closest(\"table\");\n if (!table) return;\n const cellIndex = Array.from(cell.parentNode.children).indexOf(cell);\n if (cellIndex > 0) {\n Array.from(table.rows).forEach((row: any) => {\n row.deleteCell(cellIndex - 1);\n });\n this.saveHistory();\n }\n }\n }\n }\n\n deleteColumnRight(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = cell.closest(\"table\");\n if (!table) return;\n const cellIndex = Array.from(cell.parentNode.children).indexOf(cell);\n Array.from(table.rows).forEach((row: any) => {\n if (row.cells.length > cellIndex + 1) {\n row.deleteCell(cellIndex + 1);\n }\n });\n this.saveHistory();\n }\n }\n }\n\n deleteCurrentColumn(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = cell.closest(\"table\");\n if (!table) return;\n const cellIndex = Array.from(cell.parentNode.children).indexOf(cell);\n Array.from(table.rows).forEach((row: any) => {\n if (row.cells.length > cellIndex) {\n row.deleteCell(cellIndex);\n }\n });\n this.saveHistory();\n }\n }\n }\n\n deleteCurrentRow(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = cell.parentNode;\n const table = row.parentNode;\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n row.remove();\n this.saveHistory();\n }\n }\n }\n }\n\n deleteRowAbove(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = cell.parentNode;\n const table = row.parentNode;\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const previousRow = row.previousElementSibling;\n if (previousRow) {\n previousRow.remove();\n this.saveHistory();\n }\n }\n }\n }\n }\n\n deleteRowBelow(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = cell.parentNode;\n const table = row.parentNode;\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const nextRow = row.nextElementSibling;\n if (nextRow) {\n nextRow.remove();\n this.saveHistory();\n }\n }\n }\n }\n }\n\n // AI operations\n updateAIToolInMemory(tool: any): void {\n }\n\n useAITool(event: MouseEvent): void {\n event.preventDefault();\n this.ApplyAIinQuill.emit({\n content: this.editorReference.nativeElement.innerHTML,\n editorId: this.editorId\n });\n }\n\n useAutoBullet(event: MouseEvent): void {\n event.preventDefault();\n this.onAutoBullet.emit({\n content: this.editorReference.nativeElement.innerHTML,\n editorId: this.editorId\n });\n }\n\n // useSkillsBullet(event: MouseEvent): void {\n // event.preventDefault();\n // this.onSkillsBullet.emit({\n // content: this.editorReference.nativeElement.innerHTML,\n // editorId: this.editorId\n // });\n // }\n\n}\n","<!-- Editor Labels Section -->\n<div class=\"editor-labels\" *ngIf=\"showLabels\">\n <div class=\"left-label\">{{ leftLabelText }}</div>\n <div class=\"right-label\">{{ rightLabelText }}</div>\n</div>\n<div class=\"editor-container\" #editorContainer>\n <!-- Toolbar Section -->\n <div class=\"toolbar\">\n <!-- Styling Dropdown (Small Screens Only) -->\n <div class=\"styling-dropdown\" *ngIf=\"isSmallScreen\">\n <span class=\"styling-text\" (mouseenter)=\"showStylingDropdownOnHover()\" (mouseleave)=\"hideStylingDropdown()\">\n Styling\n </span>\n\n <div class=\"styling-dropdown-content\" *ngIf=\"showStylingDropdown\" (mouseenter)=\"clearStylingDropdownTimeout()\"\n (mouseleave)=\"hideStylingDropdown()\">\n <button *ngFor=\"let item of toolbarConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n (click)=\"execCmd($event, item.command)\" [title]=\"item.title\" type=\"button\" [matTooltip]=\"item.title\"\n matTooltipPosition=\"above\">\n <mat-icon *ngIf=\"isSvgIcon(item.icon)\" [svgIcon]=\"item.icon\"\n [class.active-icon]=\"getActiveState(item.type)\"></mat-icon>\n <span *ngIf=\"!isSvgIcon(item.icon)\" class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n </div>\n </div>\n\n <!-- Individual Styling Buttons (Large Containers Only) -->\n <ng-container *ngIf=\"!isSmallScreen\">\n <button *ngFor=\"let item of toolbarConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n (click)=\"execCmd($event, item.command)\" [title]=\"item.title\" type=\"button\" [matTooltip]=\"item.title\"\n matTooltipPosition=\"above\">\n <mat-icon *ngIf=\"isSvgIcon(item.icon)\" [svgIcon]=\"item.icon\"\n [class.active-icon]=\"getActiveState(item.type)\"></mat-icon>\n <span *ngIf=\"!isSvgIcon(item.icon)\" class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n </ng-container>\n\n <!-- Text Formatting Dropdown (Small Screens Only) -->\n <div class=\"text-formatting-dropdown\" *ngIf=\"isSmallScreen\">\n <span class=\"text-formatting-text\" (mouseenter)=\"showTextFormattingDropdownOnHover()\"\n (mouseleave)=\"hideTextFormattingDropdown()\">\n Text Formatting\n </span>\n\n <div class=\"text-formatting-dropdown-content\" *ngIf=\"showTextFormattingDropdown\"\n (mouseenter)=\"clearTextFormattingDropdownTimeout()\" (mouseleave)=\"hideTextFormattingDropdown()\">\n\n <!-- Text Formatting Buttons -->\n <button *ngFor=\"let item of textFormattingConfig\" class=\"format-button\"\n [class.active]=\"getActiveState(item.type)\" (click)=\"handleTextFormattingClick($event, item)\"\n [title]=\"item.title\" type=\"button\">\n <mat-icon *ngIf=\"isSvgIcon(item.icon)\" [svgIcon]=\"item.icon\"\n [class.active-icon]=\"getActiveState(item.type)\"></mat-icon>\n <span *ngIf=\"!isSvgIcon(item.icon)\" class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n\n <!-- Table Component (Small Screens Only) -->\n <app-table *ngIf=\"showTable\" [getEditorElement]=\"getBoundGetEditorElement()\"\n [saveHistoryMethod]=\"getBoundSaveHistory()\" [textChangeMethod]=\"getBoundTextChange()\">\n </app-table>\n\n <!-- Auto Bullet Button -->\n <button *ngIf=\"autobullet\" class=\"auto-bullet\" mat-flat-button (click)=\"$event.stopPropagation(); useAutoBullet($event)\"\n [disabled]=\"autoBulletDisable || isLoadingAI || !checkHtmlContent('')\">\n {{ AutoBulletButton }}\n </button>\n\n <!-- Bullet Skill Button -->\n <button *ngIf=\"skillsBullet\" class=\"bullet-skill\" mat-flat-button\n (click)=\"$event.stopPropagation(); transformToSkillsBullets()\" [disabled]=\"isDisabled || isLoadingAI\">\n {{ skillsButton }}\n </button>\n </div>\n </div>\n\n <!-- Individual Text Formatting Buttons (Large Containers Only) -->\n <ng-container *ngIf=\"!isSmallScreen\">\n <button *ngFor=\"let item of textFormattingConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n (onClick)=\"handleTextFormattingClick($event, item)\" [title]=\"item.title\" type=\"button\" [matTooltip]=\"item.title\"\n matTooltipPosition=\"above\">\n <mat-icon *ngIf=\"isSvgIcon(item.icon)\" [svgIcon]=\"item.icon\"\n [class.active-icon]=\"getActiveState(item.type)\"></mat-icon>\n <span *ngIf=\"!isSvgIcon(item.icon)\" class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n </ng-container>\n\n <!-- Table Component (Large Screens Only) -->\n <app-table *ngIf=\"showTable && !isSmallScreen\" [getEditorElement]=\"getBoundGetEditorElement()\"\n [saveHistoryMethod]=\"getBoundSaveHistory()\" [textChangeMethod]=\"getBoundTextChange()\" matTooltip=\"Table\"\n matTooltipPosition=\"above\">\n </app-table>\n\n <!-- Auto Bullet Button (Large Screens Only) -->\n <button *ngIf=\"autobullet && !isSmallScreen\" class=\"auto-bullet\" mat-flat-button\n (click)=\"$event.stopPropagation(); useAutoBullet($event)\" [disabled]=\"autoBulletDisable || isLoadingAI || !checkHtmlContent('')\">\n {{ AutoBulletButton }}\n </button>\n\n <!-- Bullet Skill Button (Large Screens Only) -->\n <button *ngIf=\"skillsBullet && !isSmallScreen\" class=\"bullet-skill\" mat-flat-button\n (click)=\"$event.stopPropagation(); transformToSkillsBullets($event)\" [disabled]=\"isDisabled || isLoadingAI\">\n {{ skillsButton }}\n </button>\n\n <!-- History Controls (Undo/Redo) -->\n <div *ngIf=\"historyControls\" class=\"history-controls\">\n <!-- Undo Button -->\n <button class=\"format-button\" (onClick)=\"execCmd($event, 'undo')\" title=\"Undo\" type=\"button\" matTooltip=\"Undo\"\n matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState('undo')\">\n undo\n </span>\n </button>\n\n <!-- Redo Button -->\n <button class=\"format-button\" (clionClickck)=\"execCmd($event, 'redo')\" title=\"Redo\" type=\"button\" matTooltip=\"Redo\"\n matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState('redo')\">\n redo\n </span>\n </button>\n </div>\n\n <!-- Apply AI Button -->\n <al-button class=\"apply-ai-button\" *ngIf=\"showAIButton\" [labelText]=\"ApplyAiButton\" [buttonType]=\"'icon-label'\"\n [color]=\"'gradient'\" [size]=\"'xs'\" [disabled]=\"isLoadingAI\" (onClick)=\"useAITool($event)\"\n [tooltip]=\"ApplyAiButton\" [tooltipPosition]=\"'above'\">\n </al-button>\n\n </div>\n\n <!-- Editor Content Area -->\n <div class=\"editor-content\" #editorReference contenteditable=\"true\" [id]=\"editorId\" (click)=\"updateTagHierarchy()\"\n (input)=\"onEditorInput()\" (paste)=\"handlePaste($event)\" (keydown)=\"handleKeydown($event)\"\n (click)=\"toggleDiv($event, true)\" spellcheck=\"false\" role=\"textbox\" aria-label=\"Rich text editor\"\n aria-multiline=\"true\" [attr.data-testid]=\"dataTestId\">\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CustomEditorComponent } from './custom-editor.component';\n\n@NgModule({\n imports: [CustomEditorComponent],\n exports: [CustomEditorComponent]\n})\nexport class CustomEditorModule { }\n","import { Component } from '@angular/core';\nimport { CustomEditorComponent } from './custom-editor.component';\n\n@Component({\n selector: 'app-custom-editor-demo',\n standalone: true,\n imports: [CustomEditorComponent],\n template: `\n <div class=\"demo-container\">\n <h2>Custom Editor Demo</h2>\n <p class=\"demo-description\">\n This is a simple text editor with basic formatting options.\n Select text and use the toolbar buttons to apply Bold, Italic, or Underline formatting.\n </p>\n\n <app-custom-editor></app-custom-editor>\n\n <div class=\"demo-instructions\">\n <h3>Instructions:</h3>\n <ul>\n <li>Click in the editor area to start typing</li>\n <li>Select text to apply formatting</li>\n <li>Use the toolbar buttons for Bold (B), Italic (I), and Underline (U)</li>\n <li>The buttons will change color to show active formatting</li>\n </ul>\n </div>\n </div>\n `,\n styles: [`\n .demo-container {\n max-width: 800px;\n margin: 0 auto;\n padding: 20px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n h2 {\n color: #333;\n margin-bottom: 16px;\n }\n\n .demo-description {\n color: #666;\n margin-bottom: 24px;\n line-height: 1.5;\n }\n\n .demo-instructions {\n margin-top: 24px;\n padding: 16px;\n background-color: #f8f9fa;\n border-radius: 4px;\n border-left: 4px solid #37c1ce;\n }\n\n .demo-instructions h3 {\n margin-top: 0;\n color: #333;\n }\n\n .demo-instructions ul {\n margin-bottom: 0;\n padding-left: 20px;\n }\n\n .demo-instructions li {\n margin-bottom: 8px;\n color: #555;\n }\n `]\n})\nexport class CustomEditorDemoComponent { }\n","import { Component, forwardRef, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateRange } from '@angular/material/datepicker';\n\nexport interface DateRangeValue {\n start: Date | null;\n end: Date | null;\n}\n\n@Component({\n selector: 'al-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n }\n ]\n})\nexport class DateRangeComponent implements ControlValueAccessor {\n @Input() dataTestId?: string;\n @Input() formControlName?: string;\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n @Input() labelText: string = 'Date Range';\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string) {\n if (val !== undefined) {\n console.warn('[al-date-range] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() startPlaceholder: string = 'Start date';\n @Input() endPlaceholder: string = 'End date';\n @Input() hint: string = 'MM/DD/YYYY – MM/DD/YYYY';\n @Input() disabled: boolean = false;\n @Input() required: boolean = false;\n @Input() minDate?: Date;\n @Input() maxDate?: Date\n @Input() startAt?: Date;\n @Input() opened: boolean = false;\n @Input() touchUi: boolean = false;\n\n @Output() dateRangeChange = new EventEmitter<DateRangeValue>();\n @Output() openedChange = new EventEmitter<boolean>();\n @Output() startDateChange = new EventEmitter<Date | null>();\n @Output() endDateChange = new EventEmitter<Date | null>();\n\n startDate: Date | null = null;\n endDate: Date | null = null;\n isDatePickerOpen = false;\n\n private onChange = (value: any) => { };\n private onTouched = () => { };\n\n // Getter for size class\n get sizeClass(): string {\n return `al-date-range-size-${this.size}`;\n }\n\n // Get size class method (matching input component)\n getSizeClass(): string {\n return 'al-date-range-size-' + this.size;\n }\n\n // Get category class method (matching input component)\n getCategoryClass(): string {\n if (this.disabled) {\n return 'al-date-range-category-disabled';\n }\n return 'al-date-range-category-default';\n }\n\n // Get all classes method (combines size and category)\n getAllClasses(): string[] {\n return [this.getSizeClass(), this.getCategoryClass()];\n }\n\n // Getter for date range value\n get dateRangeValue(): DateRangeValue {\n return {\n start: this.startDate,\n end: this.endDate\n };\n }\n\n // Getter for display value in the input\n get displayValue(): string {\n if (this.startDate && this.endDate) {\n return `${this.formatDate(this.startDate)} – ${this.formatDate(this.endDate)}`;\n } else if (this.startDate) {\n return `${this.formatDate(this.startDate)} – `;\n } else if (this.endDate) {\n return ` – ${this.formatDate(this.endDate)}`;\n }\n return '';\n }\n\n // Getter for validation state\n get isRangeValid(): boolean {\n if (!this.startDate || !this.endDate) return true;\n return this.startDate <= this.endDate;\n }\n\n // Getter for display text\n get displayText(): string {\n return this.displayValue;\n }\n\n // ControlValueAccessor implementation\n writeValue(value: DateRangeValue | null): void {\n if (value) {\n this.startDate = value.start;\n this.endDate = value.end;\n } else {\n this.startDate = null;\n this.endDate = null;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Handle start date change\n onStartDateChange(event: any) {\n this.startDate = event.value;\n this.emitChanges();\n }\n\n // Handle end date change\n onEndDateChange(event: any) {\n this.endDate = event.value;\n this.emitChanges();\n }\n\n // Handle date range selection from the picker\n onDateRangeChange(event: DateRange<Date> | null) {\n if (event) {\n this.startDate = event.start;\n this.endDate = event.end;\n } else {\n this.startDate = null;\n this.endDate = null;\n }\n this.emitChanges();\n }\n\n // Handle date picker open/close\n onOpenedChange(opened: boolean) {\n this.isDatePickerOpen = opened;\n this.openedChange.emit(opened);\n }\n\n // Open date picker\n openDatePicker() {\n if (!this.disabled) {\n this.isDatePickerOpen = true;\n }\n }\n\n // Clear date range\n clearDateRange() {\n this.startDate = null;\n this.endDate = null;\n this.emitChanges();\n }\n\n // Format date for display\n formatDate(date: Date | null): string {\n if (!date) return '';\n return date.toLocaleDateString();\n }\n\n // Emit all changes\n private emitChanges() {\n this.onChange(this.dateRangeValue);\n this.onTouched();\n this.startDateChange.emit(this.startDate);\n this.endDateChange.emit(this.endDate);\n this.dateRangeChange.emit(this.dateRangeValue);\n }\n}\n","<mat-form-field class=\"mat_form\" [ngClass]=\"[getSizeClass(), getCategoryClass()]\" appearance=\"outline\"\n [attr.data-test-id]=\"dataTestId\">\n\n <mat-label>{{ labelText }}</mat-label>\n\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate [placeholder]=\"startPlaceholder\" [value]=\"startDate\" [disabled]=\"disabled\" [required]=\"required\"\n [min]=\"minDate\" [max]=\"endDate || maxDate\" (dateInput)=\"onStartDateChange($event)\"\n (dateChange)=\"onStartDateChange($event)\" [attr.data-testid]=\"dataTestId ? dataTestId + '-start' : null\">\n <input matEndDate [placeholder]=\"endPlaceholder\" [value]=\"endDate\" [disabled]=\"disabled\" [required]=\"required\"\n [min]=\"startDate || minDate\" [max]=\"maxDate\" (dateInput)=\"onEndDateChange($event)\"\n (dateChange)=\"onEndDateChange($event)\" [attr.data-testid]=\"dataTestId ? dataTestId + '-end' : null\">\n </mat-date-range-input>\n\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"disabled\">\n </mat-datepicker-toggle>\n\n <mat-date-range-picker #picker [startAt]=\"startAt\" [opened]=\"opened\" [touchUi]=\"touchUi\"\n (openedChange)=\"onOpenedChange($event)\" (selectedChange)=\"onDateRangeChange($event)\">\n </mat-date-range-picker>\n\n\n</mat-form-field>\n\n<!-- Range display and validation -->\n<div *ngIf=\"startDate || endDate\" class=\"range-display\" [ngClass]=\"getSizeClass()\">\n <span class=\"range-text\" [class.invalid]=\"!isRangeValid\">\n {{ displayText }}\n </span>\n <span *ngIf=\"!isRangeValid\" class=\"error-message\">\n End date must be after start date\n </span>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateRangeComponent } from './date-range.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule,\n DateRangeComponent\n ],\n exports: [DateRangeComponent]\n})\nexport class DateRangeModule { }\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, TemplateRef, ViewChild, AfterViewInit, ChangeDetectorRef, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Resume_Tab_icon } from '../utils/image-utils';\n\n@Component({\n selector: 'al-tab',\n standalone: true,\n template: '<ng-template><ng-content></ng-content></ng-template>'\n})\nexport class AlTabComponent implements AfterViewInit {\n @Input() labelText: string = '';\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string) {\n if (val !== undefined) {\n console.warn('[al-tab] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() selected: boolean = false;\n @Input() icon: string = '';\n @Input() iconType: 'svg' | 'font' = 'svg';\n @Input() showIcon: boolean = true;\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'above';\n @ViewChild(TemplateRef) templateRef!: TemplateRef<any>;\n\n /**\n * Returns the tooltip text. If no tooltip is explicitly set,\n * defaults to the labelText for better accessibility.\n */\n get effectiveTooltip(): string {\n return this.tooltip || this.labelText;\n }\n\n ngAfterViewInit() {\n // Template ref will be available after view init\n }\n}\n\n@Component({\n selector: 'al-tabs',\n standalone: true,\n imports: [CommonModule, MatTabsModule, MatIconModule, MatTooltipModule, AlTabComponent],\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss']\n})\nexport class TabsComponent implements AfterContentInit, AfterViewInit, OnInit {\n @ContentChildren(AlTabComponent, { descendants: true }) tabComponents!: QueryList<AlTabComponent>;\n @Input() selectedIndex: number = 0;\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n\n constructor(\n private cdr: ChangeDetectorRef,\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n this.registerIcons();\n }\n\n ngOnInit(): void {\n // Icons are registered in constructor\n }\n\n private registerIcons(): void {\n try {\n Object.keys(Resume_Tab_icon).forEach(iconName => {\n this.iconRegistry.addSvgIconLiteral(\n iconName,\n this.sanitizer.bypassSecurityTrustHtml(Resume_Tab_icon[iconName as keyof typeof Resume_Tab_icon])\n );\n });\n } catch (error) {\n console.error('Failed to register tab icons:', error);\n }\n }\n\n ngAfterContentInit() {\n console.log('Tab components found:', this.tabComponents?.length || 0);\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit() {\n // Set the selected tab based on selectWith Icons\n if (this.tabComponents && this.tabComponents.length > 0) {\n this.tabComponents.forEach((tab, index) => {\n if (tab.selected || index === this.selectedIndex) {\n this.selectedIndex = index;\n }\n });\n this.cdr.detectChanges();\n }\n }\n}\n","<mat-tab-group [selectedIndex]=\"selectedIndex\" [class]=\"'tabs-' + size\" mat-align-tabs=\"start\" headerPosition=\"above\">\n <mat-tab *ngFor=\"let tab of tabComponents; let i = index\">\n <ng-template mat-tab-label>\n <span [ngClass]=\"{ 'tab-label-content': true, 'icon-only-tab': tab.icon && tab.showIcon && !tab.labelText }\"\n [matTooltip]=\"tab.effectiveTooltip\"\n [matTooltipPosition]=\"tab.tooltipPosition\"\n [matTooltipDisabled]=\"!tab.effectiveTooltip\">\n <mat-icon *ngIf=\"tab.icon && tab.showIcon && tab.iconType === 'svg'\" [svgIcon]=\"tab.icon\"></mat-icon>\n <mat-icon *ngIf=\"tab.icon && tab.showIcon && tab.iconType === 'font'\">{{ tab.icon }}</mat-icon>\n <ng-container *ngIf=\"tab.labelText\">{{ tab.labelText }}</ng-container>\n </span>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"tab.templateRef\"></ng-container>\n </mat-tab>\n <!-- Debug info -->\n <div *ngIf=\"!tabComponents || tabComponents.length === 0\" style=\"padding: 20px; color: red;\">\n No tabs found. Tab components: {{ tabComponents?.length || 0 }}\n </div>\n</mat-tab-group>\n","import { NgModule } from '@angular/core';\nimport { TabsComponent } from './tabs.component';\n\n@NgModule({\n imports: [TabsComponent],\n exports: [TabsComponent]\n})\nexport class TabsModule { }\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n Optional,\n ContentChild,\n AfterContentInit,\n ElementRef\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n MatDialogModule,\n MatDialogRef\n}\n\n from '@angular/material/dialog';\n\nimport {\n MatButtonModule\n}\n\n from '@angular/material/button';\n\nimport {\n MatIconModule\n}\n\n from '@angular/material/icon';\n\nimport {\n ButtonComponent\n}\n\n from '../button/button.component';\n\nimport {\n IconButtonComponent\n}\n\n from '../icon-button/icon-button.component';\n\n@Component({\n selector: 'al-modal',\n standalone: true,\n imports: [CommonModule, MatDialogModule, MatButtonModule, MatIconModule, ButtonComponent, IconButtonComponent],\n templateUrl: './shared-popup-modal.component.html',\n styleUrls: ['./shared-popup-modal.component.scss']\n}\n\n) export class ModalComponent implements AfterContentInit {\n @Input() titleText: string = '';\n @Input() userMessage: string = '';\n @Input() leftIcon: string = '';\n @Input() rightIcon: string = '';\n @Input() closeIcon: boolean = true;\n @Input() showHeader: boolean = true;\n @Input() cancelLabel: string = 'Cancel';\n @Input() submitLabel: string = 'Submit';\n @Input() cancelCategory: string = 'error';\n @Input() submitCategory: string = 'green';\n @Input() buttonSize: string = 'xs';\n @Input() cancelIcon: string = '';\n @Input() submitIcon: string = '';\n @Input() showCancelButton: boolean = true;\n @Input() showSubmitButton: boolean = true;\n @Input() showFooter: boolean = true;\n @Input() buttonAlignment: 'left' | 'center' | 'right' = 'center';\n @Input() messageAlignment: 'left' | 'center' | 'right' = 'left';\n @Input() useCustomHeader: boolean = false;\n @Input() customHeaderTitle: string = '';\n @Input() customHeaderDescription: string = '';\n @Input() customHeaderIcon: string = '';\n @Input() customActionLabel: string = '';\n @Input() customActionIcon: string = '';\n @Input() customActionRightIcon: string = '';\n // Templating guide text and link can be passed from the main project\n @Input() templatingGuidePrefix: string = 'Click here to see our ';\n @Input() templatingGuideLabel: string = 'Templating guide';\n @Input() templatingGuideHref: string = '#';\n @Input() modalType: 'generic' | 'feedback' = 'generic';\n @Input() feedbackVariant: 'success' | 'warning' | 'error' = 'success';\n // Optional single icon override for feedback modal (Material icon name)\n @Input() feedbackIcon: string = '';\n\n @Output() cancel = new EventEmitter<void>();\n @Output() submit = new EventEmitter<void>();\n @Output() close = new EventEmitter<void>();\n // Emitted when the custom action button in the Mega Header is clicked\n @Output() requestTemplate = new EventEmitter<void>();\n @Output() onHover = new EventEmitter<Event>();\n @Output() onMouseLeave = new EventEmitter<Event>();\n @Output() optionSelect = new EventEmitter<any>();\n\n hasProjectedContent: boolean = false;\n\n constructor(@Optional() public dialogRef: MatDialogRef<ModalComponent>, private elementRef: ElementRef) { }\n\n // Getter to determine if this should display as a generic modal\n get isGenericModal(): boolean {\n return this.modalType === 'generic' || this.modalType === 'feedback';\n }\n\n // Visibility helpers for footer actions\n get showCancelAction(): boolean {\n const hasLabel = (this.cancelLabel ?? '').toString().trim().length > 0;\n return this.showFooter && this.showCancelButton && hasLabel;\n }\n\n get showSubmitAction(): boolean {\n const hasLabel = (this.submitLabel ?? '').toString().trim().length > 0;\n return this.showFooter && this.showSubmitButton && hasLabel;\n }\n\n // Getter to determine if this should display as success no header modal\n get isSuccessNoHeaderModal(): boolean {\n return this.modalType === 'feedback';\n }\n\n // Get default message based on feedback variant\n getDefaultMessage(): string {\n switch (this.feedbackVariant) {\n case 'success':\n return 'Operation completed successfully.';\n case 'warning':\n return 'Please review the information before proceeding.';\n case 'error':\n return 'Something went wrong. Please try again.';\n default:\n return 'Operation completed successfully.';\n }\n }\n\n ngAfterContentInit() {\n // Check if there's any projected content\n const contentElement = this.elementRef.nativeElement.querySelector('ng-content');\n this.hasProjectedContent = contentElement && contentElement.children.length > 0;\n }\n\n onCancel() {\n this.cancel.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('cancel');\n }\n }\n\n onSubmit() {\n this.submit.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('submit');\n }\n }\n\n onRequestTemplate() {\n this.requestTemplate.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('requestTemplate');\n }\n }\n\n onClose() {\n this.close.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('close');\n }\n }\n\n /**\n * Dynamically determines the base path for assets\n * Handles both root deployment and subdirectory deployment (e.g., /allsorter-lib/)\n */\n private getBasePath(): string {\n if (typeof document === 'undefined') {\n return '';\n }\n\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n return baseHref.replace(/\\/$/, '');\n }\n\n const pathname = window.location.pathname;\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n return '';\n }\n\n /**\n * Gets the image path for warning icon\n */\n getWarningIconPath(): string {\n const basePath = this.getBasePath();\n return `${basePath}/images/warning.svg`;\n }\n\n /**\n * Gets the image path for error icon\n */\n getErrorIconPath(): string {\n const basePath = this.getBasePath();\n return `${basePath}/images/error.svg`;\n }\n\n /**\n * Gets the image path for success icon\n */\n getSuccessIconPath(): string {\n const basePath = this.getBasePath();\n return `${basePath}/images/Success.svg`;\n }\n}\n","<div class=\"modal-container\">\n <!-- Feedback Modal Type - Success, Warning, or Error -->\n <div *ngIf=\"modalType === 'feedback'\" class=\"modal-body\">\n <div mat-dialog-content>\n <div style=\"display:flex;flex-direction:column;align-items:center;gap:24px;padding-top:8px;\">\n <!-- Feedback Icon (hardcoded by variant, optional single override via feedbackIcon) -->\n <mat-icon *ngIf=\"feedbackIcon\" class=\"feedback-icon\" [ngClass]=\"{\n 'success': feedbackVariant === 'success',\n 'warning': feedbackVariant === 'warning',\n 'error': feedbackVariant === 'error'\n }\">{{ feedbackIcon }}</mat-icon>\n <img *ngIf=\"!feedbackIcon && feedbackVariant === 'success'\" [src]=\"getSuccessIconPath()\" alt=\"Success\"\n class=\"feedback-icon success feedback-icon-image\" />\n <img *ngIf=\"!feedbackIcon && feedbackVariant === 'warning'\" [src]=\"getWarningIconPath()\" alt=\"Warning\"\n class=\"feedback-icon warning feedback-icon-image\" />\n <img *ngIf=\"!feedbackIcon && feedbackVariant === 'error'\" [src]=\"getErrorIconPath()\" alt=\"Error\"\n class=\"feedback-icon error feedback-icon-image\" />\n\n <div style=\"color:#4b4f62;font-weight:500;\">{{ userMessage || getDefaultMessage() }}</div>\n </div>\n </div>\n\n <div *ngIf=\"showFooter\" mat-dialog-actions class=\"modal-actions\"\n [style.justify-content]=\"buttonAlignment === 'left' ? 'flex-start' : buttonAlignment === 'right' ? 'flex-end' : 'center'\">\n <al-button *ngIf=\"showSubmitAction\" [category]=\"submitCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [labelText]=\"submitLabel || 'Ok'\" [leftIcon]=\"submitIcon\" [rightIcon]=\"''\" [dataTestId]=\"'submit-btn'\"\n [hasDropDown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onSubmit()\"></al-button>\n </div>\n </div>\n\n <!-- Regular Modal for Generic Type -->\n <div *ngIf=\"modalType !== 'feedback'\">\n <!-- Default Header -->\n <h2 *ngIf=\"!useCustomHeader && showHeader\" mat-dialog-title class=\"modal-title\">\n <span class=\"title-content\">\n <mat-icon *ngIf=\"leftIcon\" class=\"title-icon\">{{ leftIcon }}</mat-icon>\n {{ titleText }}\n <mat-icon *ngIf=\"rightIcon\" class=\"title-icon\">{{ rightIcon }}</mat-icon>\n </span>\n <al-icon-button *ngIf=\"closeIcon\" [icon]=\"'close'\" [iconOutlined]=\"false\" [customColour]=\"'#ffffff'\"\n [colour]=\"'blue'\" [size]=\"'base'\" [disabled]=\"false\" (onClick)=\"onClose()\"\n [dataTestId]=\"'close-btn'\"></al-icon-button>\n </h2>\n\n <!-- Custom Header -->\n <div *ngIf=\"useCustomHeader && showHeader\" class=\"custom-header\">\n <!-- Left side content -->\n <div class=\"custom-header-left\">\n <!-- Icon and Title -->\n <div class=\"custom-header-title-section\">\n <div *ngIf=\"customHeaderIcon\" class=\"custom-header-icon\">\n <mat-icon>{{ customHeaderIcon }}</mat-icon>\n </div>\n <h2 class=\"custom-header-title\">{{ customHeaderTitle }}</h2>\n </div>\n\n <!-- Description paragraph -->\n <p class=\"custom-header-description\">{{ customHeaderDescription }}</p>\n\n <!-- Templating guide link/text -->\n <span class=\"templating-guide-prefix\">{{ templatingGuidePrefix }}</span>\n <a class=\"templating-guide-link\" [href]=\"templatingGuideHref\">{{ templatingGuideLabel }}</a>\n <span class=\"templating-guide-suffix\">.</span>\n </div>\n\n <!-- Right side content -->\n <div class=\"custom-header-right\">\n <!-- Close button -->\n <al-icon-button *ngIf=\"closeIcon\" class=\"custom-close\" [icon]=\"'close'\" [iconOutlined]=\"false\"\n [customColour]=\"'#ffffff'\" [colour]=\"'blue'\" [size]=\"'base'\" [disabled]=\"false\" (onClick)=\"onClose()\"\n [dataTestId]=\"'close-btn'\"></al-icon-button>\n\n <!-- Action button -->\n <al-button [category]=\"submitCategory\" [size]=\"'xs'\" [iconOutlined]=\"false\" [labelText]=\"customActionLabel\"\n [leftIcon]=\"customActionIcon\" [rightIcon]=\"customActionRightIcon\" [dataTestId]=\"'custom-action-btn'\"\n [hasDropDown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onRequestTemplate()\"></al-button>\n </div>\n </div>\n\n <div class=\"modal-body\">\n <div mat-dialog-content>\n <p *ngIf=\"userMessage && !hasProjectedContent\" class=\"modal-message\" [style.text-align]=\"messageAlignment\">{{\n userMessage }}</p>\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"showFooter\" mat-dialog-actions class=\"modal-actions\"\n [style.justify-content]=\"buttonAlignment === 'left' ? 'flex-start' : buttonAlignment === 'right' ? 'flex-end' : 'center'\">\n <al-button *ngIf=\"showCancelAction\" [category]=\"cancelCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [labelText]=\"cancelLabel\" [leftIcon]=\"cancelIcon\" [rightIcon]=\"''\" [dataTestId]=\"'cancel-btn'\"\n [hasDropDown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onCancel()\"></al-button>\n\n <al-button *ngIf=\"showSubmitAction\" [category]=\"submitCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [labelText]=\"submitLabel\" [leftIcon]=\"submitIcon\" [rightIcon]=\"''\" [dataTestId]=\"'submit-btn'\"\n [hasDropDown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onSubmit()\"></al-button>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalComponent } from './shared-popup-modal.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n ModalComponent\n ],\n exports: [ModalComponent],\n})\nexport class SharedPopupModalModule { }\n","import {\n CommonModule\n}\n\nfrom '@angular/common';\n\nimport {\n Component,\n Input,\n TemplateRef,\n ContentChild\n}\n\nfrom '@angular/core';\n\nimport {\n MatTooltipModule\n}\n\nfrom '@angular/material/tooltip';\n\n@Component( {\n selector: 'al-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n imports: [CommonModule, MatTooltipModule],\n standalone: true,\n }\n\n) export class TooltipComponent {\n @Input() message: string='';\n @Input() header: string='';\n @Input() body: string='';\n @Input() position: 'left'| 'right'| 'above'| 'below'| 'before'| 'after'='below';\n @Input() disabled: boolean=false;\n @Input() dataTestId: string='';\n\n @ContentChild('tooltipContent') tooltipContent?: TemplateRef<any>;\n\n getTooltipContent(): string {\n if (this.header && this.body) {\n return `$ {\n this.header\n }\n\n \\n$ {\n this.body\n }\n\n `;\n }\n\n return this.message || '';\n }\n}","<ng-container>\n <div [matTooltip]=\"getTooltipContent()\" [matTooltipPosition]=\"position\" [matTooltipDisabled]=\"disabled\"\n [attr.data-test-id]=\"dataTestId\" class=\"al-tooltip-wrapper\">\n <ng-content></ng-content>\n </div>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipComponent } from './tooltip.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule, TooltipComponent],\n exports: [TooltipComponent],\n})\nexport class TooltipModule { }\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n Component,\n Input,\n ViewEncapsulation\n}\n\n from '@angular/core';\n\ntype TypographyVariant = | 'font-text-5xl' | 'font-text-5xl-medium' | 'font-text-5xl-bold'\n | 'font-text-4xl' | 'font-text-4xl-medium' | 'font-text-4xl-bold'\n | 'font-text-3xl' | 'font-text-3xl-medium' | 'font-text-3xl-bold'\n | 'font-text-2xl' | 'font-text-2xl-medium' | 'font-text-2xl-bold'\n | 'font-text-xl' | 'font-text-xl-medium' | 'font-text-xl-bold'\n | 'font-text-lg' | 'font-text-lg-medium' | 'font-text-lg-bold'\n | 'font-text-base' | 'font-text-base-medium' | 'font-text-base-bold'\n | 'font-text-sm' | 'font-text-sm-medium' | 'font-text-sm-bold'\n | 'font-text-xs' | 'font-text-xs-medium' | 'font-text-xs-bold';\n\ntype TypographyWeight = 'light' | 'regular' | 'medium' | 'semibold' | 'bold';\n\ntype LineHeight = 'none' | 'tight' | 'normal';\n\ntype LetterSpacing = 'normal' | 'wide' | 'wider';\n\ntype TextDecoration = 'none' | 'underline' | 'italic' | 'strike';\n\n@Component({\n selector: 'al-new-typography',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './new-typography.component.html',\n styleUrls: ['./new-typography.component.scss'],\n // Expose the typography utility classes globally when this component is used\n encapsulation: ViewEncapsulation.None,\n}\n\n) export class NewTypographyComponent {\n /** The textual content to render. */\n @Input() text: string = 'The quick brown fox';\n /** Which semantic tag to render as. */\n @Input() tag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' = 'p';\n /** Typography variant selecting size/line-height/letter-spacing. */\n @Input() variant: TypographyVariant = 'font-text-base';\n /** Font weight to apply on top of the variant. */\n @Input() weight: TypographyWeight = 'regular';\n\n /** Line height variant to apply. */\n @Input() lineHeight: LineHeight = 'normal';\n\n /** Letter spacing variant to apply. */\n @Input() letterSpacing: LetterSpacing = 'normal';\n\n /** Text decoration to apply. */\n @Input() textDecoration: TextDecoration = 'none';\n\n /** Whether to apply font-size (default: true) */\n @Input() enableFontSize: boolean = true;\n\n /** Whether to apply font-weight (default: true) */\n @Input() enableFontWeight: boolean = true;\n\n /** Whether to apply line-height (default: true) */\n @Input() enableLineHeight: boolean = true;\n\n /** Whether to apply letter-spacing (default: true) */\n @Input() enableLetterSpacing: boolean = true;\n\n /** Optional data-test-id for QA/testing */\n @Input() dataTestId?: string;\n\n get classList(): string {\n // All variants are now combined classes (start with 'font-text-')\n // But we still need to add additional classes for weight, line-height, letter-spacing, and text-decoration\n const baseClass = this.variant;\n const weightClass = this.enableFontWeight ? `weight-${this.weight}` : '';\n const lineHeightClass = this.enableLineHeight ? `line-height-${this.lineHeight}` : '';\n const letterSpacingClass = this.enableLetterSpacing ? `letter-spacing-${this.letterSpacing}` : '';\n const textDecorationClass = `text-decoration-${this.textDecoration}`;\n return `${baseClass} ${weightClass} ${lineHeightClass} ${letterSpacingClass} ${textDecorationClass}`.trim();\n }\n}\n","<ng-container [ngSwitch]=\"tag\">\n <h1 *ngSwitchCase=\"'h1'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h1>\n <h2 *ngSwitchCase=\"'h2'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h2>\n <h3 *ngSwitchCase=\"'h3'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h3>\n <h4 *ngSwitchCase=\"'h4'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h4>\n <h5 *ngSwitchCase=\"'h5'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h5>\n <h6 *ngSwitchCase=\"'h6'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h6>\n <p *ngSwitchCase=\"'p'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</p>\n <span *ngSwitchDefault [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</span>\n</ng-container>","import { Component, Input, Output, EventEmitter, AfterViewInit, OnDestroy, ViewChild, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ButtonComponent } from '../button/button.component';\nimport { ResponsiveLayoutComponent } from '../responsive-layout/responsive-layout.component';\n\n@Component({\n selector: 'al-form',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, ButtonComponent],\n templateUrl: './editable-form-wrapper.component.html',\n styleUrls: ['./editable-form-wrapper.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class EditableFormWrapperComponent implements AfterViewInit, OnDestroy {\n /**\n * Test id for e2e/qa automation.\n */\n private static randomId() {\n return 'form_' + Math.random().toString(36).slice(2);\n }\n\n /**\n * Test id for e2e/qa automation. If not provided, a random id will be used.\n */\n @Input() testId: string = EditableFormWrapperComponent.randomId();\n\n /**\n * Show the left floating edit button.\n * @default true\n */\n @Input() showLeftButton: boolean = true;\n\n /**\n * Show the right floating save button.\n * @default true\n */\n @Input() showSaveButton: boolean = true;\n\n /**\n * Show the right floating delete button.\n * @default true\n */\n @Input() showDeleteButton: boolean = true;\n\n /**\n * Custom CSS class for the left button container (appears when button is active)\n */\n @Input() leftContainerClass: string = '';\n\n /**\n * Custom inline styles for the left button container\n */\n @Input() leftContainerStyle: { [key: string]: string } = {};\n\n /**\n * Selector or element reference for the scroll container.\n * If not provided, defaults to window scrolling.\n */\n @Input() scrollContainer: string | HTMLElement | null = null;\n\n /**\n * Emitted when the left (edit) button is clicked.\n */\n @Output() leftButtonClick = new EventEmitter<Event>();\n\n /**\n * Handle left button click - toggle state and emit event\n */\n handleLeftButtonClick(event: Event): void {\n event.stopPropagation();\n this.isLeftButtonActive = !this.isLeftButtonActive;\n this.cdr.markForCheck();\n this.cdr.detectChanges();\n this.leftButtonClick.emit(event);\n }\n\n /**\n * Toggle the left button state and emit the click event\n * @deprecated Use handleLeftButtonClick instead\n */\n onLeftButtonClick(event: Event): void {\n this.handleLeftButtonClick(event);\n }\n\n constructor(private cdr: ChangeDetectorRef) { }\n\n /**\n * Emitted when the save button is clicked.\n */\n @Output() saveButtonClick = new EventEmitter<Event>();\n\n /**\n * Emitted when the delete button is clicked.\n */\n @Output() deleteButtonClick = new EventEmitter<Event>();\n\n /**\n * Toggle state for the left button (controls visibility of ai-apply-bar)\n */\n isLeftButtonActive: boolean = false;\n\n @ViewChild('wrapper', { static: false }) wrapperRef!: ElementRef<HTMLElement>;\n @ViewChild('buttonGroup', { static: false }) buttonGroupRef!: ElementRef<HTMLElement>;\n @ViewChild('leftButton', { static: false }) leftButtonRef!: ElementRef<HTMLElement>;\n\n private scrollListener?: () => void;\n private scrollContainerElement: HTMLElement | Window | null = null;\n\n ngAfterViewInit() {\n if (this.wrapperRef && (this.buttonGroupRef || this.leftButtonRef)) {\n this.setupScrollBehavior();\n }\n }\n\n ngOnDestroy() {\n if (this.scrollListener && this.scrollContainerElement) {\n if (this.scrollContainerElement === window) {\n window.removeEventListener('scroll', this.scrollListener);\n } else {\n (this.scrollContainerElement as HTMLElement).removeEventListener('scroll', this.scrollListener);\n }\n }\n }\n\n private setupScrollBehavior() {\n const wrapper = this.wrapperRef.nativeElement;\n const buttonGroup = this.buttonGroupRef?.nativeElement;\n const leftButton = this.leftButtonRef?.nativeElement;\n\n // Determine scroll container\n if (this.scrollContainer) {\n if (typeof this.scrollContainer === 'string') {\n const element = document.querySelector(this.scrollContainer) as HTMLElement;\n if (element) {\n this.scrollContainerElement = element;\n } else {\n console.warn(`Scroll container with selector \"${this.scrollContainer}\" not found. Falling back to window.`);\n this.scrollContainerElement = window;\n }\n } else {\n this.scrollContainerElement = this.scrollContainer;\n }\n } else {\n this.scrollContainerElement = window;\n }\n\n const handleScroll = () => {\n const rect = wrapper.getBoundingClientRect();\n const sectionHeight = wrapper.offsetHeight;\n\n // Get container dimensions\n let containerHeight: number;\n let containerScrollTop: number;\n let containerRect: DOMRect | { top: number; bottom: number };\n\n if (this.scrollContainerElement === window) {\n containerHeight = window.innerHeight;\n containerScrollTop = window.scrollY || window.pageYOffset;\n containerRect = { top: 0, bottom: containerHeight };\n } else {\n const container = this.scrollContainerElement as HTMLElement;\n containerHeight = container.clientHeight;\n containerScrollTop = container.scrollTop;\n const containerBoundingRect = container.getBoundingClientRect();\n containerRect = {\n top: containerBoundingRect.top,\n bottom: containerBoundingRect.bottom\n };\n }\n\n // Calculate container center relative to viewport\n const containerCenterY = containerRect.top + (containerHeight / 2);\n const sectionTopY = rect.top;\n const sectionBottomY = rect.bottom;\n\n // Handle right button group (save/delete)\n if (buttonGroup) {\n const buttonGroupHeight = buttonGroup.offsetHeight;\n const clampPadding = 36;\n const minY = clampPadding;\n const maxY = sectionHeight - buttonGroupHeight - clampPadding;\n\n let targetY: number;\n\n if (containerCenterY > sectionTopY && containerCenterY < sectionBottomY) {\n targetY = containerCenterY - sectionTopY - (buttonGroupHeight / 2);\n } else if (containerCenterY <= sectionTopY) {\n targetY = minY;\n } else {\n targetY = maxY;\n }\n\n const finalY = Math.max(minY, Math.min(targetY, maxY));\n buttonGroup.style.transform = `translateY(${finalY}px)`;\n }\n\n // Handle left button (edit) — subtract 20px from transform so it aligns with the gap between Save and Discard on the right\n if (leftButton) {\n const leftButtonHeight = leftButton.offsetHeight;\n const clampPadding = 36;\n const minY = clampPadding;\n const maxY = sectionHeight - leftButtonHeight - clampPadding;\n\n let targetY: number;\n\n if (containerCenterY > sectionTopY && containerCenterY < sectionBottomY) {\n targetY = containerCenterY - sectionTopY - (leftButtonHeight / 2);\n } else if (containerCenterY <= sectionTopY) {\n targetY = minY;\n } else {\n targetY = maxY;\n }\n\n const finalY = Math.max(minY, Math.min(targetY, maxY));\n const leftFinalY = Math.max(minY, Math.min(finalY - 68, maxY));\n leftButton.style.transform = `translateY(${leftFinalY}px)`;\n }\n };\n\n this.scrollListener = handleScroll;\n\n if (this.scrollContainerElement === window) {\n window.addEventListener('scroll', handleScroll, { passive: true });\n } else {\n (this.scrollContainerElement as HTMLElement).addEventListener('scroll', handleScroll, { passive: true });\n }\n\n handleScroll(); // Initial position\n }\n}\n","<div class=\"al-form-wrapper\" #wrapper [attr.data-test-id]=\"testId\">\n <div *ngIf=\"showLeftButton\" #leftButton class=\"fab left\">\n <!-- <al-button [buttonType]=\"'icon-circle'\" [iconOnly]=\"true\"\n [leftIcon]=\"isLeftButtonActive ? 'close' : 'auto_fix_high'\"\n [arialabel]=\"isLeftButtonActive ? 'Close' : 'Edit'\"\n [size]=\"'base'\"\n [color]=\"isLeftButtonActive ? 'grey' : 'gradient'\"\n (onClick)=\"handleLeftButtonClick($event)\">\n </al-button> -->\n <div\n class=\"left-button-container\"\n [ngClass]=\"leftContainerClass\"\n [ngStyle]=\"leftContainerStyle\">\n <ng-content select=\"[leftButtonContent]\"></ng-content>\n </div>\n </div>\n <div class=\"inner\"><ng-content></ng-content></div>\n <div class=\"fab-group right\" #buttonGroup><al-button *ngIf=\"showSaveButton\" class=\"fab\" [buttonType]=\"'icon-circle'\"\n [iconOnly]=\"true\" [leftIcon]=\"'save'\" [arialabel]=\"'Save'\" [size]=\"'base'\" iconOutlined=\"true\"\n [color]=\"'green'\" (onClick)=\"saveButtonClick.emit($event)\"></al-button><al-button *ngIf=\"showDeleteButton\" class=\"fab warn\" [buttonType]=\"'icon-circle'\"\n [iconOnly]=\"true\" [leftIcon]=\"'cancel'\" [arialabel]=\"'Delete'\" [size]=\"'base'\" [color]=\"'error'\" iconOutlined=\"true\"\n (onClick)=\"deleteButtonClick.emit($event)\"></al-button>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FieldPlaceholderComponent } from './field-placeholder.component';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule, FieldPlaceholderComponent],\n exports: [FieldPlaceholderComponent],\n})\nexport class FieldPlaceholderModule { }\n","import {\n NgModule\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n ResponsiveColumnsComponent\n}\n\n from './responsive-columns.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResponsiveColumnsComponent],\n exports: [ResponsiveColumnsComponent],\n}\n\n) export class ResponsiveColumnsModule { }\n","import {\n Component,\n Input,\n Output,\n EventEmitter\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n FieldPlaceholderComponent\n}\n\n from '../field-placeholder/field-placeholder.component';\n\nimport {\n ButtonComponent\n}\n\n from '../button/button.component';\n\nimport {\n LoaderComponent,\n LoaderStatus\n}\n\n from '../loader/loader.component';\n\nimport {\n MatTooltipModule\n}\n\n from '@angular/material/tooltip';\n\nexport interface ResumeEntry {\n companyName?: string;\n institution?: string;\n jobTitle?: string;\n courseName?: string;\n startDate?: string;\n endDate?: string;\n isPresent?: boolean;\n city?: string;\n region?: string;\n country?: string;\n descriptions?: string[];\n rightSideItems?: string[];\n}\n\n@Component({\n selector: 'al-resume-entries',\n standalone: true,\n imports: [CommonModule, FieldPlaceholderComponent, ButtonComponent, LoaderComponent, MatTooltipModule],\n templateUrl: './resume-entries.component.html',\n styleUrls: ['./resume-entries.component.scss'],\n}\n\n) export class ResumeEntriesComponent {\n @Input() entries: ResumeEntry[] = [];\n @Input() showHeader: boolean = true;\n @Input() showDescriptionLabel: boolean = true;\n /** When false, hides Company/Institution field entirely */\n @Input() showCompany: boolean = true;\n /** When false, hides Job Title/Course Name field entirely */\n @Input() showJobTitle: boolean = true;\n /** When false, hides the date column (start/end/present) entirely */\n @Input() showDates: boolean = true;\n /** When false, hides location fields (City, Region, Country) entirely */\n @Input() showLocation: boolean = true;\n /** When true, displays a timeline line with dot on the left side of each entry */\n @Input() showTimeline: boolean = false;\n /** When true, displays the Re-apply/Undo button at the end of each entry */\n @Input() showReapplyButton: boolean = true;\n /** When true, displays a loader in place of the description section */\n @Input() showLoader: boolean = false;\n /** When true, loader replaces the entire entry; when false, loader only replaces the description section */\n @Input() loaderForAllEntries: boolean = false;\n /** Loader status - can be 'analyzing', 'gathering', 'processing', 'applying', or 'done' */\n @Input() loaderStatus: LoaderStatus = 'processing';\n /** Loader size - can be 'small', 'medium', or 'large' */\n @Input() loaderSize: 'small' | 'medium' | 'large' = 'medium';\n /** Array of skills to display in the skill section */\n @Input() skills?: string[];\n /** Tooltip message for Company/Institution field */\n @Input() companyTooltip?: string;\n /** Tooltip message for Job Title/Course Name field */\n @Input() jobTitleTooltip?: string;\n /** Tooltip message for Date fields */\n @Input() dateTooltip?: string;\n /** Tooltip message for Location fields */\n @Input() locationTooltip?: string;\n /** Tooltip message for Description fields */\n @Input() descriptionTooltip?: string;\n /** Tooltip position - can be 'left', 'right', 'above', 'below', 'before', or 'after' */\n @Input() tooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below';\n\n /**\n * When true, the resume entries section is visually de-emphasised (lower opacity),\n * but the first line of each description remains visible (truncated with ellipsis).\n * This mirrors the \"section hidden\" behaviour in the header without fully removing content.\n */\n @Input() isSectionHidden: boolean = false;\n /**\n * When true, the description items are collapsed (truncated with ellipsis).\n */\n @Input() isCollapsed: boolean = false;\n\n /** Event emitted when the reapply button is clicked for a specific entry */\n @Output() reapplyClick = new EventEmitter<{\n entry: ResumeEntry;\n index: number\n }\n\n >();\n\n /** Event emitted when the undo button is clicked for a specific entry */\n @Output() undoClick = new EventEmitter<{\n entry: ResumeEntry;\n index: number\n }\n\n >();\n\n // Track which entries have been reapplied (show undo button)\n reappliedEntries = new Set<number>();\n\n onReapplyClick(entry: ResumeEntry, index: number) {\n this.reappliedEntries.add(index);\n\n this.reapplyClick.emit({\n entry, index\n }\n\n );\n }\n\n onUndoClick(entry: ResumeEntry, index: number) {\n this.reappliedEntries.delete(index);\n\n this.undoClick.emit({\n entry, index\n }\n\n );\n }\n\n isReapplied(index: number): boolean {\n return this.reappliedEntries.has(index);\n }\n}\n","<div class=\"resume-entries-container\">\n <div *ngFor=\"let entry of entries; let i = index\" class=\"resume-entry\" [class.with-timeline]=\"showTimeline\"\n [class.is-hidden]=\"isSectionHidden\">\n <div *ngIf=\"showLoader && loaderForAllEntries\" class=\"entry-loader-container\"><al-loader [status]=\"loaderStatus\"\n [size]=\"loaderSize\" [showText]=\"true\" [dataTestId]=\"'entry-' + i + '-loader'\"></al-loader></div><ng-container\n *ngIf=\"!showLoader || !loaderForAllEntries\">\n <div *ngIf=\"showTimeline\" class=\"timeline-indicator\">\n <div class=\"timeline-dot\"></div>\n <div class=\"timeline-line\"></div>\n </div>\n <div class=\"resume-entry-content\">\n <div *ngIf=\"showHeader\" class=\"entry-header\">\n <div class=\"header-left\">\n <!-- Company / Institution: always on top, shows placeholder when no value -->\n <div *ngIf=\"showCompany\" class=\"mobile-order-2\">\n <lib-field-placeholder\n [value]=\"entry.companyName?.trim() ? entry.companyName : (entry.institution?.trim() ? entry.institution : undefined)\"\n [placeholder]=\"'Company Name / Institution'\" valueClass=\"font-text-lg-bold\"\n [testId]=\"'entry-' + i + '-company'\" [compact]=\"true\"\n [tooltip]=\"companyTooltip\" [tooltipPosition]=\"tooltipPosition\">\n </lib-field-placeholder>\n </div>\n\n <!-- Job title / Course name: always below company line -->\n <div *ngIf=\"showJobTitle\" class=\"mobile-order-3\">\n <lib-field-placeholder [value]=\"entry.jobTitle || entry.courseName\"\n [placeholder]=\"'Job title / Course name'\" valueClass=\"font-title-text\"\n [testId]=\"'entry-' + i + '-title'\" [compact]=\"true\"\n [tooltip]=\"jobTitleTooltip\" [tooltipPosition]=\"tooltipPosition\">\n </lib-field-placeholder>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"date-range mobile-order-1\" *ngIf=\"showDates\">\n <!-- Start Date: always render; show placeholder when no value -->\n <lib-field-placeholder [value]=\"entry.startDate?.trim() ? entry.startDate : undefined\"\n [placeholder]=\"'Start Date'\" valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-start-date'\"\n [compact]=\"true\" [tooltip]=\"dateTooltip\" [tooltipPosition]=\"tooltipPosition\">\n </lib-field-placeholder>\n\n <span class=\"date-separator\">-</span>\n\n <!-- End Date / Present: always render; show placeholder when no end date -->\n <lib-field-placeholder [value]=\"entry.isPresent\n ? 'Present'\n : (entry.endDate?.trim() ? entry.endDate : undefined)\" [placeholder]=\"'End Date'\"\n valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-end-date'\" [compact]=\"true\"\n [tooltip]=\"dateTooltip\" [tooltipPosition]=\"tooltipPosition\">\n </lib-field-placeholder>\n </div>\n <div class=\"location-row mobile-order-4\" *ngIf=\"showLocation\">\n <lib-field-placeholder [value]=\"entry.city\" [placeholder]=\"'City'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-city'\" [compact]=\"true\"\n [tooltip]=\"locationTooltip\" [tooltipPosition]=\"tooltipPosition\"></lib-field-placeholder>\n <lib-field-placeholder [value]=\"entry.region\" [placeholder]=\"'Region'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-region'\" [compact]=\"true\"\n [tooltip]=\"locationTooltip\" [tooltipPosition]=\"tooltipPosition\"></lib-field-placeholder>\n <lib-field-placeholder [value]=\"entry.country\" [placeholder]=\"'Country'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-country'\" [compact]=\"true\"\n [tooltip]=\"locationTooltip\" [tooltipPosition]=\"tooltipPosition\"></lib-field-placeholder>\n </div>\n </div>\n </div>\n <div class=\"descriptions-container\">\n <div *ngIf=\"showLoader && !loaderForAllEntries\" class=\"loader-container\">\n <al-loader [status]=\"loaderStatus\" [size]=\"loaderSize\" [showText]=\"true\"\n [dataTestId]=\"'entry-' + i + '-loader'\">\n </al-loader>\n </div>\n\n <div *ngIf=\"!showLoader || loaderForAllEntries\">\n <div *ngFor=\"let desc of entry.descriptions; let descIndex = index\" class=\"description-item\" [class.collapsed]=\"isCollapsed\">\n <label *ngIf=\"showDescriptionLabel\" class=\"description-label\">Description</label>\n <lib-field-placeholder [value]=\"desc\" [placeholder]=\"'Missing item'\" [padded]=\"true\"\n valueClass=\"font-text-base\" [testId]=\"'entry-' + i + '-desc-' + descIndex\"\n [tooltip]=\"descriptionTooltip\" [tooltipPosition]=\"tooltipPosition\">\n </lib-field-placeholder>\n </div>\n </div>\n <div class=\"reapply-button-container\" *ngIf=\"showReapplyButton\"><al-button *ngIf=\"!isReapplied(i)\"\n [label]=\"'Re-apply'\" [buttonType]=\"'icon-label'\" [leftIcon]=\"'refresh'\" [category]=\"'gradient'\"\n [size]=\"'xs'\" [dataTestId]=\"'entry-' + i + '-reapply'\"\n (onClick)=\"onReapplyClick(entry, i)\"></al-button><al-button *ngIf=\"isReapplied(i)\" [label]=\"'Undo'\"\n [buttonType]=\"'icon-label'\" [leftIcon]=\"'undo'\" [category]=\"'grey'\" [size]=\"'xs'\"\n [dataTestId]=\"'entry-' + i + '-undo'\" (onClick)=\"onUndoClick(entry, i)\"></al-button></div>\n <hr *ngIf=\"i < entries.length - 1\" class=\"entry-separator\" [class.with-timeline-separator]=\"showTimeline\" />\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"resume-entry-projection\"><ng-content></ng-content></div>\n <div *ngIf=\"skills && skills.length > 0\" class=\"skill-section-common\">\n <div class=\"skill-list-items\">\n <ul>\n <li *ngFor=\"let skill of skills\" class=\"list-items\">{{ skill }}</li>\n </ul>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResumeEntriesComponent } from './resume-entries.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResumeEntriesComponent],\n exports: [ResumeEntriesComponent],\n})\nexport class ResumeEntriesModule { }\n\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n OnChanges,\n SimpleChanges,\n Output\n}\n\n from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport {\n MatIconModule,\n MatIconRegistry\n} from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\nimport { LEFT_AND_RIGHT_ICON_CONSTANTS } from '../utils/image-utils';\n\n// Static flag to ensure icons are registered only once\nlet iconsRegistered = false;\n\nexport interface IconConfig {\n display: boolean;\n title: string;\n}\n\nexport interface RequiredIconConfig {\n handle: IconConfig;\n edit: IconConfig;\n search: IconConfig;\n}\n\n@Component({\n selector: 'toolbar-left',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatTooltipModule, IconButtonComponent],\n templateUrl: './toolbar-left.component.html',\n styleUrls: ['./toolbar-left.component.scss']\n})\nexport class AppToolbarLeftComponent implements OnInit, OnChanges {\n @Input() variant: string = 'default';\n\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // Register icons synchronously - this must happen before template rendering\n this.registerIcons();\n }\n\n private registerIcons(): void {\n // Register icons only once using static flag\n if (!iconsRegistered) {\n try {\n // Register all icons synchronously\n this.iconRegistry.addSvgIconLiteral(\n 'handle',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['handle'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'edit_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['edit_icon'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'search',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['search'])\n );\n iconsRegistered = true;\n } catch (error) {\n console.error('Failed to register toolbar icons:', error);\n }\n }\n }\n\n ngOnInit() {\n this.updateRequiredIcon();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['overrideConfig']) {\n this.updateRequiredIcon();\n }\n }\n\n @Input() overrideConfig: Partial<RequiredIconConfig> = {};\n\n private updateRequiredIcon(): void {\n this.requiredIcon = {\n ...this.requiredIcon,\n ...this.overrideConfig,\n handle: {\n ...this.requiredIcon.handle,\n ...this.overrideConfig.handle\n },\n edit: {\n ...this.requiredIcon.edit,\n ...this.overrideConfig.edit\n },\n search: {\n ...this.requiredIcon.search,\n ...this.overrideConfig.search\n }\n };\n }\n\n private _defaultRequiredIcon: RequiredIconConfig = {\n handle: {\n display: false, title: 'Drag'\n }\n\n ,\n edit: {\n display: true, title: 'Edit'\n }\n\n ,\n search: {\n display: true, title: 'Search'\n }\n }\n\n ;\n\n requiredIcon: RequiredIconConfig = {\n ...this._defaultRequiredIcon\n }\n\n ;\n @Input() content: string = \"\";\n @Output() editEvent = new EventEmitter<string>();\n @Input() isExtractionAnalysisActive: boolean = false;\n @Output() searchEvent = new EventEmitter<Event>();\n\n\n editSelectedSection() {\n this.editEvent.emit(this.content);\n }\n\n onSearchClick(event: Event) {\n this.searchEvent.emit(event);\n }\n}\n","<div class=\"toolbar-container\">\n <div class=\"icon-wrapper\" *ngIf=\"requiredIcon.handle.display\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--handle\"\n [attr.aria-label]=\"requiredIcon.handle.title\" [matTooltip]=\"requiredIcon.handle.title\"\n matTooltipPosition=\"left\" (click)=\"$event.stopPropagation()\"><mat-icon svgIcon=\"handle\" class=\"handle-icon\"></mat-icon></button></div>\n <div class=\"toolbar-icons\">\n <div class=\"icon-wrapper\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--edit\"\n [attr.aria-label]=\"requiredIcon.edit.title\" [matTooltip]=\"requiredIcon.edit.title\"\n matTooltipPosition=\"left\" (click)=\"editSelectedSection()\"><mat-icon svgIcon=\"edit_icon\" class=\"edit-icon\"></mat-icon></button></div>\n <div class=\"icon-wrapper\" *ngIf=\"requiredIcon.search.display\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--search\"\n [attr.aria-label]=\"requiredIcon.search.title\" [matTooltip]=\"requiredIcon.search.title\"\n matTooltipPosition=\"left\" (click)=\"onSearchClick($event)\"><mat-icon svgIcon=\"search\" class=\"search-icon\"></mat-icon></button></div>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { LEFT_AND_RIGHT_ICON_CONSTANTS } from '../utils/image-utils';\n\nlet iconsRegistered = false;\n\nexport interface AppToolbarRightIconConfig {\n display: boolean;\n title: string;\n isHidden?: boolean;\n}\n\nexport interface AppToolbarRightRequiredIconConfig {\n eye: AppToolbarRightIconConfig;\n sr: AppToolbarRightIconConfig;\n checkbox: AppToolbarRightIconConfig;\n}\n\n@Component({\n selector: 'toolbar-right',\n templateUrl: './toolbar-right.component.html',\n styleUrls: ['./toolbar-right.component.scss']\n})\n\nexport class AppToolbarRightComponent implements OnInit, OnChanges {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n this.registerIcons();\n }\n\n private registerIcons(): void {\n if (!iconsRegistered) {\n try {\n // Register subrole icon\n this.iconRegistry.addSvgIconLiteral(\n 'subrole-icon-grey',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['subrole-icon-grey'])\n );\n // Register subrole active icon\n this.iconRegistry.addSvgIconLiteral(\n 'subrole_active',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['subrole_active'])\n );\n // Register hide section icon\n this.iconRegistry.addSvgIconLiteral(\n 'hide_section',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['hide_section'])\n );\n // Register unhide section icon\n this.iconRegistry.addSvgIconLiteral(\n 'unhide_section',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['unhide_section'])\n );\n iconsRegistered = true;\n } catch (error) {\n console.error('Failed to register toolbar right icons:', error);\n }\n }\n }\n @Input() alwaysShowIcons = false;\n @Input() checked: boolean = false;\n @Input() overrideConfig: Partial<AppToolbarRightRequiredIconConfig> = {};\n @Input() currentObj: Partial<any> = {};\n\n private _showIcons = false;\n isVisible = true;\n\n requiredIcon: AppToolbarRightRequiredIconConfig = {\n eye: {\n display: false,\n title: 'Hide Section',\n isHidden: false\n },\n sr: {\n display: false,\n title: 'Set as Subrole'\n },\n checkbox: {\n display: false,\n title: 'Select'\n }\n };\n\n @Output() checkboxChange = new EventEmitter<boolean>();\n @Output() visibilityToggle = new EventEmitter<boolean>();\n @Output() hideShowEvent = new EventEmitter<any>();\n @Output() checkboxEvent = new EventEmitter<object>();\n @Output() setSubroleEvent = new EventEmitter<any>();\n\n ngOnInit(): void {\n this.updateRequiredIcon();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['overrideConfig']) {\n this.updateRequiredIcon();\n }\n }\n\n private updateRequiredIcon(): void {\n this.requiredIcon = {\n ...this.requiredIcon,\n ...this.overrideConfig,\n eye: {\n ...this.requiredIcon.eye,\n ...this.overrideConfig.eye\n },\n sr: {\n ...this.requiredIcon.sr,\n ...this.overrideConfig.sr\n },\n checkbox: {\n ...this.requiredIcon.checkbox,\n ...this.overrideConfig.checkbox\n }\n };\n }\n\n get showIcons(): boolean {\n return this.alwaysShowIcons || this._showIcons;\n }\n\n get eyeIcon(): string {\n const isHidden = this.requiredIcon.eye?.isHidden ?? false;\n return isHidden ? 'visibility_off' : 'visibility';\n }\n\n get eyeSvgIcon(): string {\n const isHidden = this.requiredIcon.eye?.isHidden ?? false;\n return isHidden ? 'unhide_section' : 'hide_section';\n }\n get eyeLabel(): string {\n const isHidden = this.requiredIcon.eye?.isHidden ?? false;\n return isHidden ? 'Show' : 'Hide';\n }\n get eyeTitle(): string {\n const isHidden = this.requiredIcon.eye?.isHidden ?? false;\n return isHidden ? 'Show content' : 'Hide content';\n }\n\n onCheckboxHover(state: boolean) {\n this._showIcons = state;\n }\n\n onCheckboxChange(checked: boolean) {\n this.checked = checked;\n this.checkboxChange.emit(checked);\n this.checkboxactiveInactiveStatus();\n }\n\n onToggleVisibility() {\n if (this.requiredIcon.eye) {\n this.requiredIcon.eye.isHidden = !this.requiredIcon.eye.isHidden;\n this.isVisible = !this.requiredIcon.eye.isHidden;\n\n if (this.currentObj) {\n this.currentObj['hidden'] = this.requiredIcon.eye.isHidden;\n }\n\n if (this.overrideConfig?.eye) {\n this.overrideConfig.eye.isHidden = this.requiredIcon.eye.isHidden;\n }\n\n this.visibilityToggle.emit(this.isVisible);\n this.hideShowEvent.emit(this.currentObj);\n }\n }\n\n showHideSection() {\n if (this.requiredIcon.eye) {\n this.requiredIcon.eye.isHidden = !this.requiredIcon.eye.isHidden;\n\n if (this.currentObj) {\n this.currentObj['hidden'] = this.requiredIcon.eye.isHidden;\n }\n\n if (this.overrideConfig?.eye) {\n this.overrideConfig.eye.isHidden = this.requiredIcon.eye.isHidden;\n }\n\n this.hideShowEvent.emit(this.currentObj);\n }\n }\n\n checkboxactiveInactiveStatus() {\n this.checkboxEvent.emit(this.currentObj);\n }\n\n setSubrole() {\n this.setSubroleEvent.emit(!this.currentObj['subrole']);\n }\n}\n\n","<div class=\"toolbar-right-container\">\n <div class=\"icon-wrapper\"><al-checkbox *ngIf=\"requiredIcon.checkbox.display\" [checked]=\"checked\" [showLabels]=\"false\"\n (change)=\"onCheckboxChange($event)\" (mouseenter)=\"onCheckboxHover(true)\"\n (mouseleave)=\"onCheckboxHover(false)\"></al-checkbox></div>\n <div class=\"toolbar-right-icons\" [ngClass]=\"{'always-visible': showIcons}\">\n <div class=\"icon-wrapper\" *ngIf=\"requiredIcon.sr.display\"><button type=\"button\"\n class=\"toolbar-icon toolbar-icon--subrole\" [attr.aria-label]=\"requiredIcon.sr.title\"\n [matTooltip]=\"requiredIcon.sr.title\" matTooltipPosition=\"right\" (click)=\"setSubrole()\"><mat-icon\n [svgIcon]=\"currentObj['subrole'] ? 'subrole_active' : 'subrole-icon-grey'\"\n class=\"subrole-icon\"></mat-icon></button>\n </div>\n <div class=\"icon-wrapper\"><button *ngIf=\"requiredIcon.eye.display\" type=\"button\"\n class=\"toolbar-icon toolbar-icon--eye eye-icon\" [attr.aria-label]=\"eyeLabel\" [matTooltip]=\"eyeTitle\"\n matTooltipPosition=\"right\" (click)=\"onToggleVisibility()\"><mat-icon [svgIcon]=\"eyeSvgIcon\"\n class=\"eye-icon\"></mat-icon></button></div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppToolbarRightComponent } from './toolbar-right.component';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [AppToolbarRightComponent],\n imports: [\n CommonModule,\n CheckboxModule,\n IconButtonComponent, // Standalone component\n MatIconModule,\n MatTooltipModule\n ],\n exports: [AppToolbarRightComponent]\n})\nexport class AppToolbarRightModule { }\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ResponsiveColumnsComponent } from '../responsive-columns/responsive-columns.component';\nimport { ResumeEntriesComponent, ResumeEntry } from '../resume-entries/resume-entries.component';\nimport { AppToolbarLeftComponent, RequiredIconConfig } from '../toolbar-left/toolbar-left.component';\nimport { AppToolbarRightModule } from '../toolbar-right/toolbar-right.module';\nimport { AppToolbarRightRequiredIconConfig } from '../toolbar-right/toolbar-right.component';\n\n@Component({\n selector: 'al-experience-section',\n standalone: true,\n imports: [CommonModule, ResponsiveColumnsComponent, ResumeEntriesComponent, AppToolbarLeftComponent, AppToolbarRightModule],\n templateUrl: './experience-section.component.html',\n styleUrls: ['./experience-section.component.scss'],\n})\nexport class ExperienceSectionComponent {\n @Input() entries: ResumeEntry[] = [];\n @Input() showHeader: boolean = true;\n @Input() showDescriptionLabel: boolean = true;\n @Input() showCompany: boolean = true;\n @Input() showJobTitle: boolean = true;\n @Input() showDates: boolean = true;\n @Input() showLocation: boolean = true;\n @Input() showTimeline: boolean = false;\n @Input() showReapplyButton: boolean = true;\n @Input() showLoader: boolean = false;\n @Input() loaderForAllEntries: boolean = false;\n @Input() loaderStatus: 'analyzing' | 'gathering' | 'processing' | 'applying' | 'done' = 'processing';\n @Input() loaderSize: 'small' | 'medium' | 'large' = 'medium';\n @Input() skills?: string[];\n @Input() companyTooltip?: string;\n @Input() jobTitleTooltip?: string;\n @Input() dateTooltip?: string;\n @Input() locationTooltip?: string;\n @Input() descriptionTooltip?: string;\n @Input() tooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below';\n /** When true, visually de-emphasises resume entries; descriptions stay visible but truncated */\n @Input() isSectionHidden: boolean = false;\n\n // ResponsiveColumns inputs (optional overrides)\n @Input() gap: string | number = '12px';\n @Input() padding: string | number = 0;\n @Input() leftWidth: string = 'auto';\n @Input() rightWidth: string = 'auto';\n @Input() stackAt: number = 0;\n\n // AppToolbar inputs\n @Input() variant: string = 'default';\n @Input() content: string = '';\n @Input() isExtractionAnalysisActive: boolean = false;\n @Input() showSearch: boolean = true;\n @Input() overrideConfig: Partial<RequiredIconConfig> = {};\n\n // AppToolbar outputs\n @Output() editEvent = new EventEmitter<string>();\n\n // Resume Entries outputs\n @Output() reapplyClick = new EventEmitter<{ entry: ResumeEntry; index: number }>();\n @Output() undoClick = new EventEmitter<{ entry: ResumeEntry; index: number }>();\n\n // AppToolbarRight inputs\n @Input() checked: boolean = false;\n @Input() alwaysShowIcons: boolean = false;\n @Input() overrideConfigRight: Partial<AppToolbarRightRequiredIconConfig> = {};\n @Input() currentObj: Partial<any> = {};\n\n // AppToolbarRight outputs\n @Output() checkboxChange = new EventEmitter<boolean>();\n @Output() visibilityToggle = new EventEmitter<boolean>();\n @Output() hideShowEvent = new EventEmitter<any>();\n @Output() checkboxEvent = new EventEmitter<object>();\n @Output() setSubroleEvent = new EventEmitter<any>();\n\n // AppToolbarRight event handlers\n onCheckboxChange(checked: boolean) {\n this.checkboxChange.emit(checked);\n }\n\n onVisibilityToggle(isVisible: boolean) {\n this.visibilityToggle.emit(isVisible);\n }\n\n onHideShowEvent(obj: any) {\n this.hideShowEvent.emit(obj);\n }\n\n onCheckboxEvent(obj: object) {\n this.checkboxEvent.emit(obj);\n }\n\n onSetSubroleEvent(subrole?: any) {\n this.setSubroleEvent.emit(subrole);\n }\n\n // AppToolbar event handler\n onEditEvent(content: string) {\n this.editEvent.emit(content);\n }\n\n // Resume Entries event handler\n onReapplyClick(data: { entry: ResumeEntry; index: number }) {\n this.reapplyClick.emit(data);\n }\n\n onUndoClick(data: { entry: ResumeEntry; index: number }) {\n this.undoClick.emit(data);\n }\n}\n\n\n","<al-responsive-columns [gap]=\"gap\" [padding]=\"padding\" [leftWidth]=\"leftWidth\" [rightWidth]=\"rightWidth\"\n [stackAt]=\"stackAt\">\n <div left><toolbar-left [variant]=\"variant\" [content]=\"content\"\n [isExtractionAnalysisActive]=\"isExtractionAnalysisActive\"\n [overrideConfig]=\"overrideConfig\" (editEvent)=\"onEditEvent($event)\"></toolbar-left></div>\n <div center><al-resume-entries [entries]=\"entries\" [showHeader]=\"showHeader\"\n [showDescriptionLabel]=\"showDescriptionLabel\" [showCompany]=\"showCompany\" [showJobTitle]=\"showJobTitle\"\n [showDates]=\"showDates\" [showLocation]=\"showLocation\" [showTimeline]=\"showTimeline\"\n [showReapplyButton]=\"showReapplyButton\" [showLoader]=\"showLoader\" [loaderForAllEntries]=\"loaderForAllEntries\"\n [loaderStatus]=\"loaderStatus\" [loaderSize]=\"loaderSize\" [skills]=\"skills\" [companyTooltip]=\"companyTooltip\"\n [jobTitleTooltip]=\"jobTitleTooltip\" [dateTooltip]=\"dateTooltip\" [locationTooltip]=\"locationTooltip\"\n [descriptionTooltip]=\"descriptionTooltip\" [tooltipPosition]=\"tooltipPosition\" [isSectionHidden]=\"isSectionHidden\"\n (reapplyClick)=\"onReapplyClick($event)\" (undoClick)=\"onUndoClick($event)\"></al-resume-entries>\n </div>\n <div right><toolbar-right [checked]=\"checked\" [alwaysShowIcons]=\"alwaysShowIcons\"\n [overrideConfig]=\"overrideConfigRight\" [currentObj]=\"currentObj\" (checkboxChange)=\"onCheckboxChange($event)\"\n (visibilityToggle)=\"onVisibilityToggle($event)\" (hideShowEvent)=\"onHideShowEvent($event)\"\n (checkboxEvent)=\"onCheckboxEvent($event)\" (setSubroleEvent)=\"onSetSubroleEvent($event)\"></toolbar-right>\n </div>\n</al-responsive-columns>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ExperienceSectionComponent } from './experience-section.component';\n\n@NgModule({\n imports: [CommonModule, ExperienceSectionComponent],\n exports: [ExperienceSectionComponent]\n})\nexport class ExperienceSectionModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { GeneralContainerComponent } from './general-container.component';\n\n@NgModule({\n imports: [GeneralContainerComponent],\n exports: [GeneralContainerComponent],\n})\nexport class GeneralContainerModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppToolbarLeftComponent } from './toolbar-left.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, AppToolbarLeftComponent],\n exports: [AppToolbarLeftComponent],\n})\nexport class AppToolbarLeftModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n const basePath = this.getBasePath();\n\n this.iconRegistry.addSvgIcon(\n 'move',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/Move.svg`)\n );\n this.iconRegistry.addSvgIcon(\n 'edit',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/edit.svg`)\n );\n this.iconRegistry.addSvgIcon(\n 'search',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/search.svg`)\n );\n }\n\n private getBasePath(): string {\n if (typeof document === 'undefined') {\n return '';\n }\n\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n return baseHref.replace(/\\/$/, '');\n }\n\n const pathname = window.location.pathname;\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n return '';\n }\n}\n\n","import { CommonModule } from '@angular/common';\nimport { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList, OnInit } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { LEFT_AND_RIGHT_ICON_CONSTANTS } from '../utils/image-utils';\n\n// Static flag to ensure icons are registered only once\nlet iconsRegistered = false;\n\n@Component({\n selector: 'al-side-action-bar',\n standalone: true,\n imports: [CommonModule, ButtonComponent, MatTooltipModule],\n templateUrl: './side-action-bar-wrapper.component.html',\n styleUrls: ['./side-action-bar-wrapper.component.scss']\n})\nexport class SideActionBarWrapperComponent implements AfterContentInit, OnInit {\n @ContentChildren(ButtonComponent) actionButtons!: QueryList<ButtonComponent>;\n\n @Input() showClose: boolean = true;\n // Visibility flag: if false, wrapper does not render\n @Input() visible: boolean = true;\n // Position: 'left' or 'right'\n @Input() position: 'left' | 'right' = 'right';\n // Icon outlined style for close button\n @Input() iconOutlined: boolean = false;\n // Tooltip text for close button\n @Input() closeButtonTooltip: string = 'Close';\n // Tooltip position for close button\n @Input() closeButtonTooltipPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n\n @Output() closeClick = new EventEmitter<void>();\n\n buttons: ButtonComponent[] = [];\n\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // Register icons synchronously - this must happen before template rendering\n this.registerIcons();\n }\n\n ngOnInit(): void {\n // Icons are registered in constructor\n }\n\n private registerIcons(): void {\n // Register icons only once using static flag\n if (!iconsRegistered) {\n try {\n // Register all icons synchronously\n // Use icons from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'hide_section',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['hide_section'])\n );\n // Register visibility_off as alias to hide_section for backward compatibility\n this.iconRegistry.addSvgIconLiteral(\n 'visibility_off',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['hide_section'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'subrole',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['subrole'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'year_month_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['year_month_icon'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'year_only_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['year_only_icon'])\n );\n\n this.iconRegistry.addSvgIconLiteral(\n 'multi-drag-drop',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['multi-drag-drop'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'delete-icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['delete-icon'])\n );\n // Keep backward compatibility - register old icon names that might be used in templates\n\n this.iconRegistry.addSvgIconLiteral(\n 'arrow_downward',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['multi-drag-drop'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'delete',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['delete-icon'])\n );\n iconsRegistered = true;\n } catch (error) {\n console.error('Failed to register side action bar icons:', error);\n }\n }\n }\n\n ngAfterContentInit(): void {\n this.buttons = this.actionButtons?.toArray() ?? [];\n this.applyDefaultsToButtons();\n this.actionButtons.changes.subscribe(() => {\n this.buttons = this.actionButtons.toArray();\n this.applyDefaultsToButtons();\n });\n }\n\n /**\n * Enforce wrapper defaults on projected buttons:\n * - buttonType = 'icon-circle'\n * - color = 'white' (unless explicitly set to gradient, grey, etc.)\n * - outline = true (unless explicitly set to false for non-white colors)\n * - size = 'sm' (unless explicitly set)\n * - iconOnly = true (unless explicitly set to false)\n * - iconOutlined = false (unless explicitly set to true)\n */\n private applyDefaultsToButtons(): void {\n this.buttons.forEach((btn) => {\n try {\n // Always set buttonType to icon-circle\n btn.buttonType = 'icon-circle';\n\n // Check if color is explicitly set to a non-default value\n const explicitColors = ['gradient', 'grey', 'green', 'error', 'white', 'success'];\n const hasExplicitColor = btn.color && explicitColors.includes(btn.color);\n\n // Only set color to white if it's not explicitly set or is the default 'blue'\n if (!hasExplicitColor && (!btn.color || btn.color === 'blue')) {\n btn.color = 'white';\n }\n\n // For explicitly colored buttons (gradient, grey), preserve their outline setting\n // For white buttons, set outline to true if not explicitly set to false\n if (btn.color === 'white' && btn.outline !== false) {\n btn.outline = true;\n }\n // For gradient/grey buttons, preserve outline (don't override)\n\n // Only set size if it's the default ('base') or unset\n if (!btn.size || btn.size === 'base') {\n btn.size = 'sm';\n }\n\n // Only set iconOnly if it's the default (false)\n if (btn.iconOnly === false) {\n btn.iconOnly = true;\n }\n\n // iconOutlined defaults to false, so only set if it's undefined\n if (btn.iconOutlined === undefined) {\n btn.iconOutlined = false;\n }\n } catch {\n // no-op; defensive to avoid breaking if API changes\n }\n });\n }\n}\n\n","<div class=\"al-side-action-bar-wrap\" [ngClass]=\"'position-' + position\">\n <!-- Visible bar -->\n <ng-container *ngIf=\"visible\">\n <div class=\"al-side-action-bar\">\n <div class=\"al-side-action-bar__close\" *ngIf=\"showClose\">\n <al-button [buttonType]=\"'icon-circle'\" [color]=\"'grey'\" [outline]=\"false\" [size]=\"'base'\" [iconOnly]=\"true\"\n [iconOutlined]=\"iconOutlined\" [icon]=\"'close'\" [tooltip]=\"closeButtonTooltip\"\n [tooltipPosition]=\"closeButtonTooltipPosition\" aria-label=\"Close\" (onClick)=\"closeClick.emit()\"></al-button>\n </div>\n\n <!-- Buttons rail -->\n <div class=\"al-side-action-bar__rail\">\n <ng-content></ng-content>\n </div>\n </div>\n </ng-container>\n</div>","import { NgModule } from '@angular/core';\nimport { SideActionBarWrapperComponent } from './side-action-bar-wrapper.component';\n\n/**\n * Module for Side Action Bar Wrapper Component\n * Note: This component is standalone, so this module is optional.\n * It can be used if you need to import the component in a non-standalone module.\n */\n@NgModule({\n imports: [SideActionBarWrapperComponent],\n exports: [SideActionBarWrapperComponent]\n})\nexport class SideActionBarWrapperModule { }\n\n","import {\n CommonModule\n}\n\nfrom '@angular/common';\n\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n OnInit\n}\n\nfrom '@angular/core';\n\nimport {\n FormsModule\n}\n\nfrom '@angular/forms';\n\nimport {\n MatIconModule,\n MatIconRegistry\n}\n\nfrom '@angular/material/icon';\n\nimport {\n MatTooltipModule\n}\n\nfrom '@angular/material/tooltip';\n\nimport {\n DomSanitizer\n}\n\nfrom '@angular/platform-browser';\n\nimport {\n IconButtonComponent\n}\n\nfrom '../icon-button/icon-button.component';\n\nimport {\n ButtonComponent\n}\n\nfrom '../button/button.component';\n\nimport {\n InputComponent\n}\n\nfrom '../input/input.component';\n\nimport {\n LEFT_AND_RIGHT_ICON_CONSTANTS\n}\n\nfrom '../utils/image-utils';\n\n// Static flag to ensure icons are registered only once\nlet iconsRegistered=false;\n\n/**\n * AI Wrapper Component\n *\n * A presentational component that displays a clock-hand style toolbar\n * that rotates between vertical (tools) and horizontal (AI input) states.\n *\n * This component has no internal logic - all state is controlled via inputs\n * and user interactions emit events.\n */\n@Component( {\n selector: 'al-ai-wrapper',\n standalone: true,\n imports: [CommonModule, FormsModule, MatIconModule, MatTooltipModule, IconButtonComponent, ButtonComponent, InputComponent],\n templateUrl: './ai-wrapper.component.html',\n styleUrls: ['./ai-wrapper.component.scss']\n }\n\n) export class AiWrapperComponent implements OnInit {\n /** Whether the component is in AI mode (horizontal) or tools mode (vertical) */\n @Input() isAI: boolean=false;\n\n /** Placeholder text for the AI input field (dropdown) */\n @Input() inputPlaceholder: string='Typing';\n\n /** Options for the dropdown input */\n @Input() inputOptions: string[]=['Typing', 'Gathering', 'Processing'];\n\n /** Current value of the AI input field */\n @Input() inputValue: string='';\n\n /** Whether the input is disabled */\n @Input() inputDisabled: boolean=false;\n\n /** Whether to show the close (X) button */\n @Input() showCloseButton: boolean=true;\n\n /** Whether to show the hide button in vertical mode */\n @Input() showHideButton: boolean=true;\n\n /** Whether to show the sub role button in vertical mode */\n @Input() showSubRoleButton: boolean=true;\n\n /** Whether to show the year month button in vertical mode */\n @Input() showYearMonthButton: boolean=true;\n\n /** Whether to show the move button in vertical mode */\n @Input() showMoveButton: boolean=true;\n\n /** Whether to show the delete button in vertical mode */\n @Input() showDeleteButton: boolean=true;\n\n /** Whether to show the Apply AI button in AI mode */\n @Input() showApplyButton: boolean=true;\n\n /** Label for the Apply AI button */\n @Input() applyLabel: string='Apply AI';\n\n /** Whether the Apply AI button is disabled */\n @Input() applyDisabled: boolean=false;\n\n /** Whether to show the chevron button */\n @Input() showChevronButton: boolean=true;\n\n /** Whether to show helper text */\n @Input() showHelperText: boolean=true;\n\n /** Helper text content */\n @Input() helperText: string='Action will be applied globally to all sections';\n\n /** Event emitted when the close (X) button is clicked */\n @Output() closeClick=new EventEmitter<void>();\n\n /** Event emitted when the AI trigger button (Sparkles) is clicked */\n @Output() aiTriggerClick=new EventEmitter<void>();\n\n /** Event emitted when the AI input value changes */\n @Output() inputValueChange=new EventEmitter<string>();\n\n /** Event emitted when the hide button is clicked */\n @Output() hideClick=new EventEmitter<void>();\n\n /** Event emitted when the sub role button is clicked */\n @Output() subRoleClick=new EventEmitter<void>();\n\n /** Event emitted when the year month button is clicked */\n @Output() yearMonthClick=new EventEmitter<void>();\n\n /** Event emitted when the move button is clicked */\n @Output() moveClick=new EventEmitter<void>();\n\n /** Event emitted when the delete button is clicked */\n @Output() deleteClick=new EventEmitter<void>();\n\n /** Event emitted when the Apply AI button is clicked */\n @Output() applyClick=new EventEmitter<void>();\n\n /** Event emitted when the chevron button is clicked */\n @Output() chevronClick=new EventEmitter<void>();\n\n /** Event emitted when the input field is focused */\n @Output() inputFocus=new EventEmitter<void>();\n\n /** Event emitted when the input field loses focus */\n @Output() inputBlur=new EventEmitter<void>();\n\n constructor(private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer) {\n this.registerIcons();\n }\n\n ngOnInit(): void {\n // Icons are registered in constructor\n }\n\n private registerIcons(): void {\n\n // Register icons only once using static flag\n if ( !iconsRegistered) {\n try {\n // Register all icons synchronously\n this.iconRegistry.addSvgIconLiteral('hide_section',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['hide_section']));\n // Register visibility_off as alias to hide_section for backward compatibility\n this.iconRegistry.addSvgIconLiteral('visibility_off',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['hide_section']));\n this.iconRegistry.addSvgIconLiteral('subrole',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['subrole']));\n this.iconRegistry.addSvgIconLiteral('subrole_icon_white',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['subrole_icon_white']));\n this.iconRegistry.addSvgIconLiteral('year_month_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['year_month_icon']));\n this.iconRegistry.addSvgIconLiteral('year_only_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['year_only_icon']));\n this.iconRegistry.addSvgIconLiteral('multi-drag-drop',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['multi-drag-drop']));\n this.iconRegistry.addSvgIconLiteral('delete-icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['delete-icon']));\n // Keep backward compatibility - register old icon names\n this.iconRegistry.addSvgIconLiteral('arrow_downward',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['multi-drag-drop']));\n this.iconRegistry.addSvgIconLiteral('delete',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['delete-icon']));\n iconsRegistered=true;\n }\n\n catch (error) {\n console.error('Failed to register AI wrapper icons:', error);\n }\n }\n }\n\n onCloseClick(): void {\n this.closeClick.emit();\n }\n\n onAITriggerClick(event: Event): void {\n event.stopPropagation();\n this.aiTriggerClick.emit();\n }\n\n onInputChange(value: string): void {\n this.inputValueChange.emit(value);\n }\n\n onHideClick(): void {\n this.hideClick.emit();\n }\n\n onSubRoleClick(): void {\n this.subRoleClick.emit();\n }\n\n onYearMonthClick(): void {\n this.yearMonthClick.emit();\n }\n\n onMoveClick(): void {\n this.moveClick.emit();\n }\n\n onDeleteClick(): void {\n this.deleteClick.emit();\n }\n\n onApplyClick(): void {\n this.applyClick.emit();\n }\n\n onChevronClick(): void {\n this.chevronClick.emit();\n }\n\n onInputFocus(): void {\n this.inputFocus.emit();\n }\n\n onInputBlur(): void {\n this.inputBlur.emit();\n }\n}\n","<div class=\"al-ai-wrapper\">\n <div class=\"al-ai-wrapper__center\">\n <div *ngIf=\"showCloseButton\" class=\"al-ai-wrapper__close-button-wrapper\" [class.is-ai-mode]=\"isAI\"><al-button\n [buttonType]=\"'icon-circle'\" [color]=\"isAI ? 'grey' : 'grey'\" [outline]=\"false\" [size]=\"'base'\"\n [iconOnly]=\"true\" [iconOutlined]=\"false\" [icon]=\"'close'\" [disabled]=\"false\" [tooltip]=\"''\"\n [tooltipPosition]=\"'above'\" aria-label=\"Close\" (onClick)=\"onCloseClick()\"></al-button></div>\n <div class=\"al-ai-wrapper__hand-wrapper\" [class.is-ai-mode]=\"isAI\">\n <div class=\"al-ai-wrapper__gap\">\n <div class=\"al-ai-wrapper__toolbar\" [class.is-ai-mode]=\"isAI\" [class.no-helper-text]=\"isAI && !showHelperText\">\n <div class=\"al-ai-wrapper__content\" [class.is-ai-mode]=\"isAI\">\n <div *ngIf=\"!isAI\" class=\"al-ai-wrapper__vertical-tools\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"isAI\" class=\"al-ai-wrapper__horizontal-ai\">\n <div class=\"al-ai-wrapper__ai-row\">\n <div class=\"al-ai-wrapper__input-container\"><al-input [labelText]=\"''\" [placeholder]=\"inputPlaceholder\"\n [value]=\"inputValue\" [type]=\"'text'\" [disabled]=\"inputDisabled\" [helperText]=\"false\" [leftIcon]=\"''\"\n [rightIcon]=\"'expand_more'\" [hasDropDown]=\"true\" [searchfilter]=\"true\" [multipleSelect]=\"false\"\n [options]=\"inputOptions\" [size]=\"'base'\" [types]=\"'plain'\"\n (change)=\"onInputChange($event)\"></al-input></div>\n <div class=\"al-ai-wrapper__ai-actions\"><al-button *ngIf=\"showApplyButton\" [buttonType]=\"'icon-label'\"\n [color]=\"'gradient'\" [outline]=\"false\" [size]=\"'base'\" [labelText]=\"applyLabel\"\n [disabled]=\"applyDisabled\" aria-label=\"Apply AI\"\n (onClick)=\"onApplyClick()\"></al-button><al-icon-button *ngIf=\"showChevronButton\"\n icon=\"chevron_right\" [iconOutlined]=\"true\" [customColour]=\"'#ffffff'\" [size]=\"'xl'\"\n [disabled]=\"applyDisabled\" (onClick)=\"onChevronClick()\"\n [dataTestId]=\"'icon-btn_Uwofs4q_3kWU'\"></al-icon-button></div>\n </div>\n <div class=\"al-ai-wrapper__helper-text\" *ngIf=\"showHelperText\">\n {{ helperText }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { AiWrapperComponent } from './ai-wrapper.component';\n\n/**\n * Module for AI Wrapper Component\n * Note: This component is standalone, so this module is optional.\n * It can be used if you need to import the component in a non-standalone module.\n */\n@NgModule({\n imports: [AiWrapperComponent],\n exports: [AiWrapperComponent]\n})\nexport class AiWrapperModule { }\n\n","/*\n * Public API Surface of allsorter-lib\n */\n\nexport * from './lib/allsorter-lib.service';\nexport * from './lib/allsorter-lib.component';\nexport * from './lib/button/button.component';\nexport * from './lib/button/button.module';\nexport * from './lib/input/input.component';\nexport * from './lib/input/input.module';\n// export * from './lib/resume-header/resume-header.component';\n// export * from './lib/resume-header/resume-header.module';\nexport * from './lib/newresumeheader/newresumeheader.component';\nexport * from './lib/newresumeheader/newresumeheader.module';\nexport * from './lib/loader/loader.component';\nexport * from './lib/loader/loader.module';\nexport * from './lib/candidate-section/candidate-section.component';\nexport * from './lib/candidate-section/candidate-section.module';\nexport * from './lib/checkbox/checkbox.component';\nexport * from './lib/checkbox/checkbox.module';\nexport * from './lib/radio/radio.component';\nexport * from './lib/radio/radio.module';\nexport * from './lib/toggle-buttons/toggle-buttons.component';\nexport * from './lib/toggle-buttons/toggle-buttons.module';\nexport * from './lib/slide-toggle/slide-toggle.component';\nexport * from './lib/slide-toggle/slide-toggle.module';\nexport * from './lib/ai-apply-bar/ai-apply-bar.component';\nexport * from './lib/responsive-layout/responsive-layout.component';\nexport * from './lib/responsive-layout/responsive-layout.module';\nexport * from './lib/custom-editor/custom-editor.component';\nexport * from './lib/custom-editor/custom-editor.module';\nexport * from './lib/custom-editor/custom-editor-demo.component';\n\nexport * from './lib/icon-button/icon-button.component';\n\nexport * from './lib/date-range/date-range.component';\nexport * from './lib/date-range/date-range.module';\n\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tabs.module';\nexport * from './lib/shared-popup-modal/shared-popup-modal.component';\nexport * from './lib/shared-popup-modal/shared-popup-modal.module';\n\nexport * from './lib/tooltip/tooltip.component';\nexport * from './lib/tooltip/tooltip.module';\nexport * from './lib/new-typography/new-typography.component';\nexport * from './lib/editable-form-wrapper/editable-form-wrapper.component';\nexport * from './lib/field-placeholder/field-placeholder.component';\nexport * from './lib/field-placeholder/field-placeholder.module';\nexport * from './lib/responsive-columns/responsive-columns.component';\nexport * from './lib/responsive-columns/responsive-columns.module';\nexport * from './lib/resume-entries/resume-entries.component';\nexport * from './lib/resume-entries/resume-entries.module';\nexport * from './lib/experience-section/experience-section.component';\nexport * from './lib/experience-section/experience-section.module';\nexport * from './lib/general-container/general-container.component';\nexport * from './lib/general-container/general-container.module';\nexport * from './lib/toolbar-left/toolbar-left.component';\nexport * from './lib/toolbar-left/toolbar-left.module';\nexport * from './lib/toolbar-right/toolbar-right.component';\nexport * from './lib/toolbar-right/toolbar-right.module';\nexport * from './lib/side-action-bar-wrapper/side-action-bar-wrapper.component';\nexport * from './lib/side-action-bar-wrapper/side-action-bar-wrapper.module';\nexport * from './lib/ai-wrapper/ai-wrapper.component';\nexport * from './lib/ai-wrapper/ai-wrapper.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i5","i1","i3","i4","i9","i10","iconsRegistered","i6","i7.CheckboxComponent","i4.FieldPlaceholderComponent","i4.CheckboxComponent","i1.AppToolbarRightComponent"],"mappings":"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"}
1
+ {"version":3,"file":"allsorter-ui-components.mjs","sources":["../../../projects/allsorter-lib/src/lib/allsorter-lib.service.ts","../../../projects/allsorter-lib/src/lib/allsorter-lib.component.ts","../../../projects/allsorter-lib/src/lib/utils/icon-utils.ts","../../../projects/allsorter-lib/src/lib/button/button.component.ts","../../../projects/allsorter-lib/src/lib/button/button.component.html","../../../projects/allsorter-lib/src/lib/button/button.module.ts","../../../projects/allsorter-lib/src/lib/input/input.component.ts","../../../projects/allsorter-lib/src/lib/input/input.component.html","../../../projects/allsorter-lib/src/lib/input/input.module.ts","../../../projects/allsorter-lib/src/lib/general-container/colors.constants.ts","../../../projects/allsorter-lib/src/lib/general-container/general-container.component.ts","../../../projects/allsorter-lib/src/lib/general-container/general-container.component.html","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.component.ts","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.component.html","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.component.ts","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.component.html","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.module.ts","../../../projects/allsorter-lib/src/lib/utils/image-utils.ts","../../../projects/allsorter-lib/src/lib/newresumeheader/newresumeheader.component.ts","../../../projects/allsorter-lib/src/lib/newresumeheader/newresumeheader.component.html","../../../projects/allsorter-lib/src/lib/newresumeheader/newresumeheader.module.ts","../../../projects/allsorter-lib/src/lib/loader/loader.component.ts","../../../projects/allsorter-lib/src/lib/loader/loader.component.html","../../../projects/allsorter-lib/src/lib/loader/loader.module.ts","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.component.ts","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.component.html","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.component.ts","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.component.html","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.module.ts","../../../projects/allsorter-lib/src/lib/radio/radio.component.ts","../../../projects/allsorter-lib/src/lib/radio/radio.component.html","../../../projects/allsorter-lib/src/lib/radio/radio.module.ts","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.component.ts","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.component.html","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.module.ts","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.component.ts","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.component.html","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.module.ts","../../../projects/allsorter-lib/src/lib/icon-button/icon-button.component.ts","../../../projects/allsorter-lib/src/lib/icon-button/icon-button.component.html","../../../projects/allsorter-lib/src/lib/ai-apply-bar/ai-apply-bar.component.ts","../../../projects/allsorter-lib/src/lib/ai-apply-bar/ai-apply-bar.component.html","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.component.ts","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.component.html","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.module.ts","../../../projects/allsorter-lib/src/lib/custom-editor/table/table.component.ts","../../../projects/allsorter-lib/src/lib/custom-editor/table/table.component.html","../../../projects/allsorter-lib/src/lib/custom-editor/bullet-utils.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.component.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.component.html","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.module.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor-demo.component.ts","../../../projects/allsorter-lib/src/lib/date-range/date-range.component.ts","../../../projects/allsorter-lib/src/lib/date-range/date-range.component.html","../../../projects/allsorter-lib/src/lib/date-range/date-range.module.ts","../../../projects/allsorter-lib/src/lib/tabs/tabs.component.ts","../../../projects/allsorter-lib/src/lib/tabs/tabs.component.html","../../../projects/allsorter-lib/src/lib/tabs/tabs.module.ts","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.component.ts","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.component.html","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.module.ts","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.component.ts","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.component.html","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.module.ts","../../../projects/allsorter-lib/src/lib/new-typography/new-typography.component.ts","../../../projects/allsorter-lib/src/lib/new-typography/new-typography.component.html","../../../projects/allsorter-lib/src/lib/editable-form-wrapper/editable-form-wrapper.component.ts","../../../projects/allsorter-lib/src/lib/editable-form-wrapper/editable-form-wrapper.component.html","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.module.ts","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.module.ts","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.component.ts","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.component.html","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.module.ts","../../../projects/allsorter-lib/src/lib/toolbar-left/toolbar-left.component.ts","../../../projects/allsorter-lib/src/lib/toolbar-left/toolbar-left.component.html","../../../projects/allsorter-lib/src/lib/toolbar-right/toolbar-right.component.ts","../../../projects/allsorter-lib/src/lib/toolbar-right/toolbar-right.component.html","../../../projects/allsorter-lib/src/lib/toolbar-right/toolbar-right.module.ts","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.component.ts","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.component.html","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.module.ts","../../../projects/allsorter-lib/src/lib/general-container/general-container.module.ts","../../../projects/allsorter-lib/src/lib/toolbar-left/toolbar-left.module.ts","../../../projects/allsorter-lib/src/lib/side-action-bar-wrapper/side-action-bar-wrapper.component.ts","../../../projects/allsorter-lib/src/lib/side-action-bar-wrapper/side-action-bar-wrapper.component.html","../../../projects/allsorter-lib/src/lib/side-action-bar-wrapper/side-action-bar-wrapper.module.ts","../../../projects/allsorter-lib/src/lib/ai-wrapper/ai-wrapper.component.ts","../../../projects/allsorter-lib/src/lib/ai-wrapper/ai-wrapper.component.html","../../../projects/allsorter-lib/src/lib/ai-wrapper/ai-wrapper.module.ts","../../../projects/allsorter-lib/src/public-api.ts","../../../projects/allsorter-lib/src/allsorter-ui-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AllsorterLibService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-allsorter-lib',\n template: `\n <p>\n allsorter-lib works!\n </p>\n `,\n styles: ``\n})\nexport class AllsorterLibComponent {\n\n}\n","/**\n * Utility functions for handling Material Icons, including fallback logic\n * for icons that don't have outlined versions and icons with different names\n * for their outlined versions.\n */\n\n/**\n * Set of Material Icons that are known to NOT have outlined versions in the\n * 'material-icons-outlined' font set. These icons will automatically fall back\n * to the filled version even when iconOutlined is set to true.\n *\n * Note: This list should only include icons that definitely do NOT exist in\n * the material-icons-outlined font set. Many common icons like 'home', 'search',\n * 'visibility', 'settings', etc. DO have outlined versions and should NOT be\n * in this list.\n */\nconst ICONS_WITHOUT_OUTLINED: Set<string> = new Set([ // Basic action icons without outlined versions\n 'add',\n 'remove',\n 'refresh',\n 'menu',\n 'more_vert',\n 'more_horiz',\n // Navigation arrows (these specific ones don't have outlined versions)\n 'arrow_back',\n 'arrow_forward',\n 'arrow_upward',\n 'arrow_downward',\n 'chevron_left',\n 'chevron_right',\n 'chevron_up',\n 'chevron_down',\n 'keyboard_arrow_down',\n 'keyboard_arrow_up',\n 'keyboard_arrow_left',\n 'keyboard_arrow_right',\n 'arrow_drop_down',\n 'arrow_drop_up',\n // Media control icons\n 'play_arrow',\n 'pause',\n 'stop',\n 'skip_next',\n 'skip_previous',\n 'fast_forward',\n 'fast_rewind',\n 'volume_up',\n 'volume_down',\n 'volume_off',\n 'volume_mute',\n 'fullscreen',\n 'fullscreen_exit',\n 'network_node',\n]);\n\n/**\n * Mapping of icon names to their outlined equivalents.\n * Some icons have different names for their outlined versions, but they\n * still use the 'material-icons' font set (not 'material-icons-outlined').\n *\n * Examples:\n * - 'favorite' -> 'favorite_border' (outlined heart is a separate icon in material-icons)\n * - 'star' -> 'star_border' (outlined star is a separate icon in material-icons)\n */\nconst ICON_OUTLINED_MAPPING: Map<string,\n string> = new Map([['favorite', 'favorite_border'],\n ['star', 'star_border'],\n ]);\n\n/**\n * Gets the effective icon name to use, considering outlined mappings.\n * Some icons have different names for their outlined versions.\n *\n * @param iconName - The name of the Material Icon\n * @param iconOutlined - Whether the outlined version is requested\n * @returns The effective icon name to use\n *\n * @example\n * getEffectiveIconName('favorite', true) // Returns 'favorite_border'\n * getEffectiveIconName('favorite', false) // Returns 'favorite'\n * getEffectiveIconName('star', true) // Returns 'star_border'\n * getEffectiveIconName('visibility', true) // Returns 'visibility'\n */\nexport function getEffectiveIconName(iconName: string, iconOutlined: boolean): string {\n\n // If outlined is not requested, use the original name\n if (!iconOutlined) {\n return iconName;\n }\n\n // Check if this icon has a mapped outlined version\n if (ICON_OUTLINED_MAPPING.has(iconName)) {\n return ICON_OUTLINED_MAPPING.get(iconName)!;\n }\n\n // Use the original name (it should work with material-icons-outlined font set)\n return iconName;\n}\n\n/**\n * Set of Material Symbols icon names (icons that use Material Symbols font instead of Material Icons)\n * These icons typically have underscores in their names (e.g., network_node, account_circle, etc.)\n */\nconst MATERIAL_SYMBOLS_ICONS: Set<string> = new Set(['network_node',\n // Add other Material Symbols icons as needed\n]);\n\n/**\n * Checks if an icon name is a Material Symbols icon.\n * Material Symbols icons typically have underscores in their names.\n */\nfunction isMaterialSymbolsIcon(iconName: string): boolean {\n\n // Check explicit list first\n if (MATERIAL_SYMBOLS_ICONS.has(iconName)) {\n return true;\n }\n\n // Heuristic: Material Symbols icons often have underscores (e.g., network_node, account_circle)\n // But we need to be careful not to match Material Icons that also have underscores\n // For now, we'll use the explicit list and add icons as needed\n return false;\n}\n\n/**\n * Determines the effective font set to use for a Material Icon.\n *\n * @param iconName - The name of the Material Icon\n * @param iconOutlined - Whether the outlined version is requested\n * @returns The font set to use: 'material-icons-outlined', 'material-icons', or 'material-symbols-outlined'\n *\n * @example\n * getEffectiveFontSet('add', true) // Returns 'material-icons' (add has no outlined version)\n * getEffectiveFontSet('visibility', true) // Returns 'material-icons-outlined' (if available)\n * getEffectiveFontSet('favorite', true) // Returns 'material-icons' (uses favorite_border in material-icons)\n * getEffectiveFontSet('network_node', false) // Returns 'material-symbols-outlined' (Material Symbols icon)\n * getEffectiveFontSet('add', false) // Returns 'material-icons'\n */\nexport function getEffectiveFontSet(iconName: string, iconOutlined: boolean): string {\n\n // Check if this is a Material Symbols icon\n if (isMaterialSymbolsIcon(iconName)) {\n return 'material-symbols-outlined';\n }\n\n // If outlined is not requested, always use filled\n if (!iconOutlined) {\n return 'material-icons';\n }\n\n // Check if this icon has a mapped outlined version (different name, same font set)\n if (ICON_OUTLINED_MAPPING.has(iconName)) {\n return 'material-icons'; // Use filled font set but with the mapped name\n }\n\n // Check if this icon is known to not have an outlined version\n if (ICONS_WITHOUT_OUTLINED.has(iconName)) {\n return 'material-icons';\n }\n\n // For other icons, try outlined version\n // Note: If the icon doesn't exist in outlined font, Material Icons will\n // automatically fall back to filled, but we can be more explicit here\n return 'material-icons-outlined';\n}\n\n/**\n * Checks if an icon is known to have an outlined version available.\n *\n * @param iconName - The name of the Material Icon\n * @returns true if the icon has an outlined version, false otherwise\n */\nexport function hasOutlinedVersion(iconName: string): boolean {\n return !ICONS_WITHOUT_OUTLINED.has(iconName);\n}\n\n/**\n * Gets the effective iconOutlined value, considering whether the icon\n * actually supports outlined versions.\n *\n * @param iconName - The name of the Material Icon\n * @param iconOutlined - Whether the outlined version is requested\n * @returns The effective iconOutlined value (may be false even if requested true)\n */\nexport function getEffectiveIconOutlined(iconName: string, iconOutlined: boolean): boolean {\n if (!iconOutlined) {\n return false;\n }\n\n return hasOutlinedVersion(iconName);\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewChild, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { getEffectiveIconName, getEffectiveFontSet } from '../utils/icon-utils';\n\n@Component({\n selector: 'al-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n imports: [CommonModule, MatButtonModule, MatIconModule, MatMenuModule, MatTooltipModule],\n standalone: true,\n})\nexport class ButtonComponent implements OnDestroy, OnChanges {\n /**\n * Returns the typography class to apply. If the consumer passes `fontClass`,\n * that value wins. Otherwise we derive a sensible default based on `size`.\n */\n get effectiveFontClass(): string {\n if (this.fontClass) {\n return this.fontClass;\n }\n switch (this.size) {\n case 'xs':\n return 'font-body-small';\n case 'sm':\n case 'base':\n return 'font-body-medium';\n case 'l':\n case 'xl':\n case 'header':\n return 'font-body-large';\n default:\n return '';\n }\n }\n @Input() state: 'default' | 'hover' | 'pressed' | 'disabled' = 'default';\n /**\n * Explicit disabled state for the button.\n * When true, the button is visually and functionally disabled regardless of `state`.\n * Existing usages that rely on `state = 'disabled'` continue to work as before.\n */\n @Input() disabled: boolean = false;\n /** Button color (blue, green, grey, error, gradient, white, success) */\n @Input() color: 'blue' | 'green' | 'grey' | 'error' | 'gradient' | 'white' | 'success' = 'blue';\n /** DEPRECATED: category -> color */\n @Input() set category(val: string) {\n if (val !== undefined) {\n console.warn('[al-button] \"category\" is deprecated. Use \"color\" instead.');\n this.color = val as any;\n }\n }\n /** Button outline style (true = outlined, false = filled) */\n @Input() outline: boolean = false;\n\n @Input() labelText: string | undefined = ' '; // Default label\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string | undefined) {\n if (val !== undefined) {\n console.warn('[al-button] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() arialabel: string | undefined = ' '; // Default label\n @Input() iconOnly: boolean = false; // Toggle for icon-only button\n @Input() leftIcon: string | null | undefined = null;\n @Input() rightIcon: string | null | undefined = null;\n /** Alias input: `icon` maps to `leftIcon` for convenience across types. */\n private _icon: string | null | undefined = null;\n @Input() set icon(value: string | null | undefined) {\n this._icon = value;\n // If provided, mirror into leftIcon so all templates and types pick it up.\n if (value !== undefined) {\n this.leftIcon = value;\n }\n }\n get icon(): string | null | undefined {\n return this._icon;\n }\n /** If true, use outlined style for icons (new name). */\n @Input() iconOutlined: boolean = false;\n /** DEPRECATED: outlined -> iconOutlined (remove next major) */\n @Input() set outlined(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"outlined\" is deprecated. Use \"iconOutlined\" instead.');\n this.iconOutlined = val;\n }\n }\n /** Text size option for label and icons */\n @Input() size: 'header' | 'xs' | 'sm' | 'base' | 'l' | 'xl' = 'base';\n\n /** Visual type of button: icon only circle, icon+label, two icons + label */\n @Input() buttonType: 'icon-circle' | 'icon-label' | 'two-icon-label' | 'dropdown' = 'icon-label';\n\n /** Optional typography class, e.g. 'font-display-large' */\n @Input() fontClass: string = '';\n /** Optional data-test-id for e2e or integration tests */\n @Input() dataTestId: string | undefined;\n /** Tooltip text */\n @Input() tooltip: string | undefined;\n /** Tooltip position */\n @Input() tooltipPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n\n /** Getter to check if tooltip should be enabled */\n get hasTooltip(): boolean {\n return !!this.tooltip && this.tooltip.trim() !== '';\n }\n\n @Output() onClick = new EventEmitter<Event>(); // Initialize\n @Output() onHover = new EventEmitter<Event>(); // Initialize\n @Output() onMouseLeave = new EventEmitter<Event>(); // Initialize\n\n /** Dropdown items (new). */\n @Input() dropdownItems: Array<{ label: string; value?: any } | string> = [];\n /** DEPRECATED: dropdownOptions -> dropdownItems */\n @Input() set dropdownOptions(opts: Array<{ label: string; value?: any } | string>) {\n if (opts !== undefined) {\n console.warn('[al-button] \"dropdownOptions\" is deprecated. Use \"dropdownItems\" instead.');\n this.dropdownItems = opts;\n }\n }\n /** Enable dropdown behavior. */\n @Input() hasDropDown: boolean = false;\n /** DEPRECATED: dropdown -> hasDropDown */\n @Input() set dropdown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"dropdown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n /** DEPRECATED: hasDropdown -> hasDropDown */\n @Input() set hasDropdown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"hasDropdown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n /** DEPRECATED: isDropdown -> hasDropDown */\n @Input() set isDropdown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"isDropdown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n\n /** Emits the selected dropdown option's value */\n @Output() optionSelect = new EventEmitter<any>();\n\n selectOption(option: any) {\n this.optionSelect.emit(option?.value ?? option);\n }\n\n computeGap(): number {\n const hasLabel = !!(this.labelText && this.labelText.trim()) && !this.iconOnly;\n const leftIconPresent = !!(this.leftIcon && this.leftIcon.toString().trim());\n const rightIconPresent = !!(this.rightIcon && this.rightIcon.toString().trim());\n const iconCount = (leftIconPresent ? 1 : 0) + (rightIconPresent ? 1 : 0);\n\n // If labelText exists and iconOnly is false, gap should be 0\n if (this.labelText && !this.iconOnly) {\n return 0;\n }\n\n // Header size logic\n if (this.size === 'header' || this.size === 'xl' || this.size === 'l' || this.size === 'sm' || this.size === 'xs') {\n // 0 gap for icon-only buttons with single icon\n return 0;\n }\n\n // 0 gap for purely icon-only buttons (≤1 icon and no label)\n if (!hasLabel && iconCount <= 1) {\n return 0;\n }\n\n // Tighter gap when we have two icons and no label (e.g., two-icon buttons)\n if (iconCount === 2 && !hasLabel) {\n return 4;\n }\n\n // Default gap\n return 8;\n }\n\n // Icon utility methods for proper icon rendering\n getLeftIconName(): string {\n const iconName = (this.buttonType === 'icon-circle' ? (this.icon || this.leftIcon) : this.leftIcon) || '';\n return getEffectiveIconName(iconName, this.iconOutlined);\n }\n\n getRightIconName(): string {\n const iconName = this.rightIcon || '';\n return getEffectiveIconName(iconName, this.iconOutlined);\n }\n\n getIconName(): string {\n const iconName = this.icon || this.leftIcon || '';\n return getEffectiveIconName(iconName, this.iconOutlined);\n }\n\n getLeftIconFontSet(): string {\n const iconName = (this.buttonType === 'icon-circle' ? (this.icon || this.leftIcon) : this.leftIcon) || '';\n return getEffectiveFontSet(iconName, this.iconOutlined);\n }\n\n getRightIconFontSet(): string {\n const iconName = this.rightIcon || '';\n return getEffectiveFontSet(iconName, this.iconOutlined);\n }\n\n getIconFontSet(): string {\n const iconName = this.icon || this.leftIcon || '';\n return getEffectiveFontSet(iconName, this.iconOutlined);\n }\n\n // List of SVG icon names that should use svgIcon attribute\n private svgIconNames: Set<string> = new Set([\n 'year_month_icon', 'year', 'calendar_year',\n 'delete-icon', 'delete',\n 'multi-drag-drop', 'arrow_downward',\n 'subrole', 'subrole_active', 'subrole_icon_white',\n 'hide_section', 'unhide_section',\n 'edit_icon', 'handle', 'search',\n 'add-section', 'add_left-icon_section', 'add-right_icon_section',\n 'font_case_icon',\n 'retry_AI_icon',\n 'ordering_icon',\n 'collapse_icon',\n 'add_education_icon'\n ]);\n\n // Check if an icon should use svgIcon attribute\n isSvgIcon(iconName: string | null | undefined): boolean {\n if (!iconName) return false;\n return this.svgIconNames.has(iconName.trim());\n }\n\n // Get the icon name for svgIcon (returns null if not an SVG icon)\n getSvgIconName(iconName: string | null | undefined): string | null {\n if (!this.isSvgIcon(iconName)) return null;\n return iconName?.trim() || null;\n }\n\n // Get left icon name for svgIcon\n getLeftSvgIconName(): string | null {\n const iconName = (this.buttonType === 'icon-circle' ? (this.icon || this.leftIcon) : this.leftIcon) || '';\n return this.getSvgIconName(iconName);\n }\n\n // Get right icon name for svgIcon\n getRightSvgIconName(): string | null {\n return this.getSvgIconName(this.rightIcon);\n }\n\n /**\n * Effective state used for styling and disabling.\n * If `disabled` is true, this getter returns 'disabled' regardless of the `state` input.\n */\n get effectiveState(): 'default' | 'hover' | 'pressed' | 'disabled' {\n return this.disabled ? 'disabled' : this.state;\n }\n\n get isDisabled(): boolean {\n return this.effectiveState === 'disabled';\n }\n\n stateClasses: { [key: string]: string } = {\n default: 'btn-default',\n hover: 'btn-hover',\n pressed: 'btn-pressed',\n disabled: 'btn-disabled',\n };\n\n // Reference to the MatMenu trigger; used to proactively close overlays on state changes\n @ViewChild(MatMenuTrigger, { static: false }) private menuTrigger?: MatMenuTrigger;\n\n constructor(private iconRegistry: MatIconRegistry) {\n this.iconRegistry.registerFontClassAlias('material-icons-outlined', 'material-icons-outlined');\n this.iconRegistry.registerFontClassAlias('material-icons', 'material-icons');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // If dropdown gets disabled due to control changes, ensure any open menu is closed\n if (changes['hasDropDown'] || changes['buttonType'] || changes['disabled']) {\n const dropdownEnabled = (this.hasDropDown || this.buttonType === 'dropdown') && !this.isDisabled;\n if (!dropdownEnabled) {\n this.menuTrigger?.closeMenu();\n }\n }\n }\n\n ngOnDestroy(): void {\n // Ensure overlay is cleaned up when component is destroyed\n this.menuTrigger?.closeMenu();\n }\n}\n","<!-- Regular button types -->\n<ng-container *ngIf=\"!(hasDropDown || buttonType === 'dropdown'); else dropdownTpl\">\n <button mat-flat-button class=\"btn custom-button\" [class]=\"effectiveFontClass\" [attr.data-test-id]=\"dataTestId\"\n [ngClass]=\"{\n 'size-header': size === 'header' && !fontClass,\n 'size-xs': size === 'xs' && !fontClass,\n 'size-sm': size === 'sm' && !fontClass,\n 'size-base': size === 'base' && !fontClass,\n 'size-l': size === 'l' && !fontClass,\n 'size-xl': size === 'xl' && !fontClass,\n 'mat-raised-button': variant === 'raised',\n 'mat-flat-button': variant === 'flat',\n\n 'mat-stroked-button': variant === 'stroked',\n 'mat-fab': variant === 'fab',\n 'mat-icon-button': variant === 'icon',\n 'icon-circle': buttonType === 'icon-circle',\n 'blue': color === 'blue',\n 'green': color === 'green',\n 'grey': color === 'grey',\n 'error': color === 'error',\n 'success': color === 'success',\n 'gradient': color === 'gradient',\n 'white': color === 'white',\n 'btn-outlined': outline,\n 'btn-default': effectiveState === 'default',\n 'btn-hover': effectiveState === 'hover',\n 'btn-pressed': effectiveState === 'pressed',\n 'btn-disabled': effectiveState === 'disabled'\n }\" [disabled]=\"isDisabled\" [matTooltip]=\"hasTooltip ? tooltip : null\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipDisabled]=\"!hasTooltip\" (click)=\"onClick.emit($event)\" (mouseenter)=\"onHover.emit($event)\"\n (mouseleave)=\"onMouseLeave.emit($event)\" [style.display]=\"'inline-flex'\" [style.align-items]=\"'center'\"\n [style.gap.px]=\"computeGap()\">\n\n <!-- Left Icon (only if provided; for icon-circle prefer `icon` over `leftIcon`) -->\n <ng-container *ngIf=\"(buttonType === 'icon-circle' ? (icon || leftIcon) : leftIcon)?.trim() as leftIconText\">\n <ng-container *ngIf=\"getLeftSvgIconName() as svgIconName; else leftIconFont\">\n <mat-icon [svgIcon]=\"svgIconName\" class=\"left-icon\"></mat-icon>\n </ng-container>\n <ng-template #leftIconFont>\n <mat-icon [fontSet]=\"getLeftIconFontSet()\" class=\"left-icon\">\n {{ getLeftIconName() }}\n </mat-icon>\n </ng-template>\n </ng-container>\n\n <!-- Label (hidden when iconOnly is true) -->\n <span *ngIf=\"!iconOnly && buttonType !== 'icon-circle'\" class=\"button-label\">\n {{ labelText || '' }}\n </span>\n\n <!-- Right icon (only if provided) -->\n <ng-container *ngIf=\"rightIcon?.trim() as rightIconText\">\n <ng-container *ngIf=\"getRightSvgIconName() as svgIconName; else rightIconFont\">\n <mat-icon [svgIcon]=\"svgIconName\" class=\"right-icon\"></mat-icon>\n </ng-container>\n <ng-template #rightIconFont>\n <mat-icon [fontSet]=\"getRightIconFontSet()\" class=\"right-icon\">\n {{ getRightIconName() }}\n </mat-icon>\n </ng-template>\n </ng-container>\n </button>\n</ng-container>\n\n<!-- Dropdown button template -->\n<ng-template #dropdownTpl>\n <button mat-flat-button class=\"btn custom-button\" [class]=\"effectiveFontClass\" [attr.data-test-id]=\"dataTestId\"\n [ngClass]=\"{\n 'size-header': size === 'header' && !fontClass,\n 'size-xs': size === 'xs' && !fontClass,\n 'size-sm': size === 'sm' && !fontClass,\n 'size-base': size === 'base' && !fontClass,\n 'size-l': size === 'l' && !fontClass,\n 'size-xl': size === 'xl' && !fontClass,\n 'mat-raised-button': variant === 'raised',\n 'mat-flat-button': variant === 'flat',\n 'mat-stroked-button': variant === 'stroked',\n 'mat-fab': variant === 'fab',\n 'mat-icon-button': variant === 'icon',\n 'icon-label': true,\n 'blue': color === 'blue',\n 'green': color === 'green',\n 'grey': color === 'grey',\n 'error': color === 'error',\n 'success': color === 'success',\n 'gradient': color === 'gradient',\n 'white': color === 'white',\n 'btn-outlined': outline,\n 'btn-default': effectiveState === 'default',\n 'btn-hover': effectiveState === 'hover',\n 'btn-pressed': effectiveState === 'pressed',\n 'btn-disabled': effectiveState === 'disabled'\n }\" [disabled]=\"isDisabled\" [matTooltip]=\"hasTooltip ? tooltip : null\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipDisabled]=\"!hasTooltip\" (mouseenter)=\"onHover.emit($event)\" (mouseleave)=\"onMouseLeave.emit($event)\"\n [style.display]=\"'inline-flex'\" [style.align-items]=\"'center'\" [style.gap.px]=\"computeGap()\"\n [matMenuTriggerFor]=\"menu\">\n\n <!-- Left Icon (optional) -->\n <ng-container *ngIf=\"leftIcon?.trim() as leftIconText\">\n <ng-container *ngIf=\"getSvgIconName(leftIcon) as svgIconName; else leftIconFontDropdown\">\n <mat-icon [svgIcon]=\"svgIconName\" class=\"left-icon\"></mat-icon>\n </ng-container>\n <ng-template #leftIconFontDropdown>\n <mat-icon [fontSet]=\"getLeftIconFontSet()\" class=\"left-icon\">\n {{ getLeftIconName() }}\n </mat-icon>\n </ng-template>\n </ng-container>\n\n <!-- Label -->\n <span *ngIf=\"!iconOnly\" class=\"button-label\">\n {{ labelText || '' }}\n </span>\n\n <!-- Dropdown arrow icon -->\n <mat-icon class=\"right-icon\">arrow_drop_down</mat-icon>\n </button>\n</ng-template>\n\n<!-- Mat Menu kept outside conditional to avoid portal reattachment across toggles -->\n<mat-menu #menu=\"matMenu\" panelClass=\"custom-dropdown-menu\">\n <button mat-menu-item *ngFor=\"let opt of dropdownItems\" (click)=\"selectOption(opt)\" [ngClass]=\"effectiveFontClass\">\n {{ opt.label || opt }}\n </button>\n</mat-menu>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent } from './button.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, ButtonComponent],\n exports: [ButtonComponent],\n})\nexport class ButtonModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // register the CSS class alias so <mat-icon> knows about it…\n this.iconRegistry.registerFontClassAlias(\n 'material-symbols-outlined',\n 'material-symbols-outlined'\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, forwardRef, ViewChild, OnInit, OnChanges, SimpleChanges, AfterViewInit, ElementRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatAutocompleteModule, MatAutocompleteTrigger } from '@angular/material/autocomplete';\nimport { MatDatepickerModule, MatDatepicker } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'al-input',\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatSelectModule,\n MatOptionModule,\n MatAutocompleteModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatButtonModule,\n MatTooltipModule\n ],\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ]\n})\nexport class InputComponent implements ControlValueAccessor, OnInit, OnChanges, AfterViewInit {\n @Input() labelText: string = '';\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string) {\n if (val !== undefined) {\n console.warn('[al-input] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() placeholder: string = '';\n @Input() value: string | string[] = '';\n @Input() formControlName: string = '';\n @Input() dataTestId: string = '';\n\n @Input() type: 'text' | 'email' | 'number' | 'password' | 'tel' | 'url' | 'date' | 'color' = 'text';\n @Input() disabled: boolean = false;\n @Input() helperText: string = '';\n @Input() error: boolean = false;\n @Input() errorMessage: string = '';\n @Input() leftIcon: string = '';\n @Input() rightIcon: string = '';\n @Input() hasDropDown: boolean = false;\n /** DEPRECATED: dropDown -> hasDropDown */\n @Input() set dropDown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-input] \"dropDown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n @Input() searchfilter: boolean = false;\n @Input() multipleSelect: boolean = false;\n @Input() options: string[] = [];\n @Input() size: 'xs' | 'small' | 'base' | 'large' | 'header' = 'base';\n @Input() types: 'simple' | 'primary' | 'success' | 'error' | 'disabled' | 'plain' = 'plain';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n @Input() matDatepicker?: MatDatepicker<any>;\n @Input() dateType: string = '';\n @ViewChild('dp', { static: false }) internalDatepicker?: MatDatepicker<any>;\n @ViewChild('autocompleteTrigger', { static: false, read: MatAutocompleteTrigger }) autocompleteTrigger?: MatAutocompleteTrigger;\n @ViewChild('searchInput', { static: false }) searchInput?: ElementRef<HTMLInputElement>;\n noBorder: boolean = false;\n outlined: boolean = false;\n\n // Date picker specific properties - matching Calendar component\n selectedDate: Date | null = null;\n\n // Searchable dropdown properties\n filteredOptions: string[] = [];\n searchValue: string = '';\n private justSelected: boolean = false; // Flag to prevent panel reopening after selection\n\n // Multiple selection properties\n selectedValues: string[] = [];\n\n get datepickerRef(): MatDatepicker<any> | undefined {\n return this.matDatepicker || this.internalDatepicker;\n }\n\n @Output() change = new EventEmitter<string>();\n /** DEPRECATED: valueChange -> change */\n @Output() valueChange = new EventEmitter<string>();\n @Output() onColorChange = new EventEmitter<string>();\n @Output() monthSelected = new EventEmitter<{ date: Date; datepicker?: MatDatepicker<any> }>();\n @Output() yearSelected = new EventEmitter<{ date: Date; datepicker?: MatDatepicker<any> }>();\n\n private onChange = (value: string) => { };\n onTouched = () => { };\n\n get isDisabled(): boolean {\n return this.disabled || this.types === 'disabled';\n }\n\n // Check if date picker should be shown\n get isDatePicker(): boolean {\n const valueStr = typeof this.value === 'string' ? this.value : '';\n return this.type === 'date' || this.shouldShowDatePicker(valueStr);\n }\n\n // Check if color picker should be shown\n get isColorPicker(): boolean {\n return this.type === 'color';\n }\n\n // Check if dropdown should be searchable (multipleSelect and searchfilter are mutually exclusive)\n get isSearchableDropdown(): boolean {\n return !!(this.hasDropDown && this.searchfilter && !this.multipleSelect);\n }\n\n // Check if dropdown should support multiple selection\n get isMultipleDropdown(): boolean {\n return !!(this.hasDropDown && this.multipleSelect && !this.searchfilter);\n }\n\n ngOnInit(): void {\n // Initialize filtered options for searchable dropdown\n if (this.isSearchableDropdown && this.options && this.options.length > 0) {\n this.filteredOptions = [...this.options];\n this.searchValue = (typeof this.value === 'string' ? this.value : '') || '';\n }\n\n // Initialize multiple selection\n if (this.isMultipleDropdown) {\n if (Array.isArray(this.value)) {\n this.selectedValues = [...this.value];\n } else if (this.value && typeof this.value === 'string') {\n this.selectedValues = [this.value];\n } else {\n this.selectedValues = [];\n }\n }\n }\n\n ngAfterViewInit(): void {\n // Ensure filtered options are initialized after view init\n if (this.isSearchableDropdown && this.options && this.options.length > 0) {\n this.filteredOptions = [...this.options];\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Update filtered options when options array changes\n if (changes['options'] && this.isSearchableDropdown) {\n this.filteredOptions = this.options && this.options.length > 0 ? [...this.options] : [];\n // Re-filter with current search value if exists\n if (this.searchValue) {\n this.filterOptions(this.searchValue);\n }\n }\n\n // Initialize searchable dropdown when searchfilter or hasDropDown changes\n if ((changes['searchfilter'] || changes['hasDropDown']) && this.isSearchableDropdown) {\n this.filteredOptions = this.options && this.options.length > 0 ? [...this.options] : [];\n const valueStr = typeof this.value === 'string' ? this.value : '';\n this.searchValue = valueStr || '';\n }\n\n // Update search value when value changes for searchable dropdown\n if (changes['value'] && this.isSearchableDropdown) {\n const valueStr = typeof this.value === 'string' ? this.value : '';\n if (valueStr !== this.searchValue) {\n this.searchValue = valueStr || '';\n this.filterOptions(this.searchValue);\n }\n }\n\n // Update multiple selection when value changes\n if (changes['value'] && this.isMultipleDropdown) {\n if (Array.isArray(this.value)) {\n this.selectedValues = [...this.value];\n } else if (this.value && typeof this.value === 'string') {\n this.selectedValues = [this.value];\n } else {\n this.selectedValues = [];\n }\n }\n\n // Initialize multiple selection when multipleSelect or hasDropDown changes\n if ((changes['multipleSelect'] || changes['hasDropDown']) && this.isMultipleDropdown) {\n if (Array.isArray(this.value)) {\n this.selectedValues = [...this.value];\n } else if (this.value && typeof this.value === 'string') {\n this.selectedValues = [this.value];\n } else {\n this.selectedValues = [];\n }\n }\n }\n\n writeValue(value: string | Date | any | null | undefined): void {\n // Handle date picker values - can be string, Date, Moment object, or null\n if (this.isDatePicker) {\n if (!value) {\n this.selectedDate = null;\n this.value = '';\n return;\n }\n\n // Handle Moment objects (from Angular Material datepicker with moment adapter)\n if (value && typeof value === 'object' && value.format && typeof value.format === 'function') {\n // It's a Moment object\n this.selectedDate = value.toDate();\n this.value = value.format('YYYY-MM-DD');\n return;\n }\n\n // Handle Date objects\n if (value instanceof Date) {\n this.selectedDate = value;\n this.value = value.toISOString().split(\"T\")[0];\n return;\n }\n\n // Handle string values\n if (typeof value === 'string') {\n this.value = value;\n try {\n this.selectedDate = new Date(value);\n // Validate the date\n if (isNaN(this.selectedDate.getTime())) {\n this.selectedDate = null;\n }\n } catch (e) {\n this.selectedDate = null;\n }\n return;\n }\n\n // Fallback: try to convert to Date\n try {\n this.selectedDate = new Date(value);\n if (isNaN(this.selectedDate.getTime())) {\n this.selectedDate = null;\n this.value = '';\n } else {\n this.value = this.selectedDate.toISOString().split(\"T\")[0];\n }\n } catch (e) {\n this.selectedDate = null;\n this.value = '';\n }\n } else {\n // For non-date inputs\n if (this.multipleSelect && Array.isArray(value)) {\n // Handle multiple selection\n this.selectedValues = [...value];\n this.value = value as any;\n } else {\n // Handle single value\n this.value = (value || '') as string;\n // Update search value for searchable dropdown\n if (this.isSearchableDropdown) {\n const valueStr = typeof this.value === 'string' ? this.value : '';\n this.searchValue = valueStr || '';\n this.filterOptions(this.searchValue);\n }\n }\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(value: string): void {\n this.value = value;\n this.onChange(value);\n this.change.emit(value);\n // Deprecated: emit to valueChange for backward compatibility\n this.valueChange.emit(value);\n }\n\n onSelectionChange(value: string | string[]): void {\n if (this.multipleSelect) {\n // Handle multiple selection\n this.selectedValues = Array.isArray(value) ? value : [];\n this.value = this.selectedValues as any;\n this.onChange(this.selectedValues as any);\n this.change.emit(this.selectedValues.join(', ') as any);\n // Deprecated: emit to valueChange for backward compatibility\n this.valueChange.emit(this.selectedValues.join(', ') as any);\n } else {\n // Handle single selection\n this.value = value as string;\n this.onChange(value as string);\n this.change.emit(value as string);\n // Deprecated: emit to valueChange for backward compatibility\n this.valueChange.emit(value as string);\n }\n }\n\n // Handle searchable dropdown input change\n onSearchInputChange(event: Event): void {\n // Don't filter if we just selected a value (prevents reopening panel)\n if (this.justSelected) {\n return;\n }\n const inputValue = (event.target as HTMLInputElement).value;\n this.searchValue = inputValue;\n this.filterOptions(inputValue);\n }\n\n // Handle option selection from autocomplete\n onOptionSelected(event: any): void {\n const option = event?.option?.value || event?.value || event;\n if (!option || typeof option !== 'string') return;\n\n this.justSelected = true;\n this.value = option;\n this.searchValue = option;\n this.onChange(option);\n this.onTouched();\n this.change.emit(option);\n this.valueChange.emit(option);\n // Reset filtered options to show all options\n this.filteredOptions = [...this.options];\n\n // Close the autocomplete panel and blur the input\n setTimeout(() => {\n if (this.autocompleteTrigger) {\n this.autocompleteTrigger.closePanel();\n }\n // Blur the input to prevent it from reopening\n if (this.searchInput && this.searchInput.nativeElement) {\n this.searchInput.nativeElement.blur();\n }\n // Reset the flag after a short delay\n setTimeout(() => {\n this.justSelected = false;\n }, 300);\n }, 0);\n }\n\n // Filter options based on search input\n filterOptions(searchTerm: string): void {\n if (!this.options || this.options.length === 0) {\n this.filteredOptions = [];\n return;\n }\n\n if (!searchTerm || searchTerm.trim() === '') {\n this.filteredOptions = [...this.options];\n } else {\n const lowerSearchTerm = searchTerm.toLowerCase().trim();\n this.filteredOptions = this.options.filter(option =>\n option && typeof option === 'string' && option.toLowerCase().includes(lowerSearchTerm)\n );\n }\n }\n // Handle focus event for searchable dropdown\n onSearchFocus(): void {\n // Don't open panel if we just selected a value\n if (this.justSelected) {\n return;\n }\n\n // Show all options when focused\n if (this.options && this.options.length > 0) {\n this.filteredOptions = [...this.options];\n } else {\n this.filteredOptions = [];\n }\n\n // If there's a current value, set it as search value\n if (this.value && !this.searchValue) {\n const valueStr = typeof this.value === 'string' ? this.value : '';\n if (valueStr) {\n this.searchValue = valueStr;\n }\n }\n\n // Open autocomplete panel on focus\n setTimeout(() => {\n if (this.autocompleteTrigger && this.filteredOptions.length > 0 && !this.autocompleteTrigger.panelOpen && !this.justSelected) {\n this.autocompleteTrigger.openPanel();\n }\n }, 100);\n }\n\n // Display function for autocomplete\n displayFn = (value: string): string => {\n return value || '';\n }\n\n // Handle color picker change\n handleColorChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.onChange(target.value);\n this.change.emit(target.value);\n // Deprecated: emit to valueChange for backward compatibility\n this.valueChange.emit(target.value);\n this.onColorChange.emit(target.value);\n }\n\n // Handle month selection - matching Calendar component exactly\n onMonthSelected(event: any, dp: any) {\n // Handle both Date and Moment objects\n const dateValue = event && typeof event === 'object' && event.toDate\n ? event.toDate() // Moment object\n : event instanceof Date\n ? event\n : new Date(event);\n\n this.selectedDate = dateValue;\n this.onChange(dateValue.toISOString().split(\"T\")[0]);\n this.onTouched();\n // Emit the original event (could be Moment or Date) for parent component compatibility\n this.monthSelected.emit({ date: event, datepicker: dp || this.datepickerRef });\n\n // Close datepicker if dateType is 'Month/Year' (after month selection)\n const datepicker = dp || this.datepickerRef;\n if (this.dateType === 'Month/Year' && datepicker) {\n datepicker.close();\n }\n }\n\n // Handle year selection\n onYearSelected(event: any, dp: any) {\n // Handle both Date and Moment objects\n const dateValue = event && typeof event === 'object' && event.toDate\n ? event.toDate() // Moment object\n : event instanceof Date\n ? event\n : new Date(event);\n\n this.selectedDate = dateValue;// Default typography on host so inner content can inherit,\n this.onChange(dateValue.toISOString().split(\"T\")[0]);\n this.onTouched();\n // Emit the original event (could be Moment or Date) for parent component compatibility\n this.yearSelected.emit({ date: event, datepicker: dp || this.datepickerRef });\n\n // Close datepicker if dateType is 'Year' (after year selection)\n const datepicker = dp || this.datepickerRef;\n if (this.dateType === 'Year' && datepicker) {\n datepicker.close();\n }\n }\n\n // Handle date change from datepicker (works for both internal and external datepickers)\n onDateChange(event: any) {\n if (event && event.value) {\n const dateValue = event.value instanceof Date ? event.value : new Date(event.value);\n this.selectedDate = dateValue;\n const dateString = dateValue.toISOString().split(\"T\")[0];\n this.value = dateString;\n this.onChange(dateString);\n this.onTouched();\n this.change.emit(dateString);\n this.valueChange.emit(dateString);\n } else if (event && event.value === null) {\n this.selectedDate = null;\n this.value = '';\n this.onChange('');\n this.onTouched();\n this.change.emit('');\n this.valueChange.emit('');\n }\n }\n private shouldShowDatePicker(value: string): boolean {\n if (value && typeof value === 'object') {\n return false;\n }\n // Check if the selected value indicates a date picker should be shown\n const dateKeywords = ['date', 'birth', 'start', 'end', 'due', 'deadline', 'calendar'];\n return dateKeywords.some(keyword => value?.toLowerCase()?.includes(keyword));\n }\n\n getSizeClass(): string {\n return 'al-input-size-' + this.size;\n }\n\n getCategoryClass(): string {\n if (this.disabled) {\n return 'al-input-category-disabled';\n }\n if (this.types === 'plain') {\n return 'al-input-category-plain';\n }\n return 'al-input-category-' + this.types;\n }\n}\n","<!-- Standard floating label layout for all inputs including date picker -->\n<mat-form-field #formField appearance=\"outline\" class=\"al-input-field\" [ngClass]=\"[\n helperText ? 'has-helper-text' : '',\n getSizeClass(),\n getCategoryClass(),\n noBorder ? 'al-input-no-border' : '',\n leftIcon ? 'has-left-icon' : ''\n ]\" [attr.data-test-id]=\"dataTestId\" [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipDisabled]=\"!tooltip\">\n <mat-label *ngIf=\"labelText && !noBorder\">{{ labelText }}</mat-label>\n\n <mat-icon *ngIf=\"leftIcon?.trim() as leftIconText\" [fontSet]=\"outlined ? 'material-icons-outlined' : 'material-icons'\"\n matPrefix class=\"left-icon\">{{ leftIconText }}</mat-icon>\n\n <ng-container *ngIf=\"hasDropDown; else regularInput\">\n <!-- Searchable Dropdown with Autocomplete -->\n <ng-container *ngIf=\"isSearchableDropdown; else regularDropdown\">\n <input matInput #searchInput type=\"text\" [placeholder]=\"placeholder || labelText\" [disabled]=\"isDisabled\"\n [value]=\"searchValue\" (input)=\"onSearchInputChange($event)\" (focus)=\"onSearchFocus()\" (click)=\"onSearchFocus()\"\n (blur)=\"onTouched()\" [matAutocomplete]=\"auto\" #autocompleteTrigger=\"matAutocompleteTrigger\"\n autocomplete=\"off\" />\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onOptionSelected($event)\" [displayWith]=\"displayFn\"\n panelClass=\"al-searchable-dropdown-panel\" [autoActiveFirstOption]=\"false\" [panelWidth]=\"null\">\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">\n {{ option }}\n </mat-option>\n <mat-option *ngIf=\"filteredOptions.length === 0 && searchValue && searchValue.trim()\" disabled>\n <span style=\"display: flex; align-items: center; gap: 8px;\">\n <mat-icon style=\"font-size: 18px; width: 18px; height: 18px;\">search_off</mat-icon>\n <span>No results found</span>\n </span>\n </mat-option>\n </mat-autocomplete>\n <mat-icon matSuffix class=\"search-icon\" *ngIf=\"!rightIcon?.trim()\">search</mat-icon>\n <mat-icon *ngIf=\"rightIcon?.trim() && isSearchableDropdown\" matSuffix class=\"right-icon\">{{ rightIcon\n }}</mat-icon>\n </ng-container>\n\n <!-- Regular Dropdown (non-searchable) -->\n <ng-template #regularDropdown>\n <mat-select [disabled]=\"isDisabled\" [multiple]=\"multipleSelect\"\n [ngModel]=\"multipleSelect ? selectedValues : value\" (selectionChange)=\"onSelectionChange($event.value)\"\n [placeholder]=\"placeholder || labelText\">\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</mat-option>\n </mat-select>\n </ng-template>\n </ng-container>\n <ng-template #regularInput>\n <!-- Color Picker Input -->\n <ng-container *ngIf=\"isColorPicker; else datePickerInput\">\n <div class=\"color-picker-container\">\n <input matInput [placeholder]=\"placeholder || labelText\" [disabled]=\"isDisabled\" [(ngModel)]=\"value\"\n (input)=\"onInputChange($any($event.target).value)\" (blur)=\"onTouched()\" />\n <input type=\"color\" class=\"color-picker-input\" [value]=\"value || '#000000'\" [disabled]=\"isDisabled\"\n (input)=\"handleColorChange($event)\" (blur)=\"onTouched()\" />\n <mat-icon class=\"color-picker-icon\" matSuffix>palette</mat-icon>\n </div>\n </ng-container>\n\n <!-- Date Picker Input - with floating label animation -->\n <ng-template #datePickerInput>\n <ng-container *ngIf=\"isDatePicker; else standardInput\">\n <input matInput [matDatepicker]=\"datepickerRef\" [placeholder]=\"placeholder || labelText\" [disabled]=\"isDisabled\"\n [(ngModel)]=\"selectedDate\" (dateChange)=\"onDateChange($event)\" (blur)=\"onTouched()\" />\n <mat-datepicker-toggle matSuffix [for]=\"datepickerRef\"></mat-datepicker-toggle>\n <mat-datepicker #dp *ngIf=\"!matDatepicker\" startView=\"multi-year\" (monthSelected)=\"onMonthSelected($event, dp)\"\n (yearSelected)=\"onYearSelected($event, dp)\" panelClass=\"example-month-picker\">\n </mat-datepicker>\n </ng-container>\n\n <!-- Standard Input -->\n <ng-template #standardInput>\n <input matInput [placeholder]=\"placeholder || labelText\" [type]=\"type\" [disabled]=\"isDisabled\"\n [(ngModel)]=\"value\" (input)=\"onInputChange($any($event.target).value)\" (blur)=\"onTouched()\" />\n </ng-template>\n </ng-template>\n </ng-template>\n\n <!-- Right icon - only show when not date picker, not color picker, and not searchable dropdown -->\n <mat-icon *ngIf=\"!isDatePicker && !isColorPicker && !isSearchableDropdown && rightIcon?.trim() as rightIconText\"\n [fontSet]=\"outlined ? 'material-icons-outlined' : 'material-icons'\" matSuffix class=\"right-icon\">{{ rightIconText\n }}</mat-icon>\n\n <mat-error *ngIf=\"false && helperText\">{{ helperText }}</mat-error>\n <mat-hint *ngIf=\"helperText\">{{ helperText }}</mat-hint>\n</mat-form-field>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { InputComponent } from './input.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatSelectModule,\n MatOptionModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatButtonModule,\n InputComponent\n ],\n exports: [InputComponent],\n})\nexport class InputModule { }\n","/**\n * Color constants matching colors.scss\n * These values should be kept in sync with src/lib/styles/colors.scss\n */\n\nexport const COLORS = {\n // Blue scale\n blue: {\n '50': '#E5E9FC',\n '100': '#BBC7F6',\n '200': '#98ABF1',\n '300': '#768FED',\n '400': '#6581EA',\n '500': '#5473E8', // Base-Blue\n '600': '#1E46DF',\n '700': '#0F236F',\n '800': '#071238',\n '900': '#04091C',\n },\n // Green scale\n green: {\n '50': '#D7F3F5',\n '100': '#AFE6EB',\n '200': '#87DAE2',\n '300': '#5FCDD8',\n '400': '#4BC7D3',\n '500': '#37C1CE', // Base-Green\n '600': '#299DA8',\n '700': '#1F767E',\n '800': '#154E54',\n '900': '#0A272A',\n },\n // Grey scale\n grey: {\n '50': '#FAFBFB',\n '100': '#ECEDF1',\n '200': '#DEE0E6',\n '300': '#D1D3DB',\n '400': '#C3C5D1',\n '500': '#A2A6B8', // Base-Grey\n '600': '#717793',\n '700': '#4B4F62',\n '800': '#383B4A',\n '900': '#252831',\n },\n} as const;\n\n// Border color options for general-container component\nexport const BORDER_COLORS = [\n COLORS.green['200'], // #87DAE2\n COLORS.blue['200'], // #98ABF1\n COLORS.grey['500'], // #A2A6B8\n COLORS.grey['700'], // #4B4F62\n COLORS.blue['500'], // #5473E8\n COLORS.green['500'], // #37C1CE\n] as const;\n\nexport type BorderColorValue = typeof BORDER_COLORS[number];\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BORDER_COLORS, BorderColorValue } from './colors.constants';\n\nexport type BorderPosition = 'none' | 'top' | 'bottom' | 'both';\n\nexport type BorderColor = BorderColorValue;\n\n@Component({\n selector: 'al-general-container',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './general-container.component.html',\n styleUrls: ['./general-container.component.scss']\n})\nexport class GeneralContainerComponent {\n /** Background color of the container */\n @Input() backgroundColor: string = '#FFFFFF';\n\n /** Padding for the container */\n @Input() padding: string = '16px';\n\n /** Width of the container */\n @Input() width?: string;\n\n /** Height of the container */\n @Input() height?: string;\n\n /** Overflow-x property */\n @Input() overflowX?: string;\n\n /** Overflow-y property */\n @Input() overflowY?: string;\n\n /** Border position: 'none', 'top', 'bottom', or 'both' */\n @Input() borderPosition: BorderPosition = 'none';\n\n /** Border color - one of the predefined colors */\n @Input() borderColor: BorderColor = BORDER_COLORS[0];\n\n /** Border radius */\n @Input() borderRadius: string = '8px';\n\n /** Enable box shadow */\n @Input() boxShadow: boolean = true;\n\n /** Custom box shadow (overrides default if provided) */\n @Input() customBoxShadow?: string;\n\n /** Available border colors for dropdown */\n readonly borderColors: readonly BorderColor[] = BORDER_COLORS;\n\n get containerStyles(): { [key: string]: string } {\n const styles: { [key: string]: string } = {\n 'background-color': this.backgroundColor,\n 'padding': this.padding,\n 'border-radius': this.borderRadius,\n };\n\n // Width and height\n if (this.width) {\n styles['width'] = this.width;\n }\n if (this.height) {\n styles['height'] = this.height;\n }\n\n // Overflow\n if (this.overflowX) {\n styles['overflow-x'] = this.overflowX;\n }\n if (this.overflowY) {\n styles['overflow-y'] = this.overflowY;\n }\n\n // Box shadow\n if (this.boxShadow) {\n styles['box-shadow'] = this.customBoxShadow || '0 2px 4px 0 rgba(24, 43, 125, 0.15)';\n }\n\n // Auto-detect border position from border radius\n let effectiveBorderPosition = this.borderPosition;\n if (this.borderRadius === '0 0 16px 16px') {\n // Rounded bottom corners - apply bottom border\n effectiveBorderPosition = 'bottom';\n } else if (this.borderRadius === '16px 16px 0 0') {\n // Rounded top corners - apply top border\n effectiveBorderPosition = 'top';\n }\n\n // Border styles\n if (effectiveBorderPosition === 'top') {\n styles['border-top'] = `2px solid ${this.borderColor}`;\n styles['border-bottom'] = 'none';\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else if (effectiveBorderPosition === 'bottom') {\n styles['border-bottom'] = `2px solid ${this.borderColor}`;\n styles['border-top'] = 'none';\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else if (effectiveBorderPosition === 'both') {\n styles['border-top'] = `2px solid ${this.borderColor}`;\n styles['border-bottom'] = `2px solid ${this.borderColor}`;\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else {\n styles['border'] = 'none';\n }\n\n return styles;\n }\n}\n\n","<div class=\"general-container\" [ngStyle]=\"containerStyles\">\n <ng-content></ng-content>\n</div>\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n AfterViewInit,\n Component,\n HostBinding,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n SimpleChanges\n}\n\n from '@angular/core';\n\nimport {\n ElementRef\n}\n\n from '@angular/core';\n\n@Component({\n selector: 'al-responsive-columns',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './responsive-columns.component.html',\n styleUrls: ['./responsive-columns.component.scss'],\n}\n\n) export class ResponsiveColumnsComponent implements AfterViewInit,\n OnChanges,\n OnDestroy {\n /** Optional data-testid for test selectors */\n @Input() dataTestId?: string;\n\n /** Gap between the three columns */\n @Input() gap: string | number = '8px';\n\n /** Padding applied to the container (e.g. '12px 16px') */\n @Input() padding: string | number = 0;\n\n /** Optional explicit widths for side columns; default to compact 32px side rails */\n @Input() leftWidth: string = '32px';\n @Input() rightWidth: string = '32px';\n\n /** Breakpoint (px) below which columns stack vertically */\n @Input() stackAt: number = 480;\n\n @HostBinding('class.stack') isStacked = false;\n\n @HostBinding('attr.data-testid') get dataTestIdAttr() {\n return this.dataTestId || null;\n }\n\n @HostBinding('style.--gap') get cssGap() {\n return typeof this.gap === 'number' ? `$ {\n this.gap\n }\n\n px` : this.gap;\n }\n\n @HostBinding('style.--padding') get cssPadding() {\n return typeof this.padding === 'number' ? `$ {\n this.padding\n }\n\n px` : this.padding as string;\n }\n\n @HostBinding('style.--left-width') get cssLeftWidth() { return this.leftWidth || 'auto'; }\n\n @HostBinding('style.--right-width') get cssRightWidth() { return this.rightWidth || 'auto'; }\n\n @HostBinding('style.--stack-at') get cssStackAt() {\n return `$ {\n this.stackAt\n }\n\n px`;\n }\n\n // no dynamic template columns; side visibility controlled by widths only\n\n private resizeObserver?: ResizeObserver;\n\n constructor(private hostRef: ElementRef<HTMLElement>, private zone: NgZone) { }\n\n ngAfterViewInit(): void {\n this.zone.runOutsideAngular(() => {\n this.resizeObserver = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry?.contentRect?.width ?? this.hostRef.nativeElement.clientWidth;\n const shouldStack = width < this.stackAt;\n\n if (shouldStack !== this.isStacked) {\n this.zone.run(() => (this.isStacked = shouldStack));\n }\n }\n\n );\n this.resizeObserver.observe(this.hostRef.nativeElement);\n }\n\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['stackAt']) {\n const width = this.hostRef?.nativeElement?.clientWidth || 0;\n this.isStacked = width < this.stackAt;\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n}\n","<div class=\"container\">\n <div class=\"column left\"><ng-content select=\"[left],[slot=left],[data-slot=left]\"></ng-content></div>\n <div class=\"column center\"><ng-content></ng-content><ng-content\n select=\"[center],[slot=center],[data-slot=center]\"></ng-content></div>\n <div class=\"column right\"><ng-content select=\"[right],[slot=right],[data-slot=right]\"></ng-content></div>\n</div>","// Wrapper for Angular Material mat-checkbox\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n HostBinding\n}\n\n from '@angular/core';\n\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR\n}\n\n from '@angular/forms';\n\n@Component({\n\n selector: 'al-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n\n ]\n}\n\n) export class CheckboxComponent implements ControlValueAccessor {\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() labelPosition: 'before' | 'after' = 'after';\n @Input() name: string = '';\n @Input() required: boolean = false;\n @Input() value: any;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelText: string = '';\n @Input() helperText: string = '';\n @Input() showLabels: boolean = true;\n @Input() showHelperIcon: boolean = false;\n @Input() helperIconTooltip: string = '';\n @HostBinding('class.has-labels') get hasLabelsClass(): boolean {\n return !!this.labelText && this.labelText.trim().length > 0;\n }\n\n @Input() dataTestId: string = \"\";\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<boolean> = new EventEmitter();\n @Output() indeterminateChange: EventEmitter<boolean> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() helperIconClick: EventEmitter<void> = new EventEmitter();\n\n onChange = (_: any) => { }\n\n ;\n\n onTouched = () => { }\n\n ;\n\n writeValue(value: any): void {\n this.checked = ! !value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = event.checked;\n this.onChange(this.checked);\n this.change.emit(this.checked);\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n handleIndeterminateChange(value: boolean) {\n this.indeterminateChange.emit(value);\n }\n\n onHelperIconClick(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.helperIconClick.emit();\n }\n}\n","<mat-checkbox [checked]=\"checked\" [disabled]=\"disabled\" [labelPosition]=\"labelPosition\" [name]=\"name\"\n touchTargetSize=\"none\" [attr.data-testid]=\"dataTestId\" [required]=\"required\" [value]=\"value\" [color]=\"color\"\n [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!tooltip\"\n (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\"\n (indeterminateChange)=\"handleIndeterminateChange($event)\">\n <div class=\"checkbox-label-wrapper\" *ngIf=\"showLabels\">\n <div class=\"checkbox-label-main-row\" *ngIf=\"labelText\">\n <div class=\"checkbox-label-main\">\n {{ labelText }}\n </div>\n <button *ngIf=\"showHelperIcon\" type=\"button\" class=\"checkbox-helper-icon\"\n [matTooltip]=\"helperIconTooltip || helperText\" [matTooltipPosition]=\"tooltipPosition\" [disabled]=\"disabled\"\n (click)=\"onHelperIconClick($event)\">\n ?\n </button>\n </div>\n\n <div *ngIf=\"helperText\" class=\"checkbox-label-helper\">\n {{ helperText }}\n </div>\n </div>\n\n <ng-content></ng-content>\n</mat-checkbox>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, MatCheckboxModule, MatTooltipModule],\n exports: [CheckboxComponent]\n})\nexport class CheckboxModule { }\n","export const TABLE_ICONS = {\n 'table': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M4 7.25V5.125C4 4.56141 4.19901 4.02091 4.55324 3.6224C4.90748 3.22388 5.38792 3 5.88889 3H19.1111C19.6121 3 20.0925 3.22388 20.4468 3.6224C20.801 4.02091 21 4.56141 21 5.125V7.25M4 7.25V13.625M4 7.25H9.66667M21 7.25V13.625M21 7.25H9.66667M4 13.625V17.875C4 18.4386 4.19901 18.9791 4.55324 19.3776C4.90748 19.7761 5.38792 20 5.88889 20H9.66667M4 13.625H9.66667M9.66667 7.25V13.625M21 13.625V17.875C21 18.4386 20.801 18.9791 20.4468 19.3776C20.0925 19.7761 19.6121 20 19.1111 20H9.66667M21 13.625H9.66667M9.66667 20V13.625M15.3333 7.25V20\" stroke=\"#4B4F62\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>`,\n 'add-table': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M11.75 17.1524V17.1523L11.7508 15.2507L9.84915 15.2515H9.84909C9.7505 15.2515 9.65287 15.2321 9.56178 15.1944C9.47069 15.1567 9.38792 15.1014 9.31821 15.0316C9.24849 14.9619 9.19319 14.8792 9.15546 14.7881C9.11772 14.697 9.09831 14.5993 9.09831 14.5007C9.0983 14.4022 9.11772 14.3045 9.15546 14.2134C9.19319 14.1223 9.24849 14.0396 9.31821 13.9699C9.38792 13.9001 9.47069 13.8448 9.56178 13.8071C9.65287 13.7694 9.7505 13.75 9.84909 13.75L9.84915 13.75L11.7508 13.7508L11.75 11.8492L11.75 11.8491C11.75 11.65 11.8291 11.459 11.9699 11.3182C12.1107 11.1774 12.3016 11.0983 12.5007 11.0983C12.6999 11.0983 12.8908 11.1774 13.0316 11.3182C13.1724 11.459 13.2515 11.65 13.2515 11.8491L13.2515 11.8492L13.2507 13.7508L15.1522 13.75L15.1523 13.75L15.1524 13.875L11.75 17.1524ZM11.75 17.1524C11.75 17.251 11.7694 17.3486 11.8071 17.4397C11.8448 17.5308 11.9001 17.6136 11.9699 17.6833C12.0396 17.753 12.1223 17.8083 12.2134 17.846C12.3045 17.8838 12.4022 17.9032 12.5007 17.9032C12.5993 17.9032 12.697 17.8838 12.7881 17.846C12.8792 17.8083 12.9619 17.753 13.0316 17.6833C13.1014 17.6136 13.1567 17.5308 13.1944 17.4397C13.2321 17.3486 13.2515 17.251 13.2515 17.1524V17.1523M11.75 17.1524L13.2515 17.1523M13.2515 17.1523L13.2507 15.2507M13.2515 17.1523L13.2507 15.2507M13.2507 15.2507L15.1522 15.2515L13.2507 15.2507Z\"fill=\"#4B4F62\"stroke=\"#4B4F62\"stroke-width=\"0.25\"/> <path fill-rule=\"evenodd\"clip-rule=\"evenodd\"d=\"M5.21222 5.35953C5.39167 5.16021 5.61117 5.07129 5.8148 5.07129H19.1371C19.3407 5.07129 19.5602 5.16021 19.7397 5.35953C19.9222 5.56231 20.0403 5.85783 20.0403 6.18516V7.29904H15.3307H9.62117H4.91162V6.18516C4.91162 5.85783 5.02965 5.56231 5.21222 5.35953ZM16.3307 9.29904H20.0403V13.6407H17.9333C17.9772 13.9207 18.0001 14.2077 18.0001 14.5001C18.0001 14.8912 17.9592 15.2727 17.8817 15.6407H20.0403V18.8684C20.0403 19.1957 19.9222 19.4913 19.7397 19.694C19.5602 19.8934 19.3407 19.9823 19.1371 19.9823H16.3307V18.4468C15.7672 18.9939 15.0869 19.4213 14.3307 19.6881V19.9823H12.9463C12.7991 19.9941 12.6503 20.0001 12.5001 20.0001C12.3498 20.0001 12.201 19.9941 12.0538 19.9823H10.6212V19.6708C9.86272 19.3952 9.18209 18.9574 8.62117 18.3994V19.9823H5.8148C5.61117 19.9823 5.39167 19.8934 5.21222 19.694C5.02965 19.4913 4.91162 19.1957 4.91162 18.8684V15.6407H7.11847C7.04087 15.2727 7.00006 14.8912 7.00006 14.5001C7.00006 14.2077 7.02287 13.9207 7.06682 13.6407H4.91162V9.29904H8.62117V10.6009C9.18209 10.0429 9.86272 9.60507 10.6212 9.32941V9.29904H10.707C11.269 9.10532 11.8722 9.00012 12.5001 9.00012C13.1279 9.00012 13.7311 9.10532 14.2932 9.29904H14.3307V9.31214C15.0869 9.57895 15.7672 10.0064 16.3307 10.5535V9.29904ZM19.1371 21.9823H15.3307H9.62117H5.8148C5.00893 21.9823 4.26026 21.6258 3.72588 21.0322C3.19462 20.4422 2.91162 19.6623 2.91162 18.8684V14.6407V8.29904V6.18516C2.91162 5.39123 3.19462 4.6114 3.72588 4.02133C4.26026 3.42779 5.00893 3.07129 5.8148 3.07129H19.1371C19.943 3.07129 20.6916 3.42779 21.226 4.02133C21.7573 4.6114 22.0403 5.39122 22.0403 6.18516V8.29904V14.6407V18.8684C22.0403 19.6623 21.7573 20.4422 21.226 21.0322C20.6916 21.6258 19.943 21.9823 19.1371 21.9823Z\"fill=\"#4B4F62\"/> </svg>`,\n 'delete-table': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M13.8449 16.907L13.8449 16.907L12.5008 15.5617L11.1567 16.907L11.1567 16.907C11.087 16.9767 11.0042 17.032 10.9131 17.0698C10.822 17.1075 10.7244 17.1269 10.6258 17.1269C10.5272 17.1269 10.4296 17.1075 10.3385 17.0698C10.2474 17.032 10.1646 16.9767 10.0949 16.907C10.0252 16.8373 9.96988 16.7545 9.93215 16.6634C9.89442 16.5723 9.875 16.4747 9.875 16.3761C9.875 16.2775 9.89442 16.1799 9.93215 16.0888C9.96988 15.9977 10.0252 15.9149 10.0949 15.8452L10.0949 15.8452L11.4402 14.5011L10.0949 13.157L10.0949 13.157C9.9541 13.0162 9.875 12.8252 9.875 12.6261C9.875 12.427 9.9541 12.236 10.0949 12.0952C10.2357 11.9544 10.4267 11.8753 10.6258 11.8753C10.8249 11.8753 11.0159 11.9544 11.1567 12.0952L11.1567 12.0953L12.5008 13.4405L13.8448 12.0953L13.8449 12.0953L13.9333 12.1836L13.8449 16.907ZM13.8449 16.907C13.9146 16.9767 13.9974 17.032 14.0885 17.0698C14.1796 17.1075 14.2772 17.1269 14.3758 17.1269C14.4744 17.1269 14.572 17.1075 14.6631 17.0698C14.7542 17.032 14.837 16.9767 14.9067 16.907C14.9764 16.8373 15.0317 16.7545 15.0694 16.6634C15.1072 16.5723 15.1266 16.4747 15.1266 16.3761C15.1266 16.2775 15.1072 16.1799 15.0694 16.0888C15.0317 15.9977 14.9764 15.9149 14.9067 15.8452L14.9066 15.8452M13.8449 16.907L14.9066 15.8452M14.9066 15.8452L13.5614 14.5011M14.9066 15.8452L13.5614 14.5011M13.5614 14.5011L14.9066 13.1571L13.5614 14.5011Z\"fill=\"#4B4F62\"stroke=\"#4B4F62\"stroke-width=\"0.25\"/> <path fill-rule=\"evenodd\"clip-rule=\"evenodd\"d=\"M5.21222 5.35953C5.39167 5.16021 5.61117 5.07129 5.8148 5.07129H19.1371C19.3407 5.07129 19.5602 5.16021 19.7397 5.35953C19.9222 5.56231 20.0403 5.85783 20.0403 6.18516V7.29904H15.3307H9.62117H4.91162V6.18516C4.91162 5.85783 5.02965 5.56231 5.21222 5.35953ZM16.3307 9.29904H20.0403V13.6407H17.9333C17.9772 13.9207 18.0001 14.2077 18.0001 14.5001C18.0001 14.8912 17.9592 15.2727 17.8817 15.6407H20.0403V18.8684C20.0403 19.1957 19.9222 19.4913 19.7397 19.694C19.5602 19.8934 19.3407 19.9823 19.1371 19.9823H16.3307V18.4468C15.7672 18.9939 15.0869 19.4213 14.3307 19.6881V19.9823H12.9463C12.7991 19.9941 12.6503 20.0001 12.5001 20.0001C12.3498 20.0001 12.201 19.9941 12.0538 19.9823H10.6212V19.6708C9.86272 19.3952 9.18209 18.9574 8.62117 18.3994V19.9823H5.8148C5.61117 19.9823 5.39167 19.8934 5.21222 19.694C5.02965 19.4913 4.91162 19.1957 4.91162 18.8684V15.6407H7.11847C7.04087 15.2727 7.00006 14.8912 7.00006 14.5001C7.00006 14.2077 7.02287 13.9207 7.06682 13.6407H4.91162V9.29904H8.62117V10.6009C9.18209 10.0429 9.86272 9.60507 10.6212 9.32941V9.29904H10.707C11.269 9.10532 11.8722 9.00012 12.5001 9.00012C13.1279 9.00012 13.7311 9.10532 14.2932 9.29904H14.3307V9.31214C15.0869 9.57895 15.7672 10.0064 16.3307 10.5535V9.29904ZM19.1371 21.9823H15.3307H9.62117H5.8148C5.00893 21.9823 4.26026 21.6258 3.72588 21.0322C3.19462 20.4422 2.91162 19.6623 2.91162 18.8684V14.6407V8.29904V6.18516C2.91162 5.39123 3.19462 4.6114 3.72588 4.02133C4.26026 3.42779 5.00893 3.07129 5.8148 3.07129H19.1371C19.943 3.07129 20.6916 3.42779 21.226 4.02133C21.7573 4.6114 22.0403 5.39122 22.0403 6.18516V8.29904V14.6407V18.8684C22.0403 19.6623 21.7573 20.4422 21.226 21.0322C20.6916 21.6258 19.943 21.9823 19.1371 21.9823Z\"fill=\"#4B4F62\"/> </svg>`,\n 'column-left': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M13.8571 3C13.3772 3 12.917 3.20018 12.5776 3.5565C12.2383 3.91282 12.0476 4.39609 12.0476 4.9V20.1C12.0476 20.6039 12.2383 21.0872 12.5776 21.4435C12.917 21.7998 13.3772 22 13.8571 22H22V3H13.8571ZM20.1905 10.6V14.4H13.8571V10.6H20.1905ZM20.1905 16.3V20.1H13.8571V16.3H20.1905ZM20.1905 4.9V8.7H13.8571V4.9H20.1905ZM10.2381 12.5C10.2381 11.9753 9.81277 11.55 9.28809 11.55H7.52381V9.60476C7.52381 9.10508 7.11873 8.7 6.61905 8.7C6.11936 8.7 5.71429 9.10508 5.71429 9.60476V11.55H3.95C3.42533 11.55 3 11.9753 3 12.5C3 13.0247 3.42533 13.45 3.95 13.45H5.71429V15.3952C5.71429 15.8949 6.11936 16.3 6.61905 16.3C7.11873 16.3 7.52381 15.8949 7.52381 15.3952V13.45H9.2881C9.81277 13.45 10.2381 13.0247 10.2381 12.5Z\"fill=\"#4B4F62\"/> </svg>`,\n 'column-right': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M11.1429 3C11.6228 3 12.083 3.20018 12.4224 3.5565C12.7617 3.91282 12.9524 4.39609 12.9524 4.9V20.1C12.9524 20.6039 12.7617 21.0872 12.4224 21.4435C12.083 21.7998 11.6228 22 11.1429 22H3V3H11.1429ZM4.80952 10.6V14.4H11.1429V10.6H4.80952ZM4.80952 16.3V20.1H11.1429V16.3H4.80952ZM4.80952 4.9V8.7H11.1429V4.9H4.80952ZM14.7619 12.5C14.7619 11.9753 15.1872 11.55 15.7119 11.55H17.4762V9.60476C17.4762 9.10508 17.8813 8.7 18.381 8.7C18.8806 8.7 19.2857 9.10508 19.2857 9.60476V11.55H21.05C21.5747 11.55 22 11.9753 22 12.5C22 13.0247 21.5747 13.45 21.05 13.45H19.2857V15.3952C19.2857 15.8949 18.8806 16.3 18.381 16.3C17.8813 16.3 17.4762 15.8949 17.4762 15.3952V13.45H15.7119C15.1872 13.45 14.7619 13.0247 14.7619 12.5Z\"fill=\"#4B4F62\"/> </svg>`,\n 'row-top': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M22 15C22 14.4696 21.7998 13.9609 21.4435 13.5858C21.0872 13.2107 20.6039 13 20.1 13H4.9C4.39609 13 3.91282 13.2107 3.5565 13.5858C3.20018 13.9609 3 14.4696 3 15V22H4.9V20H8.7V22H10.6V20H14.4V22H16.3V20H20.1V22H22V15ZM4.9 15H8.7V18H4.9V15ZM10.6 15H14.4V18H10.6V15ZM20.1 15V18H16.3V15H20.1ZM11.55 10.05C11.55 10.5747 11.9753 11 12.5 11C13.0247 11 13.45 10.5747 13.45 10.05V8H15.3C15.8523 8 16.3 7.55228 16.3 7C16.3 6.44772 15.8523 6 15.3 6H13.45V3.95C13.45 3.42533 13.0247 3 12.5 3C11.9753 3 11.55 3.42533 11.55 3.95V6H9.7C9.14772 6 8.7 6.44772 8.7 7C8.7 7.55228 9.14772 8 9.7 8H11.55V10.05Z\"fill=\"#4B4F62\"/> </svg>`,\n 'row-bottom': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <path d=\"M22 10C22 10.5304 21.7998 11.0391 21.4435 11.4142C21.0872 11.7893 20.6039 12 20.1 12H4.9C4.39609 12 3.91282 11.7893 3.5565 11.4142C3.20018 11.0391 3 10.5304 3 10V3H4.9V5H8.7V3H10.6V5H14.4V3H16.3V5H20.1V3H22V10ZM4.9 10H8.7V7H4.9V10ZM10.6 10H14.4V7H10.6V10ZM20.1 10V7H16.3V10H20.1ZM11.55 15.0059C11.55 14.4503 12.0003 14 12.5559 14C13.0497 14 13.45 14.4003 13.45 14.8941V17H15.3C15.8523 17 16.3 17.4477 16.3 18C16.3 18.5523 15.8523 19 15.3 19H13.45V21.05C13.45 21.5747 13.0247 22 12.5 22C11.9753 22 11.55 21.5747 11.55 21.05V19H9.7C9.14772 19 8.7 18.5523 8.7 18C8.7 17.4477 9.14772 17 9.7 17H11.55V15.0059Z\"fill=\"#4B4F62\"/> </svg>`,\n 'delete-column': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <mask id=\"path-2-outside-1_5803_43959\"maskUnits=\"userSpaceOnUse\"x=\"2\"y=\"2\"width=\"21\"height=\"21\"fill=\"black\"> <rect fill=\"white\"x=\"2\"y=\"2\"width=\"21\"height=\"21\"/> <path d=\"M13.0938 3.59375C13.0938 3.43628 13.0312 3.28526 12.9198 3.17391C12.8085 3.06256 12.6575 3 12.5 3C12.3425 3 12.1915 3.06256 12.0802 3.17391C11.9688 3.28526 11.9062 3.43628 11.9062 3.59375V9.38281C12.0571 9.50987 12.196 9.65356 12.3337 9.79606L12.5 9.96588L12.6663 9.79606C12.804 9.65356 12.9429 9.51106 13.0938 9.38281V3.59375ZM11.9062 21.4062V15.6018C12.0571 15.4747 12.196 15.331 12.3337 15.1885L12.5 15.0187L12.6663 15.1885C12.804 15.331 12.9429 15.4735 13.0938 15.6018V21.4062C13.0938 21.5637 13.0312 21.7147 12.9198 21.8261C12.8085 21.9374 12.6575 22 12.5 22C12.3425 22 12.1915 21.9374 12.0802 21.8261C11.9688 21.7147 11.9062 21.5637 11.9062 21.4062ZM3 4.78125C3 4.62378 3.06256 4.47276 3.17391 4.36141C3.28526 4.25006 3.43628 4.1875 3.59375 4.1875H5.375C6.00489 4.1875 6.60898 4.43772 7.05438 4.88312C7.49978 5.32852 7.75 5.93261 7.75 6.5625V18.4375C7.75 19.0674 7.49978 19.6715 7.05438 20.1169C6.60898 20.5623 6.00489 20.8125 5.375 20.8125H3.59375C3.43628 20.8125 3.28526 20.7499 3.17391 20.6386C3.06256 20.5272 3 20.3762 3 20.2188C3 20.0613 3.06256 19.9103 3.17391 19.7989C3.28526 19.6876 3.43628 19.625 3.59375 19.625H5.375C5.68994 19.625 5.99199 19.4999 6.21469 19.2772C6.43739 19.0545 6.5625 18.7524 6.5625 18.4375V16.0625H3.59375C3.43628 16.0625 3.28526 15.9999 3.17391 15.8886C3.06256 15.7772 3 15.6262 3 15.4688C3 15.3113 3.06256 15.1603 3.17391 15.0489C3.28526 14.9376 3.43628 14.875 3.59375 14.875H6.5625V10.125H3.59375C3.43628 10.125 3.28526 10.0624 3.17391 9.95109C3.06256 9.83975 3 9.68872 3 9.53125C3 9.37378 3.06256 9.22275 3.17391 9.11141C3.28526 9.00006 3.43628 8.9375 3.59375 8.9375H6.5625V6.5625C6.5625 6.24756 6.43739 5.94551 6.21469 5.72281C5.99199 5.50011 5.68994 5.375 5.375 5.375H3.59375C3.43628 5.375 3.28526 5.31244 3.17391 5.20109C3.06256 5.08974 3 4.93872 3 4.78125ZM22 4.78125C22 4.62378 21.9374 4.47276 21.8261 4.36141C21.7147 4.25006 21.5637 4.1875 21.4062 4.1875H19.625C18.9951 4.1875 18.391 4.43772 17.9456 4.88312C17.5002 5.32852 17.25 5.93261 17.25 6.5625V18.4375C17.25 19.0674 17.5002 19.6715 17.9456 20.1169C18.391 20.5623 18.9951 20.8125 19.625 20.8125H21.4062C21.5637 20.8125 21.7147 20.7499 21.8261 20.6386C21.9374 20.5272 22 20.3762 22 20.2188C22 20.0613 21.9374 19.9103 21.8261 19.7989C21.7147 19.6876 21.5637 19.625 21.4062 19.625H19.625C19.3101 19.625 19.008 19.4999 18.7853 19.2772C18.5626 19.0545 18.4375 18.7524 18.4375 18.4375V16.0625H21.4062C21.5637 16.0625 21.7147 15.9999 21.8261 15.8886C21.9374 15.7772 22 15.6262 22 15.4688C22 15.3113 21.9374 15.1603 21.8261 15.0489C21.7147 14.9376 21.5637 14.875 21.4062 14.875H18.4375V10.125H21.4062C21.5637 10.125 21.7147 10.0624 21.8261 9.95109C21.9374 9.83975 22 9.68872 22 9.53125C22 9.37378 21.9374 9.22275 21.8261 9.11141C21.7147 9.00006 21.5637 8.9375 21.4062 8.9375H18.4375V6.5625C18.4375 6.24756 18.5626 5.94551 18.7853 5.72281C19.008 5.50011 19.3101 5.375 19.625 5.375H21.4062C21.5637 5.375 21.7147 5.31244 21.8261 5.20109C21.9374 5.08974 22 4.93872 22 4.78125ZM14.7016 10.2984C14.6465 10.2431 14.5809 10.1992 14.5088 10.1693C14.4367 10.1393 14.3593 10.1239 14.2812 10.1239C14.2032 10.1239 14.1258 10.1393 14.0537 10.1693C13.9816 10.1992 13.916 10.2431 13.8609 10.2984L12.5 11.6604L11.1391 10.2984C11.0276 10.1869 10.8764 10.1242 10.7188 10.1242C10.5611 10.1242 10.4099 10.1869 10.2984 10.2984C10.1869 10.4099 10.1242 10.5611 10.1242 10.7188C10.1242 10.8764 10.1869 11.0276 10.2984 11.1391L11.6604 12.5L10.2984 13.8609C10.2432 13.9161 10.1994 13.9816 10.1695 14.0537C10.1396 14.1259 10.1242 14.2032 10.1242 14.2812C10.1242 14.3593 10.1396 14.4366 10.1695 14.5088C10.1994 14.5809 10.2432 14.6464 10.2984 14.7016C10.3536 14.7568 10.4191 14.8006 10.4912 14.8305C10.5634 14.8604 10.6407 14.8757 10.7188 14.8757C10.7968 14.8757 10.8741 14.8604 10.9463 14.8305C11.0184 14.8006 11.0839 14.7568 11.1391 14.7016L12.5 13.3396L13.8609 14.7016C13.9161 14.7568 13.9816 14.8006 14.0537 14.8305C14.1259 14.8604 14.2032 14.8757 14.2812 14.8757C14.3593 14.8757 14.4366 14.8604 14.5088 14.8305C14.5809 14.8006 14.6464 14.7568 14.7016 14.7016C14.7568 14.6464 14.8006 14.5809 14.8305 14.5088C14.8604 14.4366 14.8757 14.3593 14.8757 14.2812C14.8757 14.2032 14.8604 14.1259 14.8305 14.0537C14.8006 13.9816 14.7568 13.9161 14.7016 13.8609L13.3396 12.5L14.7016 11.1391C14.7569 11.084 14.8008 11.0184 14.8307 10.9463C14.8607 10.8742 14.8761 10.7968 14.8761 10.7188C14.8761 10.6407 14.8607 10.5633 14.8307 10.4912C14.8008 10.4191 14.7569 10.3535 14.7016 10.2984Z\"/> </mask> <path d=\"M13.0938 3.59375C13.0938 3.43628 13.0312 3.28526 12.9198 3.17391C12.8085 3.06256 12.6575 3 12.5 3C12.3425 3 12.1915 3.06256 12.0802 3.17391C11.9688 3.28526 11.9062 3.43628 11.9062 3.59375V9.38281C12.0571 9.50987 12.196 9.65356 12.3337 9.79606L12.5 9.96588L12.6663 9.79606C12.804 9.65356 12.9429 9.51106 13.0938 9.38281V3.59375ZM11.9062 21.4062V15.6018C12.0571 15.4747 12.196 15.331 12.3337 15.1885L12.5 15.0187L12.6663 15.1885C12.804 15.331 12.9429 15.4735 13.0938 15.6018V21.4062C13.0938 21.5637 13.0312 21.7147 12.9198 21.8261C12.8085 21.9374 12.6575 22 12.5 22C12.3425 22 12.1915 21.9374 12.0802 21.8261C11.9688 21.7147 11.9062 21.5637 11.9062 21.4062ZM3 4.78125C3 4.62378 3.06256 4.47276 3.17391 4.36141C3.28526 4.25006 3.43628 4.1875 3.59375 4.1875H5.375C6.00489 4.1875 6.60898 4.43772 7.05438 4.88312C7.49978 5.32852 7.75 5.93261 7.75 6.5625V18.4375C7.75 19.0674 7.49978 19.6715 7.05438 20.1169C6.60898 20.5623 6.00489 20.8125 5.375 20.8125H3.59375C3.43628 20.8125 3.28526 20.7499 3.17391 20.6386C3.06256 20.5272 3 20.3762 3 20.2188C3 20.0613 3.06256 19.9103 3.17391 19.7989C3.28526 19.6876 3.43628 19.625 3.59375 19.625H5.375C5.68994 19.625 5.99199 19.4999 6.21469 19.2772C6.43739 19.0545 6.5625 18.7524 6.5625 18.4375V16.0625H3.59375C3.43628 16.0625 3.28526 15.9999 3.17391 15.8886C3.06256 15.7772 3 15.6262 3 15.4688C3 15.3113 3.06256 15.1603 3.17391 15.0489C3.28526 14.9376 3.43628 14.875 3.59375 14.875H6.5625V10.125H3.59375C3.43628 10.125 3.28526 10.0624 3.17391 9.95109C3.06256 9.83975 3 9.68872 3 9.53125C3 9.37378 3.06256 9.22275 3.17391 9.11141C3.28526 9.00006 3.43628 8.9375 3.59375 8.9375H6.5625V6.5625C6.5625 6.24756 6.43739 5.94551 6.21469 5.72281C5.99199 5.50011 5.68994 5.375 5.375 5.375H3.59375C3.43628 5.375 3.28526 5.31244 3.17391 5.20109C3.06256 5.08974 3 4.93872 3 4.78125ZM22 4.78125C22 4.62378 21.9374 4.47276 21.8261 4.36141C21.7147 4.25006 21.5637 4.1875 21.4062 4.1875H19.625C18.9951 4.1875 18.391 4.43772 17.9456 4.88312C17.5002 5.32852 17.25 5.93261 17.25 6.5625V18.4375C17.25 19.0674 17.5002 19.6715 17.9456 20.1169C18.391 20.5623 18.9951 20.8125 19.625 20.8125H21.4062C21.5637 20.8125 21.7147 20.7499 21.8261 20.6386C21.9374 20.5272 22 20.3762 22 20.2188C22 20.0613 21.9374 19.9103 21.8261 19.7989C21.7147 19.6876 21.5637 19.625 21.4062 19.625H19.625C19.3101 19.625 19.008 19.4999 18.7853 19.2772C18.5626 19.0545 18.4375 18.7524 18.4375 18.4375V16.0625H21.4062C21.5637 16.0625 21.7147 15.9999 21.8261 15.8886C21.9374 15.7772 22 15.6262 22 15.4688C22 15.3113 21.9374 15.1603 21.8261 15.0489C21.7147 14.9376 21.5637 14.875 21.4062 14.875H18.4375V10.125H21.4062C21.5637 10.125 21.7147 10.0624 21.8261 9.95109C21.9374 9.83975 22 9.68872 22 9.53125C22 9.37378 21.9374 9.22275 21.8261 9.11141C21.7147 9.00006 21.5637 8.9375 21.4062 8.9375H18.4375V6.5625C18.4375 6.24756 18.5626 5.94551 18.7853 5.72281C19.008 5.50011 19.3101 5.375 19.625 5.375H21.4062C21.5637 5.375 21.7147 5.31244 21.8261 5.20109C21.9374 5.08974 22 4.93872 22 4.78125ZM14.7016 10.2984C14.6465 10.2431 14.5809 10.1992 14.5088 10.1693C14.4367 10.1393 14.3593 10.1239 14.2812 10.1239C14.2032 10.1239 14.1258 10.1393 14.0537 10.1693C13.9816 10.1992 13.916 10.2431 13.8609 10.2984L12.5 11.6604L11.1391 10.2984C11.0276 10.1869 10.8764 10.1242 10.7188 10.1242C10.5611 10.1242 10.4099 10.1869 10.2984 10.2984C10.1869 10.4099 10.1242 10.5611 10.1242 10.7188C10.1242 10.8764 10.1869 11.0276 10.2984 11.1391L11.6604 12.5L10.2984 13.8609C10.2432 13.9161 10.1994 13.9816 10.1695 14.0537C10.1396 14.1259 10.1242 14.2032 10.1242 14.2812C10.1242 14.3593 10.1396 14.4366 10.1695 14.5088C10.1994 14.5809 10.2432 14.6464 10.2984 14.7016C10.3536 14.7568 10.4191 14.8006 10.4912 14.8305C10.5634 14.8604 10.6407 14.8757 10.7188 14.8757C10.7968 14.8757 10.8741 14.8604 10.9463 14.8305C11.0184 14.8006 11.0839 14.7568 11.1391 14.7016L12.5 13.3396L13.8609 14.7016C13.9161 14.7568 13.9816 14.8006 14.0537 14.8305C14.1259 14.8604 14.2032 14.8757 14.2812 14.8757C14.3593 14.8757 14.4366 14.8604 14.5088 14.8305C14.5809 14.8006 14.6464 14.7568 14.7016 14.7016C14.7568 14.6464 14.8006 14.5809 14.8305 14.5088C14.8604 14.4366 14.8757 14.3593 14.8757 14.2812C14.8757 14.2032 14.8604 14.1259 14.8305 14.0537C14.8006 13.9816 14.7568 13.9161 14.7016 13.8609L13.3396 12.5L14.7016 11.1391C14.7569 11.084 14.8008 11.0184 14.8307 10.9463C14.8607 10.8742 14.8761 10.7968 14.8761 10.7188C14.8761 10.6407 14.8607 10.5633 14.8307 10.4912C14.8008 10.4191 14.7569 10.3535 14.7016 10.2984Z\"fill=\"#4B4F62\"/> <path d=\"M13.0938 3.59375C13.0938 3.43628 13.0312 3.28526 12.9198 3.17391C12.8085 3.06256 12.6575 3 12.5 3C12.3425 3 12.1915 3.06256 12.0802 3.17391C11.9688 3.28526 11.9062 3.43628 11.9062 3.59375V9.38281C12.0571 9.50987 12.196 9.65356 12.3337 9.79606L12.5 9.96588L12.6663 9.79606C12.804 9.65356 12.9429 9.51106 13.0938 9.38281V3.59375ZM11.9062 21.4062V15.6018C12.0571 15.4747 12.196 15.331 12.3337 15.1885L12.5 15.0187L12.6663 15.1885C12.804 15.331 12.9429 15.4735 13.0938 15.6018V21.4062C13.0938 21.5637 13.0312 21.7147 12.9198 21.8261C12.8085 21.9374 12.6575 22 12.5 22C12.3425 22 12.1915 21.9374 12.0802 21.8261C11.9688 21.7147 11.9062 21.5637 11.9062 21.4062ZM3 4.78125C3 4.62378 3.06256 4.47276 3.17391 4.36141C3.28526 4.25006 3.43628 4.1875 3.59375 4.1875H5.375C6.00489 4.1875 6.60898 4.43772 7.05438 4.88312C7.49978 5.32852 7.75 5.93261 7.75 6.5625V18.4375C7.75 19.0674 7.49978 19.6715 7.05438 20.1169C6.60898 20.5623 6.00489 20.8125 5.375 20.8125H3.59375C3.43628 20.8125 3.28526 20.7499 3.17391 20.6386C3.06256 20.5272 3 20.3762 3 20.2188C3 20.0613 3.06256 19.9103 3.17391 19.7989C3.28526 19.6876 3.43628 19.625 3.59375 19.625H5.375C5.68994 19.625 5.99199 19.4999 6.21469 19.2772C6.43739 19.0545 6.5625 18.7524 6.5625 18.4375V16.0625H3.59375C3.43628 16.0625 3.28526 15.9999 3.17391 15.8886C3.06256 15.7772 3 15.6262 3 15.4688C3 15.3113 3.06256 15.1603 3.17391 15.0489C3.28526 14.9376 3.43628 14.875 3.59375 14.875H6.5625V10.125H3.59375C3.43628 10.125 3.28526 10.0624 3.17391 9.95109C3.06256 9.83975 3 9.68872 3 9.53125C3 9.37378 3.06256 9.22275 3.17391 9.11141C3.28526 9.00006 3.43628 8.9375 3.59375 8.9375H6.5625V6.5625C6.5625 6.24756 6.43739 5.94551 6.21469 5.72281C5.99199 5.50011 5.68994 5.375 5.375 5.375H3.59375C3.43628 5.375 3.28526 5.31244 3.17391 5.20109C3.06256 5.08974 3 4.93872 3 4.78125ZM22 4.78125C22 4.62378 21.9374 4.47276 21.8261 4.36141C21.7147 4.25006 21.5637 4.1875 21.4062 4.1875H19.625C18.9951 4.1875 18.391 4.43772 17.9456 4.88312C17.5002 5.32852 17.25 5.93261 17.25 6.5625V18.4375C17.25 19.0674 17.5002 19.6715 17.9456 20.1169C18.391 20.5623 18.9951 20.8125 19.625 20.8125H21.4062C21.5637 20.8125 21.7147 20.7499 21.8261 20.6386C21.9374 20.5272 22 20.3762 22 20.2188C22 20.0613 21.9374 19.9103 21.8261 19.7989C21.7147 19.6876 21.5637 19.625 21.4062 19.625H19.625C19.3101 19.625 19.008 19.4999 18.7853 19.2772C18.5626 19.0545 18.4375 18.7524 18.4375 18.4375V16.0625H21.4062C21.5637 16.0625 21.7147 15.9999 21.8261 15.8886C21.9374 15.7772 22 15.6262 22 15.4688C22 15.3113 21.9374 15.1603 21.8261 15.0489C21.7147 14.9376 21.5637 14.875 21.4062 14.875H18.4375V10.125H21.4062C21.5637 10.125 21.7147 10.0624 21.8261 9.95109C21.9374 9.83975 22 9.68872 22 9.53125C22 9.37378 21.9374 9.22275 21.8261 9.11141C21.7147 9.00006 21.5637 8.9375 21.4062 8.9375H18.4375V6.5625C18.4375 6.24756 18.5626 5.94551 18.7853 5.72281C19.008 5.50011 19.3101 5.375 19.625 5.375H21.4062C21.5637 5.375 21.7147 5.31244 21.8261 5.20109C21.9374 5.08974 22 4.93872 22 4.78125ZM14.7016 10.2984C14.6465 10.2431 14.5809 10.1992 14.5088 10.1693C14.4367 10.1393 14.3593 10.1239 14.2812 10.1239C14.2032 10.1239 14.1258 10.1393 14.0537 10.1693C13.9816 10.1992 13.916 10.2431 13.8609 10.2984L12.5 11.6604L11.1391 10.2984C11.0276 10.1869 10.8764 10.1242 10.7188 10.1242C10.5611 10.1242 10.4099 10.1869 10.2984 10.2984C10.1869 10.4099 10.1242 10.5611 10.1242 10.7188C10.1242 10.8764 10.1869 11.0276 10.2984 11.1391L11.6604 12.5L10.2984 13.8609C10.2432 13.9161 10.1994 13.9816 10.1695 14.0537C10.1396 14.1259 10.1242 14.2032 10.1242 14.2812C10.1242 14.3593 10.1396 14.4366 10.1695 14.5088C10.1994 14.5809 10.2432 14.6464 10.2984 14.7016C10.3536 14.7568 10.4191 14.8006 10.4912 14.8305C10.5634 14.8604 10.6407 14.8757 10.7188 14.8757C10.7968 14.8757 10.8741 14.8604 10.9463 14.8305C11.0184 14.8006 11.0839 14.7568 11.1391 14.7016L12.5 13.3396L13.8609 14.7016C13.9161 14.7568 13.9816 14.8006 14.0537 14.8305C14.1259 14.8604 14.2032 14.8757 14.2812 14.8757C14.3593 14.8757 14.4366 14.8604 14.5088 14.8305C14.5809 14.8006 14.6464 14.7568 14.7016 14.7016C14.7568 14.6464 14.8006 14.5809 14.8305 14.5088C14.8604 14.4366 14.8757 14.3593 14.8757 14.2812C14.8757 14.2032 14.8604 14.1259 14.8305 14.0537C14.8006 13.9816 14.7568 13.9161 14.7016 13.8609L13.3396 12.5L14.7016 11.1391C14.7569 11.084 14.8008 11.0184 14.8307 10.9463C14.8607 10.8742 14.8761 10.7968 14.8761 10.7188C14.8761 10.6407 14.8607 10.5633 14.8307 10.4912C14.8008 10.4191 14.7569 10.3535 14.7016 10.2984Z\"stroke=\"#4B4F62\"stroke-width=\"0.5\"mask=\"url(#path-2-outside-1_5803_43959)\"/> </svg>`,\n 'delete-row': `<svg width=\"25\"height=\"25\"viewBox=\"0 0 25 25\"fill=\"none\"xmlns=\"http://www.w3.org/2000/svg\"> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"fill=\"white\"/> <rect x=\"0.25\"y=\"0.25\"width=\"24.5\"height=\"24.5\"rx=\"1.75\"stroke=\"#4B4F62\"stroke-width=\"0.5\"/> <mask id=\"path-2-outside-1_5803_43961\"maskUnits=\"userSpaceOnUse\"x=\"2\"y=\"2\"width=\"21\"height=\"21\"fill=\"black\"> <rect fill=\"white\"x=\"2\"y=\"2\"width=\"21\"height=\"21\"/> <path d=\"M4.6625 3C4.47353 3 4.29231 3.07507 4.15869 3.20869C4.02507 3.34231 3.95 3.52353 3.95 3.7125V4.6625C3.95 5.48136 4.27529 6.26667 4.85431 6.84569C5.43333 7.42471 6.21864 7.75 7.0375 7.75H17.9625C18.368 7.75 18.7694 7.67014 19.144 7.51498C19.5186 7.35982 19.859 7.13239 20.1457 6.84569C20.4324 6.55899 20.6598 6.21863 20.815 5.84403C20.9701 5.46944 21.05 5.06796 21.05 4.6625V3.7125C21.05 3.52353 20.9749 3.34231 20.8413 3.20869C20.7077 3.07507 20.5265 3 20.3375 3C20.1485 3 19.9673 3.07507 19.8337 3.20869C19.7001 3.34231 19.625 3.52353 19.625 3.7125V4.6625C19.625 5.10342 19.4498 5.52629 19.1381 5.83806C18.8263 6.14984 18.4034 6.325 17.9625 6.325H15.825V3.7125C15.825 3.52353 15.7499 3.34231 15.6163 3.20869C15.4827 3.07507 15.3015 3 15.1125 3C14.9235 3 14.7423 3.07507 14.6087 3.20869C14.4751 3.34231 14.4 3.52353 14.4 3.7125V6.325H10.6V3.7125C10.6 3.52353 10.5249 3.34231 10.3913 3.20869C10.2577 3.07507 10.0765 3 9.8875 3C9.69853 3 9.51731 3.07507 9.38369 3.20869C9.25007 3.34231 9.175 3.52353 9.175 3.7125V6.325H7.0375C6.59658 6.325 6.17371 6.14984 5.86194 5.83806C5.55016 5.52629 5.375 5.10342 5.375 4.6625V3.7125C5.375 3.52353 5.29993 3.34231 5.16631 3.20869C5.03269 3.07507 4.85147 3 4.6625 3ZM4.6625 22C4.47353 22 4.29231 21.9249 4.15869 21.7913C4.02507 21.6577 3.95 21.4765 3.95 21.2875V20.3375C3.95 19.5186 4.27529 18.7333 4.85431 18.1543C5.43333 17.5753 6.21864 17.25 7.0375 17.25H17.9625C18.7814 17.25 19.5667 17.5753 20.1457 18.1543C20.7247 18.7333 21.05 19.5186 21.05 20.3375V21.2875C21.05 21.4765 20.9749 21.6577 20.8413 21.7913C20.7077 21.9249 20.5265 22 20.3375 22C20.1485 22 19.9673 21.9249 19.8337 21.7913C19.7001 21.6577 19.625 21.4765 19.625 21.2875V20.3375C19.625 19.8966 19.4498 19.4737 19.1381 19.1619C18.8263 18.8502 18.4034 18.675 17.9625 18.675H15.825V21.2875C15.825 21.4765 15.7499 21.6577 15.6163 21.7913C15.4827 21.9249 15.3015 22 15.1125 22C14.9235 22 14.7423 21.9249 14.6087 21.7913C14.4751 21.6577 14.4 21.4765 14.4 21.2875V18.675H10.6V21.2875C10.6 21.4765 10.5249 21.6577 10.3913 21.7913C10.2577 21.9249 10.0765 22 9.8875 22C9.69853 22 9.51731 21.9249 9.38369 21.7913C9.25007 21.6577 9.175 21.4765 9.175 21.2875V18.675H7.0375C6.59658 18.675 6.17371 18.8502 5.86194 19.1619C5.55016 19.4737 5.375 19.8966 5.375 20.3375V21.2875C5.375 21.4765 5.29993 21.6577 5.16631 21.7913C5.03269 21.9249 4.85147 22 4.6625 22ZM12.5 13.507L13.8965 14.9035C13.9617 14.9735 14.0404 15.0296 14.1278 15.0686C14.2152 15.1075 14.3095 15.1285 14.4052 15.1302C14.5009 15.1319 14.5959 15.1143 14.6846 15.0784C14.7733 15.0426 14.8539 14.9892 14.9216 14.9216C14.9892 14.8539 15.0426 14.7733 15.0784 14.6846C15.1143 14.5959 15.1319 14.5009 15.1302 14.4052C15.1285 14.3095 15.1075 14.2152 15.0686 14.1278C15.0296 14.0404 14.9735 13.9617 14.9035 13.8965L13.507 12.5L14.9035 11.1035C14.9735 11.0383 15.0296 10.9596 15.0686 10.8722C15.1075 10.7848 15.1285 10.6905 15.1302 10.5948C15.1319 10.4991 15.1143 10.4041 15.0784 10.3154C15.0426 10.2267 14.9892 10.1461 14.9216 10.0784C14.8539 10.0108 14.7733 9.95742 14.6846 9.92158C14.5959 9.88575 14.5009 9.86815 14.4052 9.86984C14.3095 9.87153 14.2152 9.89247 14.1278 9.93141C14.0404 9.97035 13.9617 10.0265 13.8965 10.0965L12.5 11.493L11.1035 10.0965C11.0383 10.0265 10.9596 9.97035 10.8722 9.93141C10.7848 9.89247 10.6905 9.87153 10.5948 9.86984C10.4991 9.86815 10.4041 9.88575 10.3154 9.92158C10.2267 9.95742 10.1461 10.0108 10.0784 10.0784C10.0108 10.1461 9.95742 10.2267 9.92158 10.3154C9.88575 10.4041 9.86815 10.4991 9.86984 10.5948C9.87153 10.6905 9.89247 10.7848 9.93141 10.8722C9.97035 10.9596 10.0265 11.0383 10.0965 11.1035L11.493 12.5L10.0965 13.8965C10.0265 13.9617 9.97035 14.0404 9.93141 14.1278C9.89247 14.2152 9.87153 14.3095 9.86984 14.4052C9.86815 14.5009 9.88575 14.5959 9.92158 14.6846C9.95742 14.7733 10.0108 14.8539 10.0784 14.9216C10.1461 14.9892 10.2267 15.0426 10.3154 15.0784C10.4041 15.1143 10.4991 15.1319 10.5948 15.1302C10.6905 15.1285 10.7848 15.1075 10.8722 15.0686C10.9596 15.0296 11.0383 14.9735 11.1035 14.9035L12.5 13.507ZM9.39065 13.2125C9.41282 13.1878 9.43562 13.1637 9.45905 13.1403L10.0993 12.5L9.45905 11.8597L9.39065 11.7875H3.7125C3.52353 11.7875 3.34231 11.8626 3.20869 11.9962C3.07507 12.1298 3 12.311 3 12.5C3 12.689 3.07507 12.8702 3.20869 13.0038C3.34231 13.1374 3.7125 13.2125 3.90147 13.2125H9.39065ZM15.8468 13.2125H21.2875C21.4765 13.2125 21.6577 13.1374 21.7913 13.0038C21.9249 12.8702 22 12.689 22 12.5C22 12.311 21.9249 12.1298 21.7913 11.9962C21.6577 11.8626 21.4765 11.7875 21.2875 11.7875H15.8468L15.7785 11.8597L15.1382 12.5L15.7785 13.1403L15.8468 13.2125Z\"/> </mask> <path d=\"M4.6625 3C4.47353 3 4.29231 3.07507 4.15869 3.20869C4.02507 3.34231 3.95 3.52353 3.95 3.7125V4.6625C3.95 5.48136 4.27529 6.26667 4.85431 6.84569C5.43333 7.42471 6.21864 7.75 7.0375 7.75H17.9625C18.368 7.75 18.7694 7.67014 19.144 7.51498C19.5186 7.35982 19.859 7.13239 20.1457 6.84569C20.4324 6.55899 20.6598 6.21863 20.815 5.84403C20.9701 5.46944 21.05 5.06796 21.05 4.6625V3.7125C21.05 3.52353 20.9749 3.34231 20.8413 3.20869C20.7077 3.07507 20.5265 3 20.3375 3C20.1485 3 19.9673 3.07507 19.8337 3.20869C19.7001 3.34231 19.625 3.52353 19.625 3.7125V4.6625C19.625 5.10342 19.4498 5.52629 19.1381 5.83806C18.8263 6.14984 18.4034 6.325 17.9625 6.325H15.825V3.7125C15.825 3.52353 15.7499 3.34231 15.6163 3.20869C15.4827 3.07507 15.3015 3 15.1125 3C14.9235 3 14.7423 3.07507 14.6087 3.20869C14.4751 3.34231 14.4 3.52353 14.4 3.7125V6.325H10.6V3.7125C10.6 3.52353 10.5249 3.34231 10.3913 3.20869C10.2577 3.07507 10.0765 3 9.8875 3C9.69853 3 9.51731 3.07507 9.38369 3.20869C9.25007 3.34231 9.175 3.52353 9.175 3.7125V6.325H7.0375C6.59658 6.325 6.17371 6.14984 5.86194 5.83806C5.55016 5.52629 5.375 5.10342 5.375 4.6625V3.7125C5.375 3.52353 5.29993 3.34231 5.16631 3.20869C5.03269 3.07507 4.85147 3 4.6625 3ZM4.6625 22C4.47353 22 4.29231 21.9249 4.15869 21.7913C4.02507 21.6577 3.95 21.4765 3.95 21.2875V20.3375C3.95 19.5186 4.27529 18.7333 4.85431 18.1543C5.43333 17.5753 6.21864 17.25 7.0375 17.25H17.9625C18.7814 17.25 19.5667 17.5753 20.1457 18.1543C20.7247 18.7333 21.05 19.5186 21.05 20.3375V21.2875C21.05 21.4765 20.9749 21.6577 20.8413 21.7913C20.7077 21.9249 20.5265 22 20.3375 22C20.1485 22 19.9673 21.9249 19.8337 21.7913C19.7001 21.6577 19.625 21.4765 19.625 21.2875V20.3375C19.625 19.8966 19.4498 19.4737 19.1381 19.1619C18.8263 18.8502 18.4034 18.675 17.9625 18.675H15.825V21.2875C15.825 21.4765 15.7499 21.6577 15.6163 21.7913C15.4827 21.9249 15.3015 22 15.1125 22C14.9235 22 14.7423 21.9249 14.6087 21.7913C14.4751 21.6577 14.4 21.4765 14.4 21.2875V18.675H10.6V21.2875C10.6 21.4765 10.5249 21.6577 10.3913 21.7913C10.2577 21.9249 10.0765 22 9.8875 22C9.69853 22 9.51731 21.9249 9.38369 21.7913C9.25007 21.6577 9.175 21.4765 9.175 21.2875V18.675H7.0375C6.59658 18.675 6.17371 18.8502 5.86194 19.1619C5.55016 19.4737 5.375 19.8966 5.375 20.3375V21.2875C5.375 21.4765 5.29993 21.6577 5.16631 21.7913C5.03269 21.9249 4.85147 22 4.6625 22ZM12.5 13.507L13.8965 14.9035C13.9617 14.9735 14.0404 15.0296 14.1278 15.0686C14.2152 15.1075 14.3095 15.1285 14.4052 15.1302C14.5009 15.1319 14.5959 15.1143 14.6846 15.0784C14.7733 15.0426 14.8539 14.9892 14.9216 14.9216C14.9892 14.8539 15.0426 14.7733 15.0784 14.6846C15.1143 14.5959 15.1319 14.5009 15.1302 14.4052C15.1285 14.3095 15.1075 14.2152 15.0686 14.1278C15.0296 14.0404 14.9735 13.9617 14.9035 13.8965L13.507 12.5L14.9035 11.1035C14.9735 11.0383 15.0296 10.9596 15.0686 10.8722C15.1075 10.7848 15.1285 10.6905 15.1302 10.5948C15.1319 10.4991 15.1143 10.4041 15.0784 10.3154C15.0426 10.2267 14.9892 10.1461 14.9216 10.0784C14.8539 10.0108 14.7733 9.95742 14.6846 9.92158C14.5959 9.88575 14.5009 9.86815 14.4052 9.86984C14.3095 9.87153 14.2152 9.89247 14.1278 9.93141C14.0404 9.97035 13.9617 10.0265 13.8965 10.0965L12.5 11.493L11.1035 10.0965C11.0383 10.0265 10.9596 9.97035 10.8722 9.93141C10.7848 9.89247 10.6905 9.87153 10.5948 9.86984C10.4991 9.86815 10.4041 9.88575 10.3154 9.92158C10.2267 9.95742 10.1461 10.0108 10.0784 10.0784C10.0108 10.1461 9.95742 10.2267 9.92158 10.3154C9.88575 10.4041 9.86815 10.4991 9.86984 10.5948C9.87153 10.6905 9.89247 10.7848 9.93141 10.8722C9.97035 10.9596 10.0265 11.0383 10.0965 11.1035L11.493 12.5L10.0965 13.8965C10.0265 13.9617 9.97035 14.0404 9.93141 14.1278C9.89247 14.2152 9.87153 14.3095 9.86984 14.4052C9.86815 14.5009 9.88575 14.5959 9.92158 14.6846C9.95742 14.7733 10.0108 14.8539 10.0784 14.9216C10.1461 14.9892 10.2267 15.0426 10.3154 15.0784C10.4041 15.1143 10.4991 15.1319 10.5948 15.1302C10.6905 15.1285 10.7848 15.1075 10.8722 15.0686C10.9596 15.0296 11.0383 14.9735 11.1035 14.9035L12.5 13.507ZM9.39065 13.2125C9.41282 13.1878 9.43562 13.1637 9.45905 13.1403L10.0993 12.5L9.45905 11.8597L9.39065 11.7875H3.7125C3.52353 11.7875 3.34231 11.8626 3.20869 11.9962C3.07507 12.1298 3 12.311 3 12.5C3 12.689 3.07507 12.8702 3.20869 13.0038C3.34231 13.1374 3.7125 13.2125 3.90147 13.2125H9.39065ZM15.8468 13.2125H21.2875C21.4765 13.2125 21.6577 13.1374 21.7913 13.0038C21.9249 12.8702 22 12.689 22 12.5C22 12.311 21.9249 12.1298 21.7913 11.9962C21.6577 11.8626 21.4765 11.7875 21.2875 11.7875H15.8468L15.7785 11.8597L15.1382 12.5L15.7785 13.1403L15.8468 13.2125Z\"fill=\"#4B4F62\"/> <path d=\"M4.6625 3C4.47353 3 4.29231 3.07507 4.15869 3.20869C4.02507 3.34231 3.95 3.52353 3.95 3.7125V4.6625C3.95 5.48136 4.27529 6.26667 4.85431 6.84569C5.43333 7.42471 6.21864 7.75 7.0375 7.75H17.9625C18.368 7.75 18.7694 7.67014 19.144 7.51498C19.5186 7.35982 19.859 7.13239 20.1457 6.84569C20.4324 6.55899 20.6598 6.21863 20.815 5.84403C20.9701 5.46944 21.05 5.06796 21.05 4.6625V3.7125C21.05 3.52353 20.9749 3.34231 20.8413 3.20869C20.7077 3.07507 20.5265 3 20.3375 3C20.1485 3 19.9673 3.07507 19.8337 3.20869C19.7001 3.34231 19.625 3.52353 19.625 3.7125V4.6625C19.625 5.10342 19.4498 5.52629 19.1381 5.83806C18.8263 6.14984 18.4034 6.325 17.9625 6.325H15.825V3.7125C15.825 3.52353 15.7499 3.34231 15.6163 3.20869C15.4827 3.07507 15.3015 3 15.1125 3C14.9235 3 14.7423 3.07507 14.6087 3.20869C14.4751 3.34231 14.4 3.52353 14.4 3.7125V6.325H10.6V3.7125C10.6 3.52353 10.5249 3.34231 10.3913 3.20869C10.2577 3.07507 10.0765 3 9.8875 3C9.69853 3 9.51731 3.07507 9.38369 3.20869C9.25007 3.34231 9.175 3.52353 9.175 3.7125V6.325H7.0375C6.59658 6.325 6.17371 6.14984 5.86194 5.83806C5.55016 5.52629 5.375 5.10342 5.375 4.6625V3.7125C5.375 3.52353 5.29993 3.34231 5.16631 3.20869C5.03269 3.07507 4.85147 3 4.6625 3ZM4.6625 22C4.47353 22 4.29231 21.9249 4.15869 21.7913C4.02507 21.6577 3.95 21.4765 3.95 21.2875V20.3375C3.95 19.5186 4.27529 18.7333 4.85431 18.1543C5.43333 17.5753 6.21864 17.25 7.0375 17.25H17.9625C18.7814 17.25 19.5667 17.5753 20.1457 18.1543C20.7247 18.7333 21.05 19.5186 21.05 20.3375V21.2875C21.05 21.4765 20.9749 21.6577 20.8413 21.7913C20.7077 21.9249 20.5265 22 20.3375 22C20.1485 22 19.9673 21.9249 19.8337 21.7913C19.7001 21.6577 19.625 21.4765 19.625 21.2875V20.3375C19.625 19.8966 19.4498 19.4737 19.1381 19.1619C18.8263 18.8502 18.4034 18.675 17.9625 18.675H15.825V21.2875C15.825 21.4765 15.7499 21.6577 15.6163 21.7913C15.4827 21.9249 15.3015 22 15.1125 22C14.9235 22 14.7423 21.9249 14.6087 21.7913C14.4751 21.6577 14.4 21.4765 14.4 21.2875V18.675H10.6V21.2875C10.6 21.4765 10.5249 21.6577 10.3913 21.7913C10.2577 21.9249 10.0765 22 9.8875 22C9.69853 22 9.51731 21.9249 9.38369 21.7913C9.25007 21.6577 9.175 21.4765 9.175 21.2875V18.675H7.0375C6.59658 18.675 6.17371 18.8502 5.86194 19.1619C5.55016 19.4737 5.375 19.8966 5.375 20.3375V21.2875C5.375 21.4765 5.29993 21.6577 5.16631 21.7913C5.03269 21.9249 4.85147 22 4.6625 22ZM12.5 13.507L13.8965 14.9035C13.9617 14.9735 14.0404 15.0296 14.1278 15.0686C14.2152 15.1075 14.3095 15.1285 14.4052 15.1302C14.5009 15.1319 14.5959 15.1143 14.6846 15.0784C14.7733 15.0426 14.8539 14.9892 14.9216 14.9216C14.9892 14.8539 15.0426 14.7733 15.0784 14.6846C15.1143 14.5959 15.1319 14.5009 15.1302 14.4052C15.1285 14.3095 15.1075 14.2152 15.0686 14.1278C15.0296 14.0404 14.9735 13.9617 14.9035 13.8965L13.507 12.5L14.9035 11.1035C14.9735 11.0383 15.0296 10.9596 15.0686 10.8722C15.1075 10.7848 15.1285 10.6905 15.1302 10.5948C15.1319 10.4991 15.1143 10.4041 15.0784 10.3154C15.0426 10.2267 14.9892 10.1461 14.9216 10.0784C14.8539 10.0108 14.7733 9.95742 14.6846 9.92158C14.5959 9.88575 14.5009 9.86815 14.4052 9.86984C14.3095 9.87153 14.2152 9.89247 14.1278 9.93141C14.0404 9.97035 13.9617 10.0265 13.8965 10.0965L12.5 11.493L11.1035 10.0965C11.0383 10.0265 10.9596 9.97035 10.8722 9.93141C10.7848 9.89247 10.6905 9.87153 10.5948 9.86984C10.4991 9.86815 10.4041 9.88575 10.3154 9.92158C10.2267 9.95742 10.1461 10.0108 10.0784 10.0784C10.0108 10.1461 9.95742 10.2267 9.92158 10.3154C9.88575 10.4041 9.86815 10.4991 9.86984 10.5948C9.87153 10.6905 9.89247 10.7848 9.93141 10.8722C9.97035 10.9596 10.0265 11.0383 10.0965 11.1035L11.493 12.5L10.0965 13.8965C10.0265 13.9617 9.97035 14.0404 9.93141 14.1278C9.89247 14.2152 9.87153 14.3095 9.86984 14.4052C9.86815 14.5009 9.88575 14.5959 9.92158 14.6846C9.95742 14.7733 10.0108 14.8539 10.0784 14.9216C10.1461 14.9892 10.2267 15.0426 10.3154 15.0784C10.4041 15.1143 10.4991 15.1319 10.5948 15.1302C10.6905 15.1285 10.7848 15.1075 10.8722 15.0686C10.9596 15.0296 11.0383 14.9735 11.1035 14.9035L12.5 13.507ZM9.39065 13.2125C9.41282 13.1878 9.43562 13.1637 9.45905 13.1403L10.0993 12.5L9.45905 11.8597L9.39065 11.7875H3.7125C3.52353 11.7875 3.34231 11.8626 3.20869 11.9962C3.07507 12.1298 3 12.311 3 12.5C3 12.689 3.07507 12.8702 3.20869 13.0038C3.34231 13.1374 3.7125 13.2125 3.90147 13.2125H9.39065ZM15.8468 13.2125H21.2875C21.4765 13.2125 21.6577 13.1374 21.7913 13.0038C21.9249 12.8702 22 12.689 22 12.5C22 12.311 21.9249 12.1298 21.7913 11.9962C21.6577 11.8626 21.4765 11.7875 21.2875 11.7875H15.8468L15.7785 11.8597L15.1382 12.5L15.7785 13.1403L15.8468 13.2125Z\"stroke=\"#4B4F62\"stroke-width=\"0.4\"mask=\"url(#path-2-outside-1_5803_43961)\"/> </svg>`,\n}\n\n\nexport const LEFT_AND_RIGHT_ICON_CONSTANTS = {\n 'subrole': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"14\"height=\"14\"viewBox=\"0 0 14 14\"fill=\"none\"> <path d=\"M2.33333 13.3333C1.68889 13.3333 1.13889 13.1056 0.683333 12.65C0.227778 12.1944 0 11.6444 0 11C0 10.3556 0.227778 9.80555 0.683333 9.35C1.13889 8.89444 1.68889 8.66667 2.33333 8.66667C2.53333 8.66667 2.72778 8.69167 2.91667 8.74167C3.10556 8.79167 3.28333 8.86111 3.45 8.95L6 6.4V4.56667C5.51111 4.42222 5.11111 4.14722 4.8 3.74167C4.48889 3.33611 4.33333 2.86667 4.33333 2.33333C4.33333 1.68889 4.56111 1.13889 5.01667 0.683333C5.47222 0.227778 6.02222 0 6.66667 0C7.31111 0 7.86111 0.227778 8.31667 0.683333C8.77222 1.13889 9 1.68889 9 2.33333C9 2.86667 8.84444 3.33611 8.53333 3.74167C8.22222 4.14722 7.82222 4.42222 7.33333 4.56667V6.4L9.9 8.95C10.0667 8.86111 10.2417 8.79167 10.425 8.74167C10.6083 8.69167 10.8 8.66667 11 8.66667C11.6444 8.66667 12.1944 8.89444 12.65 9.35C13.1056 9.80555 13.3333 10.3556 13.3333 11C13.3333 11.6444 13.1056 12.1944 12.65 12.65C12.1944 13.1056 11.6444 13.3333 11 13.3333C10.3556 13.3333 9.80555 13.1056 9.35 12.65C8.89444 12.1944 8.66667 11.6444 8.66667 11C8.66667 10.8 8.69167 10.6056 8.74167 10.4167C8.79167 10.2278 8.86111 10.05 8.95 9.88333L6.66667 7.6L4.38333 9.88333C4.47222 10.05 4.54167 10.2278 4.59167 10.4167C4.64167 10.6056 4.66667 10.8 4.66667 11C4.66667 11.6444 4.43889 12.1944 3.98333 12.65C3.52778 13.1056 2.97778 13.3333 2.33333 13.3333ZM11 12C11.2778 12 11.5139 11.9028 11.7083 11.7083C11.9028 11.5139 12 11.2778 12 11C12 10.7222 11.9028 10.4861 11.7083 10.2917C11.5139 10.0972 11.2778 10 11 10C10.7222 10 10.4861 10.0972 10.2917 10.2917C10.0972 10.4861 10 10.7222 10 11C10 11.2778 10.0972 11.5139 10.2917 11.7083C10.4861 11.9028 10.7222 12 11 12ZM6.66667 3.33333C6.94444 3.33333 7.18056 3.23611 7.375 3.04167C7.56944 2.84722 7.66667 2.61111 7.66667 2.33333C7.66667 2.05556 7.56944 1.81944 7.375 1.625C7.18056 1.43056 6.94444 1.33333 6.66667 1.33333C6.38889 1.33333 6.15278 1.43056 5.95833 1.625C5.76389 1.81944 5.66667 2.05556 5.66667 2.33333C5.66667 2.61111 5.76389 2.84722 5.95833 3.04167C6.15278 3.23611 6.38889 3.33333 6.66667 3.33333ZM2.33333 12C2.61111 12 2.84722 11.9028 3.04167 11.7083C3.23611 11.5139 3.33333 11.2778 3.33333 11C3.33333 10.7222 3.23611 10.4861 3.04167 10.2917C2.84722 10.0972 2.61111 10 2.33333 10C2.05556 10 1.81944 10.0972 1.625 10.2917C1.43056 10.4861 1.33333 10.7222 1.33333 11C1.33333 11.2778 1.43056 11.5139 1.625 11.7083C1.81944 11.9028 2.05556 12 2.33333 12Z\"fill=\"white\"/> </svg>`,\n 'subrole_active': `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15.5556 16.875C15.1042 16.875 14.6991 16.7448 14.3403 16.4844C13.9815 16.224 13.7326 15.8912 13.5938 15.4861H10C9.23611 15.4861 8.58218 15.2141 8.03819 14.6701C7.49421 14.1262 7.22222 13.4722 7.22222 12.7083C7.22222 11.9444 7.49421 11.2905 8.03819 10.7465C8.58218 10.2025 9.23611 9.93056 10 9.93056H11.3889C11.7708 9.93056 12.0978 9.79456 12.3698 9.52257C12.6418 9.25058 12.7778 8.92361 12.7778 8.54167C12.7778 8.15972 12.6418 7.83275 12.3698 7.56076C12.0978 7.28877 11.7708 7.15278 11.3889 7.15278H7.79514C7.64468 7.55787 7.39294 7.89063 7.03993 8.15104C6.68692 8.41146 6.28472 8.54167 5.83333 8.54167C5.25463 8.54167 4.76273 8.33912 4.35764 7.93403C3.95255 7.52894 3.75 7.03704 3.75 6.45833C3.75 5.87963 3.95255 5.38773 4.35764 4.98264C4.76273 4.57755 5.25463 4.375 5.83333 4.375C6.28472 4.375 6.68692 4.50521 7.03993 4.76563C7.39294 5.02604 7.64468 5.3588 7.79514 5.76389H11.3889C12.1528 5.76389 12.8067 6.03588 13.3507 6.57986C13.8947 7.12384 14.1667 7.77778 14.1667 8.54167C14.1667 9.30556 13.8947 9.95949 13.3507 10.5035C12.8067 11.0475 12.1528 11.3194 11.3889 11.3194H10C9.61806 11.3194 9.29109 11.4554 9.0191 11.7274C8.74711 11.9994 8.61111 12.3264 8.61111 12.7083C8.61111 13.0903 8.74711 13.4172 9.0191 13.6892C9.29109 13.9612 9.61806 14.0972 10 14.0972H13.5938C13.7442 13.6921 13.9959 13.3594 14.349 13.099C14.702 12.8385 15.1042 12.7083 15.5556 12.7083C16.1343 12.7083 16.6262 12.9109 17.0313 13.316C17.4363 13.7211 17.6389 14.213 17.6389 14.7917C17.6389 15.3704 17.4363 15.8623 17.0313 16.2674C16.6262 16.6725 16.1343 16.875 15.5556 16.875ZM5.83333 7.15278C6.03009 7.15278 6.19502 7.08623 6.32813 6.95313C6.46123 6.82002 6.52778 6.65509 6.52778 6.45833C6.52778 6.26157 6.46123 6.09664 6.32813 5.96354C6.19502 5.83044 6.03009 5.76389 5.83333 5.76389C5.63657 5.76389 5.47164 5.83044 5.33854 5.96354C5.20544 6.09664 5.13889 6.26157 5.13889 6.45833C5.13889 6.65509 5.20544 6.82002 5.33854 6.95313C5.47164 7.08623 5.63657 7.15278 5.83333 7.15278Z\" fill=\"#717793\"/>\n</svg>`,\n 'hide_section': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"16\"viewBox=\"0 0 16 16\"fill=\"none\"> <path d=\"M8 3.98337C10.5267 3.98337 12.78 5.40337 13.88 7.65003C13.4867 8.46337 12.9333 9.16337 12.2733 9.73003L13.2133 10.67C14.14 9.85003 14.8733 8.82337 15.3333 7.65003C14.18 4.72337 11.3333 2.65003 8 2.65003C7.15333 2.65003 6.34 2.78337 5.57333 3.03003L6.67333 4.13003C7.10667 4.04337 7.54667 3.98337 8 3.98337ZM7.28667 4.74337L8.66667 6.12337C9.04667 6.29003 9.35333 6.5967 9.52 6.9767L10.9 8.3567C10.9533 8.13003 10.9933 7.89003 10.9933 7.64337C11 5.99003 9.65333 4.65003 8 4.65003C7.75333 4.65003 7.52 4.68337 7.28667 4.74337ZM1.34 2.56337L3.12667 4.35003C2.04 5.20337 1.18 6.3367 0.666667 7.65003C1.82 10.5767 4.66667 12.65 8 12.65C9.01333 12.65 9.98667 12.4567 10.88 12.1034L13.16 14.3834L14.1 13.4434L2.28 1.6167L1.34 2.56337ZM6.34 7.56337L8.08 9.30337C8.05333 9.31003 8.02667 9.3167 8 9.3167C7.08 9.3167 6.33333 8.57003 6.33333 7.65003C6.33333 7.6167 6.34 7.5967 6.34 7.56337ZM4.07333 5.2967L5.24 6.46337C5.08667 6.83003 5 7.23003 5 7.65003C5 9.30337 6.34667 10.65 8 10.65C8.42 10.65 8.82 10.5634 9.18 10.41L9.83333 11.0634C9.24667 11.2234 8.63333 11.3167 8 11.3167C5.47333 11.3167 3.22 9.8967 2.12 7.65003C2.58667 6.6967 3.26667 5.91003 4.07333 5.2967Z\"fill=\"#717793\"/> </svg>`,\n 'unhide_section': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"11\"viewBox=\"0 0 16 11\"fill=\"none\"> <path d=\"M7.63889 1.38889C10.2708 1.38889 12.6181 2.86806 13.7639 5.20833C12.6181 7.54861 10.2708 9.02778 7.63889 9.02778C5.00695 9.02778 2.65972 7.54861 1.51389 5.20833C2.65972 2.86806 5.00695 1.38889 7.63889 1.38889ZM7.63889 0C4.16667 0 1.20139 2.15972 0 5.20833C1.20139 8.25695 4.16667 10.4167 7.63889 10.4167C11.1111 10.4167 14.0764 8.25695 15.2778 5.20833C14.0764 2.15972 11.1111 0 7.63889 0ZM7.63889 3.47222C8.59722 3.47222 9.375 4.25 9.375 5.20833C9.375 6.16667 8.59722 6.94445 7.63889 6.94445C6.68056 6.94445 5.90278 6.16667 5.90278 5.20833C5.90278 4.25 6.68056 3.47222 7.63889 3.47222ZM7.63889 2.08333C5.91667 2.08333 4.51389 3.48611 4.51389 5.20833C4.51389 6.93056 5.91667 8.33333 7.63889 8.33333C9.36111 8.33333 10.7639 6.93056 10.7639 5.20833C10.7639 3.48611 9.36111 2.08333 7.63889 2.08333Z\"fill=\"#717793\"/> </svg>`,\n 'edit_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"16\"viewBox=\"0 0 16 16\"fill=\"none\"> <path d=\"M9.37248 6.01333L9.98581 6.62667L3.94581 12.6667H3.33248V12.0533L9.37248 6.01333ZM11.7725 2C11.6058 2 11.4325 2.06667 11.3058 2.19333L10.0858 3.41333L12.5858 5.91333L13.8058 4.69333C14.0658 4.43333 14.0658 4.01333 13.8058 3.75333L12.2458 2.19333C12.1125 2.06 11.9458 2 11.7725 2ZM9.37248 4.12667L1.99915 11.5V14H4.49915L11.8725 6.62667L9.37248 4.12667Z\"fill=\"#717793\"/> </svg>`,\n \"year_month_icon\": `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"18\"height=\"18\"viewBox=\"0 0 18 18\"fill=\"none\"> <path d=\"M15 2.25H14.25V0.75H12.75V2.25H5.25V0.75H3.75V2.25H3C2.175 2.25 1.5 2.925 1.5 3.75V15.75C1.5 16.575 2.175 17.25 3 17.25H15C15.825 17.25 16.5 16.575 16.5 15.75V3.75C16.5 2.925 15.825 2.25 15 2.25ZM15 15.75H3V5.62498H15V15.75Z\"fill=\"#FAFBFB\"/> <path d=\"M4.86422 13.5C4.76624 13.5 4.68105 13.4563 4.60863 13.369C4.53621 13.2817 4.5 13.1789 4.5 13.0608V8.31421C4.5 8.19606 4.53621 8.09332 4.60863 8.00599C4.68105 7.91866 4.76624 7.875 4.86422 7.875H5.02397C5.13472 7.875 5.23696 7.91096 5.33068 7.98288C5.4244 8.05479 5.49255 8.14983 5.53515 8.26798L6.65337 11.1807C6.65337 11.1858 6.6555 11.1884 6.65976 11.1884C6.66402 11.1884 6.66615 11.1858 6.66615 11.1807L7.78438 8.26798C7.82697 8.14983 7.89513 8.05479 7.98885 7.98288C8.08257 7.91096 8.1848 7.875 8.29556 7.875H8.48087C8.57885 7.875 8.66404 7.91866 8.73646 8.00599C8.80888 8.09332 8.84509 8.19606 8.84509 8.31421V13.0608C8.84509 13.1789 8.80888 13.2817 8.73646 13.369C8.66404 13.4563 8.57885 13.5 8.48087 13.5H8.34029C8.24231 13.5 8.15712 13.4563 8.0847 13.369C8.01228 13.2817 7.97607 13.1789 7.97607 13.0608V9.7089C7.97607 9.70377 7.97394 9.7012 7.96968 9.7012C7.96542 9.7012 7.96329 9.70377 7.96329 9.7089L7.19651 11.6892C7.14965 11.8074 7.07723 11.905 6.97926 11.982C6.88554 12.0539 6.78543 12.0899 6.67893 12.0899H6.64059C6.5341 12.0899 6.43186 12.0539 6.33388 11.982C6.24017 11.905 6.16988 11.8074 6.12302 11.6892L5.35624 9.7089C5.35624 9.70377 5.35411 9.7012 5.34985 9.7012C5.34559 9.7012 5.34346 9.70377 5.34346 9.7089V13.0608C5.34346 13.1789 5.30725 13.2817 5.23483 13.369C5.16241 13.4563 5.07722 13.5 4.97924 13.5H4.86422Z\"fill=\"#FAFBFB\"/> <path d=\"M11.1405 11.2115L9.79221 8.26027C9.75388 8.17808 9.75601 8.09332 9.7986 8.00599C9.8412 7.91866 9.90297 7.875 9.98391 7.875H10.2906C10.4014 7.875 10.5036 7.91096 10.5973 7.98288C10.6911 8.05479 10.7613 8.14983 10.8082 8.26798L11.6389 10.387C11.6389 10.3921 11.641 10.3947 11.6453 10.3947C11.6495 10.3947 11.6517 10.3921 11.6517 10.387L12.4823 8.26798C12.5292 8.14983 12.5995 8.05479 12.6932 7.98288C12.7869 7.91096 12.8892 7.875 12.9999 7.875H13.2811C13.362 7.875 13.4238 7.91866 13.4664 8.00599C13.509 8.09332 13.5111 8.17808 13.4728 8.26027L12.1245 11.2115C12.1032 11.2526 12.0926 11.2937 12.0926 11.3348V13.0608C12.0926 13.1789 12.0563 13.2817 11.9839 13.369C11.9158 13.4563 11.8327 13.5 11.7347 13.5H11.5302C11.4323 13.5 11.3471 13.4563 11.2747 13.369C11.2065 13.2817 11.1724 13.1789 11.1724 13.0608V11.3348C11.1724 11.2937 11.1618 11.2526 11.1405 11.2115Z\"fill=\"#FAFBFB\"/> </svg>`,\n \"year_only_icon\": `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"18\"height=\"18\"viewBox=\"0 0 18 18\"fill=\"none\"> <path d=\"M15.0002 2.25H14.2502V0.75H12.7502V2.25H5.25024V0.75H3.75024V2.25H3.00024C2.17524 2.25 1.50024 2.925 1.50024 3.75V15.75C1.50024 16.575 2.17524 17.25 3.00024 17.25H15.0002C15.8252 17.25 16.5002 16.575 16.5002 15.75V3.75C16.5002 2.925 15.8252 2.25 15.0002 2.25ZM15.0002 15.75H3.00024V5.62498H15.0002V15.75Z\"fill=\"#FAFBFB\"/> <path d=\"M8.416 11.2115L6.79161 8.26027C6.74542 8.17808 6.74798 8.09332 6.79931 8.00599C6.85063 7.91866 6.92505 7.875 7.02257 7.875H7.3921C7.52554 7.875 7.64871 7.91096 7.76163 7.98288C7.87454 8.05479 7.95922 8.14983 8.01568 8.26798L9.01649 10.387C9.01649 10.3921 9.01905 10.3947 9.02419 10.3947C9.02932 10.3947 9.03188 10.3921 9.03188 10.387L10.0327 8.26798C10.0892 8.14983 10.1738 8.05479 10.2867 7.98288C10.3997 7.91096 10.5228 7.875 10.6563 7.875H10.995C11.0925 7.875 11.1669 7.91866 11.2183 8.00599C11.2696 8.09332 11.2722 8.17808 11.226 8.26027L9.60158 11.2115C9.57591 11.2526 9.56308 11.2937 9.56308 11.3348V13.0608C9.56308 13.1789 9.51946 13.2817 9.43221 13.369C9.35009 13.4563 9.25001 13.5 9.13197 13.5H8.88561C8.76757 13.5 8.66492 13.4563 8.57767 13.369C8.49555 13.2817 8.45449 13.1789 8.45449 13.0608V11.3348C8.45449 11.2937 8.44166 11.2526 8.416 11.2115Z\"fill=\"#FAFBFB\"/> </svg>`,\n 'delete-icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"16\"viewBox=\"0 0 16 16\"fill=\"none\"> <path d=\"M10.6663 6V12.6667H5.33301V6H10.6663ZM9.66634 2H6.33301L5.66634 2.66667H3.33301V4H12.6663V2.66667H10.333L9.66634 2ZM11.9997 4.66667H3.99967V12.6667C3.99967 13.4 4.59967 14 5.33301 14H10.6663C11.3997 14 11.9997 13.4 11.9997 12.6667V4.66667Z\"fill=\"white\"/> </svg>`,\n 'handle': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <circle cx=\"7\"cy=\"4\"r=\"1.5\"fill=\"#717793\"/> <circle cx=\"13\"cy=\"4\"r=\"1.5\"fill=\"#717793\"/> <circle cx=\"7\"cy=\"10\"r=\"1.5\"fill=\"#717793\"/> <circle cx=\"13\"cy=\"10\"r=\"1.5\"fill=\"#717793\"/> <circle cx=\"7\"cy=\"16\"r=\"1.5\"fill=\"#717793\"/> <circle cx=\"13\"cy=\"16\"r=\"1.5\"fill=\"#717793\"/> </svg>`,\n 'search': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M13.1292 11.8791H12.4709L12.2375 11.6541C13.0542 10.7041 13.5459 9.47074 13.5459 8.12907C13.5459 5.1374 11.1209 2.7124 8.12919 2.7124C5.13752 2.7124 2.71252 5.1374 2.71252 8.12907C2.71252 11.1207 5.13752 13.5457 8.12919 13.5457C9.47086 13.5457 10.7042 13.0541 11.6542 12.2374L11.8792 12.4707V13.1291L16.0459 17.2874L17.2875 16.0457L13.1292 11.8791ZM8.12919 11.8791C6.05419 11.8791 4.37919 10.2041 4.37919 8.12907C4.37919 6.05407 6.05419 4.37907 8.12919 4.37907C10.2042 4.37907 11.8792 6.05407 11.8792 8.12907C11.8792 10.2041 10.2042 11.8791 8.12919 11.8791Z\"fill=\"#717793\"/> </svg>`,\n 'multi-drag-drop': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"16\"viewBox=\"0 0 16 16\"fill=\"none\"> <path d=\"M13.3337 7.99996L12.3937 7.05996L8.66699 10.78V2.66663H7.33366V10.78L3.61366 7.05329L2.66699 7.99996L8.00033 13.3333L13.3337 7.99996Z\"fill=\"white\"/> </svg>`,\n 'subrole-icon-grey': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"16\"height=\"16\"viewBox=\"0 0 16 16\"fill=\"none\"> <path d=\"M3.66659 14.6666C3.02214 14.6666 2.47214 14.4389 2.01659 13.9833C1.56103 13.5278 1.33325 12.9778 1.33325 12.3333C1.33325 11.6889 1.56103 11.1389 2.01659 10.6833C2.47214 10.2278 3.02214 9.99998 3.66659 9.99998C3.86659 9.99998 4.06103 10.025 4.24992 10.075C4.43881 10.125 4.61659 10.1944 4.78325 10.2833L7.33325 7.73331V5.89998C6.84436 5.75554 6.44436 5.48054 6.13325 5.07498C5.82214 4.66942 5.66658 4.19998 5.66658 3.66665C5.66658 3.0222 5.89436 2.4722 6.34992 2.01665C6.80547 1.56109 7.35547 1.33331 7.99992 1.33331C8.64436 1.33331 9.19436 1.56109 9.64992 2.01665C10.1055 2.4722 10.3333 3.0222 10.3333 3.66665C10.3333 4.19998 10.1777 4.66942 9.86658 5.07498C9.55547 5.48054 9.15547 5.75554 8.66658 5.89998V7.73331L11.2333 10.2833C11.3999 10.1944 11.5749 10.125 11.7583 10.075C11.9416 10.025 12.1333 9.99998 12.3333 9.99998C12.9777 9.99998 13.5277 10.2278 13.9833 10.6833C14.4388 11.1389 14.6666 11.6889 14.6666 12.3333C14.6666 12.9778 14.4388 13.5278 13.9833 13.9833C13.5277 14.4389 12.9777 14.6666 12.3333 14.6666C11.6888 14.6666 11.1388 14.4389 10.6833 13.9833C10.2277 13.5278 9.99992 12.9778 9.99992 12.3333C9.99992 12.1333 10.0249 11.9389 10.0749 11.75C10.1249 11.5611 10.1944 11.3833 10.2833 11.2166L7.99992 8.93331L5.71659 11.2166C5.80547 11.3833 5.87492 11.5611 5.92492 11.75C5.97492 11.9389 5.99992 12.1333 5.99992 12.3333C5.99992 12.9778 5.77214 13.5278 5.31659 13.9833C4.86103 14.4389 4.31103 14.6666 3.66659 14.6666ZM12.3333 13.3333C12.611 13.3333 12.8471 13.2361 13.0416 13.0416C13.236 12.8472 13.3333 12.6111 13.3333 12.3333C13.3333 12.0555 13.236 11.8194 13.0416 11.625C12.8471 11.4305 12.611 11.3333 12.3333 11.3333C12.0555 11.3333 11.8194 11.4305 11.6249 11.625C11.4305 11.8194 11.3333 12.0555 11.3333 12.3333C11.3333 12.6111 11.4305 12.8472 11.6249 13.0416C11.8194 13.2361 12.0555 13.3333 12.3333 13.3333ZM7.99992 4.66665C8.2777 4.66665 8.51381 4.56942 8.70825 4.37498C8.9027 4.18054 8.99992 3.94442 8.99992 3.66665C8.99992 3.38887 8.9027 3.15276 8.70825 2.95831C8.51381 2.76387 8.2777 2.66665 7.99992 2.66665C7.72214 2.66665 7.48603 2.76387 7.29158 2.95831C7.09714 3.15276 6.99992 3.38887 6.99992 3.66665C6.99992 3.94442 7.09714 4.18054 7.29158 4.37498C7.48603 4.56942 7.72214 4.66665 7.99992 4.66665ZM3.66659 13.3333C3.94436 13.3333 4.18047 13.2361 4.37492 13.0416C4.56936 12.8472 4.66658 12.6111 4.66658 12.3333C4.66658 12.0555 4.56936 11.8194 4.37492 11.625C4.18047 11.4305 3.94436 11.3333 3.66659 11.3333C3.38881 11.3333 3.1527 11.4305 2.95825 11.625C2.76381 11.8194 2.66659 12.0555 2.66659 12.3333C2.66659 12.6111 2.76381 12.8472 2.95825 13.0416C3.1527 13.2361 3.38881 13.3333 3.66659 13.3333Z\"fill=\"#717793\"/> </svg>`,\n 'subrole_icon_white': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12.6668 14C12.2335 14 11.8446 13.875 11.5002 13.625C11.1557 13.375 10.9168 13.0556 10.7835 12.6667H7.3335C6.60016 12.6667 5.97238 12.4056 5.45016 11.8833C4.92794 11.3611 4.66683 10.7333 4.66683 10C4.66683 9.26667 4.92794 8.63889 5.45016 8.11667C5.97238 7.59444 6.60016 7.33333 7.3335 7.33333H8.66683C9.0335 7.33333 9.34738 7.20278 9.6085 6.94167C9.86961 6.68056 10.0002 6.36667 10.0002 6C10.0002 5.63333 9.86961 5.31944 9.6085 5.05833C9.34738 4.79722 9.0335 4.66667 8.66683 4.66667H5.21683C5.07238 5.05556 4.83072 5.375 4.49183 5.625C4.15294 5.875 3.76683 6 3.3335 6C2.77794 6 2.30572 5.80556 1.91683 5.41667C1.52794 5.02778 1.3335 4.55556 1.3335 4C1.3335 3.44444 1.52794 2.97222 1.91683 2.58333C2.30572 2.19444 2.77794 2 3.3335 2C3.76683 2 4.15294 2.125 4.49183 2.375C4.83072 2.625 5.07238 2.94444 5.21683 3.33333H8.66683C9.40016 3.33333 10.0279 3.59444 10.5502 4.11667C11.0724 4.63889 11.3335 5.26667 11.3335 6C11.3335 6.73333 11.0724 7.36111 10.5502 7.88333C10.0279 8.40556 9.40016 8.66667 8.66683 8.66667H7.3335C6.96683 8.66667 6.65294 8.79722 6.39183 9.05833C6.13072 9.31944 6.00016 9.63333 6.00016 10C6.00016 10.3667 6.13072 10.6806 6.39183 10.9417C6.65294 11.2028 6.96683 11.3333 7.3335 11.3333H10.7835C10.9279 10.9444 11.1696 10.625 11.5085 10.375C11.8474 10.125 12.2335 10 12.6668 10C13.2224 10 13.6946 10.1944 14.0835 10.5833C14.4724 10.9722 14.6668 11.4444 14.6668 12C14.6668 12.5556 14.4724 13.0278 14.0835 13.4167C13.6946 13.8056 13.2224 14 12.6668 14ZM3.3335 4.66667C3.52238 4.66667 3.68072 4.60278 3.8085 4.475C3.93627 4.34722 4.00016 4.18889 4.00016 4C4.00016 3.81111 3.93627 3.65278 3.8085 3.525C3.68072 3.39722 3.52238 3.33333 3.3335 3.33333C3.14461 3.33333 2.98627 3.39722 2.8585 3.525C2.73072 3.65278 2.66683 3.81111 2.66683 4C2.66683 4.18889 2.73072 4.34722 2.8585 4.475C2.98627 4.60278 3.14461 4.66667 3.3335 4.66667Z\" fill=\"white\"/>\n</svg>`\n}\n\n ;\n\nexport const Candidate_Section_ICON = {\n 'candidate_name': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M10.0002 5.00004C10.9168 5.00004 11.6668 5.75004 11.6668 6.66671C11.6668 7.58337 10.9168 8.33337 10.0002 8.33337C9.0835 8.33337 8.3335 7.58337 8.3335 6.66671C8.3335 5.75004 9.0835 5.00004 10.0002 5.00004ZM10.0002 13.3334C12.2502 13.3334 14.8335 14.4084 15.0002 15H5.00016C5.19183 14.4 7.7585 13.3334 10.0002 13.3334ZM10.0002 3.33337C8.1585 3.33337 6.66683 4.82504 6.66683 6.66671C6.66683 8.50837 8.1585 10 10.0002 10C11.8418 10 13.3335 8.50837 13.3335 6.66671C13.3335 4.82504 11.8418 3.33337 10.0002 3.33337ZM10.0002 11.6667C7.77516 11.6667 3.3335 12.7834 3.3335 15V16.6667H16.6668V15C16.6668 12.7834 12.2252 11.6667 10.0002 11.6667Z\" fill=\"#37C1CE\"/></svg>`,\n 'candidate_gender': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M13.6624 1.96216V3.21216H15.8893L13.7799 5.34091C13.026 4.77152 12.1072 4.46306 11.1624 4.46216C9.99365 4.46216 8.9024 4.92466 8.07615 5.75153C7.66774 6.15502 7.34349 6.63557 7.1222 7.16533C6.90092 7.69508 6.787 8.26349 6.78706 8.8376C6.78712 9.41171 6.90115 9.9801 7.12254 10.5098C7.34393 11.0395 7.66828 11.52 8.07678 11.9234C8.62053 12.4672 9.26803 12.8578 9.99053 13.0559C10.0618 13.0015 10.1418 12.9447 10.2055 12.8809C10.4675 12.6145 10.6557 12.2845 10.7518 11.9234C10.0713 11.8397 9.43854 11.53 8.9549 11.044C8.3649 10.4547 8.0374 9.67216 8.0374 8.83716C8.0374 8.00216 8.36553 7.22091 8.95615 6.63091C9.5449 6.03903 10.3274 5.71216 11.1624 5.71216C11.9974 5.71216 12.7793 6.04028 13.3687 6.63091C13.6602 6.91957 13.8915 7.26322 14.0492 7.64194C14.2069 8.02066 14.2879 8.42691 14.2874 8.83716C14.2874 9.37778 14.1343 9.88091 13.8774 10.3409C13.9374 10.6634 13.9749 11.0022 13.9749 11.3372C13.9749 11.6492 13.9489 11.9555 13.8968 12.2559C14.0218 12.154 14.133 12.0384 14.2487 11.9234C15.0749 11.0959 15.5374 10.0059 15.5374 8.83716C15.5374 7.88091 15.2224 6.97216 14.6587 6.21966L16.7874 4.11091V6.33716H18.0374V1.96216H13.6624ZM9.83428 7.11841C9.76303 7.17278 9.68303 7.22966 9.61928 7.29341C9.34928 7.56466 9.17303 7.89341 9.07303 8.25153C9.75428 8.33903 10.3762 8.63653 10.8699 9.13028C11.4605 9.71966 11.7887 10.5022 11.7887 11.3365C11.7887 12.1709 11.4605 12.9528 10.8699 13.5428C10.2799 14.1353 9.4974 14.4622 8.6624 14.4622C7.8274 14.4622 7.04553 14.134 6.45615 13.5434C6.16437 13.255 5.93287 12.9113 5.77514 12.5326C5.61741 12.1538 5.53659 11.7475 5.5374 11.3372C5.5374 10.7965 5.69053 10.2934 5.9474 9.83341C5.88536 9.50488 5.85273 9.17148 5.8499 8.83716C5.8499 8.52549 5.87594 8.21924 5.92803 7.91841C5.80303 8.02028 5.6924 8.13591 5.57615 8.25153C4.75115 9.07716 4.2874 10.1684 4.2874 11.3372C4.2874 12.2934 4.6024 13.2022 5.16615 13.9547L4.1124 15.009L2.8624 13.759L1.9624 14.6378L3.2124 15.8878L1.9624 17.1378L2.8624 18.0378L4.1124 16.7878L5.3624 18.0378L6.24053 17.1378L4.99053 15.8878L6.04553 14.834C6.79871 15.4043 7.71769 15.7127 8.6624 15.7122C9.83115 15.7122 10.9224 15.2497 11.7487 14.4228C12.5749 13.5972 13.0374 12.5059 13.0374 11.3372C13.0374 10.1684 12.5749 9.07841 11.748 8.25091C11.2043 7.70716 10.5568 7.31653 9.83428 7.11841Z\" fill=\"#37C1CE\"/></svg>`,\n 'candidate_phonenumber': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M5.45 4.16667C5.5 4.90833 5.625 5.63333 5.825 6.325L4.825 7.325C4.48333 6.325 4.26667 5.26667 4.19167 4.16667H5.45ZM13.6667 14.1833C14.375 14.3833 15.1 14.5083 15.8333 14.5583V15.8C14.7333 15.725 13.675 15.5083 12.6667 15.175L13.6667 14.1833ZM6.25 2.5H3.33333C2.875 2.5 2.5 2.875 2.5 3.33333C2.5 11.1583 8.84167 17.5 16.6667 17.5C17.125 17.5 17.5 17.125 17.5 16.6667V13.7583C17.5 13.3 17.125 12.925 16.6667 12.925C15.6333 12.925 14.625 12.7583 13.6917 12.45C13.6083 12.4167 13.5167 12.4083 13.4333 12.4083C13.2167 12.4083 13.0083 12.4917 12.8417 12.65L11.0083 14.4833C8.65 13.275 6.71667 11.35 5.51667 8.99167L7.35 7.15833C7.58333 6.925 7.65 6.6 7.55833 6.30833C7.25 5.375 7.08333 4.375 7.08333 3.33333C7.08333 2.875 6.70833 2.5 6.25 2.5Z\" fill=\"#37C1CE\"/></svg>`,\n\n 'candidate_email': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M18.3337 5.00004C18.3337 4.08337 17.5837 3.33337 16.667 3.33337H3.33366C2.41699 3.33337 1.66699 4.08337 1.66699 5.00004V15C1.66699 15.9167 2.41699 16.6667 3.33366 16.6667H16.667C17.5837 16.6667 18.3337 15.9167 18.3337 15V5.00004ZM16.667 5.00004L10.0003 9.16671L3.33366 5.00004H16.667ZM16.667 15H3.33366V6.66671L10.0003 10.8334L16.667 6.66671V15Z\" fill=\"#37C1CE\"/></svg>`,\n 'candidate_linkedin': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M4.15243 5.9975C5.15943 5.9975 5.97577 5.18116 5.97577 4.17416C5.97577 3.16716 5.15943 2.35083 4.15243 2.35083C3.14544 2.35083 2.3291 3.16716 2.3291 4.17416C2.3291 5.18116 3.14544 5.9975 4.15243 5.9975Z\" fill=\"#37C1CE\"/>\n <path d=\"M7.69744 7.37915V17.495H10.8383V12.4925C10.8383 11.1725 11.0866 9.89415 12.7233 9.89415C14.3374 9.89415 14.3574 11.4033 14.3574 12.5758V17.4958H17.4999V11.9483C17.4999 9.22332 16.9133 7.12915 13.7283 7.12915C12.1991 7.12915 11.1741 7.96832 10.7549 8.76248H10.7124V7.37915H7.69744ZM2.5791 7.37915H5.72493V17.495H2.5791V7.37915Z\" fill=\"#37C1CE\"/>\n</svg>`,\n\n\n 'candidate_address': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M9.99984 1.66663C6.77484 1.66663 4.1665 4.27496 4.1665 7.49996C4.1665 11.875 9.99984 18.3333 9.99984 18.3333C9.99984 18.3333 15.8332 11.875 15.8332 7.49996C15.8332 4.27496 13.2248 1.66663 9.99984 1.66663ZM5.83317 7.49996C5.83317 5.19996 7.69984 3.33329 9.99984 3.33329C12.2998 3.33329 14.1665 5.19996 14.1665 7.49996C14.1665 9.89996 11.7665 13.4916 9.99984 15.7333C8.2665 13.5083 5.83317 9.87496 5.83317 7.49996Z\" fill=\"#37C1CE\"/><path d=\"M9.99984 9.58329C11.1504 9.58329 12.0832 8.65055 12.0832 7.49996C12.0832 6.34937 11.1504 5.41663 9.99984 5.41663C8.84924 5.41663 7.9165 6.34937 7.9165 7.49996C7.9165 8.65055 8.84924 9.58329 9.99984 9.58329Z\" fill=\"#37C1CE\"/></svg>`,\n 'candidate_experience': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M9.9915 1.66663C5.3915 1.66663 1.6665 5.39996 1.6665 9.99996C1.6665 14.6 5.3915 18.3333 9.9915 18.3333C14.5998 18.3333 18.3332 14.6 18.3332 9.99996C18.3332 5.39996 14.5998 1.66663 9.9915 1.66663ZM9.99984 16.6666C6.3165 16.6666 3.33317 13.6833 3.33317 9.99996C3.33317 6.31663 6.3165 3.33329 9.99984 3.33329C13.6832 3.33329 16.6665 6.31663 16.6665 9.99996C16.6665 13.6833 13.6832 16.6666 9.99984 16.6666ZM10.4165 5.83329H9.1665V10.8333L13.5415 13.4583L14.1665 12.4333L10.4165 10.2083V5.83329Z\" fill=\"#37C1CE\"/></svg>`,\n 'candidate_most_recent': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"><path d=\"M11.6665 5.41671V3.75004H8.33317V5.41671H11.6665ZM3.33317 7.08337V16.25H16.6665V7.08337H3.33317ZM16.6665 5.41671C17.5915 5.41671 18.3332 6.15837 18.3332 7.08337V16.25C18.3332 17.175 17.5915 17.9167 16.6665 17.9167H3.33317C2.40817 17.9167 1.6665 17.175 1.6665 16.25L1.67484 7.08337C1.67484 6.15837 2.40817 5.41671 3.33317 5.41671H6.6665V3.75004C6.6665 2.82504 7.40817 2.08337 8.33317 2.08337H11.6665C12.5915 2.08337 13.3332 2.82504 13.3332 3.75004V5.41671H16.6665Z\" fill=\"#37C1CE\"/></svg>`,\n\n\n}\n\n\nexport const Resume_Tab_icon = {\n 'resume_tab_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M13.7497 0.833374H3.74967C2.83301 0.833374 2.08301 1.58337 2.08301 2.50004V14.1667H3.74967V2.50004H13.7497V0.833374ZM12.9163 4.16671H7.08301C6.16634 4.16671 5.42467 4.91671 5.42467 5.83337L5.41634 17.5C5.41634 18.4167 6.15801 19.1667 7.07467 19.1667H16.2497C17.1663 19.1667 17.9163 18.4167 17.9163 17.5V9.16671L12.9163 4.16671ZM7.08301 17.5V5.83337H12.083V10H16.2497V17.5H7.08301Z\" fill=\"#4B4F62\"/>\n</svg>`,\n 'coversheet_tab_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M11.6663 1.66663H4.99967C4.08301 1.66663 3.34134 2.41663 3.34134 3.33329L3.33301 16.6666C3.33301 17.5833 4.07467 18.3333 4.99134 18.3333H14.9997C15.9163 18.3333 16.6663 17.5833 16.6663 16.6666V6.66663L11.6663 1.66663ZM14.9997 16.6666H4.99967V3.33329H10.833V7.49996H14.9997V16.6666ZM6.66634 12.5083L7.84134 13.6833L9.16634 12.3666V15.8333H10.833V12.3666L12.158 13.6916L13.333 12.5083L10.008 9.16663L6.66634 12.5083Z\" fill=\"#4B4F62\"/>\n</svg>`,\n 'Ai_tools_tab_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M16.2511 6.25L17.0344 4.53333L18.7511 3.75L17.0344 2.96667L16.2511 1.25L15.4678 2.96667L13.7511 3.75L15.4678 4.53333L16.2511 6.25Z\" fill=\"#4B4F62\"/>\n <path d=\"M6.66777 6.25L7.45111 4.53333L9.16777 3.75L7.45111 2.96667L6.66777 1.25L5.88444 2.96667L4.16777 3.75L5.88444 4.53333L6.66777 6.25Z\" fill=\"#4B4F62\"/>\n <path d=\"M16.2511 10.8333L15.4678 12.55L13.7511 13.3333L15.4678 14.1167L16.2511 15.8333L17.0344 14.1167L18.7511 13.3333L17.0344 12.55L16.2511 10.8333Z\" fill=\"#4B4F62\"/>\n <path d=\"M14.3428 8.01667L11.9844 5.65833C11.8178 5.5 11.6094 5.41667 11.3928 5.41667C11.1761 5.41667 10.9678 5.5 10.8011 5.65833L1.49277 14.9667C1.16777 15.2917 1.16777 15.8167 1.49277 16.1417L3.85111 18.5C4.01777 18.6667 4.22611 18.75 4.44277 18.75C4.65944 18.75 4.86777 18.6667 5.03444 18.5083L14.3428 9.2C14.6678 8.875 14.6678 8.34167 14.3428 8.01667ZM11.3928 7.43333L12.5678 8.60833L11.5928 9.58333L10.4178 8.40833L11.3928 7.43333ZM4.44277 16.7417L3.26777 15.5667L9.24277 9.58333L10.4178 10.7583L4.44277 16.7417Z\" fill=\"#4B4F62\"/>\n</svg>`,\n}\nexport const NewResume_Header_Component_ICON = {\n 'add-right_icon_section': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M11.6665 5.41665V3.74998H8.33317V5.41665H11.6665ZM3.33317 7.08331V16.25H16.6665V7.08331H3.33317ZM16.6665 5.41665C17.5915 5.41665 18.3332 6.15831 18.3332 7.08331V16.25C18.3332 17.175 17.5915 17.9166 16.6665 17.9166H3.33317C2.40817 17.9166 1.6665 17.175 1.6665 16.25L1.67484 7.08331C1.67484 6.15831 2.40817 5.41665 3.33317 5.41665H6.6665V3.74998C6.6665 2.82498 7.40817 2.08331 8.33317 2.08331H11.6665C12.5915 2.08331 13.3332 2.82498 13.3332 3.74998V5.41665H16.6665Z\"fill=\"white\"/> </svg>`,\n 'add_left-icon_section': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M15.8332 10.8334H10.8332V15.8334H9.1665V10.8334H4.1665V9.16669H9.1665V4.16669H10.8332V9.16669H15.8332V10.8334Z\"fill=\"white\"/> </svg>`,\n\n 'font_case_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M1 15.6184L5.3216 4.11548H7.39053L11.7041 15.6184H9.71509L8.6942 12.6894H4.0355L2.98879 15.6184H1ZM4.6213 11.0386H8.08284L6.40373 6.27228H6.29882L4.6213 11.0386ZM14.8728 15.8847C13.9675 15.8847 13.2618 15.6495 12.7559 15.1791C12.25 14.7087 11.997 14.0563 11.997 13.222C11.997 12.4409 12.2899 11.8152 12.8757 11.3448C13.4615 10.8744 14.2337 10.6391 15.1923 10.6391C15.5473 10.6391 15.9112 10.6746 16.284 10.7457C16.6568 10.8167 17.0118 10.9143 17.3491 11.0386V10.7989C17.3491 10.2683 17.1709 9.83829 16.8144 9.50882C16.458 9.17953 15.9841 9.01489 15.3928 9.01489C14.9929 9.01489 14.6331 9.09477 14.3136 9.25453C13.9941 9.4143 13.7012 9.66282 13.4349 10.0001L12.2367 9.06814C12.5917 8.58885 13.0488 8.22051 13.608 7.96311C14.1672 7.70572 14.784 7.57702 15.4586 7.57702C16.5947 7.57702 17.4689 7.8566 18.0814 8.41577C18.6938 8.97495 19 9.76045 19 10.7723V15.6184H17.3491V14.6599H17.2692C16.9675 15.0859 16.6213 15.3965 16.2308 15.5918C15.8402 15.7871 15.3876 15.8847 14.8728 15.8847ZM15.154 14.4735C15.7637 14.4735 16.282 14.2649 16.7087 13.8477C17.1357 13.4306 17.3491 12.9309 17.3491 12.3486C17.1006 12.2031 16.821 12.0948 16.5104 12.0238C16.1997 11.9528 15.8691 11.9173 15.5185 11.9173C14.9283 11.9173 14.4822 12.0282 14.1805 12.2501C13.8787 12.472 13.7278 12.7966 13.7278 13.2239C13.7278 13.5954 13.8609 13.8965 14.1272 14.1273C14.3935 14.3581 14.7357 14.4735 15.154 14.4735Z\"fill=\"white\"/> </svg>`,\n 'retry_AI_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M17.9609 8.10742H13.0674V12.8115C13.0673 12.8672 13.0529 12.9137 13.0225 12.9492C12.992 12.9845 12.9521 13.0019 12.9043 13.002H11.9873C11.9398 13.0019 11.9005 12.9842 11.8701 12.9492C11.8396 12.9137 11.8243 12.8672 11.8242 12.8115V7.8584C11.8243 7.83763 11.8277 7.81873 11.832 7.80078V6.55566H15.457C14.8857 5.64188 14.1245 4.91315 13.1748 4.36914C12.2252 3.82499 11.1759 3.55189 10.0273 3.55176C8.23037 3.55176 6.70222 4.17986 5.44434 5.43359C4.18666 6.68726 3.55762 8.20911 3.55762 10C3.55762 11.7909 4.18666 13.3127 5.44434 14.5664C6.70222 15.8201 8.23037 16.4482 10.0273 16.4482C11.7042 16.4481 13.1421 15.8953 14.3398 14.791C15.5376 13.6866 16.2256 12.3276 16.4053 10.7158H18C17.8357 12.7837 16.9945 14.5154 15.4766 15.9092C13.9585 17.3027 12.1418 17.9998 10.0273 18C7.7986 18 5.90273 17.2225 4.3418 15.667C2.78067 14.1114 2.00005 12.2228 2 10.002C2.00001 7.78111 2.78067 5.89175 4.3418 4.33496C5.90273 2.77828 7.79859 2 10.0273 2C11.3478 2.00013 12.5589 2.296 13.6592 2.88672C14.759 3.47763 15.674 4.25894 16.4033 5.23047V2H17.9609V8.10742ZM9.08984 7.66797C9.15921 7.66812 9.21381 7.68911 9.25293 7.72949C9.29203 7.77006 9.31897 7.81831 9.33203 7.87402L10.8887 12.7734C10.893 12.7936 10.8955 12.8166 10.8955 12.8418C10.8954 12.8822 10.8824 12.9207 10.8564 12.9561C10.8304 12.9862 10.7977 13.0018 10.7588 13.002H10.0771C10.0122 13.0019 9.96411 12.9844 9.93359 12.9492C9.90305 12.9137 9.88373 12.8791 9.875 12.8486L9.59277 11.9961H7.74707L7.46484 12.8486C7.45612 12.8791 7.43777 12.9137 7.40723 12.9492C7.37672 12.9846 7.32786 13.0019 7.2627 13.002H6.58203C6.54295 13.0019 6.50949 12.9864 6.4834 12.9561C6.45742 12.9207 6.4444 12.8822 6.44434 12.8418C6.44435 12.8166 6.44685 12.7936 6.45117 12.7734L8.00879 7.87402C8.02189 7.81823 8.04868 7.77008 8.08789 7.72949C8.1271 7.68903 8.18139 7.66802 8.25098 7.66797H9.08984ZM7.98926 11.0127H9.34473L8.66992 8.81836L7.98926 11.0127Z\"fill=\"white\"/> </svg>`,\n 'ordering_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M2.0835 14.1666H3.75016V14.5833H2.91683V15.4166H3.75016V15.8333H2.0835V16.6666H4.5835V13.3333H2.0835V14.1666ZM2.91683 6.66665H3.75016V3.33331H2.0835V4.16665H2.91683V6.66665ZM2.0835 9.16665H3.5835L2.0835 10.9166V11.6666H4.5835V10.8333H3.0835L4.5835 9.08331V8.33331H2.0835V9.16665ZM6.25016 4.16665V5.83331H17.9168V4.16665H6.25016ZM6.25016 15.8333H17.9168V14.1666H6.25016V15.8333ZM6.25016 10.8333H17.9168V9.16665H6.25016V10.8333Z\"fill=\"white\"/> </svg>`,\n 'collapse_icon': `<svg xmlns=\"http://www.w3.org/2000/svg\"width=\"20\"height=\"20\"viewBox=\"0 0 20 20\"fill=\"none\"> <path d=\"M6.66683 15.8333H9.16683V19.1666H10.8335V15.8333H13.3335L10.0002 12.5L6.66683 15.8333ZM13.3335 4.16665H10.8335V0.833313H9.16683V4.16665H6.66683L10.0002 7.49998L13.3335 4.16665ZM3.3335 9.16665V10.8333H16.6668V9.16665H3.3335Z\"fill=\"white\"/> </svg>`,\n 'add_education_icon': `<svg width=\"19\" height=\"15\" viewBox=\"0 0 19 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.16667 0L0 5L3.33333 6.81667V11.8167L9.16667 15L15 11.8167V6.81667L16.6667 5.90833V11.6667H18.3333V5L9.16667 0ZM14.85 5L9.16667 8.1L3.48333 5L9.16667 1.9L14.85 5ZM13.3333 10.825L9.16667 13.1L5 10.825V7.725L9.16667 10L13.3333 7.725V10.825Z\" fill=\"white\"/>\n</svg>`\n}\n\n\n/**\n * Gets an icon from Candidate_Section_ICON and converts it to a data URL format\n * that can be used with the field-placeholder component.\n *\n * @param iconKey - The key from Candidate_Section_ICON (e.g., 'candidate_name', 'candidate_email')\n * @returns A data URL string for the SVG icon, or undefined if the key doesn't exist\n *\n * @example\n * getIconCandidateSection('candidate_name') // Returns 'data:image/svg+xml;charset=utf-8,...'\n */\nexport function getIconCandidateSection(iconKey: keyof typeof Candidate_Section_ICON): string | undefined {\n const svgString = Candidate_Section_ICON[iconKey];\n\n if (!svgString) {\n return undefined;\n }\n\n // Convert SVG string to data URL\n const encodedSvg = encodeURIComponent(svgString);\n return `data:image/svg+xml;charset=utf-8,${encodedSvg}`;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, OnInit, OnDestroy, AfterViewInit, OnChanges, SimpleChanges, ChangeDetectorRef, ViewChild, ElementRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { GeneralContainerComponent } from '../general-container/general-container.component';\nimport { ResponsiveColumnsComponent } from '../responsive-columns/responsive-columns.component';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport { ButtonComponent } from '../button/button.component';\nimport { EyeIconConfig, HeaderButton } from '../resume-header/resume-header.model';\nimport { LEFT_AND_RIGHT_ICON_CONSTANTS, NewResume_Header_Component_ICON } from '../utils/image-utils';\n// import { expandCollapse } from '../utils/animations';\n\n// Embedded SVG icons - using the same SVG provided by user for visibility_off\n// For visibility (open eye), we'll use a similar eye icon\nconst VISIBILITY_ICON_SVG = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"15\" viewBox=\"0 0 22 15\" fill=\"none\">\n <path d=\"M11 2C14.79 2 18.17 4.13 19.82 7.5C18.17 10.87 14.79 13 11 13C7.21 13 3.83 10.87 2.18 7.5C3.83 4.13 7.21 2 11 2ZM11 0C6 0 1.73 3.11 0 7.5C1.73 11.89 6 15 11 15C16 15 20.27 11.89 22 7.5C20.27 3.11 16 0 11 0ZM11 5C12.38 5 13.5 6.12 13.5 7.5C13.5 8.88 12.38 10 11 10C9.62 10 8.5 8.88 8.5 7.5C8.5 6.12 9.62 5 11 5ZM11 3C8.52 3 6.5 5.02 6.5 7.5C6.5 9.98 8.52 12 11 12C13.48 12 15.5 9.98 15.5 7.5C15.5 5.02 13.48 3 11 3Z\" fill=\"#717793\"/>\n</svg>`;\n\nconst VISIBILITY_OFF_ICON_SVG = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M11.6656 5.80832C15.3498 5.80832 18.6354 7.87886 20.2393 11.1548C19.6658 12.3407 18.859 13.3614 17.8966 14.1877L19.2673 15.5583C20.6185 14.3627 21.6878 12.8656 22.3585 11.1548C20.6768 6.88733 16.526 3.86415 11.6656 3.86415C10.431 3.86415 9.24508 4.05857 8.12719 4.41824L9.73113 6.02218C10.363 5.8958 11.0046 5.80832 11.6656 5.80832ZM10.6254 6.91649L12.6377 8.92871C13.1917 9.17173 13.6389 9.61888 13.8819 10.173L15.8941 12.1852C15.9719 11.8547 16.0302 11.5047 16.0302 11.1451C16.0399 8.73429 14.0763 6.7804 11.6656 6.7804C11.3059 6.7804 10.9657 6.829 10.6254 6.91649ZM1.95446 3.73778L4.55964 6.34296C2.97515 7.58723 1.72116 9.23977 0.972656 11.1548C2.65436 15.4222 6.80516 18.4454 11.6656 18.4454C13.1431 18.4454 14.5624 18.1635 15.865 17.6483L19.1895 20.9728L20.5601 19.6022L3.3251 2.35742L1.95446 3.73778ZM9.24509 11.0284L11.7822 13.5655C11.7433 13.5753 11.7045 13.585 11.6656 13.585C10.3241 13.585 9.23536 12.4963 9.23536 11.1548C9.23536 11.1062 9.24509 11.077 9.24509 11.0284ZM5.94 7.72332L7.64115 9.42447C7.41757 9.95911 7.2912 10.5424 7.2912 11.1548C7.2912 13.5655 9.25481 15.5292 11.6656 15.5292C12.278 15.5292 12.8612 15.4028 13.3862 15.1792L14.3388 16.1318C13.4834 16.3651 12.5891 16.5012 11.6656 16.5012C7.98138 16.5012 4.69574 14.4307 3.0918 11.1548C3.77226 9.7647 4.76378 8.61764 5.94 7.72332Z\" fill=\"#717793\"/>\n</svg>`;\n\n// Static flag to ensure icons are registered only once\nlet iconsRegistered = false;\n\n@Component({\n selector: 'al-newresumeheader',\n templateUrl: './newresumeheader.component.html',\n styleUrl: './newresumeheader.component.scss',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CdkAccordionModule,\n MatIconModule,\n MatTooltipModule,\n GeneralContainerComponent,\n ResponsiveColumnsComponent,\n CheckboxModule,\n ButtonComponent\n ],\n // animations: [expandCollapse]\n})\nexport class NewResumeHeaderComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n // Add your component properties here\n @Input() title: string = '';\n @Input() showHeaderCheckbox: boolean = true;\n @Input() headerCheckboxChecked: boolean = false;\n @Input() configEyeToggle: EyeIconConfig[] = [];\n @Input() hiddenSection: { headerSectionHidden: boolean } = { headerSectionHidden: false };\n\n /**\n * Whether the section is currently hidden.\n *\n * Priority:\n * 1. If any EyeIconConfig with canToggle is provided, use its `isHidden` flag\n * as the source of truth. This lets callers drive the state via configEyeToggle.\n * 2. Otherwise, fall back to `hiddenSection.headerSectionHidden` for backward compatibility.\n */\n get isSectionHidden(): boolean {\n if (this.configEyeToggle && this.configEyeToggle.length) {\n // First check for any config with isHidden === true (handles manual setting)\n const hiddenConfig = this.configEyeToggle.find(cfg => cfg && cfg.isHidden === true);\n if (hiddenConfig) {\n return true;\n }\n // Also check for canToggle === true configs for backward compatibility\n const toggleConfig = this.configEyeToggle.find(cfg => cfg && cfg.canToggle === true);\n if (toggleConfig) {\n return toggleConfig.isHidden === true;\n }\n }\n return this.hiddenSection?.headerSectionHidden === true;\n }\n @Input() buttonConfig: HeaderButton[] = [];\n @Input() isLargeScreen: boolean = true;\n private resizeListener?: () => void;\n @Input() popOutButtonLabel: string = 'Run Deep Extraction';\n @Input() popOutButtonIcon: string = 'auto_fix_high';\n @Input() popOutButtonTooltip: string = 'Deep Extraction';\n @Input() popOutButtonTooltipPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n @Input() showPopOutPanel: boolean = false;\n @Input() popOutMessage: string = 'Takes a little longer, but deals with tricky resumes much better than fast extraction.';\n @Input() dataTestId?: string;\n\n // Computed property for pop-out visibility\n get shouldShowPopOut(): boolean {\n return this.showPopOutPanel && !this.isPopOutDismissed;\n }\n\n /**\n * Combined state for expand/collapse animation.\n * Returns true when the accordion body should be expanded and visible.\n * Returns false when collapsed (accordion) or hidden (eye icon).\n * This is used by the expandCollapse animation trigger.\n */\n // get isBodyExpanded(): boolean {\n // return this._isAccordionExpanded && !this.isSectionHidden;\n // }\n\n /**\n * Reference to the accordion item instance from ViewChild.\n * Used to track the accordion expansion state for animations.\n */\n // @ViewChild('accordionItem', { static: true }) accordionItem: any;\n\n /**\n * Local tracking of accordion expanded state for animation.\n * This is the single source of truth for the animation state.\n * Made public for template access (chevron icon, aria attributes).\n */\n _isAccordionExpanded: boolean = true;\n @Output() titleChange = new EventEmitter<string>();\n @Output() sectionToggled = new EventEmitter<boolean>();\n @Output() headerCheckboxChange = new EventEmitter<boolean>();\n @Output() showHideToggleSection = new EventEmitter<{ isHidden: boolean; accordionItem?: any; config: EyeIconConfig }>();\n @Output() buttonClicked = new EventEmitter<HeaderButton>();\n @Output() popOutButtonClick = new EventEmitter<void>();\n\n isTitleEditing: boolean = false;\n editedTitle: string = '';\n isInputFocused: boolean = false;\n isMenuVisible: boolean = false;\n isPopOutDismissed: boolean = false;\n isPopOutNarrow: boolean = false; // Track if pop-out panel is ≤ 440px\n private clickOutsideListener?: (event: Event) => void;\n private resizeObserver?: ResizeObserver;\n private popOutResizeObserver?: ResizeObserver;\n @ViewChild('titleInput') titleInput?: ElementRef<HTMLInputElement>;\n @ViewChild('accordionHeader', { read: ElementRef }) accordionHeader?: ElementRef<HTMLElement>;\n @ViewChild('generalContainer', { read: ElementRef }) generalContainer?: ElementRef<HTMLElement>;\n @ViewChild('popOutPanel', { read: ElementRef }) popOutPanel?: ElementRef<HTMLElement>;\n\n constructor(\n private sanitizer: DomSanitizer,\n private cdr: ChangeDetectorRef,\n private iconRegistry: MatIconRegistry\n ) {\n // Register icons synchronously - this must happen before template rendering\n this.registerIcons();\n }\n\n private registerIcons(): void {\n try {\n // Always register icons - MatIconRegistry handles duplicates gracefully\n // This ensures icons are available even if registration happened in a different component instance\n this.iconRegistry.addSvgIconLiteral(\n 'visibility',\n this.sanitizer.bypassSecurityTrustHtml(VISIBILITY_ICON_SVG)\n );\n this.iconRegistry.addSvgIconLiteral(\n 'visibility_off',\n this.sanitizer.bypassSecurityTrustHtml(VISIBILITY_OFF_ICON_SVG)\n );\n // Register edit icon from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'edit_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['edit_icon'])\n );\n // Register add left and right icons from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'add_left-icon_section',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['add_left-icon_section'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'add-right_icon_section',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['add-right_icon_section'])\n );\n // Register font_case_icon from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'font_case_icon',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['font_case_icon'])\n );\n\n this.iconRegistry.addSvgIconLiteral(\n 'retry_AI_icon',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['retry_AI_icon'])\n );\n // Register ordering_icon from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'ordering_icon',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['ordering_icon'])\n );\n // Register collapse_icon from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'collapse_icon',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['collapse_icon'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'add_education_icon',\n this.sanitizer.bypassSecurityTrustHtml(NewResume_Header_Component_ICON['add_education_icon'])\n );\n\n\n if (!iconsRegistered) {\n iconsRegistered = true;\n console.log('Visibility icons registered successfully');\n }\n } catch (error) {\n console.error('Failed to register new resume header icons:', error);\n }\n }\n\n // toggleAccordion(accordionItem: any) {\n // // Update local state first - this triggers the animation\n // this._isAccordionExpanded = !this._isAccordionExpanded;\n\n // // Sync with cdk-accordion-item\n // if (this._isAccordionExpanded) {\n // accordionItem.open();\n // } else {\n // accordionItem.close();\n // }\n\n // this.sectionToggled.emit(this._isAccordionExpanded);\n // // Trigger change detection to ensure animation updates\n // this.cdr.detectChanges();\n // }\n\n toggleAccordion(accordionItem: any) {\n accordionItem.toggle();\n this.sectionToggled.emit(accordionItem.expanded);\n }\n\n /**\n * Handles clicks on the eye icon.\n *\n * - Toggles the isHidden flag on the corresponding EyeIconConfig (if canToggle is true)\n * - Keeps hiddenSection.headerSectionHidden in sync for backwards compatibility\n * - When showing a hidden section, also expands the accordion for smooth animation\n * - Emits the showHideToggleSection event with the *new* isHidden state\n */\n onEyeIconClick(\n currentHidden: boolean,\n accordionItem: any,\n config: EyeIconConfig\n ): void {\n const nextHidden = !currentHidden;\n\n // Update the matching config in the local array so isSectionHidden reflects the new state\n // Create a new array to ensure Angular's change detection picks up the change\n if (this.configEyeToggle && config) {\n const idx = this.configEyeToggle.indexOf(config);\n if (idx !== -1 && this.configEyeToggle[idx].canToggle) {\n // Create new array and new object to trigger change detection\n // this.configEyeToggle = [\n // ...this.configEyeToggle.slice(0, idx),\n // { ...this.configEyeToggle[idx], isHidden: nextHidden },\n // ...this.configEyeToggle.slice(idx + 1)\n // ];\n this.configEyeToggle[idx] = {\n ...this.configEyeToggle[idx],\n isHidden: nextHidden,\n };\n }\n }\n\n // Keep legacy hiddenSection flag in sync\n this.hiddenSection = {\n headerSectionHidden: nextHidden,\n };\n\n // Note: We do NOT change the accordion expansion state when toggling visibility.\n // The accordion remains in its current state - only visibility changes.\n // This maintains a single source of truth for each state.\n\n this.showHideToggleSection.emit({\n isHidden: nextHidden,\n accordionItem,\n config,\n });\n\n // Mark for check to ensure child components receive the updated state\n // This is critical for resume-entries to update its is-hidden class\n this.cdr.markForCheck();\n }\n\n onHeaderCheckboxChange(checked: boolean) {\n this.headerCheckboxChecked = checked;\n this.headerCheckboxChange.emit(checked);\n }\n\n /**\n * Resolves the left and right icon names for a button based on its configuration.\n * This centralizes all icon mapping logic, making it easier to maintain.\n *\n * @param btn - The HeaderButton configuration\n * @returns An object with leftIcon and rightIcon properties\n */\n getButtonIcons(btn: HeaderButton): { leftIcon: string | null | undefined; rightIcon: string | null | undefined } {\n // Check if this is an \"add\" button that should use special icons\n // const isAddButton = btn.leftIcon === 'add' || btn.dataTestId === 'add-education-button';\n\n // if (isAddButton) {\n // return {\n // leftIcon: 'add_left-icon_section',\n // rightIcon: 'add-right_icon_section'\n // };\n // }\n\n // Check if this is a \"menu\" button - keep the menu icon as is\n if (btn.leftIcon === 'font_case_icon') {\n return {\n leftIcon: 'font_case_icon',\n rightIcon: btn.rightIcon\n };\n }\n\n // Return the button's original icon configuration\n return {\n leftIcon: btn.leftIcon,\n rightIcon: btn.rightIcon\n };\n }\n\n /**\n * Gets the tooltip text for a button based on its configuration.\n * Tooltips follow title case (e.g., \"Menu\", \"Add Section\").\n *\n * @param btn - The HeaderButton configuration\n * @returns The tooltip text or undefined\n */\n // getButtonTooltip(btn: HeaderButton): string | undefined {\n // // Check if this is an \"add\" button that should have a specific tooltip\n // const isAddButton = btn.leftIcon === 'add' || btn.dataTestId === 'add-education-button';\n\n // if (isAddButton) {\n // return 'Add Section';\n // }\n\n // // Check if this is a \"font_case_icon\" button\n // if (btn.leftIcon === 'font_case_icon') {\n // return 'Font Case';\n // }\n\n // // Check if this is a \"retry_AI_icon\" button\n // if (btn.leftIcon === 'retry_AI_icon' || btn.dataTestId === 'refresh-button') {\n // return 'Retry initial Extraction';\n // }\n\n // // Check if this is a \"collapse_icon\" button\n // if (btn.leftIcon === 'collapse_icon' || btn.dataTestId === 'collapse-button') {\n // return 'Collapse Description';\n // }\n\n // // Check if this is an \"ordering_icon\" button\n // if (btn.leftIcon === 'ordering_icon') {\n // return 'Education Ordering';\n // }\n\n // // Check if this is the \"Run Deep Extraction\" button\n // if (btn.dataTestId === 'header-run-deep-extraction') {\n // return 'Deep Extraction';\n // }\n\n // return undefined;\n // }\n\n onButtonClick(btn: HeaderButton, event: Event) {\n // If button has a custom onClick handler, call it\n if (btn.onClick) {\n btn.onClick(event);\n }\n\n // Special case: Deep Extraction header button (identified by dataTestId)\n if (btn.dataTestId === 'header-run-deep-extraction') {\n this.popOutButtonClick.emit();\n }\n\n // If button doesn't have dropdown, emit the buttonClicked event\n if (!btn.hasDropDown) {\n this.buttonClicked.emit(btn);\n }\n }\n\n onDropdownSelect(btn: HeaderButton, value: any) {\n if (btn.hasDropDown && btn.dropdownItems) {\n // Find the selected option\n const selectedOption = btn.dropdownItems.find((item) => {\n return item.value === value || item.label === value;\n });\n\n // If the option has a custom function, call it\n if (selectedOption?.function) {\n selectedOption.function();\n }\n\n // Always emit the buttonClicked event for tracking\n this.buttonClicked.emit(btn);\n }\n }\n\n onTitleClick() {\n if (!this.isTitleEditing) {\n this.isTitleEditing = true;\n this.editedTitle = this.title;\n // Focus the input after view update\n setTimeout(() => {\n this.titleInput?.nativeElement?.focus();\n this.titleInput?.nativeElement?.select();\n }, 0);\n }\n }\n\n onTitleFocus() {\n this.isInputFocused = true;\n }\n\n onTitleBlur() {\n this.isInputFocused = false;\n this.saveTitle();\n }\n\n onTitleKeyPress(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.saveTitle();\n } else if (event.key === 'Escape') {\n this.cancelTitleEdit();\n }\n }\n\n saveTitle() {\n if (this.isTitleEditing) {\n this.title = this.editedTitle;\n this.titleChange.emit(this.title);\n this.isTitleEditing = false;\n }\n }\n\n cancelTitleEdit() {\n this.editedTitle = this.title;\n this.isTitleEditing = false;\n }\n\n toggleMenu() {\n this.isMenuVisible = !this.isMenuVisible;\n }\n\n handleClickOutside(event: Event) {\n const target = event.target as HTMLElement;\n if (!target.closest('.hover-menu-container') && !target.closest('.slide-out-panel')) {\n this.isMenuVisible = false;\n }\n }\n\n ngOnInit(): void {\n // Initialize component\n this.editedTitle = this.title;\n // Ensure hiddenSection is properly initialized\n if (!this.hiddenSection) {\n this.hiddenSection = { headerSectionHidden: false };\n }\n // Check screen size and set up resize listener\n this.checkScreenSize();\n this.resizeListener = () => this.checkScreenSize();\n window.addEventListener('resize', this.resizeListener);\n // Add click outside listener to close menu on small screens\n this.clickOutsideListener = (event: Event) => this.handleClickOutside(event);\n document.addEventListener('click', this.clickOutsideListener);\n }\n\n private checkScreenSize() {\n // Check container width only - ignore window width\n let containerWidth = 0;\n\n // Try to get container width from general container first, then fallback to header\n if (this.generalContainer?.nativeElement) {\n containerWidth = this.generalContainer.nativeElement.offsetWidth ||\n (this.generalContainer.nativeElement as any).clientWidth || 0;\n } else if (this.accordionHeader?.nativeElement) {\n containerWidth = this.accordionHeader.nativeElement.offsetWidth ||\n this.accordionHeader.nativeElement.clientWidth || 0;\n }\n\n // Set isLargeScreen to true only if container is >= 500px\n this.isLargeScreen = containerWidth >= 500;\n\n // Close menu when screen becomes large\n if (this.isLargeScreen) {\n this.isMenuVisible = false;\n }\n }\n\n private checkPopOutSize() {\n // Check pop-out panel width\n if (this.popOutPanel?.nativeElement) {\n const popOutWidth = this.popOutPanel.nativeElement.offsetWidth ||\n this.popOutPanel.nativeElement.clientWidth || 0;\n this.isPopOutNarrow = popOutWidth <= 440;\n this.cdr.detectChanges();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Trigger change detection when configEyeToggle changes to update icon\n if (changes['configEyeToggle']) {\n // Ensure icons are registered before change detection\n this.registerIcons();\n // Force change detection to update the view when configEyeToggle changes\n setTimeout(() => {\n this.cdr.detectChanges();\n }, 0);\n }\n // Reset dismissed flag when showPopOutPanel changes to true\n if (changes['showPopOutPanel'] && this.showPopOutPanel) {\n this.isPopOutDismissed = false;\n // Setup ResizeObserver for pop-out panel when it becomes visible\n setTimeout(() => {\n if (this.popOutPanel?.nativeElement && !this.popOutResizeObserver) {\n this.checkPopOutSize();\n this.popOutResizeObserver = new ResizeObserver(() => {\n this.checkPopOutSize();\n });\n this.popOutResizeObserver.observe(this.popOutPanel.nativeElement);\n }\n }, 0);\n }\n // Close menu when isLargeScreen becomes true (large screen)\n if (changes['isLargeScreen'] && this.isLargeScreen) {\n this.isMenuVisible = false;\n }\n // Ensure hiddenSection is properly initialized\n if (changes['hiddenSection']) {\n if (!this.hiddenSection) {\n this.hiddenSection = { headerSectionHidden: false };\n }\n // Force change detection to update the view\n this.cdr.detectChanges();\n }\n }\n\n dismissPopOut() {\n // Hide the panel by setting dismissed flag\n this.isPopOutDismissed = true;\n }\n\n get sanitizedMessage(): SafeHtml {\n const message = this.popOutMessage || 'Takes a little longer, but deals with tricky resumes much better than fast extraction.';\n // Replace \"Click here\" with a styled link and add line break before it\n const processedMessage = message.replace(\n /Click here/g,\n '<br><a href=\"#\" class=\"pop-out-link\">Click here</a>'\n );\n return this.sanitizer.bypassSecurityTrustHtml(processedMessage);\n }\n\n ngAfterViewInit(): void {\n // Sync initial accordion state from the ViewChild reference\n // Note: cdk-accordion-item starts with expanded=true from template\n // Our local state should match this initial value\n // this._isAccordionExpanded = true;\n // Ensure icons are registered after view init\n this.registerIcons();\n // Force change detection to ensure icon renders\n setTimeout(() => {\n this.cdr.detectChanges();\n\n // Initial check after view init\n this.checkScreenSize();\n this.cdr.detectChanges();\n\n // Setup ResizeObserver to watch container size\n // Try general container first, then fallback to header\n const elementToObserve = this.generalContainer?.nativeElement ||\n this.accordionHeader?.nativeElement;\n\n if (elementToObserve) {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkScreenSize();\n this.cdr.detectChanges();\n });\n this.resizeObserver.observe(elementToObserve);\n }\n\n // Setup ResizeObserver to watch pop-out panel size\n if (this.popOutPanel?.nativeElement) {\n this.checkPopOutSize();\n this.popOutResizeObserver = new ResizeObserver(() => {\n this.checkPopOutSize();\n });\n this.popOutResizeObserver.observe(this.popOutPanel.nativeElement);\n }\n }, 0);\n }\n\n ngOnDestroy(): void {\n // Cleanup\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n }\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n if (this.popOutResizeObserver) {\n this.popOutResizeObserver.disconnect();\n }\n if (this.clickOutsideListener) {\n document.removeEventListener('click', this.clickOutsideListener);\n }\n }\n}\n\n","<al-general-container #generalContainer [borderRadius]=\"'0'\" [borderPosition]=\"'none'\" [boxShadow]=\"false\"\n [padding]=\"'0'\" [width]=\"'100%'\"><cdk-accordion class=\"example-accordion\"><cdk-accordion-item\n #accordionItem=\"cdkAccordionItem\" [expanded]=\"true\" class=\"example-accordion-item\">\n <div class=\"example-accordion-item-header\" #accordionHeader\n [ngClass]=\"{'header-hidden': isSectionHidden, 'header-with-bottom-margin': !showPopOutPanel}\">\n <!-- Normal header layout (shows when section is NOT hidden) --><ng-container\n *ngIf=\"!isSectionHidden; else hiddenHeaderLayout\"><al-responsive-columns [stackAt]=\"0\" [gap]=\"'12px'\"\n [padding]=\"'8px 12px'\">\n <div left>\n <button (click)=\"toggleAccordion(accordionItem)\" tabindex=\"0\" class=\"toggle-button align-center\"\n [attr.aria-expanded]=\"accordionItem.expanded\"\n [matTooltip]=\"accordionItem.expanded ? 'Collapse' : 'Expand'\" matTooltipPosition=\"above\">\n <!-- When section is OPEN (expanded === true), show an UP chevron.\n When section is CLOSED, show a DOWN chevron. -->\n <span class=\"material-icons-outlined\" *ngIf=\"accordionItem.expanded\">\n expand_less\n </span>\n <span class=\"material-icons-outlined\" *ngIf=\"!accordionItem.expanded\">\n expand_more\n </span>\n </button>\n <ng-content select=\"[header-left]\"></ng-content>\n </div>\n <div center><al-responsive-columns [stackAt]=\"0\" [gap]=\"'12px'\" [padding]=\"'0'\" [leftWidth]=\"'auto'\"\n [rightWidth]=\"'32px'\" [ngClass]=\"{'input-focused': isInputFocused}\">\n <div left>\n <div class=\"edit-input-group\" [ngClass]=\"{'input-focused': isInputFocused}\">\n <div class=\"content_width\"><span *ngIf=\"!isTitleEditing\" class=\"title-text\"\n (click)=\"onTitleClick()\">\n {{ title || 'Click to edit' }}\n </span><input *ngIf=\"isTitleEditing\" #titleInput type=\"text\" [(ngModel)]=\"editedTitle\"\n (focus)=\"onTitleFocus()\" (blur)=\"onTitleBlur()\" (keydown)=\"onTitleKeyPress($event)\"\n class=\"title-input onfocus-input-text\" /><ng-content select=\"[header-center-left]\"></ng-content>\n </div><mat-icon class=\"edit-icon\" svgIcon=\"edit_icon\" matTooltip=\"Edit title\"\n matTooltipPosition=\"above\" (click)=\"onTitleClick()\"></mat-icon>\n </div>\n </div>\n <div center><ng-content select=\"[header-center-center]\"></ng-content>\n <!-- Header buttons for large screens (including Deep Extraction via buttonConfig) --><ng-container\n *ngIf=\"isLargeScreen\"><ng-container\n *ngTemplateOutlet=\"headerButtonsTemplate; context: { buttons: buttonConfig }\"></ng-container></ng-container>\n <!-- Menu trigger and slide-out panel for small screens only -->\n <div class=\"hover-menu-container\" *ngIf=\"!isLargeScreen\">\n <div class=\"menu-trigger\" (click)=\"toggleMenu()\"><al-button buttonType=\"icon-label\" iconOnly\n size=\"header\" category=\"grey\" leftIcon=\"more_vert\" aria-label=\"More options\"\n [dataTestId]=\"'resume-header-more-menu'\"></al-button></div>\n <div class=\"slide-out-panel\" [class.visible]=\"isMenuVisible\">\n <div class=\"fit-panel\"><ng-container\n *ngTemplateOutlet=\"headerButtonsTemplate; context: { buttons: buttonConfig }\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n <div right><ng-content select=\"[header-center-right]\"></ng-content>\n <!-- Eye icon - uses actual isHidden value from config, always visible --><ng-container\n *ngIf=\"configEyeToggle && configEyeToggle.length > 0\"><ng-container\n *ngFor=\"let eyeConfig of configEyeToggle\"><ng-container *ngIf=\"eyeConfig\"><ng-container\n *ngTemplateOutlet=\"eyeIconTemplate; context: { isHidden: eyeConfig.isHidden === true, accordionItem: accordionItem, configEyeToggle: eyeConfig }\"></ng-container></ng-container></ng-container></ng-container>\n </div>\n </al-responsive-columns></div>\n <div right><al-checkbox *ngIf=\"showHeaderCheckbox\" [checked]=\"headerCheckboxChecked\" [showLabels]=\"false\"\n (change)=\"onHeaderCheckboxChange($event)\"></al-checkbox><ng-content\n select=\"[header-right]\"></ng-content></div>\n </al-responsive-columns></ng-container>\n <!-- Hidden header layout (shows when section IS hidden) --><ng-template\n #hiddenHeaderLayout><al-responsive-columns [stackAt]=\"0\" [gap]=\"'12px'\" [padding]=\"'8px 12px'\">\n <div left>\n <!-- Toggle button hidden when section is hidden --><ng-content select=\"[header-left]\"></ng-content>\n </div>\n <div center><al-responsive-columns [stackAt]=\"0\" [gap]=\"'12px'\" [padding]=\"'0'\" [leftWidth]=\"'auto'\"\n [rightWidth]=\"'32px'\">\n <div left>\n <div class=\"edit-input-group hide-header-title\">\n <div class=\"content_width\"><span class=\"title-text header-text-turncate\">\n {{ title }}\n </span></div>\n </div>\n </div>\n <div center>\n <div class=\"hidden-write\">Section hidden</div>\n </div>\n <div right><ng-content select=\"[header-center-right]\"></ng-content>\n <!-- Eye icon - uses actual isHidden value from config, always visible --><ng-container\n *ngIf=\"configEyeToggle && configEyeToggle.length > 0\"><ng-container\n *ngFor=\"let eyeConfig of configEyeToggle\"><ng-container *ngIf=\"eyeConfig\"><ng-container\n *ngTemplateOutlet=\"eyeIconTemplate; context: { isHidden: eyeConfig.isHidden === true, accordionItem: accordionItem, configEyeToggle: eyeConfig }\"></ng-container></ng-container></ng-container></ng-container>\n </div>\n </al-responsive-columns></div>\n <div right>\n <!-- Checkbox hidden when section is hidden --><ng-content select=\"[header-right]\"></ng-content>\n </div>\n </al-responsive-columns></ng-template>\n </div>\n <!-- Accordion body with expand/collapse animation -->\n <div class=\"example-accordion-item-body-wrapper\">\n <div class=\"example-accordion-item-body\" *ngIf=\"accordionItem.expanded && !isSectionHidden\">\n <!-- Pop-out Panel -->\n <div *ngIf=\"shouldShowPopOut\" #popOutPanel class=\"pop-out-panel\"\n [ngClass]=\"{'pop-out-narrow': isPopOutNarrow}\">\n <div class=\"pop-out-content\">\n <al-button [labelText]=\"popOutButtonLabel\" [rightIcon]=\"popOutButtonIcon\" [buttonType]=\"'icon-label'\"\n [category]=\"'gradient'\" [size]=\"'xs'\" [iconOnly]=\"false\" (onClick)=\"popOutButtonClick.emit()\"\n [dataTestId]=\"'pop-out-run-deep-extraction'\" [title]=\"popOutButtonLabel\"></al-button>\n <p class=\"pop-out-message\" [innerHTML]=\"sanitizedMessage\"></p>\n <button type=\"button\" class=\"pop-out-close\" (click)=\"dismissPopOut()\"\n aria-label=\"Close pop-out panel\"><span class=\"material-icons-outlined\">close</span></button>\n </div>\n </div>\n <!-- Single body content slot - child component will handle 3-column layout internally -->\n <ng-content></ng-content>\n </div>\n </div>\n </cdk-accordion-item></cdk-accordion></al-general-container><ng-template #headerButtonsTemplate\n let-buttons=\"buttons\" let-handleClick=\"handleClick\"><ng-container *ngFor=\"let btn of buttonConfig\"><al-button\n *ngIf=\"!btn.displayCondition || btn.displayCondition()\" [color]=\"btn.color\" [outline]=\"btn.outline\"\n [size]=\"btn.size\" [iconOutlined]=\"btn.iconOutlined\" [labelText]=\"btn.labelText\"\n [leftIcon]=\"getButtonIcons(btn).leftIcon\" [rightIcon]=\"getButtonIcons(btn).rightIcon\"\n [dataTestId]=\"btn.dataTestId\" [hasDropDown]=\"btn.hasDropDown\" [dropdownItems]=\"btn.dropdownItems\"\n [buttonType]=\"'icon-label'\" [iconOnly]=\"!btn.labelText\" [tooltip]=\"btn.tooltip\"\n [tooltipPosition]=\"btn.tooltipPosition || 'above'\" (onClick)=\"onButtonClick(btn, $event)\"\n (optionSelect)=\"onDropdownSelect(btn, $event)\"></al-button></ng-container></ng-template><ng-template\n #eyeIconTemplate let-isHidden=\"isHidden\" let-accordionItem=\"accordionItem\" let-configEyeToggle=\"configEyeToggle\">\n <div class=\"mat-checkbox-margin align-center\"\n [attr.data-test-id]=\"isHidden ? 'section-show-eye-div' : 'section-hide-eye-div'\"\n style=\"display: flex; align-items: center; justify-content: center;\"><mat-icon\n class=\"delete-multiple mat-fab.mat-accent eye-icon\" [svgIcon]=\"isHidden ? 'visibility' : 'visibility_off'\"\n [matTooltip]=\"configEyeToggle?.tooltips?.[isHidden ? 'collapse' : 'expand'] || (isHidden ? 'Show Section' : 'Hide Section')\"\n [matTooltipPosition]=\"configEyeToggle?.tooltips?.position || 'above'\"\n [attr.aria-label]=\"configEyeToggle?.ariaLabels?.[isHidden ? 'collapsed' : 'expanded'] || (isHidden ? 'Show section' : 'Hide section')\"\n (click)=\"onEyeIconClick(isHidden, accordionItem, configEyeToggle)\"\n [attr.data-test-id]=\"isHidden ? 'section-show-eye-icon' : 'section-hide-eye-icon'\"\n style=\"cursor: pointer; display: inline-block; width: 24px; height: 24px; font-size: 24px; color: #717793;\"\n [style.opacity]=\"1\" [style.visibility]=\"'visible'\"></mat-icon></div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n// import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { NewResumeHeaderComponent } from './newresumeheader.component';\n\n@NgModule({\n imports: [CommonModule, NewResumeHeaderComponent],\n exports: [NewResumeHeaderComponent],\n})\nexport class NewResumeHeaderModule { }\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, HostBinding, OnInit, OnDestroy } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n// Define a type for the possible status values for better type safety.\nexport type LoaderStatus = 'analyzing' | 'gathering' | 'processing' | 'applying' | 'done';\n\n@Component({\n selector: 'al-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n imports: [CommonModule, MatIconModule],\n standalone: true,\n})\nexport class LoaderComponent implements OnInit, OnDestroy {\n /**\n * Optional data-testid for QA/testing. If not provided, will auto-generate with 'loader_' prefix.\n */\n @Input() dataTestId?: string;\n public effectiveDataTestId!: string;\n\n private genLoaderId(): string {\n return 'loader_' + Math.random().toString(36).slice(2, 10);\n }\n\n \n @Input() status: LoaderStatus = 'analyzing';\n\n /**\n * Optional custom text to display instead of the default status text.\n */\n @Input() customText?: string;\n\n /**\n * Whether to show the text below the loader icon.\n * @default true\n */\n @Input() showText = true;\n\n /**\n * Size of the loader component.\n * @default 'medium'\n */\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether to automatically loop through all statuses.\n * @default false\n */\n @Input() autoLoop: boolean = false;\n\n /**\n * Duration in milliseconds for each status when auto-looping.\n * @default 3000\n */\n @Input() loopDuration: number = 3000;\n\n /**\n * Custom text array for each status. If provided, overrides default status text.\n * Array should have 5 elements corresponding to: analyzing, gathering, processing, applying, done\n */\n @Input() customTexts?: string[];\n\n /**\n * Whether to show completion state and stop looping when reaching 'done' status.\n * @default false\n */\n @Input() completeOnDone: boolean = false;\n\n // Private properties for looping functionality\n private loopInterval?: number;\n private currentLoopIndex = 0;\n private readonly statusOrder: LoaderStatus[] = ['analyzing', 'gathering', 'processing', 'applying', 'done'];\n\n /**\n * This @HostBinding adds a class to the component's host element (<al-loader>)\n * that matches the current status. For example, if status is 'processing',\n * it adds `class=\"status-processing\"`. This is what our CSS uses to show the right icon.\n */\n @HostBinding('class')\n get statusClass() {\n const classes = [`status-${this.status}`, `size-${this.size}`];\n if (this.autoLoop) {\n classes.push('auto-loop');\n }\n return classes.join(' ');\n }\n\n /**\n * Get the display text for the current status\n */\n get displayText(): string {\n if (this.customText) {\n return this.customText;\n }\n \n // Use custom texts array if provided\n if (this.customTexts && this.customTexts.length >= 5) {\n const statusIndex = this.statusOrder.indexOf(this.status);\n if (statusIndex >= 0) {\n return this.customTexts[statusIndex];\n }\n }\n \n switch (this.status) {\n case 'analyzing':\n return 'Analyzing...';\n case 'gathering':\n return 'Gathering...';\n case 'processing':\n return 'Processing...';\n case 'applying':\n return 'Applying...';\n case 'done':\n return 'Done!';\n default:\n return '';\n }\n }\n\n constructor() { }\n\n ngOnInit() {\n // Generate or use provided dataTestId\n this.updateEffectiveDataTestId();\n if (this.autoLoop) {\n this.startLoop();\n }\n }\n\n ngOnChanges() {\n this.updateEffectiveDataTestId();\n }\n\n private updateEffectiveDataTestId() {\n this.effectiveDataTestId = this.dataTestId && this.dataTestId.trim() ? this.dataTestId : this.genLoaderId();\n }\n\n ngOnDestroy() {\n this.stopLoop();\n }\n\n /**\n * Start the auto-loop functionality\n */\n startLoop() {\n if (this.loopInterval) {\n this.stopLoop();\n }\n \n // Set initial status\n this.status = this.statusOrder[this.currentLoopIndex];\n \n this.loopInterval = window.setInterval(() => {\n this.currentLoopIndex = (this.currentLoopIndex + 1) % this.statusOrder.length;\n this.status = this.statusOrder[this.currentLoopIndex];\n \n // If completeOnDone is true and we reach 'done', stop looping\n if (this.completeOnDone && this.status === 'done') {\n this.stopLoop();\n }\n }, this.loopDuration);\n }\n\n /**\n * Stop the auto-loop functionality\n */\n stopLoop() {\n if (this.loopInterval) {\n clearInterval(this.loopInterval);\n this.loopInterval = undefined;\n }\n }\n\n /**\n * Manually trigger completion (sets status to 'done' and stops loop)\n */\n triggerCompletion() {\n this.stopLoop();\n this.status = 'done';\n }\n\n /**\n * Reset the loader to the beginning\n */\n reset() {\n this.stopLoop();\n this.currentLoopIndex = 0;\n this.status = this.statusOrder[0];\n if (this.autoLoop) {\n this.startLoop();\n }\n }\n}\n","<div class=\"loader-container\" [attr.data-testid]=\"effectiveDataTestId\">\n <!-- Brain Icon -->\n <mat-icon class=\"loader-icon font-icon icon-brain\" fontSet=\"material-icons\">psychology</mat-icon>\n <!-- Settings/Gear Icon -->\n <mat-icon class=\"loader-icon font-icon icon-cog\" fontSet=\"material-icons-outlined\">settings</mat-icon>\n <!-- Document Icon -->\n <mat-icon class=\"loader-icon font-icon icon-document\" fontSet=\"material-icons\">article</mat-icon>\n <!-- Wand Icon -->\n <mat-icon class=\"loader-icon font-icon icon-wand\" fontSet=\"material-icons\">auto_awesome</mat-icon>\n <!-- Settings Icon -->\n <mat-icon class=\"loader-icon font-icon icon-tick\" fontSet=\"material-icons\">build</mat-icon>\n</div>\n<div class=\"text-container\" *ngIf=\"showText\">\n <span class=\"loader-text\">{{ displayText }}</span>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoaderComponent } from './loader.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, LoaderComponent],\n exports: [LoaderComponent],\n})\nexport class LoaderModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // register the CSS class alias so <mat-icon> knows about it…\n this.iconRegistry.registerFontClassAlias(\n 'material-symbols-outlined',\n 'material-symbols-outlined'\n );\n }\n}\n","\nimport { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\n/**\n * List of registered SVG icon names that should use [svgIcon] binding\n * instead of font icon binding.\n */\nconst REGISTERED_SVG_ICONS = [\n 'candidate_name',\n 'candidate_gender',\n 'candidate_phonenumber',\n 'candidate_email',\n 'candidate_linkedin',\n 'candidate_address',\n 'candidate_experience',\n 'candidate_most_recent',\n 'hide_section',\n 'visibility_off',\n 'unhide_section',\n 'visibility',\n 'subrole',\n 'subrole_icon_white',\n 'year_month_icon',\n 'year_only_icon',\n 'multi-drag-drop',\n 'arrow_downward',\n 'delete-icon',\n 'delete',\n];\n\n@Component({\n selector: 'lib-field-placeholder',\n standalone: true,\n imports: [CommonModule, MatTooltipModule, MatIconModule],\n templateUrl: './field-placeholder.component.html',\n styleUrls: ['./field-placeholder.component.scss'],\n})\nexport class FieldPlaceholderComponent {\n @Input() value: string | null | undefined = '';\n @Input() placeholder: string = '';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n @Input() testId: string = '';\n /** Optional CSS class(es) applied when showing the value text */\n @Input() valueClass: string | string[] | Set<string> | { [klass: string]: any } = '';\n /** Optional CSS class(es) applied when showing the placeholder text */\n @Input() placeholderClass: string | string[] | Set<string> | { [klass: string]: any } = '';\n /**\n * The image path or icon to display in the field row (left column).\n */\n @Input() icon: string = '';\n /**\n * The alt text for the icon image (for accessibility).\n */\n @Input() iconAlt: string = '';\n /**\n * The font set for Material icons (e.g., 'material-icons', 'material-icons-outlined').\n */\n @Input() iconFont: string = 'material-icons';\n /**\n * When true, applies the 'field-row-compact' class for 28px height.\n * Only applies when explicitly set to true from a parent component.\n */\n @Input() compact?: boolean;\n /**\n * When true, applies the 'field-row-padded' class for 8px top and bottom padding.\n * Only applies when explicitly set to true from a parent component.\n */\n @Input() padded?: boolean;\n\n isMaterialIcon(icon: string): boolean {\n return !!icon && !icon.includes('/') && !icon.includes('.');\n }\n\n isRegisteredSvgIcon(icon: string): boolean {\n return !!icon && REGISTERED_SVG_ICONS.includes(icon);\n }\n}\n","<div class=\"field-row\" [class.field-row-compact]=\"compact === true\" [class.field-row-padded]=\"padded === true\">\n <ng-container *ngIf=\"icon\">\n <span class=\"field-icon\">\n <ng-container *ngIf=\"icon === 'no-icon'\">\n <!-- Transparent spacer to maintain icon alignment -->\n </ng-container>\n <ng-container *ngIf=\"isRegisteredSvgIcon(icon) && icon !== 'no-icon'\">\n <mat-icon [svgIcon]=\"icon\"></mat-icon>\n </ng-container>\n <ng-container *ngIf=\"isMaterialIcon(icon) && !isRegisteredSvgIcon(icon) && icon !== 'no-icon'\">\n <mat-icon [fontSet]=\"iconFont\">{{ icon }}</mat-icon>\n </ng-container>\n <ng-container *ngIf=\"!isMaterialIcon(icon) && !isRegisteredSvgIcon(icon) && icon !== 'no-icon'\">\n <img [src]=\"icon\" [alt]=\"iconAlt || 'icon'\" />\n </ng-container>\n </span>\n </ng-container>\n <span [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!tooltip\"\n [ngClass]=\"value ? ['value-text', valueClass] : ['placeholder-text', placeholderClass]\" [attr.data-test-id]=\"testId\"\n [innerHTML]=\"value ? value : placeholder\">\n </span>\n\n</div>","// Wrapper for Angular Material mat-checkbox (template for candidate section)\nimport { AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { Candidate_Section_ICON } from '../utils/image-utils';\n\n// Static flag to ensure icons are registered only once\nlet iconsRegistered = false;\n\n\n@Component({\n selector: 'al-candidate-section',\n templateUrl: './candidate-section.component.html',\n styleUrls: ['./candidate-section.component.scss'],\n\n})\nexport class CandidateSectionComponent implements AfterViewInit, OnDestroy, OnInit {\n @ViewChild('candidateContainer', { static: true }) candidateContainer?: ElementRef<HTMLElement>;\n\n /**\n * When true, layout switches from 3 columns to \"2-column\" stacked layout.\n * This is driven by the container width (not screen size) and uses a 600px breakpoint.\n */\n isNarrowLayout: boolean = false;\n\n private resizeObserver?: ResizeObserver;\n @Input() useCustomHeader: boolean = false;\n @Input() candidateDetails: any;\n @Input() candidate_name: boolean = true;\n @Input() candidate_gender: boolean = true;\n @Input() candidate_phonenumber: boolean = true;\n @Input() candidate_email: boolean = true;\n @Input() candidate_linkedin: boolean = true;\n @Input() candidate_address: boolean = true;\n @Input() addressStreet: boolean = true;\n @Input() addressCity: boolean = true;\n @Input() addressRegion: boolean = true;\n @Input() addressRegionCode: boolean = true;\n @Input() addressCountry: boolean = true;\n @Input() addressPostCode: boolean = true;\n @Input() currentJob: boolean = true;\n @Input() candidate_experience: boolean = true;\n\n constructor(private iconRegistry: MatIconRegistry, private sanitizer: DomSanitizer) {\n this.registerIcons();\n }\n\n ngAfterViewInit(): void {\n // Initial measurement\n this.updateLayoutBreakpoint();\n\n // Watch container size so layout responds to container width, not viewport width\n if (this.candidateContainer?.nativeElement && typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n this.updateLayoutBreakpoint();\n });\n this.resizeObserver.observe(this.candidateContainer.nativeElement);\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = undefined;\n }\n }\n\n ngOnInit(): void {\n // Icons are registered in constructor\n }\n\n private registerIcons(): void {\n // Register icons only once using static flag\n if (!iconsRegistered) {\n try {\n // Register all candidate section icons\n Object.entries(Candidate_Section_ICON).forEach(([key, svgString]) => {\n this.iconRegistry.addSvgIconLiteral(\n key,\n this.sanitizer.bypassSecurityTrustHtml(svgString)\n );\n });\n iconsRegistered = true;\n } catch (error) {\n console.error('Failed to register candidate section icons:', error);\n }\n }\n }\n\n /**\n * Sets isNarrowLayout based on the current container width.\n * Uses 600px as the breakpoint where the layout switches from 3 to 2 columns.\n */\n private updateLayoutBreakpoint(): void {\n let width = 0;\n\n if (this.candidateContainer?.nativeElement) {\n const el = this.candidateContainer.nativeElement;\n width = el.offsetWidth || (el as any).clientWidth || 0;\n }\n\n // Fallback to window width if container width is not available\n if (!width && typeof window !== 'undefined') {\n width = window.innerWidth;\n }\n\n this.isNarrowLayout = width < 600;\n }\n\n getCurrentJob(): string {\n return this.candidateDetails?.currentJobTitle || '';\n }\n getCurrentEmployer(): string {\n return this.candidateDetails?.currentEmployer || '';\n }\n getTotalExpYears(): string {\n return this.candidateDetails?.totalExpYears || '';\n }\n\n hasValue(): boolean {\n return !!(this.candidateDetails?.firstName || this.candidateDetails?.lastName ||\n this.candidateDetails?.phone || this.candidateDetails?.email ||\n this.candidateDetails?.linkedin || this.candidateDetails?.gender);\n }\n\n hasAddressValue(): boolean {\n return !!(this.candidateDetails?.street || this.candidateDetails?.city ||\n this.candidateDetails?.region || this.candidateDetails?.regionCode ||\n this.candidateDetails?.country || this.candidateDetails?.postCode);\n }\n\n hasExperienceValue(): boolean {\n return !!(this.candidateDetails?.totalExpYears || this.candidateDetails?.currentJobTitle ||\n this.candidateDetails?.currentEmployer);\n }\n}\n","<div class=\"candidate-container\" #candidateContainer [ngClass]=\"{ 'narrow-layout': isNarrowLayout }\">\n <div class=\"columns-wrapper\">\n <div class=\"column first-column\">\n <div class=\"container\" data-test-id=\"candidate-section-name-container\"\n [style.opacity]=\"candidate_name ? '1' : '0.3'\"><lib-field-placeholder icon=\"candidate_name\"\n [value]=\"candidateDetails?.firstName && candidateDetails?.lastName ? candidateDetails?.firstName + ' ' + candidateDetails?.lastName : candidateDetails?.firstName || candidateDetails?.lastName\"\n [placeholder]=\"'Name'\" [tooltip]=\"candidateDetails?.firstName + ' ' + candidateDetails?.lastName\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-name'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-gender-container\"\n [style.opacity]=\"candidate_gender ? '1' : '0.3'\"><lib-field-placeholder icon=\"candidate_gender\"\n [value]=\"candidateDetails?.userAssignedGender\" [placeholder]=\"'Gender'\"\n [tooltip]=\"candidateDetails?.userAssignedGender\" tooltipPosition=\"right\" [testId]=\"'candidate-section-gender'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-phone-container\"\n [style.opacity]=\"candidate_phonenumber ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"candidate_phonenumber\" [value]=\"candidateDetails?.phoneNumber\" [placeholder]=\"'Phone Number'\"\n [tooltip]=\"candidateDetails?.phoneNumber\" tooltipPosition=\"right\" [testId]=\"'candidate-section-phone'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-email-container\"\n [style.opacity]=\"candidate_email ? '1' : '0.3'\"><lib-field-placeholder icon=\"candidate_email\"\n [value]=\"candidateDetails?.emailAddress\" [placeholder]=\"'Email Address'\"\n [tooltip]=\"candidateDetails?.emailAddress\" tooltipPosition=\"right\" [testId]=\"'candidate-section-email'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-linkedin-container\"\n [style.opacity]=\"candidate_linkedin ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"candidate_linkedin\" iconAlt=\"LinkedIn\" [value]=\"candidateDetails?.linkedin\" [placeholder]=\"'LinkedIn'\"\n [tooltip]=\"candidateDetails?.linkedin\" tooltipPosition=\"right\" [testId]=\"'candidate-section-linkedin'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n </div>\n <div class=\"column second-column\">\n <div data-test-id=\"candidate-section-address-container\"\n [style.opacity]=\"candidate_address ? '1' : '0.3'\">\n <div [style.opacity]=\"addressStreet ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"candidate_address\" [value]=\"candidateDetails?.street\" [placeholder]=\"'Street'\"\n [tooltip]=\"candidateDetails?.street\" tooltipPosition=\"right\" [testId]=\"'candidate-section-address-street'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div [style.opacity]=\"addressCity ? '1' : '0.3'\"><lib-field-placeholder icon=\"no-icon\"\n [value]=\"candidateDetails?.city\" [placeholder]=\"'City'\" [tooltip]=\"candidateDetails?.city\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-address-city'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n <div [style.opacity]=\"addressRegion ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"no-icon\" [value]=\"candidateDetails?.region\" [placeholder]=\"'Region'\"\n [tooltip]=\"candidateDetails?.region\" tooltipPosition=\"right\" [testId]=\"'candidate-section-address-region'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div [style.opacity]=\"addressRegionCode ? '1' : '0.3'\"><lib-field-placeholder\n [value]=\"candidateDetails?.regionCode\" [placeholder]=\"'Region Code'\" icon=\"no-icon\"\n [tooltip]=\"candidateDetails?.regionCode\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-region-code'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n <div [style.opacity]=\"addressCountry ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"no-icon\" [value]=\"candidateDetails?.country\" [placeholder]=\"'Country'\"\n [tooltip]=\"candidateDetails?.country\" tooltipPosition=\"right\" [testId]=\"'candidate-section-address-country'\"\n [valueClass]=\"'typo-description'\" [compact]=\"true\"></lib-field-placeholder></div>\n <div [style.opacity]=\"addressPostCode ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"no-icon\" [value]=\"candidateDetails?.postCode\" [placeholder]=\"'Post Code'\"\n [tooltip]=\"candidateDetails?.postCode\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-post-code'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n </div>\n </div>\n </div>\n <div class=\"column third-column\">\n <div class=\"container most-recent-container\" data-test-id=\"candidate-section-current-employer-container\">\n <div [style.opacity]=\"currentJob ? '1' : '0.3'\">\n <lib-field-placeholder icon=\"candidate_most_recent\"\n [value]=\"(getCurrentJob() || getCurrentEmployer()) ? 'Most Recently : <span class=\\'most-recent-inline\\'>' + (getCurrentJob() ? '<span class=\\'total-exp-value\\'>' + getCurrentJob() + '</span>' : '') + (getCurrentEmployer() ? (getCurrentJob() ? ' at <span class=\\'total-exp-value\\'>' + getCurrentEmployer() + '</span>' : '<span class=\\'total-exp-value\\'>' + getCurrentEmployer() + '</span>') : '') + '</span>' : ''\"\n [placeholder]=\"'Current Job'\"\n [tooltip]=\"(getCurrentJob() || getCurrentEmployer()) ? 'Most Recently : ' + getCurrentJob() + (getCurrentEmployer() ? ' at ' + getCurrentEmployer() : '') : 'Current Job'\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-current-job'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder>\n <div class=\"most-recent-details\">\n <div class=\"current-job-title\" *ngIf=\"getCurrentJob()\">{{getCurrentJob()}}</div>\n <div class=\"current-employer\" *ngIf=\"getCurrentEmployer()\">{{getCurrentEmployer()}}</div>\n </div>\n </div>\n </div>\n <div class=\"total-exp-parent container\" data-test-id=\"candidate-section-total-exp-parent\"\n [style.opacity]=\"candidate_experience ? '1' : '0.3'\"><lib-field-placeholder\n icon=\"candidate_experience\"\n [value]=\"getTotalExpYears() ? 'Total Exp - <span class=\\'total-exp-value\\'>' + getTotalExpYears() + '</span> yrs' : ''\"\n [placeholder]=\"'Total Exp'\"\n [tooltip]=\"getTotalExpYears() ? 'Total Exp - ' + getTotalExpYears() + ' yrs' : 'Total Exp'\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-total-exp-value'\" [valueClass]=\"'typo-description'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CandidateSectionComponent } from './candidate-section.component';\nimport { FieldPlaceholderComponent } from '../field-placeholder/field-placeholder.component';\n\n@NgModule({\n declarations: [CandidateSectionComponent],\n imports: [CommonModule, FieldPlaceholderComponent],\n exports: [CandidateSectionComponent]\n})\nexport class CandidateSectionModule { }\n","// Wrapper for Angular Material mat-radio-button\nimport { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\n\n@Component({\n selector: 'al-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true\n }\n ]\n})\nexport class RadioComponent implements ControlValueAccessor {\n @Input() value: any;\n @Input() name: string = '';\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelPosition: 'before' | 'after' = 'after';\n @Input() required: boolean = false;\n @Input() labelText: string = '';\n @Input() helperText: string = '';\n @Input() showLabels: boolean = true;\n @Input() showHelperIcon: boolean = false;\n @Input() helperIconTooltip: string = '';\n @Input() dataTestId: string = \"\";\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<any> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() helperIconClick: EventEmitter<void> = new EventEmitter();\n\n onChange = (_: any) => { };\n onTouched = () => { };\n\n writeValue(value: any): void {\n this.checked = value === this.value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = true;\n this.onChange(this.value);\n this.change.emit(this.value);\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n onHelperIconClick(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.helperIconClick.emit();\n }\n\n getColorClass(): string {\n if (this.color === 'green') {\n return 'mat-green';\n } else if (this.color === 'error') {\n return 'mat-error';\n }\n return '';\n }\n}\n","<mat-radio-button [value]=\"value\" [name]=\"name\" [checked]=\"checked\" [disabled]=\"disabled\" [color]=\"color\"\n [labelPosition]=\"labelPosition\" [required]=\"required\" [attr.data-testid]=\"dataTestId\" [ngClass]=\"getColorClass()\"\n [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!tooltip\"\n (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\">\n <div class=\"radio-label-wrapper\" *ngIf=\"showLabels\">\n <div class=\"radio-label-main-row\" *ngIf=\"labelText\">\n <div class=\"radio-label-main\">\n {{ labelText }}\n </div>\n <button *ngIf=\"showHelperIcon\" type=\"button\" class=\"radio-helper-icon\"\n [matTooltip]=\"helperIconTooltip || helperText\" [matTooltipPosition]=\"tooltipPosition\" [disabled]=\"disabled\"\n (click)=\"onHelperIconClick($event)\">\n ?\n </button>\n </div>\n\n <div *ngIf=\"helperText\" class=\"radio-label-helper\">\n {{ helperText }}\n </div>\n </div>\n\n <ng-content></ng-content>\n</mat-radio-button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RadioComponent } from './radio.component';\n\n@NgModule({\n declarations: [RadioComponent],\n imports: [CommonModule, MatRadioModule, MatTooltipModule],\n exports: [RadioComponent]\n})\nexport class RadioModule { }\n","import {\n Component,\n Input,\n Output,\n EventEmitter\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n MatButtonToggleModule\n}\n\n from '@angular/material/button-toggle';\n\nimport {\n MatIconModule\n}\n\n from '@angular/material/icon';\n\nimport {\n FormsModule\n}\n\n from '@angular/forms';\n\nexport interface ToggleButton {\n id: string;\n label?: string;\n icon?: string;\n disabled?: boolean;\n dataTestId?: string;\n}\n\n@Component({\n selector: 'al-toggle-buttons',\n templateUrl: './toggle-buttons.component.html',\n styleUrls: ['./toggle-buttons.component.scss'],\n standalone: true,\n imports: [CommonModule, MatButtonToggleModule, MatIconModule, FormsModule]\n}\n\n) export class ToggleButtonsComponent {\n @Input() buttons: ToggleButton[] = [];\n @Input() selectedId: string = '';\n @Input() disabled: boolean = false;\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() type: 'default' | 'text-only' | 'icon-only' = 'default';\n @Input() multiple: boolean = false;\n @Input() vertical: boolean = false;\n @Input() dataTestId: string = '';\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() buttonClick: EventEmitter<ToggleButton> = new EventEmitter<ToggleButton>();\n\n onSelectionChange(value: string): void {\n this.selectedId = value;\n this.selectionChange.emit(value);\n\n const selectedButton = this.buttons.find(btn => btn.id === value);\n\n if (selectedButton) {\n this.buttonClick.emit(selectedButton);\n }\n }\n\n getSelectedValue(): string {\n return this.selectedId;\n }\n\n getSizeClass(): string {\n return 'al-toggle-buttons-size-' + this.size;\n }\n\n computeGap(button: ToggleButton): number {\n const hasLabel = ! !(button.label && button.label.trim());\n const hasIcon = ! !(button.icon && button.icon.trim());\n\n // 0 gap for icon-only buttons\n if (this.type === 'icon-only' || (!hasLabel && hasIcon)) {\n return 0;\n }\n\n // 4px gap for default type (icon + text)\n if (this.type === 'default' && hasIcon && hasLabel) {\n return 4;\n }\n\n // 8px gap for text-only buttons\n return 8;\n }\n}\n","<mat-button-toggle-group [value]=\"getSelectedValue()\" [disabled]=\"disabled\" [multiple]=\"multiple\" [vertical]=\"vertical\"\n (change)=\"onSelectionChange($event.value)\" [ngClass]=\"[getSizeClass(), vertical ? 'al-toggle-vertical' : '']\">\n\n <mat-button-toggle *ngFor=\"let button of buttons\" [value]=\"button.id\" [disabled]=\"button.disabled\"\n [attr.aria-label]=\"button.label\" [style.display]=\"'inline-flex'\" [style.align-items]=\"'center'\"\n [style.gap.px]=\"computeGap(button)\" [attr.data-testid]=\"button.dataTestId || dataTestId\">\n\n <!-- Icon (shown based on type) -->\n <mat-icon *ngIf=\"(type === 'default' || type === 'icon-only') && button.icon?.trim()\" class=\"button-icon\">{{\n button.icon }}</mat-icon>\n\n <!-- Label (shown based on type) -->\n <span *ngIf=\"(type === 'default' || type === 'text-only') && button.label?.trim()\" class=\"button-label\">{{\n button.label }}</span>\n </mat-button-toggle>\n\n</mat-button-toggle-group>","import { NgModule } from '@angular/core';\nimport { ToggleButtonsComponent } from './toggle-buttons.component';\n\n@NgModule({\n imports: [ToggleButtonsComponent],\n exports: [ToggleButtonsComponent]\n})\nexport class ToggleButtonsModule { }\n","// Wrapper for Angular Material mat-slide-toggle with custom icons\nimport { Component, Input, Output, EventEmitter, forwardRef, AfterViewInit, ElementRef, Renderer2, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'al-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n standalone: true,\n imports: [CommonModule, MatSlideToggleModule, MatIconModule, MatTooltipModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggleComponent),\n multi: true\n }\n ]\n})\nexport class SlideToggleComponent implements ControlValueAccessor, AfterViewInit {\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() name: string = '';\n @Input() required: boolean = false;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelText: string = '';\n @Input() helperText: string = '';\n @Input() showLabels: boolean = true;\n @Input() onIcon: string = 'dark_mode'; // Material Icon for ON state\n @Input() offIcon: string = 'light_mode'; // Material Icon for OFF state\n @Input() showIcons: boolean = true; // Toggle to show/hide custom icons\n @Input() size: 'small' | 'medium' | 'large' = 'medium'; // Size variant\n @Input() dataTestId: string = '';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<boolean> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n\n @ViewChild('slideToggle', { read: ElementRef }) element: ElementRef | undefined;\n\n onChange = (_: any) => { };\n onTouched = () => { };\n\n constructor(private renderer: Renderer2) { }\n\n writeValue(value: any): void {\n this.checked = !!value;\n this.updateIcon();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = event.checked;\n this.onChange(this.checked);\n this.change.emit(this.checked);\n this.updateIcon();\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.setIcon();\n }, 100);\n }\n\n setIcon() {\n if (this.element && this.showIcons) {\n try {\n // Try multiple selectors to find the handle\n let targetSpan: HTMLElement | null = this.element.nativeElement.querySelector('.mdc-switch__handle');\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mat-slide-toggle-thumb');\n }\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mdc-switch__thumb');\n }\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mdc-switch__icon');\n }\n\n if (targetSpan) {\n // Clear existing content\n while (targetSpan.firstChild) {\n targetSpan.firstChild.remove();\n }\n\n // Create new icon element\n const elem = this.renderer.createElement('span');\n const icon = this.checked ? this.onIcon : this.offIcon;\n elem.setAttribute('class', 'material-icons slide-toggle-custom-icon');\n elem.textContent = icon;\n targetSpan.appendChild(elem);\n }\n } catch (error) {\n console.error('Error updating Material icons:', error);\n }\n }\n }\n\n private updateIcon() {\n setTimeout(() => {\n this.setIcon();\n }, 200);\n }\n\n\n}\n","<div class=\"slide-toggle-container\" [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\">\n <mat-slide-toggle #slideToggle [checked]=\"checked\" [disabled]=\"disabled\" [name]=\"name\" [required]=\"required\"\n [color]=\"color\" (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\"\n class=\"custom-slide-toggle\" [class.slide-toggle-small]=\"size === 'small'\"\n [class.slide-toggle-medium]=\"size === 'medium'\" [class.slide-toggle-large]=\"size === 'large'\"\n [attr.data-testid]=\"dataTestId\">\n <div *ngIf=\"showLabels\" class=\"slide-toggle-labels\">\n <div *ngIf=\"labelText\" class=\"slide-toggle-label-main\">\n {{ labelText }}\n </div>\n <div *ngIf=\"helperText\" class=\"slide-toggle-label-helper\">\n {{ helperText }}\n </div>\n </div>\n <ng-content></ng-content>\n </mat-slide-toggle>\n</div>\n","import { NgModule } from '@angular/core';\nimport { SlideToggleComponent } from './slide-toggle.component';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [CommonModule, SlideToggleComponent, MatTooltipModule],\n exports: [SlideToggleComponent]\n})\nexport class SlideToggleModule { }\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { getEffectiveIconName, getEffectiveFontSet } from '../utils/icon-utils';\n\n@Component({\n selector: 'al-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrls: ['./icon-button.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule],\n})\nexport class IconButtonComponent implements OnInit {\n /** Icon name (Material icon name) */\n @Input() icon!: string;\n\n /** Custom colour (CSS color value) - if provided, overrides the colour property */\n @Input() customColour?: string;\n\n /** Use outlined icon font */\n @Input() iconOutlined: boolean = false;\n\n /** Button size (xs, sm, base, l, xl, header) */\n @Input() size: 'xs' | 'sm' | 'base' | 'l' | 'xl' | 'header' = 'base';\n\n /** Button colour (blue, green, grey, error, gradient, etc.) */\n @Input() colour: string = 'blue';\n\n /** Disabled state */\n @Input() disabled: boolean = false;\n\n /** Optional custom data-testid for QA/testing */\n @Input() dataTestId?: string;\n public effectiveDataTestId!: string;\n\n /** Click event */\n @Output() onClick = new EventEmitter<Event>();\n\n constructor(private iconRegistry: MatIconRegistry, private sanitizer: DomSanitizer) {\n this.iconRegistry.registerFontClassAlias('material-icons-outlined', 'material-icons-outlined');\n this.iconRegistry.registerFontClassAlias('material-icons', 'material-icons');\n this.iconRegistry.registerFontClassAlias('material-symbols-outlined', 'material-symbols-outlined');\n }\n\n ngOnInit() {\n this.effectiveDataTestId = this.dataTestId && this.dataTestId.trim() ? this.dataTestId : this.genIconBtnId();\n }\n\n public genId(): string {\n return 'icon-btn_' + Math.random().toString(36).slice(2, 10);\n }\n\n private genIconBtnId(): string {\n return this.genId();\n }\n\n handleClick(event: Event) {\n if (!this.disabled) {\n this.onClick.emit(event);\n }\n }\n\n /**\n * Gets the effective icon name to use, considering outlined mappings.\n * Some icons like 'favorite' and 'star' have different names for outlined versions.\n */\n getEffectiveIconName(): string {\n if (!this.icon) {\n return '';\n }\n return getEffectiveIconName(this.icon, this.iconOutlined);\n }\n\n /**\n * Gets the effective font set to use for the icon.\n */\n getEffectiveFontSet(): string {\n if (!this.icon) {\n return 'material-icons';\n }\n return getEffectiveFontSet(this.icon, this.iconOutlined);\n }\n}\n","<button type=\"button\" class=\"icon-btn\" [ngClass]=\"[\n 'icon-btn',\n 'size-' + size,\n 'color-' + colour,\n iconOutlined ? 'icon-outlined' : '',\n disabled ? 'icon-btn-disabled' : ''\n ]\" [disabled]=\"disabled\" (click)=\"handleClick($event)\" [attr.aria-label]=\"icon\"\n [attr.data-test-id]=\"effectiveDataTestId\">\n <mat-icon [fontSet]=\"getEffectiveFontSet()\" class=\"icon-btn-icon\"\n [ngStyle]=\"customColour ? { color: customColour } : null\">{{ getEffectiveIconName()\n }}</mat-icon>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { InputComponent } from '../input/input.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'al-ai-apply-bar',\n standalone: true,\n imports: [CommonModule, InputComponent, ButtonComponent, IconButtonComponent],\n templateUrl: './ai-apply-bar.component.html',\n styleUrls: ['./ai-apply-bar.component.scss']\n})\nexport class AiApplyBarComponent {\n /** Optional data-test-id for QA/testing */\n @Input() dataTestId?: string;\n /**\n * If true, show chevron icon on Apply AI button (second variation).\n */\n @Input() showChevron: boolean = false;\n /**\n * If true, show a separate chevron button after the Apply AI button.\n */\n @Input() showChevronButton = true;\n\n // Input field (dropdown) API\n @Input() placeholder: string = 'Typing';\n @Input() options: string[] = ['Typing', 'Gathering', 'Processing'];\n @Input() value: string = '';\n @Input() disabled: boolean = false;\n\n // Apply button\n @Input() applyLabel: string = 'Apply AI';\n @Input() applyDisabled: boolean = false;\n @Input() showApplyButton: boolean = true;\n\n // Close button\n @Input() showClose: boolean = true;\n @Input() iconOutlined: boolean = false;\n @Input() closeButtonTooltip: string = 'Close';\n @Input() closeButtonTooltipPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n\n // Helper text (second row)\n @Input() showHelperText: boolean = false;\n @Input() helperText: string = 'Action will be applied globally to all sections';\n\n // Outputs\n @Output() valueChange = new EventEmitter<string>();\n @Output() applyClick = new EventEmitter<void>();\n @Output() closeClick = new EventEmitter<void>();\n /** Emitted when the chevron icon button is clicked */\n @Output() chevronClick = new EventEmitter<void>();\n\n // Animation state - bar show/hide\n @Input() isVisible: boolean = false;\n @Input() toggled: boolean = true;\n\n onValueChange(v: string) {\n this.value = v;\n this.valueChange.emit(v);\n }\n\n // Toggle bar visibility\n toggleBar(): void {\n this.isVisible = !this.isVisible;\n }\n\n // Close bar and emit event\n onClose(): void {\n this.isVisible = false;\n this.closeClick.emit();\n }\n}\n","<div class=\"ai-apply-container\" [attr.data-test-id]=\"dataTestId\">\n\n <!-- Toggle Button - AI Trigger or Close Button (Fixed Position) -->\n <div class=\"ai-toggle-button\">\n <!-- AI Trigger Button - Show when bar is hidden -->\n <al-button *ngIf=\"toggled && !isVisible\" [iconOnly]=\"true\" [buttonType]=\"'icon-circle'\" [icon]=\"'auto_fix_high'\"\n [iconOutlined]=\"true\" [color]=\"'gradient'\" [size]=\"'base'\" aria-label=\"AI Trigger\" (onClick)=\"toggleBar()\">\n </al-button>\n\n <!-- Close Button - Show when bar is visible -->\n <al-button *ngIf=\"toggled && isVisible && showClose\" [iconOnly]=\"true\" [buttonType]=\"'icon-circle'\" [icon]=\"'close'\"\n [color]=\"'grey'\" [size]=\"'base'\" aria-label=\"Close\" (onClick)=\"toggleBar()\">\n </al-button>\n\n <al-button *ngIf=\"!toggled\" [iconOnly]=\"true\" [buttonType]=\"'icon-circle'\" [icon]=\"'close'\"\n [color]=\"'grey'\" [size]=\"'base'\" aria-label=\"Close\" (onClick)=\"onClose()\">\n </al-button>\n </div>\n\n <!-- AI Apply Bar - Expands to the LEFT of button -->\n <div class=\"ai-apply-wrap\" [class.visible]=\"isVisible || !toggled\" [class.hidden]=\"!isVisible && toggled\">\n <div class=\"ai-apply-rail\">\n <div class=\"ai-apply-row\">\n <div class=\"ai-apply-input\">\n <al-input [labelText]=\"''\" [placeholder]=\"placeholder\" [value]=\"value\" [type]=\"'text'\" [disabled]=\"disabled\"\n [helperText]=\"false\" [leftIcon]=\"''\" [rightIcon]=\"'expand_more'\" [hasDropDown]=\"true\" [searchfilter]=\"true\"\n [multipleSelect]=\"false\" [options]=\"options\" [size]=\"'base'\" [types]=\"'plain'\"\n (change)=\"onValueChange($event)\">\n </al-input>\n </div>\n\n <div class=\"ai-apply-button\">\n <al-button *ngIf=\"showApplyButton\" [label]=\"applyLabel\" [buttonType]=\"'icon-label'\" [category]=\"'gradient'\"\n [size]=\"'base'\" [state]=\"applyDisabled ? 'disabled' : 'default'\" (onClick)=\"applyClick.emit()\">\n </al-button>\n <al-icon-button *ngIf=\"showChevronButton\" icon=\"chevron_right\" [iconOutlined]=\"true\"\n [customColour]=\"'#ffffff'\" [size]=\"'l'\" [disabled]=\"applyDisabled\" (onClick)=\"chevronClick.emit()\"\n [dataTestId]=\"'icon-btn_Uwofs4q_3kWU'\">\n </al-icon-button>\n </div>\n </div>\n\n <div class=\"ai-apply-helper\" *ngIf=\"showHelperText\">\n {{ helperText }}\n </div>\n </div>\n </div>\n\n</div>\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n Component,\n HostBinding,\n Input\n}\n\n from '@angular/core';\n\n/**\n * Responsive layout container that can behave as a row (columns) or a column (rows)\n * with breakpoint-specific item counts.\n *\n * Breakpoints (px):\n * - mobile: 0 - 500\n * - mobile-sm: 500 - 767\n * - tablet: 767 - 1024\n * - desktop: 1024+\n */\n@Component({\n selector: 'app-flex-grid',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './responsive-layout.component.html',\n styleUrls: ['./responsive-layout.component.scss'],\n}\n\n) export class ResponsiveLayoutComponent {\n /** Optional data-testid for test selectors */\n @Input() dataTestId?: string;\n /** Layout mode: 'row' has bottom margin, 'column' has no bottom margin. Both use responsive column counts. */\n @Input() type: 'row' | 'column' = 'row';\n\n /** Gap between items (in px) */\n @Input() gap: number | string = 8;\n\n /** Optional bottom margin for row mode. Set to false to remove. */\n @Input() marginBottom: number | string | boolean = 16;\n\n // Per-breakpoint counts. Defines number of columns at each breakpoint.\n @Input() countMobile: number = 1;\n @Input() countMobileSm: number = 2;\n @Input() countTablet: number = 3;\n @Input() countDesktop: number = 4;\n\n // Aliases for convenience (e.g., mobRow=\"3\" as requested). They map to countMobile.\n @Input() set mobRow(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countMobile = Number(v);\n }\n }\n\n @Input() set mobCols(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countMobile = Number(v);\n }\n }\n\n /** Alias: rows sets a base count used for all breakpoints unless overridden */\n @Input() set rows(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n const n = Number(v);\n this.countMobile = n;\n this.countMobileSm = n;\n this.countTablet = n;\n this.countDesktop = n;\n }\n }\n\n /** Alias for tablet breakpoint */\n @Input() set tabRow(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countTablet = Number(v);\n }\n }\n\n /** Alias for desktop breakpoint */\n @Input() set desktop(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countDesktop = Number(v);\n }\n }\n\n /** Minimum columns (e.g. 2) so this row never collapses to 1 column on small viewports. Use for \"Date Type + Current Role/Study\" row in certification/experience. */\n @Input() minColumns?: number;\n\n @HostBinding('class.min-cols-2') get hasMinCols2(): boolean {\n return this.minColumns === 2;\n }\n\n // Expose CSS variables on host for SCSS to pick up.\n @HostBinding('style.--gap') get cssGap() {\n return typeof this.gap === 'string' ? this.gap : `$ {\n this.gap\n }\n\n px`;\n }\n\n @HostBinding('style.--count-mobile') get cssCountMobile() {\n return this.countMobile;\n }\n\n @HostBinding('style.--count-mobile-sm') get cssCountMobileSm() {\n return this.countMobileSm;\n }\n\n @HostBinding('style.--count-tablet') get cssCountTablet() {\n return this.countTablet;\n }\n\n @HostBinding('style.--count-desktop') get cssCountDesktop() {\n return this.countDesktop;\n }\n\n // Expose bottom margin as CSS var. If explicitly false => 0px\n @HostBinding('style.--mb') get cssMarginBottom() {\n const v = this.marginBottom;\n if (v === false || v === 0 || v === '0') return '0px';\n if (typeof v === 'string') return v; // allow '1rem', '12px'\n\n return `$ {\n v\n }\n\n px`;\n }\n\n @HostBinding('class.row') get isRow() {\n return this.type === 'row';\n }\n\n @HostBinding('class.col') get isCol() {\n return this.type === 'column';\n }\n\n @HostBinding('attr.data-testid') get dataTestIdAttr() {\n return this.dataTestId || null;\n }\n}\n","<ng-content></ng-content>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResponsiveLayoutComponent } from './responsive-layout.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResponsiveLayoutComponent],\n exports: [ResponsiveLayoutComponent],\n})\nexport class ResponsiveLayoutModule {}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ViewChild,\n OnInit,\n AfterViewInit\n}\n\nfrom '@angular/core';\n\nimport {\n CommonModule\n}\n\nfrom '@angular/common';\n\nimport {\n MatTooltipModule\n}\n\nfrom '@angular/material/tooltip';\n\nimport {\n MatIconModule,\n MatIconRegistry\n}\n\nfrom '@angular/material/icon';\n\nimport {\n DomSanitizer\n}\n\nfrom '@angular/platform-browser';\n\nimport {\n TABLE_ICONS\n}\n\nfrom '../../utils/image-utils';\n\n@Component( {\n selector: 'app-table',\n standalone: true,\n imports: [CommonModule, MatTooltipModule, MatIconModule],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css']\n }\n\n) export class TableComponent implements OnInit,\nAfterViewInit {\n\n constructor(private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer) {\n this.iconRegistry.addSvgIconLiteral('table',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['table']));\n this.iconRegistry.addSvgIconLiteral('add-table',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['add-table']));\n this.iconRegistry.addSvgIconLiteral('delete-table',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['delete-table']));\n this.iconRegistry.addSvgIconLiteral('column-left',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['column-left']));\n this.iconRegistry.addSvgIconLiteral('column-right',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['column-right']));\n this.iconRegistry.addSvgIconLiteral('row-top',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['row-top']));\n this.iconRegistry.addSvgIconLiteral('row-bottom',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['row-bottom']));\n this.iconRegistry.addSvgIconLiteral('delete-row',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['delete-row']));\n this.iconRegistry.addSvgIconLiteral('delete-column',\n this.sanitizer.bypassSecurityTrustHtml(TABLE_ICONS['delete-column']));\n }\n\n @Input() getEditorElement !: ()=>HTMLElement | undefined;\n @Input() saveHistoryMethod !: ()=>void;\n @Input() textChangeMethod !: ()=>void;\n\n\n\n showTableDropdown=false;\n\n ngOnInit(): void {}\n\n ngAfterViewInit(): void {}\n\n toggleTableDropdown(): void {\n this.showTableDropdown= !this.showTableDropdown;\n }\n\n addTable(event: MouseEvent): void {\n const editorElement=this.getEditorElement();\n\n if ( !editorElement) {\n\n // Wait a bit and try again\n setTimeout(()=> {\n const retryEditorElement=this.getEditorElement();\n\n if (retryEditorElement) {\n this.addTable(event);\n }\n }\n\n , 100);\n return;\n }\n\n const tableHTML=` <table style=\"border-collapse: collapse; width: 100%;\"><tbody><tr height=34><td></td><td></td></tr><tr height=34><td></td><td></td></tr></tbody></table><br>`;\n\n // Focus the editor first\n editorElement.focus();\n\n // Execute the command in the context of the editor\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n\n // Ensure the range is within the editor\n if (editorElement.contains(range.startContainer)) {\n document.execCommand(\"insertHTML\", false, tableHTML);\n }\n }\n\n else {\n // If no selection, append to the end\n editorElement.innerHTML+=tableHTML;\n }\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n // Close dropdown after creating table\n this.showTableDropdown=false;\n }\n\n deleteTable(event: MouseEvent): void {\n const editorElement=this.getEditorElement();\n\n if (editorElement) {\n const table=editorElement.querySelector(\"table\");\n\n if (table) {\n table.remove();\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n }\n }\n\n this.showTableDropdown=false;\n }\n\n addRowBelow(event: MouseEvent): void {\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const row=(cell as HTMLElement).parentNode as HTMLElement;\n const table=row.parentNode as HTMLElement;\n\n if (row.nodeName===\"TR\"&& table.nodeName===\"TBODY\") {\n const newRow=row.cloneNode(true) as HTMLElement;\n Array.from(newRow.children).forEach(cell=> (cell.textContent=\"\"));\n newRow.setAttribute(\"height\", \"34\");\n row.insertAdjacentElement(\"afterend\", newRow);\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n }\n\n addRowAbove(event: MouseEvent): void {\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const row=(cell as HTMLElement).parentNode as HTMLElement;\n const table=row.parentNode as HTMLElement;\n\n if (row.nodeName===\"TR\"&& table.nodeName===\"TBODY\") {\n const newRow=row.cloneNode(true) as HTMLElement;\n Array.from(newRow.children).forEach(cell=> (cell.textContent=\"\"));\n newRow.setAttribute(\"height\", \"34\");\n row.insertAdjacentElement(\"beforebegin\", newRow);\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n }\n\n addColumnLeft(event: MouseEvent): void {\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const table=(cell as HTMLElement).closest(\"table\");\n\n if (table) {\n const rowIndex=Array.from((cell as HTMLElement).parentNode !.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row)=> {\n const newCell=row.cells[rowIndex].cloneNode(false) as HTMLElement;\n newCell.textContent=\"\";\n row.cells[rowIndex].insertAdjacentElement(\"beforebegin\", newCell);\n }\n\n );\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n }\n\n addColumnRight(event: MouseEvent): void {\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const table=(cell as HTMLElement).closest(\"table\");\n\n if (table) {\n const cellIndex=Array.from((cell as HTMLElement).parentNode !.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row)=> {\n const newCell=row.cells[cellIndex].cloneNode(false) as HTMLElement;\n newCell.textContent=\"\";\n row.cells[cellIndex].insertAdjacentElement(\"afterend\", newCell);\n }\n\n );\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n }\n\n deleteCurrentColumn(event: MouseEvent): void {\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const table=(cell as HTMLElement).closest(\"table\");\n if ( !table) return;\n const cellIndex=Array.from((cell as HTMLElement).parentNode !.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row)=> {\n if (row.cells.length > cellIndex) {\n row.deleteCell(cellIndex);\n }\n }\n\n );\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n\n deleteCurrentRow(event: MouseEvent): void {\n event.preventDefault();\n const selection=window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range=selection.getRangeAt(0);\n let cell=range.startContainer;\n\n // Find the nearest cell element\n while (cell && cell.nodeName !==\"TD\"&& cell.nodeName !==\"TH\") {\n cell=cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName===\"TD\"|| cell.nodeName===\"TH\")) {\n const row=(cell as HTMLElement).parentNode as HTMLElement;\n const table=row.parentNode as HTMLElement;\n\n if (row.nodeName===\"TR\"&& table.nodeName===\"TBODY\") {\n row.remove();\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n\n this.showTableDropdown=false;\n }\n }\n }\n }\n}\n","<div class=\"table-controls\"><button class=\"format-button table-button\" (click)=\"toggleTableDropdown()\"\n title=\"Table Operations\" type=\"button\"><mat-icon svgIcon=\"table\" class=\"table-icon\"></mat-icon></button>\n <div *ngIf=\"showTableDropdown\" class=\"table-dropdown\">\n <div class=\"table-row\"><button type=\"button\" class=\"table-btn\" (click)=\"addTable($event)\" title=\"Add table\"\n matTooltip=\"Add Table\" matTooltipPosition=\"above\"><mat-icon svgIcon=\"add-table\"></mat-icon></button><button\n type=\"button\" class=\"table-btn\" (click)=\"deleteTable($event)\" title=\"Delete table\" matTooltip=\"Delete Table\"\n matTooltipPosition=\"above\"><mat-icon svgIcon=\"delete-table\"></mat-icon></button><button type=\"button\"\n class=\"table-btn\" (click)=\"addColumnLeft($event)\" title=\"Column left\" matTooltip=\"Add Column Left\"\n matTooltipPosition=\"above\"><mat-icon svgIcon=\"column-left\"></mat-icon></button><button type=\"button\"\n class=\"table-btn\" (click)=\"addColumnRight($event)\" title=\"Column right\" matTooltip=\"Add Column Right\"\n matTooltipPosition=\"above\"><mat-icon svgIcon=\"column-right\"></mat-icon></button></div>\n <div class=\"table-row\"><button type=\"button\" class=\"table-btn\" (click)=\"addRowAbove($event)\" title=\"Row top\"\n matTooltip=\"Add Row Above\" matTooltipPosition=\"above\"><mat-icon svgIcon=\"row-top\"></mat-icon></button><button type=\"button\" class=\"table-btn\"\n (click)=\"addRowBelow($event)\" title=\"Row bottom\" matTooltip=\"Add Row Below\" matTooltipPosition=\"above\"><mat-icon svgIcon=\"row-bottom\"></mat-icon></button><button type=\"button\" class=\"table-btn\"\n (click)=\"deleteCurrentRow($event)\" title=\"Delete row\" matTooltip=\"Delete Current Row\"\n matTooltipPosition=\"above\"><mat-icon svgIcon=\"delete-row\"></mat-icon></button><button\n type=\"button\" class=\"table-btn\" (click)=\"deleteCurrentColumn($event)\" title=\"Delete column\"\n matTooltip=\"Delete Current Column\" matTooltipPosition=\"above\"><mat-icon\n svgIcon=\"delete-column\"></mat-icon></button></div>\n </div>\n</div>","\nexport default class BulletUtils {\n static sampleBullets = ['•', '●', '◎', '◍', '◌', '○', '◉', '▪'];\n static autoBullet(text: string) {\n var array = text.split('.');\n let final = \"<ul>\";\n const regexForStripHTML = /(<([^>]+)>)/ig;\n for (let i = 0; i < array.length; i++) {\n const stripContent = array[i].replace(regexForStripHTML, '');\n if (stripContent.trim().length) {\n final = final + \"<li>\" + stripContent + \"</li>\";\n }\n }\n return final + \"</ul>\";\n }\n\n static skillBullet(text: string) {\n text = text.replace(/<p[^>]*>/g, \"\");\n var array = text.split(',');\n let final = \"<ul>\"\n for (let i = 0; i < array.length; i++) {\n final = final + \"<li>\" + array[i] + \"</li>\";\n }\n return final + \"</ul>\";\n }\n\n static legacyOnPasteHandler(text: string) {\n let containsBullets = BulletUtils.sampleBullets.some(bullets => text.includes(bullets));\n let result = '';\n if (containsBullets) {\n const actualBullet = BulletUtils.sampleBullets.filter(bullets => text.includes(bullets));\n const charCodeOfBullet = Number(actualBullet[0].charCodeAt(0));\n const bulletTags = BulletUtils.getTagOfBullets(text, actualBullet[0]);\n const splittedText = text.split(bulletTags.beforeBulletTag + String.fromCharCode(charCodeOfBullet) + bulletTags.afterBullterTag);\n result = splittedText[0].length > 0 ? splittedText[0] : '';\n result = result + '<ul>';\n let bulletedText = '';\n for (let i = 1; i < splittedText.length; i++) {\n let splittedLine = splittedText[i].split('</p>');\n if (splittedLine[1] && splittedLine[1].length > 0)\n bulletedText = bulletedText + '<li>' + splittedLine[0].replace('<p>', '') + '</li>' + BulletUtils.otherBullets(splittedLine);\n else\n bulletedText = bulletedText + '<li>' + splittedLine[0].replace('<p>', '') + '</li>';\n }\n result = result + bulletedText + '</ul>';\n return result;\n }\n else\n return result = text;\n }\n\n\n static getFirstLineOnPaste(text: string, actualBullet: string[]) {\n return text.length > 0 && text.includes(actualBullet[0]) ?\n '<ul>' + '<li>' + text.replace(actualBullet[0], '') + '</li>' : '<p>' + text + '</p>';\n }\n\n static onPasteBulletHandler(text: string) {\n let result = '';\n let map = BulletUtils.extractExistedBullets(text);\n text = map.get('text');\n\n let containsBullets = BulletUtils.sampleBullets.some(bullets => text.includes(bullets));\n if (containsBullets) {\n let actualBullet = BulletUtils.sampleBullets.filter(bullets => text.includes(bullets));\n const parser = new DOMParser();\n const htmlDoc = parser.parseFromString(text, 'text/html');\n let bodyTag = htmlDoc.getElementsByTagName('body')[0].children;\n result = BulletUtils.getFirstLineOnPaste(bodyTag[0].innerHTML, actualBullet);\n let bulletedText = !result.includes('<ul>') ? '<ul>' : '';\n for (let i = 1; i < bodyTag.length; i++) {\n if (bodyTag[i].innerHTML.includes(actualBullet[0])) {\n if ((i < bodyTag.length - 1) && !bodyTag[i + 1].innerHTML.includes(actualBullet[0]) && bodyTag[i + 1].innerHTML.length > 5) {\n if (bodyTag[i].innerHTML === actualBullet[0]) {\n bulletedText = bulletedText + '<li>' + bodyTag[i + 1].innerHTML.replace(actualBullet[0], '') + '</li>';\n i = i + 1;\n }\n else if (bodyTag[i].innerHTML !== actualBullet[0] && !bulletedText.includes(bodyTag[i].innerHTML))\n bulletedText = bulletedText + '<li>' + bodyTag[i].innerHTML.replace(actualBullet[0], '') + '</li>';\n }\n else {\n let insideText = bodyTag[i].innerHTML.replace(actualBullet[0], '');\n bulletedText = bulletedText + '<li>' + insideText + '</li>';\n }\n }\n else if (bulletedText.length > 10 && !bodyTag[i].innerHTML.includes(actualBullet[0]) && i < bodyTag.length - 1 && bodyTag[i + 1].innerHTML.includes(actualBullet[0])) {\n bulletedText = bulletedText.substring(0, bulletedText.lastIndexOf('</li>'));\n bulletedText = bulletedText + bodyTag[i].innerHTML.replace(actualBullet[0], '') + '</li>';\n }\n else {\n if (bulletedText.length > 10) {\n result = result + bulletedText + '</ul>';\n if (!bodyTag[i].innerHTML.includes(actualBullet[0])) {\n if (bodyTag[i].innerHTML.startsWith('<span>') && bodyTag[i].innerHTML.endsWith('</span>'))\n result = result + bodyTag[i].innerHTML.replace('span', 'p');\n else if (bodyTag[i].innerHTML.startsWith('<p>') && !bodyTag[i].innerHTML.endsWith('</p>'))\n result = result + bodyTag[i].innerHTML.replace('span', 'p') + '</p>';\n else if (!bodyTag[i].innerHTML.startsWith('<p>') && bodyTag[i].innerHTML.endsWith('</p>'))\n result = result + '<p>' + bodyTag[i].innerHTML.replace('span', 'p');\n else\n result = result + '<p>' + bodyTag[i].innerHTML.replace('<p>', '').replace('</p>', '') + '</p>';\n }\n bulletedText = '<ul>';\n }\n else\n result = result + BulletUtils.transform(bodyTag[i] as HTMLElement);\n }\n\n }\n result = result + bulletedText + '</ul>';\n result = map.has('existedBullets') ? (map.get('existedBullets') + result) : result;\n return result;\n }\n else\n return map.has('existedBullets') ? (map.get('existedBullets') + result) + BulletUtils.sanitizeHtml(text) : result + BulletUtils.sanitizeHtml(text);\n\n }\n\n\n private static otherBullets(tag: any) {\n let otherTag = '</ul><p>'\n for (let i = 1; i < tag.length; i++)\n otherTag = otherTag + tag[i];\n return otherTag + '</p><ul>';\n }\n\n\n private static getTagOfBullets(text: string, actualBullet: string) {\n let beforeBulletTag = text.substring(0, text.indexOf(actualBullet));\n let afterBullterTag = text.substring(text.indexOf(actualBullet), text.length);\n beforeBulletTag = beforeBulletTag.substring(beforeBulletTag.lastIndexOf('<'), beforeBulletTag.length);\n afterBullterTag = afterBullterTag.substring(1, afterBullterTag.indexOf('>')) + '>';\n return {\n beforeBulletTag: beforeBulletTag,\n afterBullterTag: afterBullterTag\n };\n }\n private static transformSimpleText(text: string) {\n return text.startsWith('<p') || text.startsWith('<div') ?\n '<p>' + text.replaceAll('</p>', '&nbsp;').replaceAll('<p>', '') + '</p>' : '<span>' + text.replaceAll('</span>', '&nbsp;').replaceAll('<span>', '') + '</span>';\n\n }\n private static transform(node: HTMLElement) {\n if (node.tagName.startsWith('P')) {\n return '<p>' + node.innerHTML + '</p>';\n }\n else if (node.tagName.startsWith('S')) {\n return '<span>' + node.innerHTML + '</span>';\n }\n else\n return '<p>' + node.innerHTML + '</p>';\n }\n\n private static sanitizeHtml(text: string) {\n return new DOMParser().parseFromString(text, \"text/html\").body.innerHTML;\n }\n\n\n static onPasteBulletHandlerOriginalResume(text: string) {\n let result = '';\n text = text.replace(/style=\"[^\"]*color:\\s*transparent[^\"]*\"/g, 'style=\"color: black;\"');\n // let map = BulletUtils.extractExistedBullets(text);\n // text = BulletUtils.removeTags(map.get('text'), ['p'])\n // text = text.split('<p></p>').join('').split('<p> </p>').join('');\n result = BulletUtils.onPasteBulletHandler(text);\n // result = map.has('existedBullets') ? (map.get('existedBullets') + result) : result;\n return result;\n }\n\n // this function take html and tags we want to keep in the provided html and remove all other tags from html\n static removeTags(string: string, array: string[]) {\n return array ? string.split(\"<\").filter(function (val) { return f(array, val); }).map(function (val) { return f(array, val); }).join(\"\") : string.split(\"<\").map(function (d) { return d.split(\">\").pop(); }).join(\"\");\n function f(array: string[], value: string) {\n return array.map(function (d) { return value.includes(d + \">\"); }).indexOf(true) != -1 ? \"<\" + value : value.split(\">\")[1];\n }\n }\n\n /**\n * this funcation take the whole text we have in editor and\n * extract already exicted bullets in it.\n * @param text\n * @returns map -> with the following values\n * 1: 'existedBullets' if we have any in the text.\n * 2: 'text' newly pasted text in the editor\n */\n static extractExistedBullets(text: string) {\n let map = new Map();\n let existedBullets = text.substring(0, text.lastIndexOf('</ul>'));\n if (existedBullets) {\n existedBullets = existedBullets + '</ul>';\n map.set('existedBullets', existedBullets);\n let x = text.split(existedBullets);\n text = x[1] ? x[1] : '';\n }\n map.set('text', text);\n return map;\n }\n static cleanSpans(htmlString: string) {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n // Select all <li> elements\n const listItems = doc.querySelectorAll('li');\n listItems.forEach(li => {\n if (li?.childNodes?.length > 1) {\n let combinedText = '';\n // Iterate through all child nodes of the <li>\n li?.childNodes?.forEach(child => {\n // Only process element nodes (skip text nodes and other types)\n if (child.nodeType === Node.ELEMENT_NODE) {\n combinedText += (child.textContent || '').trim() + ' ';\n }\n });\n // Remove any trailing whitespace\n combinedText = combinedText.trim();\n // Clear the existing content of the <li> and set its text content\n li.innerHTML = combinedText;\n }\n });\n\n // Serialize the updated DOM back to an HTML string\n return doc.body.innerHTML;\n }\n\n static cleanDiv(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Select all <div> and <span> elements\n const divAndSpanItems = doc.querySelectorAll('div');\n divAndSpanItems.forEach(item => {\n // Create a new <p> element\n const p = document.createElement('p');\n\n let combinedText = '';\n // Iterate through all child nodes of the <div> or <span>\n item.childNodes.forEach(child => {\n // Only process element nodes (skip text nodes and other types)\n if (child.nodeType === Node.ELEMENT_NODE || child.nodeType === Node.TEXT_NODE) {\n combinedText += child.textContent?.replace(/\\u00A0/g, ' ') + ' ';\n }\n });\n combinedText = combinedText.trim();\n p.textContent = combinedText;\n\n // Replace the original <div> or <span> with the new <p>\n item.parentNode?.replaceChild(p, item);\n\n this.removeEmptyChildren(p);\n });\n\n return doc.body.innerHTML;\n }\n\n\n\n static removeEmptyChildren(element: HTMLElement): void {\n const children = Array.from(element.childNodes);\n\n children.forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE && (child as HTMLElement).innerHTML.trim() === '') {\n element.removeChild(child);\n }\n });\n }\n\n static cleanEmptyTags(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively remove empty tags\n function removeEmptyTags(element: HTMLElement): boolean {\n let hasData = false;\n\n const children = Array.from(element.childNodes);\n for (const child of children) {\n if (child.nodeType === Node.ELEMENT_NODE) {\n const el = child as HTMLElement;\n\n // Recursively clean children and check if they have data\n if (removeEmptyTags(el)) {\n hasData = true;\n }\n } else if (child.nodeType === Node.TEXT_NODE && child.textContent?.trim() !== '') {\n // If the text node has non-whitespace content, mark as having data\n hasData = true;\n }\n }\n\n // Remove the element if it has no data and no children with data\n if (!hasData) {\n element.parentNode?.removeChild(element);\n }\n\n return hasData;\n }\n removeEmptyTags(doc.body);\n return doc.body.innerHTML;\n }\n\n static refineAllTags(htmlString: string): string {\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to process b u and i contents\n function cleanBoldItalicUnderline(el: HTMLElement): string {\n let combinedContent = '';\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it is just a text\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n // clean child elements recursiverly\n combinedContent += cleanBoldItalicUnderline(elementChild);\n }\n });\n el.innerHTML = combinedContent;\n //remove empty child\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE && child.textContent === '') {\n el.removeChild(child);\n }\n });\n // cobine content wrap up in the b or u or i\n return `<${el.tagName.toLowerCase()}>${combinedContent}</${el.tagName.toLowerCase()}>`;\n }\n\n\n // Function to combine p\n function combinedivContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'div') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'div') {\n // If it's a nested <p> tag, combine its content recursively\n combinedContent += combinedivContents(elementChild);\n } else if (elementChild.tagName.toLowerCase() === 'p') {\n // Combine content of nested <span> elements\n combinedContent += combinedivContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <p> content\n el.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Function to combine span contents recursively\n function combineSpanContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'span') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'span') {\n // If it's a <span> element, process its content recursively\n combinedContent += combineSpanContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n // For other element nodes, add their outer HTML\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <span> content\n el.innerHTML = combinedContent;\n const ptag = document.createElement('p');\n ptag.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Function to combine p contents recursively\n function combinePContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'p') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'p') {\n // If it's a nested <p> tag, combine its content recursively\n combinedContent += combinePContents(elementChild);\n } else if (elementChild.tagName.toLowerCase() === 'span') {\n // Combine content of nested <span> elements\n combinedContent += combineSpanContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n // For other element nodes, add their outer HTML\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <p> content\n el.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Helper function to wrap adjacent <span> tags in a <p> tag if there are no ancestor tags\n function wrapSpansInP(element: HTMLElement): void {\n // Get all top-level child elements inside the body\n const children = Array.from(element.childNodes);\n const spanElements = children.filter(node => node.nodeType === Node.ELEMENT_NODE && (node as HTMLElement).tagName.toLowerCase() === 'span');\n\n // If all top-level elements are <span> tags, wrap them in a <p> tag\n if (spanElements.length === children.length && children.length > 0) {\n const pElement = document.createElement('p');\n spanElements.forEach(span => {\n pElement.appendChild(span); // Move the <span> elements inside the <p>\n });\n element.appendChild(pElement); // Replace with new <p>\n }\n }\n\n // Function to process all elements\n function processAllElements(element: HTMLElement): void {\n // Select all elements within the current element\n const allElements = Array.from(element.querySelectorAll('*'));\n\n allElements.forEach(el => {\n if (el instanceof HTMLElement) {\n if (el.tagName.toLowerCase() === 'p') {\n combinePContents(el);\n } else if (el.tagName.toLowerCase() === 'span') {\n combineSpanContents(el);\n }\n else if (el.tagName.toLowerCase() === 'div') {\n combinedivContents(el);\n }\n\n // Clean empty tags\n if (el.childNodes.length === 0 || el.textContent?.trim() === '') {\n el.parentNode?.removeChild(el);\n }\n }\n });\n\n // Recursively apply to all child elements\n Array.from(element.children).forEach(child => {\n if (child instanceof HTMLElement) {\n processAllElements(child);\n }\n });\n }\n // check whether the span within the p tags or not\n wrapSpansInP(doc.body);\n\n // Start processing from the body of the document\n processAllElements(doc.body);\n return doc.body.innerHTML;\n }\n\n\n static processParagraphs(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively combine child elements and text into a single <p> tag\n function flattenParagraphs(element: HTMLElement) {\n // Process each <p> element within the current element\n element.querySelectorAll('p').forEach(p => {\n let combinedText = '';\n\n // Iterate through child nodes and elements\n p.childNodes.forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n const el = child as HTMLElement;\n // Combine text from child elements\n combinedText += (el.textContent || '').trim() + ' ';\n // Recursively process child elements if they contain further <p> tags\n if (el.querySelector('p')) {\n flattenParagraphs(el);\n }\n } else if (child.nodeType === Node.TEXT_NODE) {\n combinedText += (child.textContent || '').trim() + ' ';\n }\n });\n\n // Remove any trailing whitespace\n combinedText = combinedText.trim();\n // Update the <p> tag with the combined text\n p.textContent = combinedText;\n\n // Remove all child <p> elements to avoid nested <p> tags\n p.querySelectorAll('p').forEach(childP => childP.remove());\n });\n\n // Recursively process any nested elements within the current element\n element.querySelectorAll('*').forEach(childElement => {\n if (childElement.tagName !== 'P') {\n flattenParagraphs(childElement as HTMLElement);\n }\n });\n }\n\n // Start the flattening process from the root of the document body\n flattenParagraphs(doc.body);\n\n // Serialize the updated DOM back to an HTML string\n return doc.body?.innerHTML;\n }\n\n\n static removeInlineStyles(htmlString: string) {\n // Create a new DOM parser\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively remove styles from all elements\n function removeStylesFromElement(element: HTMLElement) {\n // Remove the 'style' attribute from the current element\n element.removeAttribute('style');\n\n // Recursively remove styles from child nodes\n element.childNodes.forEach((child: Node) => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n removeStylesFromElement(child as HTMLElement);\n }\n });\n }\n\n // Start from the document body\n removeStylesFromElement(doc.body);\n\n // Serialize the document back to an HTML string\n return doc.body.innerHTML;\n }\n\n}\n","import {\n Component,\n ElementRef,\n ViewChild,\n OnInit,\n OnDestroy,\n AfterViewInit,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n HostListener,\n Renderer2,\n Inject\n}\n from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TableComponent } from './table/table.component';\nimport { ButtonComponent } from '../button/button.component';\nimport BulletUtils from './bullet-utils';\nimport { Subscription } from 'rxjs';\n\ninterface ToolbarItem {\n type: string;\n icon: string;\n title: string;\n command: string;\n}\n\n@Component({\n selector: 'app-custom-editor',\n standalone: true,\n imports: [CommonModule, TableComponent, MatTooltipModule, MatIconModule, ButtonComponent],\n templateUrl: './custom-editor.component.html',\n styleUrls: ['./custom-editor.component.scss'],\n encapsulation: ViewEncapsulation.None\n}\n\n) export class CustomEditorComponent implements OnInit,\n OnDestroy,\n AfterViewInit {\n constructor(\n @Inject(Renderer2) private renderer: Renderer2,\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n\n // Get base path dynamically\n const basePath = this.getBasePath();\n\n // Register SVG icons for custom editor\n // Note: Add more icons as SVG files become available\n this.iconRegistry.addSvgIcon(\n 'delete',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/delete.svg`)\n );\n // Register the Table.svg icon\n this.iconRegistry.addSvgIcon(\n 'table',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/Table.svg`)\n );\n // Add more icon registrations here as needed\n }\n\n /**\n * Dynamically determines the base path for assets\n * Handles both root deployment and subdirectory deployment (e.g., /allsorter-lib/)\n */\n private getBasePath(): string {\n // Check if we're in a browser environment\n if (typeof document === 'undefined') {\n return '';\n }\n\n // Get base href from document\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n // Remove trailing slash and return\n return baseHref.replace(/\\/$/, '');\n }\n\n // Fallback: extract base path from current location\n const pathname = window.location.pathname;\n // Check if pathname contains a known subdirectory pattern\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n // Default to root\n return '';\n }\n\n @ViewChild('editorReference', {\n static: true\n })\n editorReference!: ElementRef<HTMLElement>;\n\n @ViewChild('editorContainer', {\n static: true\n })\n editorContainer?: ElementRef<HTMLElement>;\n\n @Input() bold?: boolean;\n @Input() italic?: boolean;\n @Input() underline?: boolean;\n @Input() list?: boolean;\n @Input() isVisible: boolean = true;\n @Input() dataTestId: string = '';\n\n // Editor labels inputs\n @Input() showLabels: boolean = false;\n @Input() leftLabelText: string = 'Left Text';\n @Input() rightLabelText: string = 'Right Text';\n\n // New input properties\n @Input() initialValue: string = '';\n @Input() contentFromParent: string = '';\n @Input() editScreenSection: string = '';\n @Input() actionType: any;\n @Input() historyControls: boolean = true; // Single flag for undo/redo buttons\n @Input() autobullet: boolean = true;\n\n @Input() skillsBullet?: boolean;\n @Input() jsonData: any;\n @Input() formJsonData: any;\n @Input() editorId: string = 'editor';\n @Input() sectionId: any;\n @Input() actionId: any;\n\n // Undo/Redo controls\n @Input() undoCustom?: boolean;\n @Input() redoCustom?: boolean;\n @Input() undoSkill?: boolean;\n @Input() redoSkill?: boolean;\n\n // AI and table options\n @Input() matOptionAI?: boolean;\n @Input() hideTableOption?: boolean = false;\n @Input() hideAutoBulletOption?: boolean = false;\n @Input() hideAIOption?: boolean = false;\n @Input() showAIButton: boolean = true;\n\n // Table button controls\n @Input() insertTablebtn?: boolean;\n @Input() insertRowAbovebtn?: boolean;\n @Input() insertRowBelowbtn?: boolean;\n @Input() insertColumnLeftbtn?: boolean;\n @Input() insertColumnRightbtn?: boolean;\n @Input() deleteTablebtn?: boolean;\n @Input() deleteRowAbovebtn?: boolean;\n @Input() deleteRowBelowbtn?: boolean;\n @Input() deleteColumnLeftbtn?: boolean;\n @Input() deleteColumnRightbtn?: boolean;\n\n // Table visibility control\n @Input() showTable: boolean = true;\n\n @Output() contentChangeFromQuill = new EventEmitter<string>();\n @Output() ApplyAIinQuill = new EventEmitter<any>();\n @Output() onAutoBullet = new EventEmitter<any>();\n // Generic configuration approach\n @Input() toolbarConfig: ToolbarItem[] = [{\n type: 'bold', icon: 'format_bold', title: 'Bold', command: 'bold'\n },\n {\n type: 'italic', icon: 'format_italic', title: 'Italic', command: 'italic'\n },\n {\n type: 'underline', icon: 'format_underline', title: 'Underline ', command: 'underline'\n }\n\n ];\n\n // Text formatting configuration\n @Input() textFormattingConfig: ToolbarItem[] = [{\n type: 'list', icon: 'format_list_bulleted', title: 'Bullet List', command: 'insertUnorderedList'\n }];\n\n boldedText = false;\n italicTexted = false;\n underlineTexted = false;\n listTexted = false;\n\n // Auto bullet and skills bullet properties\n autoBulletDisable: boolean = false;\n isLoadingAI: boolean = false;\n isDisabled: boolean = false;\n AutoBulletButton: string = \"Auto Bullet\";\n ApplyAiButton: string = \"Apply AI\";\n skillsButton: string = \"Bullet Skills\";\n isSkillBullet: any = false;\n isAutoBullet: boolean = false;\n previousContent: string = '';\n previousContentForTextChange: string = '';\n\n // History management for undo/redo\n private history: string[] = [];\n private redoStack: string[] = [];\n private content: string = '';\n savedRange: any;\n\n // Additional properties from main project\n FormValue: any;\n forDisableButton: any;\n orgUUID: string = '';\n resumeId: number = 0;\n editSection$: string = '';\n wsSubsription?: Subscription;\n timeout: any = null;\n quillInstance: any = null;\n quill: any = null;\n table: any = null;\n isLoading: boolean = true;\n spellChecker$: boolean = false;\n checkPreserveOriginalScreen: boolean = false;\n checkSideBySideScreen: boolean = false;\n checkPreserveOriginalScreenforButtons: boolean = false;\n summaryAIBackGroundCheck: boolean = false;\n private overlayIdCounter: number = 1;\n\n // Responsive styling dropdown\n isSmallScreen: boolean = false;\n showStylingDropdown: boolean = false;\n showTextFormattingDropdown: boolean = false;\n\n // List of registered SVG icon names\n private registeredSvgIcons: Set<string> = new Set(['delete', 'table']);\n\n /**\n * Check if an icon has an SVG version registered\n */\n isSvgIcon(iconName: string): boolean {\n return this.registeredSvgIcons.has(iconName);\n }\n\n // Timeout handlers for dropdown hiding\n private stylingDropdownTimeout: any;\n private textFormattingDropdownTimeout: any;\n private resizeObserver?: ResizeObserver;\n\n ngOnInit(): void {\n\n // Initialize editor with initial value or default content\n if (this.editorReference?.nativeElement) {\n const content = this.initialValue || this.contentFromParent || '<p>Start typing here...</p>';\n this.editorReference.nativeElement.innerHTML = content;\n }\n\n // Check initial size based on container width\n this.checkScreenSize();\n\n // Add window resize listener as a fallback (container-based logic is in ResizeObserver)\n window.addEventListener('resize', () => this.checkScreenSize());\n\n // Add click outside listener to close dropdowns\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['contentFromParent'] && changes['contentFromParent'].currentValue !== undefined) {\n this.isLoadingAI = false;\n if (this.editorReference?.nativeElement) {\n this.updateEditorContentSafely(this.contentFromParent);\n this.autoBulletDisable = false;\n this.textChange();\n }\n }\n }\n\n private updateEditorContentSafely(newContent: string): void {\n if (!this.editorReference?.nativeElement || !newContent) {\n return;\n }\n const editorElement = this.editorReference.nativeElement;\n const currentContent = editorElement.innerHTML;\n\n if (currentContent === newContent) {\n return;\n }\n\n const selection = window.getSelection();\n let cursorPosition = 0;\n let range: Range | null = null;\n if (selection && selection.rangeCount > 0) {\n range = selection.getRangeAt(0);\n cursorPosition = this.getCursorPosition(range, editorElement);\n }\n\n if (newContent.startsWith(\"<p>\")) {\n editorElement.innerHTML = newContent;\n } else {\n editorElement.innerHTML = \"<p>\" + newContent + \"</p>\";\n }\n\n if (range && cursorPosition >= 0) {\n this.restoreCursorPosition(editorElement, cursorPosition);\n }\n }\n\n private getCursorPosition(range: Range, editorElement: HTMLElement): number {\n try {\n const preCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(editorElement);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n return preCaretRange.toString().length;\n } catch (error) {\n return 0;\n }\n }\n\n private restoreCursorPosition(editorElement: HTMLElement, position: number): void {\n try {\n const walker = document.createTreeWalker(\n editorElement,\n NodeFilter.SHOW_TEXT,\n null\n );\n let currentPosition = 0;\n let node: Node | null = null;\n while (walker.nextNode()) {\n const textNode = walker.currentNode;\n const textLength = textNode.textContent?.length || 0;\n if (currentPosition + textLength >= position) {\n node = textNode;\n break;\n }\n currentPosition += textLength;\n }\n if (node) {\n const range = document.createRange();\n const selection = window.getSelection();\n const offset = position - currentPosition;\n range.setStart(node, Math.min(offset, node.textContent?.length || 0));\n range.collapse(true);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n } catch (error) {\n const range = document.createRange();\n const selection = window.getSelection();\n range.selectNodeContents(editorElement);\n range.collapse(false);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }\n\n ngAfterViewInit(): void {\n const editorElement = this.editorReference.nativeElement;\n if (this.initialValue?.startsWith(\"<p>\")) {\n editorElement.innerHTML = this.initialValue;\n } else {\n editorElement.innerHTML = \"<p>\" + this.initialValue + \"</p>\";\n }\n\n const isOnlyPTag = /^<p>(.*?)<\\/p>$/.test(editorElement.innerHTML?.trim());\n const range = document.createRange();\n const sel = window.getSelection();\n if (isOnlyPTag) {\n const pTag = editorElement.querySelector(\"p\");\n if (pTag) {\n range.setStart(pTag, 0);\n range.collapse(true);\n }\n } else {\n range.selectNodeContents(editorElement);\n range.collapse(false);\n }\n sel?.removeAllRanges();\n sel?.addRange(range);\n\n this.assignUniqueIdAndStyle();\n this.saveHistory();\n\n // Observe container size so we can switch layout based on container width, not screen width\n if (this.editorContainer?.nativeElement && typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkScreenSize();\n });\n this.resizeObserver.observe(this.editorContainer.nativeElement);\n } else {\n // Fallback check\n this.checkScreenSize();\n }\n }\n\n @HostListener(\"click\")\n onClick(): void {\n setTimeout(() => this.assignUniqueIdAndStyle(), 0);\n }\n\n private assignUniqueIdAndStyle(): void {\n if (!this.renderer) return;\n\n const overlayPane = document.querySelector(\".cdk-overlay-pane\");\n if (overlayPane) {\n const isDialog = overlayPane.querySelector('mat-dialog-container');\n if (!isDialog) {\n const uniqueId = `cdk-overlay-${this.editorId}-${this.overlayIdCounter++}`;\n this.renderer.setAttribute(overlayPane, \"id\", uniqueId);\n this.renderer.setStyle(overlayPane, \"width\", \"216px\");\n this.renderer.setStyle(overlayPane, \"min-width\", \"216px\");\n }\n }\n }\n\n getEditorElement(): HTMLElement | undefined {\n return this.editorReference?.nativeElement;\n }\n\n // Bound methods for table component\n getBoundGetEditorElement(): () => HTMLElement | undefined {\n return () => this.getEditorElement();\n }\n\n getBoundSaveHistory(): () => void {\n return () => this.saveHistory();\n }\n\n getBoundTextChange(): () => void {\n return () => this.textChange();\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('resize', () => this.checkScreenSize());\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = undefined;\n }\n\n if (this.stylingDropdownTimeout) {\n clearTimeout(this.stylingDropdownTimeout);\n }\n if (this.textFormattingDropdownTimeout) {\n clearTimeout(this.textFormattingDropdownTimeout);\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (this.wsSubsription) {\n this.wsSubsription.unsubscribe();\n }\n }\n\n // Responsive methods\n private checkScreenSize(): void {\n let width = 0;\n\n if (this.editorContainer?.nativeElement) {\n const el = this.editorContainer.nativeElement;\n width = el.offsetWidth || (el as any).clientWidth || 0;\n }\n\n // Fallback to window width if container width is not available\n if (!width && typeof window !== 'undefined') {\n width = window.innerWidth;\n }\n\n // Small layout when container width is below 500px\n this.isSmallScreen = width < 500;\n }\n\n // Handle text formatting button clicks\n handleTextFormattingClick(event: MouseEvent, item: ToolbarItem): void {\n event.preventDefault();\n\n switch (item.command) {\n case 'table':\n // Table functionality is handled by the app-table component\n break;\n case 'autobullet':\n this.transformToBullets(event);\n break;\n case 'skillsbullet':\n this.transformToSkillsBullets(event);\n break;\n default:\n // For list and other commands, use the standard execCmd\n this.execCmd(event, item.command);\n break;\n }\n }\n\n // Toggle styling dropdown\n toggleStylingDropdown(): void {\n this.showStylingDropdown = !this.showStylingDropdown;\n if (this.showStylingDropdown) {\n this.showTextFormattingDropdown = false;\n }\n }\n\n // Toggle text formatting dropdown\n toggleTextFormattingDropdown(): void {\n this.showTextFormattingDropdown = !this.showTextFormattingDropdown;\n if (this.showTextFormattingDropdown) {\n this.showStylingDropdown = false;\n }\n }\n\n // Show styling dropdown on hover\n showStylingDropdownOnHover(): void {\n this.showStylingDropdown = true;\n this.showTextFormattingDropdown = false;\n }\n\n // Show text formatting dropdown on hover\n showTextFormattingDropdownOnHover(): void {\n this.showTextFormattingDropdown = true;\n this.showStylingDropdown = false;\n }\n\n // Hide styling dropdown with delay\n hideStylingDropdown(): void {\n this.stylingDropdownTimeout = setTimeout(() => {\n this.showStylingDropdown = false;\n }, 200);\n }\n\n // Hide text formatting dropdown with delay\n hideTextFormattingDropdown(): void {\n this.textFormattingDropdownTimeout = setTimeout(() => {\n this.showTextFormattingDropdown = false;\n }, 200);\n }\n\n // Clear timeout when re-entering dropdown\n clearStylingDropdownTimeout(): void {\n if (this.stylingDropdownTimeout) {\n clearTimeout(this.stylingDropdownTimeout);\n }\n }\n\n clearTextFormattingDropdownTimeout(): void {\n if (this.textFormattingDropdownTimeout) {\n clearTimeout(this.textFormattingDropdownTimeout);\n }\n }\n\n // Handle click outside to close dropdowns\n handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n if (!target.closest('.styling-dropdown') && !target.closest('.text-formatting-dropdown')) {\n this.showStylingDropdown = false;\n this.showTextFormattingDropdown = false;\n }\n }\n\n\n\n\n\n execCmd(event: MouseEvent, command: string, value: string | null = null): void {\n event.preventDefault();\n this.saveHistory();\n\n if (command === 'undo') {\n this.undo(event);\n return;\n } else if (command === 'redo') {\n this.redo(event);\n return;\n } else {\n document.execCommand(command, false, value || undefined);\n }\n\n this.updateTagHierarchy();\n }\n\n updateTagHierarchy(): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let element = range.startContainer as Node;\n\n // Reset flags at the beginning\n this.boldedText = false;\n this.underlineTexted = false;\n this.italicTexted = false;\n this.listTexted = false;\n const tags: string[] = [];\n\n // Traverse up the DOM tree to set flags\n while (element && element.nodeName !== \"DIV\") {\n if (element.nodeType === Node.ELEMENT_NODE) {\n const tagName = (element.nodeName || \"\").toLowerCase();\n tags.unshift(tagName);\n\n // Set flags based on tag names\n if (tagName === \"b\" || tagName === \"strong\") {\n this.boldedText = true;\n }\n\n else if (tagName === \"u\" || tagName === \"ins\") {\n this.underlineTexted = true;\n }\n\n else if (tagName === \"i\" || tagName === \"em\") {\n this.italicTexted = true;\n }\n\n else if (tagName === \"ul\" || tagName === \"ol\" || tagName === \"li\") {\n this.listTexted = true;\n }\n\n else if (tagName === \"h1\" || tagName === \"h2\" || tagName === \"h3\" || tagName === \"h4\" || tagName === \"h5\" || tagName === \"h6\") {\n // this.headerTexted = true; // Removed headerTexted\n }\n }\n\n element = element.parentNode!;\n }\n\n const tagHierarchyDiv = document.getElementById(\"tag-hierarchy\");\n\n if (tagHierarchyDiv) {\n tagHierarchyDiv.textContent = tags.join(\" > \");\n }\n }\n }\n\n onEditorInput(): void {\n // Save history on input changes\n this.saveHistory();\n // Emit content changes\n this.textChange();\n }\n\n getActiveState(type: string): boolean {\n switch (type) {\n case 'bold': return this.boldedText;\n case 'italic': return this.italicTexted;\n case 'underline': return this.underlineTexted;\n case 'header': return false; // Removed headerTexted\n case 'list': return this.listTexted;\n case 'table': return false; // Table button is never active\n case 'autobullet': return false; // Auto bullet button is never active\n case 'skillsbullet': return this.isSkillBullet; // Skills bullet button shows active state\n default: return false;\n }\n }\n\n undo(event: MouseEvent): void {\n event.preventDefault();\n const editor = document.getElementById(this.editorId);\n if (editor) {\n const lastState = this.history.pop();\n if (lastState !== undefined) {\n this.redoStack.push(editor.innerHTML);\n editor.innerHTML = lastState;\n }\n }\n this.textChange();\n }\n\n redo(event: MouseEvent): void {\n event.preventDefault();\n const editor = document.getElementById(this.editorId);\n if (editor) {\n const nextState = this.redoStack.pop();\n if (nextState !== undefined) {\n this.history.push(editor.innerHTML);\n editor.innerHTML = nextState;\n }\n }\n this.textChange();\n }\n\n textChange(): void {\n if (this.editorReference.nativeElement.innerHTML !== \"<p>Awaiting response from AI...</p>\") {\n this.content = this.editorReference.nativeElement.innerHTML;\n this.contentChangeFromQuill.emit(this.content);\n }\n }\n\n TextChange(): void {\n this.textChange();\n }\n\n saveHistory(): void {\n const editor = document.getElementById(this.editorId);\n if (editor && this.editorReference.nativeElement.innerHTML !== \"<p>Awaiting response from AI...</p>\") {\n this.history.push(editor.innerHTML);\n this.redoStack = [];\n }\n this.textChange();\n }\n\n\n toggleDiv(event: Event, visible: boolean): void {\n event.preventDefault();\n\n if (visible) {\n this.isVisible = false;\n }\n\n else {\n this.isVisible = true;\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n const selection = window.getSelection();\n const range = selection?.getRangeAt(0);\n const selectedLiTags = this.getSelectedLiTags();\n\n if (event.key === \"Enter\" && selection && range) {\n const parentElement = range.startContainer.parentElement;\n const parentNode = range.startContainer; // Get the current node\n\n // Check if the cursor is within an empty <p> tag\n if (parentElement && parentElement.tagName === \"P\" && parentElement.textContent?.trim() === \"\"\n\n ) {\n event.preventDefault(); // Prevent the default Enter behavior\n\n // Create the new <p><br></p> structure\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n // Insert the new element at the current cursor position\n range.deleteContents(); // Optional: clear any selected text\n range.insertNode(newParagraph);\n\n // Optionally, place the cursor at the end of the new paragraph\n const newRange = document.createRange();\n newRange.setStartAfter(newParagraph);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n\n else if ((parentElement?.tagName === \"B\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"U\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"I\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"SPAN\" && (parentElement.closest(\"b\") || parentElement.closest(\"u\") || parentElement.closest(\"i\")) && range.startOffset === 0) || (parentElement?.tagName === \"SPAN\" && (range.startOffset === 0 || range.endOffset === 0))) {\n event.preventDefault();\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n if (parentElement?.parentElement) {\n parentElement.parentElement.insertBefore(newParagraph, parentElement);\n }\n\n const newRange = document.createRange();\n const selection = window.getSelection();\n newRange.setStart(newParagraph, 0);\n newRange.collapse(true);\n selection?.removeAllRanges();\n selection?.addRange(newRange);\n }\n\n else if (parentNode.nodeType === Node.TEXT_NODE && parentElement?.tagName === \"DIV\" && range.startOffset === (parentElement.textContent?.length || 0)) {\n event.preventDefault();\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n if (parentElement?.parentElement) {\n parentElement.insertBefore(newParagraph, parentNode.nextSibling);\n }\n\n const newRange = document.createRange();\n newRange.setStart(newParagraph, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n }\n\n else if (event.key === \"Tab\") {\n event.preventDefault();\n\n if (event.shiftKey) {\n // Outdent if Shift + Tab is pressed\n document.execCommand(\"outdent\");\n }\n\n else {\n // Indent if Tab is pressed\n document.execCommand(\"indent\");\n }\n }\n\n else if (event.key === \"Backspace\") {\n if (selectedLiTags.length === 1) {\n if (range?.startOffset === 0) {\n if (!this.isTextHighlighted()) {\n event.preventDefault();\n this.handleBackspace(range, selectedLiTags[0]);\n return;\n }\n\n else {\n document.execCommand(\"insertUnorderedList\", false);\n }\n }\n }\n }\n\n this.saveHistory();\n }\n\n handleBackspace(range: Range, liElement: HTMLElement): void {\n if (range.startContainer.nodeType === Node.TEXT_NODE) {\n const pElement = document.createElement(\"p\");\n pElement.innerHTML = liElement.innerHTML;\n liElement.parentNode?.replaceChild(pElement, liElement);\n }\n\n document.execCommand(\"insertUnorderedList\", false);\n this.saveHistory();\n }\n\n\n isTextHighlighted(): boolean {\n const selection = window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n return !range.collapsed && range.toString().trim().length > 0;\n }\n\n\n handlePaste(event: ClipboardEvent): void {\n event.preventDefault();\n const clipboardData = event.clipboardData;\n if (!clipboardData) return;\n const selectedLiTags = this.getSelectedLiTags();\n let pastedData = this.getPastedData(clipboardData);\n\n if (selectedLiTags?.length >= 1) {\n pastedData = pastedData.replace(/<\\/?ul[^>]*>/gi, \"\");\n }\n\n pastedData = this.removeSpacesFromHtml(pastedData);\n pastedData = this.applyRegexTransformations(pastedData);\n pastedData = BulletUtils.refineAllTags(pastedData);\n pastedData = BulletUtils.removeInlineStyles(pastedData);\n pastedData = BulletUtils.cleanDiv(pastedData);\n\n let tempDiv = this.createTemporaryDiv(pastedData);\n this.removeStylesFromElements(tempDiv);\n\n const tables = tempDiv.getElementsByTagName(\"table\");\n\n if (tables.length > 0) {\n this.transformTableData(tables);\n }\n\n else {\n pastedData = this.applyBulletUtilsTransformations(pastedData);\n tempDiv.innerHTML = pastedData;\n }\n\n this.insertTransformedContent(tempDiv);\n this.saveHistory();\n this.updateTagHierarchy();\n }\n\n transformData(data: string): string {\n data = BulletUtils.onPasteBulletHandler(data);\n data = BulletUtils.cleanSpans(data);\n return data;\n }\n\n applyBulletUtilsTransformations(data: string): string {\n data = BulletUtils.onPasteBulletHandler(data);\n return data;\n }\n\n\n getSelectedLiTags(): HTMLElement[] {\n\n const selection = window.getSelection();\n const selectedLiTags: HTMLElement[] = [];\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n const startContainer = range.startContainer;\n const endContainer = range.endContainer;\n\n // Check up to 8 levels of ancestors for start and end containers\n const startLi = this.getAncestorLi(startContainer);\n const endLi = this.getAncestorLi(endContainer);\n\n if (startLi && startLi === endLi) {\n selectedLiTags.push(startLi);\n }\n }\n\n return selectedLiTags;\n }\n\n getAncestorLi(node: Node): HTMLElement | null {\n let currentNode: Node | null = node;\n\n for (let i = 0; i < 8 && currentNode; i++) {\n if (currentNode.nodeType === Node.ELEMENT_NODE && (currentNode as HTMLElement).nodeName === \"LI\"\n\n ) {\n return currentNode as HTMLElement;\n }\n\n currentNode = currentNode.parentNode;\n }\n\n return null;\n }\n\n getPastedData(clipboardData: DataTransfer): string {\n return (clipboardData.getData(\"text/html\") || clipboardData.getData(\"text/plain\"));\n }\n\n removeSpacesFromHtml(htmlString: string) {\n return htmlString?.replace(/\\n/g, \"\");\n }\n\n removeStylesFromHtml(htmlString: string): string {\n // Remove inline styles but preserve HTML structure\n return htmlString.replace(/style=\"[^\"]*\"/g, '');\n\n }\n\n applyRegexTransformations(data: string): string {\n const regexPattern = /<p>(.*?)<span.*?>(.*?)<\\/span>(.*?)<\\/p>/g;\n return data.replace(regexPattern, \"<p>$1$2$3</p>\");\n }\n\n createTemporaryDiv(data: string): HTMLDivElement {\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = data;\n return tempDiv;\n }\n\n removeStylesFromElements(tempDiv: HTMLDivElement): void {\n // Remove styles from <p> tags\n const pTags = tempDiv.getElementsByTagName(\"p\");\n\n Array.from(pTags).forEach((p) => {\n p.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <span> tags\n const spanTags = tempDiv.getElementsByTagName(\"span\");\n\n Array.from(spanTags).forEach((span) => {\n span.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <div> tags\n const divTags = tempDiv.getElementsByTagName(\"div\");\n\n Array.from(divTags).forEach((div) => {\n div.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <table> and its children\n const tables = tempDiv.getElementsByTagName(\"table\");\n\n Array.from(tables).forEach((table) => {\n table.removeAttribute(\"style\");\n\n Array.from(table.getElementsByTagName(\"tr\")).forEach((tr) => {\n tr.removeAttribute(\"style\");\n }\n\n );\n\n Array.from(table.getElementsByTagName(\"td\")).forEach((td) => {\n td.removeAttribute(\"style\");\n }\n\n );\n }\n\n );\n }\n\n insertTransformedContent(tempDiv: HTMLDivElement): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n const fragment = document.createDocumentFragment();\n let node;\n while ((node = tempDiv.firstChild)) {\n fragment.appendChild(node);\n }\n range.insertNode(fragment);\n selection.removeAllRanges();\n selection.addRange(range);\n } else {\n // Fallback: insert at cursor position or append to editor\n if (this.editorReference?.nativeElement) {\n const editor = this.editorReference.nativeElement;\n\n // Try to place cursor at the end and insert there\n const range = document.createRange();\n range.selectNodeContents(editor);\n range.collapse(false); // collapse to end\n\n const fragment = document.createDocumentFragment();\n let node;\n while ((node = tempDiv.firstChild)) {\n fragment.appendChild(node);\n }\n\n range.insertNode(fragment);\n range.collapse(false);\n\n // Set cursor position\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }\n }\n\n transformTableData(tables: HTMLCollectionOf<HTMLTableElement>): void {\n Array.from(tables).forEach((table) => {\n const rows = table.getElementsByTagName(\"tr\");\n\n Array.from(rows).forEach((row) => {\n const cells = row.getElementsByTagName(\"td\");\n\n Array.from(cells).forEach((cell) => {\n cell.innerHTML = this.transformData(cell.innerHTML);\n }\n\n );\n }\n\n );\n }\n\n );\n }\n\n // Auto bullet and skills bullet methods\n transformToBullets(event: MouseEvent): void {\n this.autoBulletDisable = true;\n event.preventDefault();\n this.transformToBulletsAlgorithmOverride();\n }\n\n transformToBulletsAlgorithmOverride(): void {\n if (!this.isAutoBullet) {\n this.previousContent = this.editorReference.nativeElement.innerHTML;\n this.isAutoBullet = true;\n this.editorReference.nativeElement.innerHTML = BulletUtils.autoBullet(this.previousContent);\n this.AutoBulletButton = \"Undo\";\n } else {\n this.isAutoBullet = false;\n this.editorReference.nativeElement.innerHTML = this.previousContent;\n this.AutoBulletButton = \"Auto Bullet\";\n }\n this.autoBulletDisable = false;\n }\n\n\n transformToSkillsBullets(event: MouseEvent): void {\n event.preventDefault();\n if (!this.isSkillBullet) {\n this.previousContent = this.editorReference.nativeElement.innerHTML;\n this.isSkillBullet = true;\n this.editorReference.nativeElement.innerHTML = BulletUtils.skillBullet(this.previousContent);\n this.skillsButton = \"Undo\";\n } else {\n this.isSkillBullet = false;\n this.editorReference.nativeElement.innerHTML = this.previousContent;\n this.skillsButton = \"Bullet Skills\";\n }\n this.saveHistory();\n this.textChange();\n }\n\n checkHtmlContent(content: string): boolean {\n if (!content) {\n return this.editorReference?.nativeElement?.innerHTML !== '<p>Start typing here...</p>' && this.editorReference?.nativeElement?.innerHTML.trim().length > 0;\n }\n return Boolean(content && content.trim().length > 0);\n }\n\n // Table operations\n addTable(event: MouseEvent): void {\n event.preventDefault();\n const tableHTML = `\n <table style=\"border-collapse: collapse; width: 100%;\">\n <tbody>\n <tr height=18>\n <td></td>\n <td></td>\n </tr>\n <tr height=18>\n <td></td>\n <td></td>\n </tr>\n </tbody>\n </table>\n <br>\n `;\n document.execCommand(\"insertHTML\", false, tableHTML);\n this.saveHistory();\n }\n\n deleteTable(event: MouseEvent): void {\n event.preventDefault();\n const editor = document.getElementById(this.editorId);\n if (editor) {\n const table = editor.querySelector(\"table\");\n if (!table) return;\n table.remove();\n this.saveHistory();\n }\n }\n\n addRowBelow(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = cell.parentNode;\n const table = row.parentNode;\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const newRow = row.cloneNode(true);\n Array.from(newRow.children).forEach((cell: any) => (cell.textContent = \"\"));\n newRow.setAttribute(\"height\", \"18\");\n row.insertAdjacentElement(\"afterend\", newRow);\n this.saveHistory();\n }\n }\n }\n }\n\n addRowAbove(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = cell.parentNode;\n const table = row.parentNode;\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const newRow = row.cloneNode(true);\n Array.from(newRow.children).forEach((cell: any) => (cell.textContent = \"\"));\n newRow.setAttribute(\"height\", \"18\");\n row.insertAdjacentElement(\"beforebegin\", newRow);\n this.saveHistory();\n }\n }\n }\n }\n\n addColumnLeft(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = cell.closest(\"table\");\n if (table) {\n const rowIndex = Array.from(cell.parentNode.children).indexOf(cell);\n Array.from(table.rows).forEach((row: any) => {\n const newCell = row.cells[rowIndex].cloneNode(false);\n newCell.textContent = \"\";\n row.cells[rowIndex].insertAdjacentElement(\"beforebegin\", newCell);\n });\n this.saveHistory();\n }\n }\n }\n }\n\n addColumnRight(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = cell.closest(\"table\");\n if (table) {\n const cellIndex = Array.from(cell.parentNode.children).indexOf(cell);\n Array.from(table.rows).forEach((row: any) => {\n const newCell = row.cells[cellIndex].cloneNode(false);\n newCell.textContent = \"\";\n row.cells[cellIndex].insertAdjacentElement(\"afterend\", newCell);\n });\n this.saveHistory();\n }\n }\n }\n }\n\n deleteColumnLeft(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = cell.closest(\"table\");\n if (!table) return;\n const cellIndex = Array.from(cell.parentNode.children).indexOf(cell);\n if (cellIndex > 0) {\n Array.from(table.rows).forEach((row: any) => {\n row.deleteCell(cellIndex - 1);\n });\n this.saveHistory();\n }\n }\n }\n }\n\n deleteColumnRight(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = cell.closest(\"table\");\n if (!table) return;\n const cellIndex = Array.from(cell.parentNode.children).indexOf(cell);\n Array.from(table.rows).forEach((row: any) => {\n if (row.cells.length > cellIndex + 1) {\n row.deleteCell(cellIndex + 1);\n }\n });\n this.saveHistory();\n }\n }\n }\n\n deleteCurrentColumn(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = cell.closest(\"table\");\n if (!table) return;\n const cellIndex = Array.from(cell.parentNode.children).indexOf(cell);\n Array.from(table.rows).forEach((row: any) => {\n if (row.cells.length > cellIndex) {\n row.deleteCell(cellIndex);\n }\n });\n this.saveHistory();\n }\n }\n }\n\n deleteCurrentRow(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = cell.parentNode;\n const table = row.parentNode;\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n row.remove();\n this.saveHistory();\n }\n }\n }\n }\n\n deleteRowAbove(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = cell.parentNode;\n const table = row.parentNode;\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const previousRow = row.previousElementSibling;\n if (previousRow) {\n previousRow.remove();\n this.saveHistory();\n }\n }\n }\n }\n }\n\n deleteRowBelow(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell: any = range.startContainer;\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode;\n }\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = cell.parentNode;\n const table = row.parentNode;\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const nextRow = row.nextElementSibling;\n if (nextRow) {\n nextRow.remove();\n this.saveHistory();\n }\n }\n }\n }\n }\n\n // AI operations\n updateAIToolInMemory(tool: any): void {\n }\n\n useAITool(event: MouseEvent): void {\n event.preventDefault();\n this.ApplyAIinQuill.emit({\n content: this.editorReference.nativeElement.innerHTML,\n editorId: this.editorId\n });\n }\n\n useAutoBullet(event: MouseEvent): void {\n event.preventDefault();\n this.onAutoBullet.emit({\n content: this.editorReference.nativeElement.innerHTML,\n editorId: this.editorId\n });\n }\n\n // useSkillsBullet(event: MouseEvent): void {\n // event.preventDefault();\n // this.onSkillsBullet.emit({\n // content: this.editorReference.nativeElement.innerHTML,\n // editorId: this.editorId\n // });\n // }\n\n}\n","<!-- Editor Labels Section -->\n<div class=\"editor-labels\" *ngIf=\"showLabels\">\n <div class=\"left-label\">{{ leftLabelText }}</div>\n <div class=\"right-label\">{{ rightLabelText }}</div>\n</div>\n<div class=\"editor-container\" #editorContainer>\n <!-- Toolbar Section -->\n <div class=\"toolbar\">\n <!-- Styling Dropdown (Small Screens Only) -->\n <div class=\"styling-dropdown\" *ngIf=\"isSmallScreen\">\n <span class=\"styling-text\" (mouseenter)=\"showStylingDropdownOnHover()\" (mouseleave)=\"hideStylingDropdown()\">\n Styling\n </span>\n\n <div class=\"styling-dropdown-content\" *ngIf=\"showStylingDropdown\" (mouseenter)=\"clearStylingDropdownTimeout()\"\n (mouseleave)=\"hideStylingDropdown()\">\n <button *ngFor=\"let item of toolbarConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n (click)=\"execCmd($event, item.command)\" [title]=\"item.title\" type=\"button\" [matTooltip]=\"item.title\"\n matTooltipPosition=\"above\">\n <mat-icon *ngIf=\"isSvgIcon(item.icon)\" [svgIcon]=\"item.icon\"\n [class.active-icon]=\"getActiveState(item.type)\"></mat-icon>\n <span *ngIf=\"!isSvgIcon(item.icon)\" class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n </div>\n </div>\n\n <!-- Individual Styling Buttons (Large Containers Only) -->\n <ng-container *ngIf=\"!isSmallScreen\">\n <button *ngFor=\"let item of toolbarConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n (click)=\"execCmd($event, item.command)\" [title]=\"item.title\" type=\"button\" [matTooltip]=\"item.title\"\n matTooltipPosition=\"above\">\n <mat-icon *ngIf=\"isSvgIcon(item.icon)\" [svgIcon]=\"item.icon\"\n [class.active-icon]=\"getActiveState(item.type)\"></mat-icon>\n <span *ngIf=\"!isSvgIcon(item.icon)\" class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n </ng-container>\n\n <!-- Text Formatting Dropdown (Small Screens Only) -->\n <div class=\"text-formatting-dropdown\" *ngIf=\"isSmallScreen\">\n <span class=\"text-formatting-text\" (mouseenter)=\"showTextFormattingDropdownOnHover()\"\n (mouseleave)=\"hideTextFormattingDropdown()\">\n Text Formatting\n </span>\n\n <div class=\"text-formatting-dropdown-content\" *ngIf=\"showTextFormattingDropdown\"\n (mouseenter)=\"clearTextFormattingDropdownTimeout()\" (mouseleave)=\"hideTextFormattingDropdown()\">\n\n <!-- Text Formatting Buttons -->\n <button *ngFor=\"let item of textFormattingConfig\" class=\"format-button\"\n [class.active]=\"getActiveState(item.type)\" (click)=\"handleTextFormattingClick($event, item)\"\n [title]=\"item.title\" type=\"button\">\n <mat-icon *ngIf=\"isSvgIcon(item.icon)\" [svgIcon]=\"item.icon\"\n [class.active-icon]=\"getActiveState(item.type)\"></mat-icon>\n <span *ngIf=\"!isSvgIcon(item.icon)\" class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n\n <!-- Table Component (Small Screens Only) -->\n <app-table *ngIf=\"showTable\" [getEditorElement]=\"getBoundGetEditorElement()\"\n [saveHistoryMethod]=\"getBoundSaveHistory()\" [textChangeMethod]=\"getBoundTextChange()\">\n </app-table>\n\n <!-- Auto Bullet Button -->\n <button *ngIf=\"autobullet\" class=\"auto-bullet\" mat-flat-button (click)=\"$event.stopPropagation(); useAutoBullet($event)\"\n [disabled]=\"autoBulletDisable || isLoadingAI || !checkHtmlContent('')\">\n {{ AutoBulletButton }}\n </button>\n\n <!-- Bullet Skill Button -->\n <button *ngIf=\"skillsBullet\" class=\"bullet-skill\" mat-flat-button\n (click)=\"$event.stopPropagation(); transformToSkillsBullets()\" [disabled]=\"isDisabled || isLoadingAI\">\n {{ skillsButton }}\n </button>\n </div>\n </div>\n\n <!-- Individual Text Formatting Buttons (Large Containers Only) -->\n <ng-container *ngIf=\"!isSmallScreen\">\n <button *ngFor=\"let item of textFormattingConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n (onClick)=\"handleTextFormattingClick($event, item)\" [title]=\"item.title\" type=\"button\" [matTooltip]=\"item.title\"\n matTooltipPosition=\"above\">\n <mat-icon *ngIf=\"isSvgIcon(item.icon)\" [svgIcon]=\"item.icon\"\n [class.active-icon]=\"getActiveState(item.type)\"></mat-icon>\n <span *ngIf=\"!isSvgIcon(item.icon)\" class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n </ng-container>\n\n <!-- Table Component (Large Screens Only) -->\n <app-table *ngIf=\"showTable && !isSmallScreen\" [getEditorElement]=\"getBoundGetEditorElement()\"\n [saveHistoryMethod]=\"getBoundSaveHistory()\" [textChangeMethod]=\"getBoundTextChange()\" matTooltip=\"Table\"\n matTooltipPosition=\"above\">\n </app-table>\n\n <!-- Auto Bullet Button (Large Screens Only) -->\n <button *ngIf=\"autobullet && !isSmallScreen\" class=\"auto-bullet\" mat-flat-button\n (click)=\"$event.stopPropagation(); useAutoBullet($event)\" [disabled]=\"autoBulletDisable || isLoadingAI || !checkHtmlContent('')\">\n {{ AutoBulletButton }}\n </button>\n\n <!-- Bullet Skill Button (Large Screens Only) -->\n <button *ngIf=\"skillsBullet && !isSmallScreen\" class=\"bullet-skill\" mat-flat-button\n (click)=\"$event.stopPropagation(); transformToSkillsBullets($event)\" [disabled]=\"isDisabled || isLoadingAI\">\n {{ skillsButton }}\n </button>\n\n <!-- History Controls (Undo/Redo) -->\n <div *ngIf=\"historyControls\" class=\"history-controls\">\n <!-- Undo Button -->\n <button class=\"format-button\" (onClick)=\"execCmd($event, 'undo')\" title=\"Undo\" type=\"button\" matTooltip=\"Undo\"\n matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState('undo')\">\n undo\n </span>\n </button>\n\n <!-- Redo Button -->\n <button class=\"format-button\" (clionClickck)=\"execCmd($event, 'redo')\" title=\"Redo\" type=\"button\" matTooltip=\"Redo\"\n matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState('redo')\">\n redo\n </span>\n </button>\n </div>\n\n <!-- Apply AI Button -->\n <al-button class=\"apply-ai-button\" *ngIf=\"showAIButton\" [labelText]=\"ApplyAiButton\" [buttonType]=\"'icon-label'\"\n [color]=\"'gradient'\" [size]=\"'xs'\" [disabled]=\"isLoadingAI\" (onClick)=\"useAITool($event)\"\n [tooltip]=\"ApplyAiButton\" [tooltipPosition]=\"'above'\">\n </al-button>\n\n </div>\n\n <!-- Editor Content Area -->\n <div class=\"editor-content\" #editorReference contenteditable=\"true\" [id]=\"editorId\" (click)=\"updateTagHierarchy()\"\n (input)=\"onEditorInput()\" (paste)=\"handlePaste($event)\" (keydown)=\"handleKeydown($event)\"\n (click)=\"toggleDiv($event, true)\" spellcheck=\"false\" role=\"textbox\" aria-label=\"Rich text editor\"\n aria-multiline=\"true\" [attr.data-testid]=\"dataTestId\">\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CustomEditorComponent } from './custom-editor.component';\n\n@NgModule({\n imports: [CustomEditorComponent],\n exports: [CustomEditorComponent]\n})\nexport class CustomEditorModule { }\n","import { Component } from '@angular/core';\nimport { CustomEditorComponent } from './custom-editor.component';\n\n@Component({\n selector: 'app-custom-editor-demo',\n standalone: true,\n imports: [CustomEditorComponent],\n template: `\n <div class=\"demo-container\">\n <h2>Custom Editor Demo</h2>\n <p class=\"demo-description\">\n This is a simple text editor with basic formatting options.\n Select text and use the toolbar buttons to apply Bold, Italic, or Underline formatting.\n </p>\n\n <app-custom-editor></app-custom-editor>\n\n <div class=\"demo-instructions\">\n <h3>Instructions:</h3>\n <ul>\n <li>Click in the editor area to start typing</li>\n <li>Select text to apply formatting</li>\n <li>Use the toolbar buttons for Bold (B), Italic (I), and Underline (U)</li>\n <li>The buttons will change color to show active formatting</li>\n </ul>\n </div>\n </div>\n `,\n styles: [`\n .demo-container {\n max-width: 800px;\n margin: 0 auto;\n padding: 20px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n h2 {\n color: #333;\n margin-bottom: 16px;\n }\n\n .demo-description {\n color: #666;\n margin-bottom: 24px;\n line-height: 1.5;\n }\n\n .demo-instructions {\n margin-top: 24px;\n padding: 16px;\n background-color: #f8f9fa;\n border-radius: 4px;\n border-left: 4px solid #37c1ce;\n }\n\n .demo-instructions h3 {\n margin-top: 0;\n color: #333;\n }\n\n .demo-instructions ul {\n margin-bottom: 0;\n padding-left: 20px;\n }\n\n .demo-instructions li {\n margin-bottom: 8px;\n color: #555;\n }\n `]\n})\nexport class CustomEditorDemoComponent { }\n","import { Component, forwardRef, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateRange } from '@angular/material/datepicker';\n\nexport interface DateRangeValue {\n start: Date | null;\n end: Date | null;\n}\n\n@Component({\n selector: 'al-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n }\n ]\n})\nexport class DateRangeComponent implements ControlValueAccessor {\n @Input() dataTestId?: string;\n @Input() formControlName?: string;\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n @Input() labelText: string = 'Date Range';\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string) {\n if (val !== undefined) {\n console.warn('[al-date-range] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() startPlaceholder: string = 'Start date';\n @Input() endPlaceholder: string = 'End date';\n @Input() hint: string = 'MM/DD/YYYY – MM/DD/YYYY';\n @Input() disabled: boolean = false;\n @Input() required: boolean = false;\n @Input() minDate?: Date;\n @Input() maxDate?: Date\n @Input() startAt?: Date;\n @Input() opened: boolean = false;\n @Input() touchUi: boolean = false;\n\n @Output() dateRangeChange = new EventEmitter<DateRangeValue>();\n @Output() openedChange = new EventEmitter<boolean>();\n @Output() startDateChange = new EventEmitter<Date | null>();\n @Output() endDateChange = new EventEmitter<Date | null>();\n\n startDate: Date | null = null;\n endDate: Date | null = null;\n isDatePickerOpen = false;\n\n private onChange = (value: any) => { };\n private onTouched = () => { };\n\n // Getter for size class\n get sizeClass(): string {\n return `al-date-range-size-${this.size}`;\n }\n\n // Get size class method (matching input component)\n getSizeClass(): string {\n return 'al-date-range-size-' + this.size;\n }\n\n // Get category class method (matching input component)\n getCategoryClass(): string {\n if (this.disabled) {\n return 'al-date-range-category-disabled';\n }\n return 'al-date-range-category-default';\n }\n\n // Get all classes method (combines size and category)\n getAllClasses(): string[] {\n return [this.getSizeClass(), this.getCategoryClass()];\n }\n\n // Getter for date range value\n get dateRangeValue(): DateRangeValue {\n return {\n start: this.startDate,\n end: this.endDate\n };\n }\n\n // Getter for display value in the input\n get displayValue(): string {\n if (this.startDate && this.endDate) {\n return `${this.formatDate(this.startDate)} – ${this.formatDate(this.endDate)}`;\n } else if (this.startDate) {\n return `${this.formatDate(this.startDate)} – `;\n } else if (this.endDate) {\n return ` – ${this.formatDate(this.endDate)}`;\n }\n return '';\n }\n\n // Getter for validation state\n get isRangeValid(): boolean {\n if (!this.startDate || !this.endDate) return true;\n return this.startDate <= this.endDate;\n }\n\n // Getter for display text\n get displayText(): string {\n return this.displayValue;\n }\n\n // ControlValueAccessor implementation\n writeValue(value: DateRangeValue | null): void {\n if (value) {\n this.startDate = value.start;\n this.endDate = value.end;\n } else {\n this.startDate = null;\n this.endDate = null;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Handle start date change\n onStartDateChange(event: any) {\n this.startDate = event.value;\n this.emitChanges();\n }\n\n // Handle end date change\n onEndDateChange(event: any) {\n this.endDate = event.value;\n this.emitChanges();\n }\n\n // Handle date range selection from the picker\n onDateRangeChange(event: DateRange<Date> | null) {\n if (event) {\n this.startDate = event.start;\n this.endDate = event.end;\n } else {\n this.startDate = null;\n this.endDate = null;\n }\n this.emitChanges();\n }\n\n // Handle date picker open/close\n onOpenedChange(opened: boolean) {\n this.isDatePickerOpen = opened;\n this.openedChange.emit(opened);\n }\n\n // Open date picker\n openDatePicker() {\n if (!this.disabled) {\n this.isDatePickerOpen = true;\n }\n }\n\n // Clear date range\n clearDateRange() {\n this.startDate = null;\n this.endDate = null;\n this.emitChanges();\n }\n\n // Format date for display\n formatDate(date: Date | null): string {\n if (!date) return '';\n return date.toLocaleDateString();\n }\n\n // Emit all changes\n private emitChanges() {\n this.onChange(this.dateRangeValue);\n this.onTouched();\n this.startDateChange.emit(this.startDate);\n this.endDateChange.emit(this.endDate);\n this.dateRangeChange.emit(this.dateRangeValue);\n }\n}\n","<mat-form-field class=\"mat_form\" [ngClass]=\"[getSizeClass(), getCategoryClass()]\" appearance=\"outline\"\n [attr.data-test-id]=\"dataTestId\">\n\n <mat-label>{{ labelText }}</mat-label>\n\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate [placeholder]=\"startPlaceholder\" [value]=\"startDate\" [disabled]=\"disabled\" [required]=\"required\"\n [min]=\"minDate\" [max]=\"endDate || maxDate\" (dateInput)=\"onStartDateChange($event)\"\n (dateChange)=\"onStartDateChange($event)\" [attr.data-testid]=\"dataTestId ? dataTestId + '-start' : null\">\n <input matEndDate [placeholder]=\"endPlaceholder\" [value]=\"endDate\" [disabled]=\"disabled\" [required]=\"required\"\n [min]=\"startDate || minDate\" [max]=\"maxDate\" (dateInput)=\"onEndDateChange($event)\"\n (dateChange)=\"onEndDateChange($event)\" [attr.data-testid]=\"dataTestId ? dataTestId + '-end' : null\">\n </mat-date-range-input>\n\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"disabled\">\n </mat-datepicker-toggle>\n\n <mat-date-range-picker #picker [startAt]=\"startAt\" [opened]=\"opened\" [touchUi]=\"touchUi\"\n (openedChange)=\"onOpenedChange($event)\" (selectedChange)=\"onDateRangeChange($event)\">\n </mat-date-range-picker>\n\n\n</mat-form-field>\n\n<!-- Range display and validation -->\n<div *ngIf=\"startDate || endDate\" class=\"range-display\" [ngClass]=\"getSizeClass()\">\n <span class=\"range-text\" [class.invalid]=\"!isRangeValid\">\n {{ displayText }}\n </span>\n <span *ngIf=\"!isRangeValid\" class=\"error-message\">\n End date must be after start date\n </span>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateRangeComponent } from './date-range.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule,\n DateRangeComponent\n ],\n exports: [DateRangeComponent]\n})\nexport class DateRangeModule { }\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, TemplateRef, ViewChild, AfterViewInit, ChangeDetectorRef, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Resume_Tab_icon } from '../utils/image-utils';\n\n@Component({\n selector: 'al-tab',\n standalone: true,\n template: '<ng-template><ng-content></ng-content></ng-template>'\n})\nexport class AlTabComponent implements AfterViewInit {\n @Input() labelText: string = '';\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string) {\n if (val !== undefined) {\n console.warn('[al-tab] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() selected: boolean = false;\n @Input() icon: string = '';\n @Input() iconType: 'svg' | 'font' = 'svg';\n @Input() showIcon: boolean = true;\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'above';\n @ViewChild(TemplateRef) templateRef!: TemplateRef<any>;\n\n /**\n * Returns the tooltip text. If no tooltip is explicitly set,\n * defaults to the labelText for better accessibility.\n */\n get effectiveTooltip(): string {\n return this.tooltip || this.labelText;\n }\n\n ngAfterViewInit() {\n // Template ref will be available after view init\n }\n}\n\n@Component({\n selector: 'al-tabs',\n standalone: true,\n imports: [CommonModule, MatTabsModule, MatIconModule, MatTooltipModule, AlTabComponent],\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss']\n})\nexport class TabsComponent implements AfterContentInit, AfterViewInit, OnInit {\n @ContentChildren(AlTabComponent, { descendants: true }) tabComponents!: QueryList<AlTabComponent>;\n @Input() selectedIndex: number = 0;\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n\n constructor(\n private cdr: ChangeDetectorRef,\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n this.registerIcons();\n }\n\n ngOnInit(): void {\n // Icons are registered in constructor\n }\n\n private registerIcons(): void {\n try {\n Object.keys(Resume_Tab_icon).forEach(iconName => {\n this.iconRegistry.addSvgIconLiteral(\n iconName,\n this.sanitizer.bypassSecurityTrustHtml(Resume_Tab_icon[iconName as keyof typeof Resume_Tab_icon])\n );\n });\n } catch (error) {\n console.error('Failed to register tab icons:', error);\n }\n }\n\n ngAfterContentInit() {\n console.log('Tab components found:', this.tabComponents?.length || 0);\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit() {\n // Set the selected tab based on selectWith Icons\n if (this.tabComponents && this.tabComponents.length > 0) {\n this.tabComponents.forEach((tab, index) => {\n if (tab.selected || index === this.selectedIndex) {\n this.selectedIndex = index;\n }\n });\n this.cdr.detectChanges();\n }\n }\n}\n","<mat-tab-group [selectedIndex]=\"selectedIndex\" [class]=\"'tabs-' + size\" mat-align-tabs=\"start\" headerPosition=\"above\">\n <mat-tab *ngFor=\"let tab of tabComponents; let i = index\">\n <ng-template mat-tab-label>\n <span [ngClass]=\"{ 'tab-label-content': true, 'icon-only-tab': tab.icon && tab.showIcon && !tab.labelText }\"\n [matTooltip]=\"tab.effectiveTooltip\"\n [matTooltipPosition]=\"tab.tooltipPosition\"\n [matTooltipDisabled]=\"!tab.effectiveTooltip\">\n <mat-icon *ngIf=\"tab.icon && tab.showIcon && tab.iconType === 'svg'\" [svgIcon]=\"tab.icon\"></mat-icon>\n <mat-icon *ngIf=\"tab.icon && tab.showIcon && tab.iconType === 'font'\">{{ tab.icon }}</mat-icon>\n <ng-container *ngIf=\"tab.labelText\">{{ tab.labelText }}</ng-container>\n </span>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"tab.templateRef\"></ng-container>\n </mat-tab>\n <!-- Debug info -->\n <div *ngIf=\"!tabComponents || tabComponents.length === 0\" style=\"padding: 20px; color: red;\">\n No tabs found. Tab components: {{ tabComponents?.length || 0 }}\n </div>\n</mat-tab-group>\n","import { NgModule } from '@angular/core';\nimport { TabsComponent } from './tabs.component';\n\n@NgModule({\n imports: [TabsComponent],\n exports: [TabsComponent]\n})\nexport class TabsModule { }\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n Optional,\n ContentChild,\n AfterContentInit,\n ElementRef\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n MatDialogModule,\n MatDialogRef\n}\n\n from '@angular/material/dialog';\n\nimport {\n MatButtonModule\n}\n\n from '@angular/material/button';\n\nimport {\n MatIconModule\n}\n\n from '@angular/material/icon';\n\nimport {\n ButtonComponent\n}\n\n from '../button/button.component';\n\nimport {\n IconButtonComponent\n}\n\n from '../icon-button/icon-button.component';\n\n@Component({\n selector: 'al-modal',\n standalone: true,\n imports: [CommonModule, MatDialogModule, MatButtonModule, MatIconModule, ButtonComponent, IconButtonComponent],\n templateUrl: './shared-popup-modal.component.html',\n styleUrls: ['./shared-popup-modal.component.scss']\n}\n\n) export class ModalComponent implements AfterContentInit {\n @Input() titleText: string = '';\n @Input() userMessage: string = '';\n @Input() leftIcon: string = '';\n @Input() rightIcon: string = '';\n @Input() closeIcon: boolean = true;\n @Input() showHeader: boolean = true;\n @Input() cancelLabel: string = 'Cancel';\n @Input() submitLabel: string = 'Submit';\n @Input() cancelCategory: string = 'error';\n @Input() submitCategory: string = 'green';\n @Input() buttonSize: string = 'xs';\n @Input() cancelIcon: string = '';\n @Input() submitIcon: string = '';\n @Input() showCancelButton: boolean = true;\n @Input() showSubmitButton: boolean = true;\n @Input() showFooter: boolean = true;\n @Input() buttonAlignment: 'left' | 'center' | 'right' = 'center';\n @Input() messageAlignment: 'left' | 'center' | 'right' = 'left';\n @Input() useCustomHeader: boolean = false;\n @Input() customHeaderTitle: string = '';\n @Input() customHeaderDescription: string = '';\n @Input() customHeaderIcon: string = '';\n @Input() customActionLabel: string = '';\n @Input() customActionIcon: string = '';\n @Input() customActionRightIcon: string = '';\n // Templating guide text and link can be passed from the main project\n @Input() templatingGuidePrefix: string = 'Click here to see our ';\n @Input() templatingGuideLabel: string = 'Templating guide';\n @Input() templatingGuideHref: string = '#';\n @Input() modalType: 'generic' | 'feedback' = 'generic';\n @Input() feedbackVariant: 'success' | 'warning' | 'error' = 'success';\n // Optional single icon override for feedback modal (Material icon name)\n @Input() feedbackIcon: string = '';\n\n @Output() cancel = new EventEmitter<void>();\n @Output() submit = new EventEmitter<void>();\n @Output() close = new EventEmitter<void>();\n // Emitted when the custom action button in the Mega Header is clicked\n @Output() requestTemplate = new EventEmitter<void>();\n @Output() onHover = new EventEmitter<Event>();\n @Output() onMouseLeave = new EventEmitter<Event>();\n @Output() optionSelect = new EventEmitter<any>();\n\n hasProjectedContent: boolean = false;\n\n constructor(@Optional() public dialogRef: MatDialogRef<ModalComponent>, private elementRef: ElementRef) { }\n\n // Getter to determine if this should display as a generic modal\n get isGenericModal(): boolean {\n return this.modalType === 'generic' || this.modalType === 'feedback';\n }\n\n // Visibility helpers for footer actions\n get showCancelAction(): boolean {\n const hasLabel = (this.cancelLabel ?? '').toString().trim().length > 0;\n return this.showFooter && this.showCancelButton && hasLabel;\n }\n\n get showSubmitAction(): boolean {\n const hasLabel = (this.submitLabel ?? '').toString().trim().length > 0;\n return this.showFooter && this.showSubmitButton && hasLabel;\n }\n\n // Getter to determine if this should display as success no header modal\n get isSuccessNoHeaderModal(): boolean {\n return this.modalType === 'feedback';\n }\n\n // Get default message based on feedback variant\n getDefaultMessage(): string {\n switch (this.feedbackVariant) {\n case 'success':\n return 'Operation completed successfully.';\n case 'warning':\n return 'Please review the information before proceeding.';\n case 'error':\n return 'Something went wrong. Please try again.';\n default:\n return 'Operation completed successfully.';\n }\n }\n\n ngAfterContentInit() {\n // Check if there's any projected content\n const contentElement = this.elementRef.nativeElement.querySelector('ng-content');\n this.hasProjectedContent = contentElement && contentElement.children.length > 0;\n }\n\n onCancel() {\n this.cancel.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('cancel');\n }\n }\n\n onSubmit() {\n this.submit.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('submit');\n }\n }\n\n onRequestTemplate() {\n this.requestTemplate.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('requestTemplate');\n }\n }\n\n onClose() {\n this.close.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('close');\n }\n }\n\n /**\n * Dynamically determines the base path for assets\n * Handles both root deployment and subdirectory deployment (e.g., /allsorter-lib/)\n */\n private getBasePath(): string {\n if (typeof document === 'undefined') {\n return '';\n }\n\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n return baseHref.replace(/\\/$/, '');\n }\n\n const pathname = window.location.pathname;\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n return '';\n }\n\n /**\n * Gets the image path for warning icon\n */\n getWarningIconPath(): string {\n const basePath = this.getBasePath();\n return `${basePath}/images/warning.svg`;\n }\n\n /**\n * Gets the image path for error icon\n */\n getErrorIconPath(): string {\n const basePath = this.getBasePath();\n return `${basePath}/images/error.svg`;\n }\n\n /**\n * Gets the image path for success icon\n */\n getSuccessIconPath(): string {\n const basePath = this.getBasePath();\n return `${basePath}/images/Success.svg`;\n }\n}\n","<div class=\"modal-container\">\n <!-- Feedback Modal Type - Success, Warning, or Error -->\n <div *ngIf=\"modalType === 'feedback'\" class=\"modal-body\">\n <div mat-dialog-content>\n <div style=\"display:flex;flex-direction:column;align-items:center;gap:24px;padding-top:8px;\">\n <!-- Feedback Icon (hardcoded by variant, optional single override via feedbackIcon) -->\n <mat-icon *ngIf=\"feedbackIcon\" class=\"feedback-icon\" [ngClass]=\"{\n 'success': feedbackVariant === 'success',\n 'warning': feedbackVariant === 'warning',\n 'error': feedbackVariant === 'error'\n }\">{{ feedbackIcon }}</mat-icon>\n <img *ngIf=\"!feedbackIcon && feedbackVariant === 'success'\" [src]=\"getSuccessIconPath()\" alt=\"Success\"\n class=\"feedback-icon success feedback-icon-image\" />\n <img *ngIf=\"!feedbackIcon && feedbackVariant === 'warning'\" [src]=\"getWarningIconPath()\" alt=\"Warning\"\n class=\"feedback-icon warning feedback-icon-image\" />\n <img *ngIf=\"!feedbackIcon && feedbackVariant === 'error'\" [src]=\"getErrorIconPath()\" alt=\"Error\"\n class=\"feedback-icon error feedback-icon-image\" />\n\n <div style=\"color:#4b4f62;font-weight:500;\">{{ userMessage || getDefaultMessage() }}</div>\n </div>\n </div>\n\n <div *ngIf=\"showFooter\" mat-dialog-actions class=\"modal-actions\"\n [style.justify-content]=\"buttonAlignment === 'left' ? 'flex-start' : buttonAlignment === 'right' ? 'flex-end' : 'center'\">\n <al-button *ngIf=\"showSubmitAction\" [category]=\"submitCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [labelText]=\"submitLabel || 'Ok'\" [leftIcon]=\"submitIcon\" [rightIcon]=\"''\" [dataTestId]=\"'submit-btn'\"\n [hasDropDown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onSubmit()\"></al-button>\n </div>\n </div>\n\n <!-- Regular Modal for Generic Type -->\n <div *ngIf=\"modalType !== 'feedback'\">\n <!-- Default Header -->\n <h2 *ngIf=\"!useCustomHeader && showHeader\" mat-dialog-title class=\"modal-title\">\n <span class=\"title-content\">\n <mat-icon *ngIf=\"leftIcon\" class=\"title-icon\">{{ leftIcon }}</mat-icon>\n {{ titleText }}\n <mat-icon *ngIf=\"rightIcon\" class=\"title-icon\">{{ rightIcon }}</mat-icon>\n </span>\n <al-icon-button *ngIf=\"closeIcon\" [icon]=\"'close'\" [iconOutlined]=\"false\" [customColour]=\"'#ffffff'\"\n [colour]=\"'blue'\" [size]=\"'base'\" [disabled]=\"false\" (onClick)=\"onClose()\"\n [dataTestId]=\"'close-btn'\"></al-icon-button>\n </h2>\n\n <!-- Custom Header -->\n <div *ngIf=\"useCustomHeader && showHeader\" class=\"custom-header\">\n <!-- Left side content -->\n <div class=\"custom-header-left\">\n <!-- Icon and Title -->\n <div class=\"custom-header-title-section\">\n <div *ngIf=\"customHeaderIcon\" class=\"custom-header-icon\">\n <mat-icon>{{ customHeaderIcon }}</mat-icon>\n </div>\n <h2 class=\"custom-header-title\">{{ customHeaderTitle }}</h2>\n </div>\n\n <!-- Description paragraph -->\n <p class=\"custom-header-description\">{{ customHeaderDescription }}</p>\n\n <!-- Templating guide link/text -->\n <span class=\"templating-guide-prefix\">{{ templatingGuidePrefix }}</span>\n <a class=\"templating-guide-link\" [href]=\"templatingGuideHref\">{{ templatingGuideLabel }}</a>\n <span class=\"templating-guide-suffix\">.</span>\n </div>\n\n <!-- Right side content -->\n <div class=\"custom-header-right\">\n <!-- Close button -->\n <al-icon-button *ngIf=\"closeIcon\" class=\"custom-close\" [icon]=\"'close'\" [iconOutlined]=\"false\"\n [customColour]=\"'#ffffff'\" [colour]=\"'blue'\" [size]=\"'base'\" [disabled]=\"false\" (onClick)=\"onClose()\"\n [dataTestId]=\"'close-btn'\"></al-icon-button>\n\n <!-- Action button -->\n <al-button [category]=\"submitCategory\" [size]=\"'xs'\" [iconOutlined]=\"false\" [labelText]=\"customActionLabel\"\n [leftIcon]=\"customActionIcon\" [rightIcon]=\"customActionRightIcon\" [dataTestId]=\"'custom-action-btn'\"\n [hasDropDown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onRequestTemplate()\"></al-button>\n </div>\n </div>\n\n <div class=\"modal-body\">\n <div mat-dialog-content>\n <p *ngIf=\"userMessage && !hasProjectedContent\" class=\"modal-message\" [style.text-align]=\"messageAlignment\">{{\n userMessage }}</p>\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"showFooter\" mat-dialog-actions class=\"modal-actions\"\n [style.justify-content]=\"buttonAlignment === 'left' ? 'flex-start' : buttonAlignment === 'right' ? 'flex-end' : 'center'\">\n <al-button *ngIf=\"showCancelAction\" [category]=\"cancelCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [labelText]=\"cancelLabel\" [leftIcon]=\"cancelIcon\" [rightIcon]=\"''\" [dataTestId]=\"'cancel-btn'\"\n [hasDropDown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onCancel()\"></al-button>\n\n <al-button *ngIf=\"showSubmitAction\" [category]=\"submitCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [labelText]=\"submitLabel\" [leftIcon]=\"submitIcon\" [rightIcon]=\"''\" [dataTestId]=\"'submit-btn'\"\n [hasDropDown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onSubmit()\"></al-button>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalComponent } from './shared-popup-modal.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n ModalComponent\n ],\n exports: [ModalComponent],\n})\nexport class SharedPopupModalModule { }\n","import {\n CommonModule\n}\n\nfrom '@angular/common';\n\nimport {\n Component,\n Input,\n TemplateRef,\n ContentChild\n}\n\nfrom '@angular/core';\n\nimport {\n MatTooltipModule\n}\n\nfrom '@angular/material/tooltip';\n\n@Component( {\n selector: 'al-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n imports: [CommonModule, MatTooltipModule],\n standalone: true,\n }\n\n) export class TooltipComponent {\n @Input() message: string='';\n @Input() header: string='';\n @Input() body: string='';\n @Input() position: 'left'| 'right'| 'above'| 'below'| 'before'| 'after'='below';\n @Input() disabled: boolean=false;\n @Input() dataTestId: string='';\n\n @ContentChild('tooltipContent') tooltipContent?: TemplateRef<any>;\n\n getTooltipContent(): string {\n if (this.header && this.body) {\n return `$ {\n this.header\n }\n\n \\n$ {\n this.body\n }\n\n `;\n }\n\n return this.message || '';\n }\n}","<ng-container>\n <div [matTooltip]=\"getTooltipContent()\" [matTooltipPosition]=\"position\" [matTooltipDisabled]=\"disabled\"\n [attr.data-test-id]=\"dataTestId\" class=\"al-tooltip-wrapper\">\n <ng-content></ng-content>\n </div>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipComponent } from './tooltip.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule, TooltipComponent],\n exports: [TooltipComponent],\n})\nexport class TooltipModule { }\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n Component,\n Input,\n ViewEncapsulation\n}\n\n from '@angular/core';\n\ntype TypographyVariant = | 'font-text-5xl' | 'font-text-5xl-medium' | 'font-text-5xl-bold'\n | 'font-text-4xl' | 'font-text-4xl-medium' | 'font-text-4xl-bold'\n | 'font-text-3xl' | 'font-text-3xl-medium' | 'font-text-3xl-bold'\n | 'font-text-2xl' | 'font-text-2xl-medium' | 'font-text-2xl-bold'\n | 'font-text-xl' | 'font-text-xl-medium' | 'font-text-xl-bold'\n | 'font-text-lg' | 'font-text-lg-medium' | 'font-text-lg-bold'\n | 'font-text-base' | 'font-text-base-medium' | 'font-text-base-bold'\n | 'font-text-sm' | 'font-text-sm-medium' | 'font-text-sm-bold'\n | 'font-text-xs' | 'font-text-xs-medium' | 'font-text-xs-bold';\n\ntype TypographyWeight = 'light' | 'regular' | 'medium' | 'semibold' | 'bold';\n\ntype LineHeight = 'none' | 'tight' | 'normal';\n\ntype LetterSpacing = 'normal' | 'wide' | 'wider';\n\ntype TextDecoration = 'none' | 'underline' | 'italic' | 'strike';\n\n@Component({\n selector: 'al-new-typography',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './new-typography.component.html',\n styleUrls: ['./new-typography.component.scss'],\n // Expose the typography utility classes globally when this component is used\n encapsulation: ViewEncapsulation.None,\n}\n\n) export class NewTypographyComponent {\n /** The textual content to render. */\n @Input() text: string = 'The quick brown fox';\n /** Which semantic tag to render as. */\n @Input() tag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' = 'p';\n /** Typography variant selecting size/line-height/letter-spacing. */\n @Input() variant: TypographyVariant = 'font-text-base';\n /** Font weight to apply on top of the variant. */\n @Input() weight: TypographyWeight = 'regular';\n\n /** Line height variant to apply. */\n @Input() lineHeight: LineHeight = 'normal';\n\n /** Letter spacing variant to apply. */\n @Input() letterSpacing: LetterSpacing = 'normal';\n\n /** Text decoration to apply. */\n @Input() textDecoration: TextDecoration = 'none';\n\n /** Whether to apply font-size (default: true) */\n @Input() enableFontSize: boolean = true;\n\n /** Whether to apply font-weight (default: true) */\n @Input() enableFontWeight: boolean = true;\n\n /** Whether to apply line-height (default: true) */\n @Input() enableLineHeight: boolean = true;\n\n /** Whether to apply letter-spacing (default: true) */\n @Input() enableLetterSpacing: boolean = true;\n\n /** Optional data-test-id for QA/testing */\n @Input() dataTestId?: string;\n\n get classList(): string {\n // All variants are now combined classes (start with 'font-text-')\n // But we still need to add additional classes for weight, line-height, letter-spacing, and text-decoration\n const baseClass = this.variant;\n const weightClass = this.enableFontWeight ? `weight-${this.weight}` : '';\n const lineHeightClass = this.enableLineHeight ? `line-height-${this.lineHeight}` : '';\n const letterSpacingClass = this.enableLetterSpacing ? `letter-spacing-${this.letterSpacing}` : '';\n const textDecorationClass = `text-decoration-${this.textDecoration}`;\n return `${baseClass} ${weightClass} ${lineHeightClass} ${letterSpacingClass} ${textDecorationClass}`.trim();\n }\n}\n","<ng-container [ngSwitch]=\"tag\">\n <h1 *ngSwitchCase=\"'h1'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h1>\n <h2 *ngSwitchCase=\"'h2'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h2>\n <h3 *ngSwitchCase=\"'h3'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h3>\n <h4 *ngSwitchCase=\"'h4'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h4>\n <h5 *ngSwitchCase=\"'h5'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h5>\n <h6 *ngSwitchCase=\"'h6'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h6>\n <p *ngSwitchCase=\"'p'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</p>\n <span *ngSwitchDefault [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</span>\n</ng-container>","import { Component, Input, Output, EventEmitter, AfterViewInit, OnDestroy, ViewChild, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ButtonComponent } from '../button/button.component';\nimport { ResponsiveLayoutComponent } from '../responsive-layout/responsive-layout.component';\n\n@Component({\n selector: 'al-form',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule, ButtonComponent],\n templateUrl: './editable-form-wrapper.component.html',\n styleUrls: ['./editable-form-wrapper.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class EditableFormWrapperComponent implements AfterViewInit, OnDestroy {\n /**\n * Test id for e2e/qa automation.\n */\n private static randomId() {\n return 'form_' + Math.random().toString(36).slice(2);\n }\n\n /**\n * Test id for e2e/qa automation. If not provided, a random id will be used.\n */\n @Input() testId: string = EditableFormWrapperComponent.randomId();\n\n /**\n * Show the left floating edit button.\n * @default true\n */\n @Input() showLeftButton: boolean = true;\n\n /**\n * Show the right floating save button.\n * @default true\n */\n @Input() showSaveButton: boolean = true;\n\n /**\n * Show the right floating delete button.\n * @default true\n */\n @Input() showDeleteButton: boolean = true;\n\n /**\n * Custom CSS class for the left button container (appears when button is active)\n */\n @Input() leftContainerClass: string = '';\n\n /**\n * Custom inline styles for the left button container\n */\n @Input() leftContainerStyle: { [key: string]: string } = {};\n\n /**\n * Selector or element reference for the scroll container.\n * If not provided, defaults to window scrolling.\n */\n @Input() scrollContainer: string | HTMLElement | null = null;\n\n /**\n * Emitted when the left (edit) button is clicked.\n */\n @Output() leftButtonClick = new EventEmitter<Event>();\n\n /**\n * Handle left button click - toggle state and emit event\n */\n handleLeftButtonClick(event: Event): void {\n event.stopPropagation();\n this.isLeftButtonActive = !this.isLeftButtonActive;\n this.cdr.markForCheck();\n this.cdr.detectChanges();\n this.leftButtonClick.emit(event);\n }\n\n /**\n * Toggle the left button state and emit the click event\n * @deprecated Use handleLeftButtonClick instead\n */\n onLeftButtonClick(event: Event): void {\n this.handleLeftButtonClick(event);\n }\n\n constructor(private cdr: ChangeDetectorRef) { }\n\n /**\n * Emitted when the save button is clicked.\n */\n @Output() saveButtonClick = new EventEmitter<Event>();\n\n /**\n * Emitted when the delete button is clicked.\n */\n @Output() deleteButtonClick = new EventEmitter<Event>();\n\n /**\n * Toggle state for the left button (controls visibility of ai-apply-bar)\n */\n isLeftButtonActive: boolean = false;\n\n @ViewChild('wrapper', { static: false }) wrapperRef!: ElementRef<HTMLElement>;\n @ViewChild('buttonGroup', { static: false }) buttonGroupRef!: ElementRef<HTMLElement>;\n @ViewChild('leftButton', { static: false }) leftButtonRef!: ElementRef<HTMLElement>;\n\n private scrollListener?: () => void;\n private scrollContainerElement: HTMLElement | Window | null = null;\n\n ngAfterViewInit() {\n if (this.wrapperRef && (this.buttonGroupRef || this.leftButtonRef)) {\n this.setupScrollBehavior();\n }\n }\n\n ngOnDestroy() {\n if (this.scrollListener && this.scrollContainerElement) {\n if (this.scrollContainerElement === window) {\n window.removeEventListener('scroll', this.scrollListener);\n } else {\n (this.scrollContainerElement as HTMLElement).removeEventListener('scroll', this.scrollListener);\n }\n }\n }\n\n private setupScrollBehavior() {\n const wrapper = this.wrapperRef.nativeElement;\n const buttonGroup = this.buttonGroupRef?.nativeElement;\n const leftButton = this.leftButtonRef?.nativeElement;\n\n // Determine scroll container\n if (this.scrollContainer) {\n if (typeof this.scrollContainer === 'string') {\n const element = document.querySelector(this.scrollContainer) as HTMLElement;\n if (element) {\n this.scrollContainerElement = element;\n } else {\n console.warn(`Scroll container with selector \"${this.scrollContainer}\" not found. Falling back to window.`);\n this.scrollContainerElement = window;\n }\n } else {\n this.scrollContainerElement = this.scrollContainer;\n }\n } else {\n this.scrollContainerElement = window;\n }\n\n const handleScroll = () => {\n const rect = wrapper.getBoundingClientRect();\n const sectionHeight = wrapper.offsetHeight;\n\n // Get container dimensions\n let containerHeight: number;\n let containerScrollTop: number;\n let containerRect: DOMRect | { top: number; bottom: number };\n\n if (this.scrollContainerElement === window) {\n containerHeight = window.innerHeight;\n containerScrollTop = window.scrollY || window.pageYOffset;\n containerRect = { top: 0, bottom: containerHeight };\n } else {\n const container = this.scrollContainerElement as HTMLElement;\n containerHeight = container.clientHeight;\n containerScrollTop = container.scrollTop;\n const containerBoundingRect = container.getBoundingClientRect();\n containerRect = {\n top: containerBoundingRect.top,\n bottom: containerBoundingRect.bottom\n };\n }\n\n // Calculate container center relative to viewport\n const containerCenterY = containerRect.top + (containerHeight / 2);\n const sectionTopY = rect.top;\n const sectionBottomY = rect.bottom;\n\n // Handle right button group (save/delete)\n if (buttonGroup) {\n const buttonGroupHeight = buttonGroup.offsetHeight;\n const clampPadding = 36;\n const minY = clampPadding;\n const maxY = sectionHeight - buttonGroupHeight - clampPadding;\n\n let targetY: number;\n\n if (containerCenterY > sectionTopY && containerCenterY < sectionBottomY) {\n targetY = containerCenterY - sectionTopY - (buttonGroupHeight / 2);\n } else if (containerCenterY <= sectionTopY) {\n targetY = minY;\n } else {\n targetY = maxY;\n }\n\n const finalY = Math.max(minY, Math.min(targetY, maxY));\n buttonGroup.style.transform = `translateY(${finalY}px)`;\n }\n\n // Handle left button (edit) — subtract 20px from transform so it aligns with the gap between Save and Discard on the right\n if (leftButton) {\n const leftButtonHeight = leftButton.offsetHeight;\n const clampPadding = 36;\n const minY = clampPadding;\n const maxY = sectionHeight - leftButtonHeight - clampPadding;\n\n let targetY: number;\n\n if (containerCenterY > sectionTopY && containerCenterY < sectionBottomY) {\n targetY = containerCenterY - sectionTopY - (leftButtonHeight / 2);\n } else if (containerCenterY <= sectionTopY) {\n targetY = minY;\n } else {\n targetY = maxY;\n }\n\n const finalY = Math.max(minY, Math.min(targetY, maxY));\n const leftFinalY = Math.max(minY, Math.min(finalY - 68, maxY));\n leftButton.style.transform = `translateY(${leftFinalY}px)`;\n }\n };\n\n this.scrollListener = handleScroll;\n\n if (this.scrollContainerElement === window) {\n window.addEventListener('scroll', handleScroll, { passive: true });\n } else {\n (this.scrollContainerElement as HTMLElement).addEventListener('scroll', handleScroll, { passive: true });\n }\n\n handleScroll(); // Initial position\n }\n}\n","<div class=\"al-form-wrapper\" #wrapper [attr.data-test-id]=\"testId\">\n <div *ngIf=\"showLeftButton\" #leftButton class=\"fab left\">\n <!-- <al-button [buttonType]=\"'icon-circle'\" [iconOnly]=\"true\"\n [leftIcon]=\"isLeftButtonActive ? 'close' : 'auto_fix_high'\"\n [arialabel]=\"isLeftButtonActive ? 'Close' : 'Edit'\"\n [size]=\"'base'\"\n [color]=\"isLeftButtonActive ? 'grey' : 'gradient'\"\n (onClick)=\"handleLeftButtonClick($event)\">\n </al-button> -->\n <div\n class=\"left-button-container\"\n [ngClass]=\"leftContainerClass\"\n [ngStyle]=\"leftContainerStyle\">\n <ng-content select=\"[leftButtonContent]\"></ng-content>\n </div>\n </div>\n <div class=\"inner\"><ng-content></ng-content></div>\n <div class=\"fab-group right\" #buttonGroup><al-button *ngIf=\"showSaveButton\" class=\"fab\" [buttonType]=\"'icon-circle'\"\n [iconOnly]=\"true\" [leftIcon]=\"'save'\" [arialabel]=\"'Save'\" [size]=\"'base'\" iconOutlined=\"true\"\n [color]=\"'green'\" (onClick)=\"saveButtonClick.emit($event)\"></al-button><al-button *ngIf=\"showDeleteButton\" class=\"fab warn\" [buttonType]=\"'icon-circle'\"\n [iconOnly]=\"true\" [leftIcon]=\"'cancel'\" [arialabel]=\"'Delete'\" [size]=\"'base'\" [color]=\"'error'\" iconOutlined=\"true\"\n (onClick)=\"deleteButtonClick.emit($event)\"></al-button>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FieldPlaceholderComponent } from './field-placeholder.component';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule, FieldPlaceholderComponent],\n exports: [FieldPlaceholderComponent],\n})\nexport class FieldPlaceholderModule { }\n","import {\n NgModule\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n ResponsiveColumnsComponent\n}\n\n from './responsive-columns.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResponsiveColumnsComponent],\n exports: [ResponsiveColumnsComponent],\n}\n\n) export class ResponsiveColumnsModule { }\n","import {\n Component,\n Input,\n Output,\n EventEmitter\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n FieldPlaceholderComponent\n}\n\n from '../field-placeholder/field-placeholder.component';\n\nimport {\n ButtonComponent\n}\n\n from '../button/button.component';\n\nimport {\n LoaderComponent,\n LoaderStatus\n}\n\n from '../loader/loader.component';\n\nimport {\n MatTooltipModule\n}\n\n from '@angular/material/tooltip';\n\nexport interface ResumeEntry {\n companyName?: string;\n institution?: string;\n jobTitle?: string;\n courseName?: string;\n startDate?: string;\n endDate?: string;\n isPresent?: boolean;\n city?: string;\n region?: string;\n country?: string;\n descriptions?: string[];\n rightSideItems?: string[];\n}\n\n@Component({\n selector: 'al-resume-entries',\n standalone: true,\n imports: [CommonModule, FieldPlaceholderComponent, ButtonComponent, LoaderComponent, MatTooltipModule],\n templateUrl: './resume-entries.component.html',\n styleUrls: ['./resume-entries.component.scss'],\n}\n\n) export class ResumeEntriesComponent {\n @Input() entries: ResumeEntry[] = [];\n @Input() showHeader: boolean = true;\n @Input() showDescriptionLabel: boolean = true;\n /** When false, hides Company/Institution field entirely */\n @Input() showCompany: boolean = true;\n /** When false, hides Job Title/Course Name field entirely */\n @Input() showJobTitle: boolean = true;\n /** When false, hides the date column (start/end/present) entirely */\n @Input() showDates: boolean = true;\n /** When false, hides location fields (City, Region, Country) entirely */\n @Input() showLocation: boolean = true;\n /** When true, displays a timeline line with dot on the left side of each entry */\n @Input() showTimeline: boolean = false;\n /** When true, displays the Re-apply/Undo button at the end of each entry */\n @Input() showReapplyButton: boolean = true;\n /** When true, displays a loader in place of the description section */\n @Input() showLoader: boolean = false;\n /** When true, loader replaces the entire entry; when false, loader only replaces the description section */\n @Input() loaderForAllEntries: boolean = false;\n /** Loader status - can be 'analyzing', 'gathering', 'processing', 'applying', or 'done' */\n @Input() loaderStatus: LoaderStatus = 'processing';\n /** Loader size - can be 'small', 'medium', or 'large' */\n @Input() loaderSize: 'small' | 'medium' | 'large' = 'medium';\n /** Array of skills to display in the skill section */\n @Input() skills?: string[];\n /** Tooltip message for Company/Institution field */\n @Input() companyTooltip?: string;\n /** Tooltip message for Job Title/Course Name field */\n @Input() jobTitleTooltip?: string;\n /** Tooltip message for Date fields */\n @Input() dateTooltip?: string;\n /** Tooltip message for Location fields */\n @Input() locationTooltip?: string;\n /** Tooltip message for Description fields */\n @Input() descriptionTooltip?: string;\n /** Tooltip position - can be 'left', 'right', 'above', 'below', 'before', or 'after' */\n @Input() tooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below';\n\n /**\n * When true, the resume entries section is visually de-emphasised (lower opacity),\n * but the first line of each description remains visible (truncated with ellipsis).\n * This mirrors the \"section hidden\" behaviour in the header without fully removing content.\n */\n @Input() isSectionHidden: boolean = false;\n /**\n * When true, the description items are collapsed (truncated with ellipsis).\n */\n @Input() isCollapsed: boolean = false;\n\n /** Event emitted when the reapply button is clicked for a specific entry */\n @Output() reapplyClick = new EventEmitter<{\n entry: ResumeEntry;\n index: number\n }\n\n >();\n\n /** Event emitted when the undo button is clicked for a specific entry */\n @Output() undoClick = new EventEmitter<{\n entry: ResumeEntry;\n index: number\n }\n\n >();\n\n // Track which entries have been reapplied (show undo button)\n reappliedEntries = new Set<number>();\n\n onReapplyClick(entry: ResumeEntry, index: number) {\n this.reappliedEntries.add(index);\n\n this.reapplyClick.emit({\n entry, index\n }\n\n );\n }\n\n onUndoClick(entry: ResumeEntry, index: number) {\n this.reappliedEntries.delete(index);\n\n this.undoClick.emit({\n entry, index\n }\n\n );\n }\n\n isReapplied(index: number): boolean {\n return this.reappliedEntries.has(index);\n }\n}\n","<div class=\"resume-entries-container\">\n <div *ngFor=\"let entry of entries; let i = index\" class=\"resume-entry\" [class.with-timeline]=\"showTimeline\"\n [class.is-hidden]=\"isSectionHidden\">\n <div *ngIf=\"showLoader && loaderForAllEntries\" class=\"entry-loader-container\"><al-loader [status]=\"loaderStatus\"\n [size]=\"loaderSize\" [showText]=\"true\" [dataTestId]=\"'entry-' + i + '-loader'\"></al-loader></div><ng-container\n *ngIf=\"!showLoader || !loaderForAllEntries\">\n <div *ngIf=\"showTimeline\" class=\"timeline-indicator\">\n <div class=\"timeline-dot\"></div>\n <div class=\"timeline-line\"></div>\n </div>\n <div class=\"resume-entry-content\">\n <div *ngIf=\"showHeader\" class=\"entry-header\">\n <div class=\"header-left\">\n <!-- Company / Institution: always on top, shows placeholder when no value -->\n <div *ngIf=\"showCompany\" class=\"mobile-order-2\">\n <lib-field-placeholder\n [value]=\"entry.companyName?.trim() ? entry.companyName : (entry.institution?.trim() ? entry.institution : undefined)\"\n [placeholder]=\"'Company Name / Institution'\" valueClass=\"font-text-lg-bold\"\n [testId]=\"'entry-' + i + '-company'\" [compact]=\"true\"\n [tooltip]=\"companyTooltip\" [tooltipPosition]=\"tooltipPosition\">\n </lib-field-placeholder>\n </div>\n\n <!-- Job title / Course name: always below company line -->\n <div *ngIf=\"showJobTitle\" class=\"mobile-order-3\">\n <lib-field-placeholder [value]=\"entry.jobTitle || entry.courseName\"\n [placeholder]=\"'Job title / Course name'\" valueClass=\"font-title-text\"\n [testId]=\"'entry-' + i + '-title'\" [compact]=\"true\"\n [tooltip]=\"jobTitleTooltip\" [tooltipPosition]=\"tooltipPosition\">\n </lib-field-placeholder>\n </div>\n </div>\n <div class=\"header-right\">\n <div class=\"date-range mobile-order-1\" *ngIf=\"showDates\">\n <!-- Start Date: always render; show placeholder when no value -->\n <lib-field-placeholder [value]=\"entry.startDate?.trim() ? entry.startDate : undefined\"\n [placeholder]=\"'Start Date'\" valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-start-date'\"\n [compact]=\"true\" [tooltip]=\"dateTooltip\" [tooltipPosition]=\"tooltipPosition\">\n </lib-field-placeholder>\n\n <span class=\"date-separator\">-</span>\n\n <!-- End Date / Present: always render; show placeholder when no end date -->\n <lib-field-placeholder [value]=\"entry.isPresent\n ? 'Present'\n : (entry.endDate?.trim() ? entry.endDate : undefined)\" [placeholder]=\"'End Date'\"\n valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-end-date'\" [compact]=\"true\"\n [tooltip]=\"dateTooltip\" [tooltipPosition]=\"tooltipPosition\">\n </lib-field-placeholder>\n </div>\n <div class=\"location-row mobile-order-4\" *ngIf=\"showLocation\">\n <lib-field-placeholder [value]=\"entry.city\" [placeholder]=\"'City'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-city'\" [compact]=\"true\"\n [tooltip]=\"locationTooltip\" [tooltipPosition]=\"tooltipPosition\"></lib-field-placeholder>\n <lib-field-placeholder [value]=\"entry.region\" [placeholder]=\"'Region'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-region'\" [compact]=\"true\"\n [tooltip]=\"locationTooltip\" [tooltipPosition]=\"tooltipPosition\"></lib-field-placeholder>\n <lib-field-placeholder [value]=\"entry.country\" [placeholder]=\"'Country'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-country'\" [compact]=\"true\"\n [tooltip]=\"locationTooltip\" [tooltipPosition]=\"tooltipPosition\"></lib-field-placeholder>\n </div>\n </div>\n </div>\n <div class=\"descriptions-container\">\n <div *ngIf=\"showLoader && !loaderForAllEntries\" class=\"loader-container\">\n <al-loader [status]=\"loaderStatus\" [size]=\"loaderSize\" [showText]=\"true\"\n [dataTestId]=\"'entry-' + i + '-loader'\">\n </al-loader>\n </div>\n\n <div *ngIf=\"!showLoader || loaderForAllEntries\">\n <div *ngFor=\"let desc of entry.descriptions; let descIndex = index\" class=\"description-item\" [class.collapsed]=\"isCollapsed\">\n <label *ngIf=\"showDescriptionLabel\" class=\"description-label\">Description</label>\n <lib-field-placeholder [value]=\"desc\" [placeholder]=\"'Missing item'\" [padded]=\"true\"\n valueClass=\"font-text-base\" [testId]=\"'entry-' + i + '-desc-' + descIndex\"\n [tooltip]=\"descriptionTooltip\" [tooltipPosition]=\"tooltipPosition\">\n </lib-field-placeholder>\n </div>\n </div>\n <div class=\"reapply-button-container\" *ngIf=\"showReapplyButton\"><al-button *ngIf=\"!isReapplied(i)\"\n [label]=\"'Re-apply'\" [buttonType]=\"'icon-label'\" [leftIcon]=\"'refresh'\" [category]=\"'gradient'\"\n [size]=\"'xs'\" [dataTestId]=\"'entry-' + i + '-reapply'\"\n (onClick)=\"onReapplyClick(entry, i)\"></al-button><al-button *ngIf=\"isReapplied(i)\" [label]=\"'Undo'\"\n [buttonType]=\"'icon-label'\" [leftIcon]=\"'undo'\" [category]=\"'grey'\" [size]=\"'xs'\"\n [dataTestId]=\"'entry-' + i + '-undo'\" (onClick)=\"onUndoClick(entry, i)\"></al-button></div>\n <hr *ngIf=\"i < entries.length - 1\" class=\"entry-separator\" [class.with-timeline-separator]=\"showTimeline\" />\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"resume-entry-projection\"><ng-content></ng-content></div>\n <div *ngIf=\"skills && skills.length > 0\" class=\"skill-section-common\">\n <div class=\"skill-list-items\">\n <ul>\n <li *ngFor=\"let skill of skills\" class=\"list-items\">{{ skill }}</li>\n </ul>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResumeEntriesComponent } from './resume-entries.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResumeEntriesComponent],\n exports: [ResumeEntriesComponent],\n})\nexport class ResumeEntriesModule { }\n\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n OnChanges,\n SimpleChanges,\n Output\n}\n\n from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport {\n MatIconModule,\n MatIconRegistry\n} from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\nimport { LEFT_AND_RIGHT_ICON_CONSTANTS } from '../utils/image-utils';\n\n// Static flag to ensure icons are registered only once\nlet iconsRegistered = false;\n\nexport interface IconConfig {\n display: boolean;\n title: string;\n}\n\nexport interface RequiredIconConfig {\n handle: IconConfig;\n edit: IconConfig;\n search: IconConfig;\n}\n\n@Component({\n selector: 'toolbar-left',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatTooltipModule, IconButtonComponent],\n templateUrl: './toolbar-left.component.html',\n styleUrls: ['./toolbar-left.component.scss']\n})\nexport class AppToolbarLeftComponent implements OnInit, OnChanges {\n @Input() variant: string = 'default';\n\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // Register icons synchronously - this must happen before template rendering\n this.registerIcons();\n }\n\n private registerIcons(): void {\n // Register icons only once using static flag\n if (!iconsRegistered) {\n try {\n // Register all icons synchronously\n this.iconRegistry.addSvgIconLiteral(\n 'handle',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['handle'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'edit_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['edit_icon'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'search',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['search'])\n );\n iconsRegistered = true;\n } catch (error) {\n console.error('Failed to register toolbar icons:', error);\n }\n }\n }\n\n ngOnInit() {\n this.updateRequiredIcon();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['overrideConfig']) {\n this.updateRequiredIcon();\n }\n }\n\n @Input() overrideConfig: Partial<RequiredIconConfig> = {};\n\n private updateRequiredIcon(): void {\n this.requiredIcon = {\n ...this.requiredIcon,\n ...this.overrideConfig,\n handle: {\n ...this.requiredIcon.handle,\n ...this.overrideConfig.handle\n },\n edit: {\n ...this.requiredIcon.edit,\n ...this.overrideConfig.edit\n },\n search: {\n ...this.requiredIcon.search,\n ...this.overrideConfig.search\n }\n };\n }\n\n private _defaultRequiredIcon: RequiredIconConfig = {\n handle: {\n display: false, title: 'Drag'\n }\n\n ,\n edit: {\n display: true, title: 'Edit'\n }\n\n ,\n search: {\n display: true, title: 'Search'\n }\n }\n\n ;\n\n requiredIcon: RequiredIconConfig = {\n ...this._defaultRequiredIcon\n }\n\n ;\n @Input() content: string = \"\";\n @Output() editEvent = new EventEmitter<string>();\n @Input() isExtractionAnalysisActive: boolean = false;\n @Output() searchEvent = new EventEmitter<Event>();\n\n\n editSelectedSection() {\n this.editEvent.emit(this.content);\n }\n\n onSearchClick(event: Event) {\n this.searchEvent.emit(event);\n }\n}\n","<div class=\"toolbar-container\">\n <div class=\"icon-wrapper\" *ngIf=\"requiredIcon.handle.display\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--handle\"\n [attr.aria-label]=\"requiredIcon.handle.title\" [matTooltip]=\"requiredIcon.handle.title\"\n matTooltipPosition=\"left\" (click)=\"$event.stopPropagation()\"><mat-icon svgIcon=\"handle\" class=\"handle-icon\"></mat-icon></button></div>\n <div class=\"toolbar-icons\">\n <div class=\"icon-wrapper\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--edit\"\n [attr.aria-label]=\"requiredIcon.edit.title\" [matTooltip]=\"requiredIcon.edit.title\"\n matTooltipPosition=\"left\" (click)=\"editSelectedSection()\"><mat-icon svgIcon=\"edit_icon\" class=\"edit-icon\"></mat-icon></button></div>\n <div class=\"icon-wrapper\" *ngIf=\"requiredIcon.search.display\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--search\"\n [attr.aria-label]=\"requiredIcon.search.title\" [matTooltip]=\"requiredIcon.search.title\"\n matTooltipPosition=\"left\" (click)=\"onSearchClick($event)\"><mat-icon svgIcon=\"search\" class=\"search-icon\"></mat-icon></button></div>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { LEFT_AND_RIGHT_ICON_CONSTANTS } from '../utils/image-utils';\n\nlet iconsRegistered = false;\n\nexport interface AppToolbarRightIconConfig {\n display: boolean;\n title: string;\n isHidden?: boolean;\n}\n\nexport interface AppToolbarRightRequiredIconConfig {\n eye: AppToolbarRightIconConfig;\n sr: AppToolbarRightIconConfig;\n checkbox: AppToolbarRightIconConfig;\n}\n\n@Component({\n selector: 'toolbar-right',\n templateUrl: './toolbar-right.component.html',\n styleUrls: ['./toolbar-right.component.scss']\n})\n\nexport class AppToolbarRightComponent implements OnInit, OnChanges {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n this.registerIcons();\n }\n\n private registerIcons(): void {\n if (!iconsRegistered) {\n try {\n // Register subrole icon\n this.iconRegistry.addSvgIconLiteral(\n 'subrole-icon-grey',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['subrole-icon-grey'])\n );\n // Register subrole active icon\n this.iconRegistry.addSvgIconLiteral(\n 'subrole_active',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['subrole_active'])\n );\n // Register hide section icon\n this.iconRegistry.addSvgIconLiteral(\n 'hide_section',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['hide_section'])\n );\n // Register unhide section icon\n this.iconRegistry.addSvgIconLiteral(\n 'unhide_section',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['unhide_section'])\n );\n iconsRegistered = true;\n } catch (error) {\n console.error('Failed to register toolbar right icons:', error);\n }\n }\n }\n @Input() alwaysShowIcons = false;\n @Input() checked: boolean = false;\n @Input() overrideConfig: Partial<AppToolbarRightRequiredIconConfig> = {};\n @Input() currentObj: Partial<any> = {};\n\n private _showIcons = false;\n isVisible = true;\n\n requiredIcon: AppToolbarRightRequiredIconConfig = {\n eye: {\n display: false,\n title: 'Hide Section',\n isHidden: false\n },\n sr: {\n display: false,\n title: 'Set as Subrole'\n },\n checkbox: {\n display: false,\n title: 'Select'\n }\n };\n\n @Output() checkboxChange = new EventEmitter<boolean>();\n @Output() visibilityToggle = new EventEmitter<boolean>();\n @Output() hideShowEvent = new EventEmitter<any>();\n @Output() checkboxEvent = new EventEmitter<object>();\n @Output() setSubroleEvent = new EventEmitter<any>();\n\n ngOnInit(): void {\n this.updateRequiredIcon();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['overrideConfig']) {\n this.updateRequiredIcon();\n }\n }\n\n private updateRequiredIcon(): void {\n this.requiredIcon = {\n ...this.requiredIcon,\n ...this.overrideConfig,\n eye: {\n ...this.requiredIcon.eye,\n ...this.overrideConfig.eye\n },\n sr: {\n ...this.requiredIcon.sr,\n ...this.overrideConfig.sr\n },\n checkbox: {\n ...this.requiredIcon.checkbox,\n ...this.overrideConfig.checkbox\n }\n };\n }\n\n get showIcons(): boolean {\n return this.alwaysShowIcons || this._showIcons;\n }\n\n get eyeIcon(): string {\n const isHidden = this.requiredIcon.eye?.isHidden ?? false;\n return isHidden ? 'visibility_off' : 'visibility';\n }\n\n get eyeSvgIcon(): string {\n const isHidden = this.requiredIcon.eye?.isHidden ?? false;\n return isHidden ? 'unhide_section' : 'hide_section';\n }\n get eyeLabel(): string {\n const isHidden = this.requiredIcon.eye?.isHidden ?? false;\n return isHidden ? 'Show' : 'Hide';\n }\n get eyeTitle(): string {\n const isHidden = this.requiredIcon.eye?.isHidden ?? false;\n return isHidden ? 'Show content' : 'Hide content';\n }\n\n onCheckboxHover(state: boolean) {\n this._showIcons = state;\n }\n\n onCheckboxChange(checked: boolean) {\n this.checked = checked;\n this.checkboxChange.emit(checked);\n this.checkboxactiveInactiveStatus();\n }\n\n onToggleVisibility() {\n if (this.requiredIcon.eye) {\n this.requiredIcon.eye.isHidden = !this.requiredIcon.eye.isHidden;\n this.isVisible = !this.requiredIcon.eye.isHidden;\n\n if (this.currentObj) {\n this.currentObj['hidden'] = this.requiredIcon.eye.isHidden;\n }\n\n if (this.overrideConfig?.eye) {\n this.overrideConfig.eye.isHidden = this.requiredIcon.eye.isHidden;\n }\n\n this.visibilityToggle.emit(this.isVisible);\n this.hideShowEvent.emit(this.currentObj);\n }\n }\n\n showHideSection() {\n if (this.requiredIcon.eye) {\n this.requiredIcon.eye.isHidden = !this.requiredIcon.eye.isHidden;\n\n if (this.currentObj) {\n this.currentObj['hidden'] = this.requiredIcon.eye.isHidden;\n }\n\n if (this.overrideConfig?.eye) {\n this.overrideConfig.eye.isHidden = this.requiredIcon.eye.isHidden;\n }\n\n this.hideShowEvent.emit(this.currentObj);\n }\n }\n\n checkboxactiveInactiveStatus() {\n this.checkboxEvent.emit(this.currentObj);\n }\n\n setSubrole() {\n this.setSubroleEvent.emit(!this.currentObj['subrole']);\n }\n}\n\n","<div class=\"toolbar-right-container\">\n <div class=\"icon-wrapper\"><al-checkbox *ngIf=\"requiredIcon.checkbox.display\" [checked]=\"checked\" [showLabels]=\"false\"\n (change)=\"onCheckboxChange($event)\" (mouseenter)=\"onCheckboxHover(true)\"\n (mouseleave)=\"onCheckboxHover(false)\"></al-checkbox></div>\n <div class=\"toolbar-right-icons\" [ngClass]=\"{'always-visible': showIcons}\">\n <div class=\"icon-wrapper\" *ngIf=\"requiredIcon.sr.display\"><button type=\"button\"\n class=\"toolbar-icon toolbar-icon--subrole\" [attr.aria-label]=\"requiredIcon.sr.title\"\n [matTooltip]=\"requiredIcon.sr.title\" matTooltipPosition=\"right\" (click)=\"setSubrole()\"><mat-icon\n [svgIcon]=\"currentObj['subrole'] ? 'subrole_active' : 'subrole-icon-grey'\"\n class=\"subrole-icon\"></mat-icon></button>\n </div>\n <div class=\"icon-wrapper\"><button *ngIf=\"requiredIcon.eye.display\" type=\"button\"\n class=\"toolbar-icon toolbar-icon--eye eye-icon\" [attr.aria-label]=\"eyeLabel\" [matTooltip]=\"eyeTitle\"\n matTooltipPosition=\"right\" (click)=\"onToggleVisibility()\"><mat-icon [svgIcon]=\"eyeSvgIcon\"\n class=\"eye-icon\"></mat-icon></button></div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppToolbarRightComponent } from './toolbar-right.component';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [AppToolbarRightComponent],\n imports: [\n CommonModule,\n CheckboxModule,\n IconButtonComponent, // Standalone component\n MatIconModule,\n MatTooltipModule\n ],\n exports: [AppToolbarRightComponent]\n})\nexport class AppToolbarRightModule { }\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ResponsiveColumnsComponent } from '../responsive-columns/responsive-columns.component';\nimport { ResumeEntriesComponent, ResumeEntry } from '../resume-entries/resume-entries.component';\nimport { AppToolbarLeftComponent, RequiredIconConfig } from '../toolbar-left/toolbar-left.component';\nimport { AppToolbarRightModule } from '../toolbar-right/toolbar-right.module';\nimport { AppToolbarRightRequiredIconConfig } from '../toolbar-right/toolbar-right.component';\n\n@Component({\n selector: 'al-experience-section',\n standalone: true,\n imports: [CommonModule, ResponsiveColumnsComponent, ResumeEntriesComponent, AppToolbarLeftComponent, AppToolbarRightModule],\n templateUrl: './experience-section.component.html',\n styleUrls: ['./experience-section.component.scss'],\n})\nexport class ExperienceSectionComponent {\n @Input() entries: ResumeEntry[] = [];\n @Input() showHeader: boolean = true;\n @Input() showDescriptionLabel: boolean = true;\n @Input() showCompany: boolean = true;\n @Input() showJobTitle: boolean = true;\n @Input() showDates: boolean = true;\n @Input() showLocation: boolean = true;\n @Input() showTimeline: boolean = false;\n @Input() showReapplyButton: boolean = true;\n @Input() showLoader: boolean = false;\n @Input() loaderForAllEntries: boolean = false;\n @Input() loaderStatus: 'analyzing' | 'gathering' | 'processing' | 'applying' | 'done' = 'processing';\n @Input() loaderSize: 'small' | 'medium' | 'large' = 'medium';\n @Input() skills?: string[];\n @Input() companyTooltip?: string;\n @Input() jobTitleTooltip?: string;\n @Input() dateTooltip?: string;\n @Input() locationTooltip?: string;\n @Input() descriptionTooltip?: string;\n @Input() tooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below';\n /** When true, visually de-emphasises resume entries; descriptions stay visible but truncated */\n @Input() isSectionHidden: boolean = false;\n\n // ResponsiveColumns inputs (optional overrides)\n @Input() gap: string | number = '12px';\n @Input() padding: string | number = 0;\n @Input() leftWidth: string = 'auto';\n @Input() rightWidth: string = 'auto';\n @Input() stackAt: number = 0;\n\n // AppToolbar inputs\n @Input() variant: string = 'default';\n @Input() content: string = '';\n @Input() isExtractionAnalysisActive: boolean = false;\n @Input() showSearch: boolean = true;\n @Input() overrideConfig: Partial<RequiredIconConfig> = {};\n\n // AppToolbar outputs\n @Output() editEvent = new EventEmitter<string>();\n\n // Resume Entries outputs\n @Output() reapplyClick = new EventEmitter<{ entry: ResumeEntry; index: number }>();\n @Output() undoClick = new EventEmitter<{ entry: ResumeEntry; index: number }>();\n\n // AppToolbarRight inputs\n @Input() checked: boolean = false;\n @Input() alwaysShowIcons: boolean = false;\n @Input() overrideConfigRight: Partial<AppToolbarRightRequiredIconConfig> = {};\n @Input() currentObj: Partial<any> = {};\n\n // AppToolbarRight outputs\n @Output() checkboxChange = new EventEmitter<boolean>();\n @Output() visibilityToggle = new EventEmitter<boolean>();\n @Output() hideShowEvent = new EventEmitter<any>();\n @Output() checkboxEvent = new EventEmitter<object>();\n @Output() setSubroleEvent = new EventEmitter<any>();\n\n // AppToolbarRight event handlers\n onCheckboxChange(checked: boolean) {\n this.checkboxChange.emit(checked);\n }\n\n onVisibilityToggle(isVisible: boolean) {\n this.visibilityToggle.emit(isVisible);\n }\n\n onHideShowEvent(obj: any) {\n this.hideShowEvent.emit(obj);\n }\n\n onCheckboxEvent(obj: object) {\n this.checkboxEvent.emit(obj);\n }\n\n onSetSubroleEvent(subrole?: any) {\n this.setSubroleEvent.emit(subrole);\n }\n\n // AppToolbar event handler\n onEditEvent(content: string) {\n this.editEvent.emit(content);\n }\n\n // Resume Entries event handler\n onReapplyClick(data: { entry: ResumeEntry; index: number }) {\n this.reapplyClick.emit(data);\n }\n\n onUndoClick(data: { entry: ResumeEntry; index: number }) {\n this.undoClick.emit(data);\n }\n}\n\n\n","<al-responsive-columns [gap]=\"gap\" [padding]=\"padding\" [leftWidth]=\"leftWidth\" [rightWidth]=\"rightWidth\"\n [stackAt]=\"stackAt\">\n <div left><toolbar-left [variant]=\"variant\" [content]=\"content\"\n [isExtractionAnalysisActive]=\"isExtractionAnalysisActive\"\n [overrideConfig]=\"overrideConfig\" (editEvent)=\"onEditEvent($event)\"></toolbar-left></div>\n <div center><al-resume-entries [entries]=\"entries\" [showHeader]=\"showHeader\"\n [showDescriptionLabel]=\"showDescriptionLabel\" [showCompany]=\"showCompany\" [showJobTitle]=\"showJobTitle\"\n [showDates]=\"showDates\" [showLocation]=\"showLocation\" [showTimeline]=\"showTimeline\"\n [showReapplyButton]=\"showReapplyButton\" [showLoader]=\"showLoader\" [loaderForAllEntries]=\"loaderForAllEntries\"\n [loaderStatus]=\"loaderStatus\" [loaderSize]=\"loaderSize\" [skills]=\"skills\" [companyTooltip]=\"companyTooltip\"\n [jobTitleTooltip]=\"jobTitleTooltip\" [dateTooltip]=\"dateTooltip\" [locationTooltip]=\"locationTooltip\"\n [descriptionTooltip]=\"descriptionTooltip\" [tooltipPosition]=\"tooltipPosition\" [isSectionHidden]=\"isSectionHidden\"\n (reapplyClick)=\"onReapplyClick($event)\" (undoClick)=\"onUndoClick($event)\"></al-resume-entries>\n </div>\n <div right><toolbar-right [checked]=\"checked\" [alwaysShowIcons]=\"alwaysShowIcons\"\n [overrideConfig]=\"overrideConfigRight\" [currentObj]=\"currentObj\" (checkboxChange)=\"onCheckboxChange($event)\"\n (visibilityToggle)=\"onVisibilityToggle($event)\" (hideShowEvent)=\"onHideShowEvent($event)\"\n (checkboxEvent)=\"onCheckboxEvent($event)\" (setSubroleEvent)=\"onSetSubroleEvent($event)\"></toolbar-right>\n </div>\n</al-responsive-columns>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ExperienceSectionComponent } from './experience-section.component';\n\n@NgModule({\n imports: [CommonModule, ExperienceSectionComponent],\n exports: [ExperienceSectionComponent]\n})\nexport class ExperienceSectionModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { GeneralContainerComponent } from './general-container.component';\n\n@NgModule({\n imports: [GeneralContainerComponent],\n exports: [GeneralContainerComponent],\n})\nexport class GeneralContainerModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppToolbarLeftComponent } from './toolbar-left.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, AppToolbarLeftComponent],\n exports: [AppToolbarLeftComponent],\n})\nexport class AppToolbarLeftModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n const basePath = this.getBasePath();\n\n this.iconRegistry.addSvgIcon(\n 'move',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/Move.svg`)\n );\n this.iconRegistry.addSvgIcon(\n 'edit',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/edit.svg`)\n );\n this.iconRegistry.addSvgIcon(\n 'search',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/search.svg`)\n );\n }\n\n private getBasePath(): string {\n if (typeof document === 'undefined') {\n return '';\n }\n\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n return baseHref.replace(/\\/$/, '');\n }\n\n const pathname = window.location.pathname;\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n return '';\n }\n}\n\n","import { CommonModule } from '@angular/common';\nimport { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList, OnInit } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { LEFT_AND_RIGHT_ICON_CONSTANTS } from '../utils/image-utils';\n\n// Static flag to ensure icons are registered only once\nlet iconsRegistered = false;\n\n@Component({\n selector: 'al-side-action-bar',\n standalone: true,\n imports: [CommonModule, ButtonComponent, MatTooltipModule],\n templateUrl: './side-action-bar-wrapper.component.html',\n styleUrls: ['./side-action-bar-wrapper.component.scss']\n})\nexport class SideActionBarWrapperComponent implements AfterContentInit, OnInit {\n @ContentChildren(ButtonComponent) actionButtons!: QueryList<ButtonComponent>;\n\n @Input() showClose: boolean = true;\n // Visibility flag: if false, wrapper does not render\n @Input() visible: boolean = true;\n // Position: 'left' or 'right'\n @Input() position: 'left' | 'right' = 'right';\n // Icon outlined style for close button\n @Input() iconOutlined: boolean = false;\n // Tooltip text for close button\n @Input() closeButtonTooltip: string = 'Close';\n // Tooltip position for close button\n @Input() closeButtonTooltipPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n\n @Output() closeClick = new EventEmitter<void>();\n\n buttons: ButtonComponent[] = [];\n\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // Register icons synchronously - this must happen before template rendering\n this.registerIcons();\n }\n\n ngOnInit(): void {\n // Icons are registered in constructor\n }\n\n private registerIcons(): void {\n // Register icons only once using static flag\n if (!iconsRegistered) {\n try {\n // Register all icons synchronously\n // Use icons from image-utils\n this.iconRegistry.addSvgIconLiteral(\n 'hide_section',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['hide_section'])\n );\n // Register visibility_off as alias to hide_section for backward compatibility\n this.iconRegistry.addSvgIconLiteral(\n 'visibility_off',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['hide_section'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'subrole',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['subrole'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'year_month_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['year_month_icon'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'year_only_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['year_only_icon'])\n );\n\n this.iconRegistry.addSvgIconLiteral(\n 'multi-drag-drop',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['multi-drag-drop'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'delete-icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['delete-icon'])\n );\n // Keep backward compatibility - register old icon names that might be used in templates\n\n this.iconRegistry.addSvgIconLiteral(\n 'arrow_downward',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['multi-drag-drop'])\n );\n this.iconRegistry.addSvgIconLiteral(\n 'delete',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['delete-icon'])\n );\n iconsRegistered = true;\n } catch (error) {\n console.error('Failed to register side action bar icons:', error);\n }\n }\n }\n\n ngAfterContentInit(): void {\n this.buttons = this.actionButtons?.toArray() ?? [];\n this.applyDefaultsToButtons();\n this.actionButtons.changes.subscribe(() => {\n this.buttons = this.actionButtons.toArray();\n this.applyDefaultsToButtons();\n });\n }\n\n /**\n * Enforce wrapper defaults on projected buttons:\n * - buttonType = 'icon-circle'\n * - color = 'white' (unless explicitly set to gradient, grey, etc.)\n * - outline = true (unless explicitly set to false for non-white colors)\n * - size = 'sm' (unless explicitly set)\n * - iconOnly = true (unless explicitly set to false)\n * - iconOutlined = false (unless explicitly set to true)\n */\n private applyDefaultsToButtons(): void {\n this.buttons.forEach((btn) => {\n try {\n // Always set buttonType to icon-circle\n btn.buttonType = 'icon-circle';\n\n // Check if color is explicitly set to a non-default value\n const explicitColors = ['gradient', 'grey', 'green', 'error', 'white', 'success'];\n const hasExplicitColor = btn.color && explicitColors.includes(btn.color);\n\n // Only set color to white if it's not explicitly set or is the default 'blue'\n if (!hasExplicitColor && (!btn.color || btn.color === 'blue')) {\n btn.color = 'white';\n }\n\n // For explicitly colored buttons (gradient, grey), preserve their outline setting\n // For white buttons, set outline to true if not explicitly set to false\n if (btn.color === 'white' && btn.outline !== false) {\n btn.outline = true;\n }\n // For gradient/grey buttons, preserve outline (don't override)\n\n // Only set size if it's the default ('base') or unset\n if (!btn.size || btn.size === 'base') {\n btn.size = 'sm';\n }\n\n // Only set iconOnly if it's the default (false)\n if (btn.iconOnly === false) {\n btn.iconOnly = true;\n }\n\n // iconOutlined defaults to false, so only set if it's undefined\n if (btn.iconOutlined === undefined) {\n btn.iconOutlined = false;\n }\n } catch {\n // no-op; defensive to avoid breaking if API changes\n }\n });\n }\n}\n\n","<div class=\"al-side-action-bar-wrap\" [ngClass]=\"'position-' + position\">\n <!-- Visible bar -->\n <ng-container *ngIf=\"visible\">\n <div class=\"al-side-action-bar\">\n <div class=\"al-side-action-bar__close\" *ngIf=\"showClose\">\n <al-button [buttonType]=\"'icon-circle'\" [color]=\"'grey'\" [outline]=\"false\" [size]=\"'base'\" [iconOnly]=\"true\"\n [iconOutlined]=\"iconOutlined\" [icon]=\"'close'\" [tooltip]=\"closeButtonTooltip\"\n [tooltipPosition]=\"closeButtonTooltipPosition\" aria-label=\"Close\" (onClick)=\"closeClick.emit()\"></al-button>\n </div>\n\n <!-- Buttons rail -->\n <div class=\"al-side-action-bar__rail\">\n <ng-content></ng-content>\n </div>\n </div>\n </ng-container>\n</div>","import { NgModule } from '@angular/core';\nimport { SideActionBarWrapperComponent } from './side-action-bar-wrapper.component';\n\n/**\n * Module for Side Action Bar Wrapper Component\n * Note: This component is standalone, so this module is optional.\n * It can be used if you need to import the component in a non-standalone module.\n */\n@NgModule({\n imports: [SideActionBarWrapperComponent],\n exports: [SideActionBarWrapperComponent]\n})\nexport class SideActionBarWrapperModule { }\n\n","import {\n CommonModule\n}\n\nfrom '@angular/common';\n\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n OnInit\n}\n\nfrom '@angular/core';\n\nimport {\n FormsModule\n}\n\nfrom '@angular/forms';\n\nimport {\n MatIconModule,\n MatIconRegistry\n}\n\nfrom '@angular/material/icon';\n\nimport {\n MatTooltipModule\n}\n\nfrom '@angular/material/tooltip';\n\nimport {\n DomSanitizer\n}\n\nfrom '@angular/platform-browser';\n\nimport {\n IconButtonComponent\n}\n\nfrom '../icon-button/icon-button.component';\n\nimport {\n ButtonComponent\n}\n\nfrom '../button/button.component';\n\nimport {\n InputComponent\n}\n\nfrom '../input/input.component';\n\nimport {\n LEFT_AND_RIGHT_ICON_CONSTANTS\n}\n\nfrom '../utils/image-utils';\n\n// Static flag to ensure icons are registered only once\nlet iconsRegistered=false;\n\n/**\n * AI Wrapper Component\n *\n * A presentational component that displays a clock-hand style toolbar\n * that rotates between vertical (tools) and horizontal (AI input) states.\n *\n * This component has no internal logic - all state is controlled via inputs\n * and user interactions emit events.\n */\n@Component( {\n selector: 'al-ai-wrapper',\n standalone: true,\n imports: [CommonModule, FormsModule, MatIconModule, MatTooltipModule, IconButtonComponent, ButtonComponent, InputComponent],\n templateUrl: './ai-wrapper.component.html',\n styleUrls: ['./ai-wrapper.component.scss']\n }\n\n) export class AiWrapperComponent implements OnInit {\n /** Whether the component is in AI mode (horizontal) or tools mode (vertical) */\n @Input() isAI: boolean=false;\n\n /** Placeholder text for the AI input field (dropdown) */\n @Input() inputPlaceholder: string='Typing';\n\n /** Options for the dropdown input */\n @Input() inputOptions: string[]=['Typing', 'Gathering', 'Processing'];\n\n /** Current value of the AI input field */\n @Input() inputValue: string='';\n\n /** Whether the input is disabled */\n @Input() inputDisabled: boolean=false;\n\n /** Whether to show the close (X) button */\n @Input() showCloseButton: boolean=true;\n\n /** Whether to show the hide button in vertical mode */\n @Input() showHideButton: boolean=true;\n\n /** Whether to show the sub role button in vertical mode */\n @Input() showSubRoleButton: boolean=true;\n\n /** Whether to show the year month button in vertical mode */\n @Input() showYearMonthButton: boolean=true;\n\n /** Whether to show the move button in vertical mode */\n @Input() showMoveButton: boolean=true;\n\n /** Whether to show the delete button in vertical mode */\n @Input() showDeleteButton: boolean=true;\n\n /** Whether to show the Apply AI button in AI mode */\n @Input() showApplyButton: boolean=true;\n\n /** Label for the Apply AI button */\n @Input() applyLabel: string='Apply AI';\n\n /** Whether the Apply AI button is disabled */\n @Input() applyDisabled: boolean=false;\n\n /** Whether to show the chevron button */\n @Input() showChevronButton: boolean=true;\n\n /** Whether to show helper text */\n @Input() showHelperText: boolean=true;\n\n /** Helper text content */\n @Input() helperText: string='Action will be applied globally to all sections';\n\n /** Event emitted when the close (X) button is clicked */\n @Output() closeClick=new EventEmitter<void>();\n\n /** Event emitted when the AI trigger button (Sparkles) is clicked */\n @Output() aiTriggerClick=new EventEmitter<void>();\n\n /** Event emitted when the AI input value changes */\n @Output() inputValueChange=new EventEmitter<string>();\n\n /** Event emitted when the hide button is clicked */\n @Output() hideClick=new EventEmitter<void>();\n\n /** Event emitted when the sub role button is clicked */\n @Output() subRoleClick=new EventEmitter<void>();\n\n /** Event emitted when the year month button is clicked */\n @Output() yearMonthClick=new EventEmitter<void>();\n\n /** Event emitted when the move button is clicked */\n @Output() moveClick=new EventEmitter<void>();\n\n /** Event emitted when the delete button is clicked */\n @Output() deleteClick=new EventEmitter<void>();\n\n /** Event emitted when the Apply AI button is clicked */\n @Output() applyClick=new EventEmitter<void>();\n\n /** Event emitted when the chevron button is clicked */\n @Output() chevronClick=new EventEmitter<void>();\n\n /** Event emitted when the input field is focused */\n @Output() inputFocus=new EventEmitter<void>();\n\n /** Event emitted when the input field loses focus */\n @Output() inputBlur=new EventEmitter<void>();\n\n constructor(private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer) {\n this.registerIcons();\n }\n\n ngOnInit(): void {\n // Icons are registered in constructor\n }\n\n private registerIcons(): void {\n\n // Register icons only once using static flag\n if ( !iconsRegistered) {\n try {\n // Register all icons synchronously\n this.iconRegistry.addSvgIconLiteral('hide_section',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['hide_section']));\n // Register visibility_off as alias to hide_section for backward compatibility\n this.iconRegistry.addSvgIconLiteral('visibility_off',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['hide_section']));\n this.iconRegistry.addSvgIconLiteral('subrole',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['subrole']));\n this.iconRegistry.addSvgIconLiteral('subrole_icon_white',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['subrole_icon_white']));\n this.iconRegistry.addSvgIconLiteral('year_month_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['year_month_icon']));\n this.iconRegistry.addSvgIconLiteral('year_only_icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['year_only_icon']));\n this.iconRegistry.addSvgIconLiteral('multi-drag-drop',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['multi-drag-drop']));\n this.iconRegistry.addSvgIconLiteral('delete-icon',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['delete-icon']));\n // Keep backward compatibility - register old icon names\n this.iconRegistry.addSvgIconLiteral('arrow_downward',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['multi-drag-drop']));\n this.iconRegistry.addSvgIconLiteral('delete',\n this.sanitizer.bypassSecurityTrustHtml(LEFT_AND_RIGHT_ICON_CONSTANTS['delete-icon']));\n iconsRegistered=true;\n }\n\n catch (error) {\n console.error('Failed to register AI wrapper icons:', error);\n }\n }\n }\n\n onCloseClick(): void {\n this.closeClick.emit();\n }\n\n onAITriggerClick(event: Event): void {\n event.stopPropagation();\n this.aiTriggerClick.emit();\n }\n\n onInputChange(value: string): void {\n this.inputValueChange.emit(value);\n }\n\n onHideClick(): void {\n this.hideClick.emit();\n }\n\n onSubRoleClick(): void {\n this.subRoleClick.emit();\n }\n\n onYearMonthClick(): void {\n this.yearMonthClick.emit();\n }\n\n onMoveClick(): void {\n this.moveClick.emit();\n }\n\n onDeleteClick(): void {\n this.deleteClick.emit();\n }\n\n onApplyClick(): void {\n this.applyClick.emit();\n }\n\n onChevronClick(): void {\n this.chevronClick.emit();\n }\n\n onInputFocus(): void {\n this.inputFocus.emit();\n }\n\n onInputBlur(): void {\n this.inputBlur.emit();\n }\n}\n","<div class=\"al-ai-wrapper\">\n <div class=\"al-ai-wrapper__center\">\n <div *ngIf=\"showCloseButton\" class=\"al-ai-wrapper__close-button-wrapper\" [class.is-ai-mode]=\"isAI\"><al-button\n [buttonType]=\"'icon-circle'\" [color]=\"isAI ? 'grey' : 'grey'\" [outline]=\"false\" [size]=\"'base'\"\n [iconOnly]=\"true\" [iconOutlined]=\"false\" [icon]=\"'close'\" [disabled]=\"false\" [tooltip]=\"''\"\n [tooltipPosition]=\"'above'\" aria-label=\"Close\" (onClick)=\"onCloseClick()\"></al-button></div>\n <div class=\"al-ai-wrapper__hand-wrapper\" [class.is-ai-mode]=\"isAI\">\n <div class=\"al-ai-wrapper__gap\">\n <div class=\"al-ai-wrapper__toolbar\" [class.is-ai-mode]=\"isAI\" [class.no-helper-text]=\"isAI && !showHelperText\">\n <div class=\"al-ai-wrapper__content\" [class.is-ai-mode]=\"isAI\">\n <div *ngIf=\"!isAI\" class=\"al-ai-wrapper__vertical-tools\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"isAI\" class=\"al-ai-wrapper__horizontal-ai\">\n <div class=\"al-ai-wrapper__ai-row\">\n <div class=\"al-ai-wrapper__input-container\"><al-input [labelText]=\"''\" [placeholder]=\"inputPlaceholder\"\n [value]=\"inputValue\" [type]=\"'text'\" [disabled]=\"inputDisabled\" [helperText]=\"false\" [leftIcon]=\"''\"\n [rightIcon]=\"'expand_more'\" [hasDropDown]=\"true\" [searchfilter]=\"true\" [multipleSelect]=\"false\"\n [options]=\"inputOptions\" [size]=\"'base'\" [types]=\"'plain'\"\n (change)=\"onInputChange($event)\"></al-input></div>\n <div class=\"al-ai-wrapper__ai-actions\"><al-button *ngIf=\"showApplyButton\" [buttonType]=\"'icon-label'\"\n [color]=\"'gradient'\" [outline]=\"false\" [size]=\"'base'\" [labelText]=\"applyLabel\"\n [disabled]=\"applyDisabled\" aria-label=\"Apply AI\"\n (onClick)=\"onApplyClick()\"></al-button><al-icon-button *ngIf=\"showChevronButton\"\n icon=\"chevron_right\" [iconOutlined]=\"true\" [customColour]=\"'#ffffff'\" [size]=\"'xl'\"\n [disabled]=\"applyDisabled\" (onClick)=\"onChevronClick()\"\n [dataTestId]=\"'icon-btn_Uwofs4q_3kWU'\"></al-icon-button></div>\n </div>\n <div class=\"al-ai-wrapper__helper-text\" *ngIf=\"showHelperText\">\n {{ helperText }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { AiWrapperComponent } from './ai-wrapper.component';\n\n/**\n * Module for AI Wrapper Component\n * Note: This component is standalone, so this module is optional.\n * It can be used if you need to import the component in a non-standalone module.\n */\n@NgModule({\n imports: [AiWrapperComponent],\n exports: [AiWrapperComponent]\n})\nexport class AiWrapperModule { }\n\n","/*\n * Public API Surface of allsorter-lib\n */\n\nexport * from './lib/allsorter-lib.service';\nexport * from './lib/allsorter-lib.component';\nexport * from './lib/button/button.component';\nexport * from './lib/button/button.module';\nexport * from './lib/input/input.component';\nexport * from './lib/input/input.module';\n// export * from './lib/resume-header/resume-header.component';\n// export * from './lib/resume-header/resume-header.module';\nexport * from './lib/newresumeheader/newresumeheader.component';\nexport * from './lib/newresumeheader/newresumeheader.module';\nexport * from './lib/loader/loader.component';\nexport * from './lib/loader/loader.module';\nexport * from './lib/candidate-section/candidate-section.component';\nexport * from './lib/candidate-section/candidate-section.module';\nexport * from './lib/checkbox/checkbox.component';\nexport * from './lib/checkbox/checkbox.module';\nexport * from './lib/radio/radio.component';\nexport * from './lib/radio/radio.module';\nexport * from './lib/toggle-buttons/toggle-buttons.component';\nexport * from './lib/toggle-buttons/toggle-buttons.module';\nexport * from './lib/slide-toggle/slide-toggle.component';\nexport * from './lib/slide-toggle/slide-toggle.module';\nexport * from './lib/ai-apply-bar/ai-apply-bar.component';\nexport * from './lib/responsive-layout/responsive-layout.component';\nexport * from './lib/responsive-layout/responsive-layout.module';\nexport * from './lib/custom-editor/custom-editor.component';\nexport * from './lib/custom-editor/custom-editor.module';\nexport * from './lib/custom-editor/custom-editor-demo.component';\n\nexport * from './lib/icon-button/icon-button.component';\n\nexport * from './lib/date-range/date-range.component';\nexport * from './lib/date-range/date-range.module';\n\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tabs.module';\nexport * from './lib/shared-popup-modal/shared-popup-modal.component';\nexport * from './lib/shared-popup-modal/shared-popup-modal.module';\n\nexport * from './lib/tooltip/tooltip.component';\nexport * from './lib/tooltip/tooltip.module';\nexport * from './lib/new-typography/new-typography.component';\nexport * from './lib/editable-form-wrapper/editable-form-wrapper.component';\nexport * from './lib/field-placeholder/field-placeholder.component';\nexport * from './lib/field-placeholder/field-placeholder.module';\nexport * from './lib/responsive-columns/responsive-columns.component';\nexport * from './lib/responsive-columns/responsive-columns.module';\nexport * from './lib/resume-entries/resume-entries.component';\nexport * from './lib/resume-entries/resume-entries.module';\nexport * from './lib/experience-section/experience-section.component';\nexport * from './lib/experience-section/experience-section.module';\nexport * from './lib/general-container/general-container.component';\nexport * from './lib/general-container/general-container.module';\nexport * from './lib/toolbar-left/toolbar-left.component';\nexport * from './lib/toolbar-left/toolbar-left.module';\nexport * from './lib/toolbar-right/toolbar-right.component';\nexport * from './lib/toolbar-right/toolbar-right.module';\nexport * from './lib/side-action-bar-wrapper/side-action-bar-wrapper.component';\nexport * from './lib/side-action-bar-wrapper/side-action-bar-wrapper.module';\nexport * from './lib/ai-wrapper/ai-wrapper.component';\nexport * from './lib/ai-wrapper/ai-wrapper.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i5","i1","i3","i4","i9","i10","iconsRegistered","i6","i7.CheckboxComponent","i4.FieldPlaceholderComponent","i4.CheckboxComponent","i1.AppToolbarRightComponent"],"mappings":"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"}