{"version":3,"file":"flowbite-angular-clipboard.mjs","sources":["../../../../libs/flowbite-angular/clipboard/src/clipboard/theme.ts","../../../../libs/flowbite-angular/clipboard/src/config/clipboard-config.ts","../../../../libs/flowbite-angular/clipboard/src/clipboard/clipboard-state.ts","../../../../libs/flowbite-angular/clipboard/src/clipboard/clipboard.component.ts","../../../../libs/flowbite-angular/clipboard/src/index.ts","../../../../libs/flowbite-angular/clipboard/src/flowbite-angular-clipboard.ts"],"sourcesContent":["import { createTheme } from 'flowbite-angular';\r\n\r\nexport interface FlowbiteClipboardTheme {\r\n  host: FlowbiteClipboardHostTheme;\r\n}\r\n\r\nexport interface FlowbiteClipboardHostTheme {\r\n  base: string;\r\n  transition: string;\r\n}\r\n\r\nexport const flowbiteClipboardTheme: FlowbiteClipboardTheme = createTheme({\r\n  host: {\r\n    base: 'w-full max-w-[16rem]',\r\n    transition: '',\r\n  },\r\n});\r\n","import { flowbiteClipboardTheme, type FlowbiteClipboardTheme } from '../clipboard/theme';\r\n\r\nimport type { DeepPartial } from 'flowbite-angular';\r\n\r\nimport type { Provider } from '@angular/core';\r\nimport { inject, InjectionToken } from '@angular/core';\r\n\r\nexport interface FlowbiteClipboardConfig {\r\n  /**\r\n   * The default theme of clipboard\r\n   */\r\n  baseTheme: FlowbiteClipboardTheme;\r\n\r\n  /**\r\n   * The custom theme of clipboard\r\n   */\r\n  customTheme: DeepPartial<FlowbiteClipboardTheme>;\r\n}\r\n\r\nexport const defaultFlowbiteClipboardConfig: FlowbiteClipboardConfig = {\r\n  baseTheme: flowbiteClipboardTheme,\r\n  customTheme: {},\r\n};\r\n\r\nexport const FlowbiteClipboardConfigToken = new InjectionToken<FlowbiteClipboardConfig>(\r\n  'FlowbiteClipboardConfigToken'\r\n);\r\n\r\n/**\r\n * Provide the default Clipboard configuration\r\n * @param config The Clipboard configuration\r\n * @returns The provider\r\n */\r\nexport const provideFlowbiteClipboardConfig = (\r\n  config: Partial<FlowbiteClipboardConfig>\r\n): Provider[] => [\r\n  {\r\n    provide: FlowbiteClipboardConfigToken,\r\n    useValue: { ...defaultFlowbiteClipboardConfig, ...config },\r\n  },\r\n];\r\n\r\n/**\r\n * Inject the Clipboard configuration\r\n * @see {@link defaultFlowbiteClipboardConfig}\r\n * @returns The configuration\r\n */\r\nexport const injectFlowbiteClipboardConfig = (): FlowbiteClipboardConfig =>\r\n  inject(FlowbiteClipboardConfigToken, { optional: true }) ?? defaultFlowbiteClipboardConfig;\r\n","import type { Clipboard } from './clipboard.component';\r\n\r\nimport {\r\n  createState,\r\n  createStateInjector,\r\n  createStateProvider,\r\n  createStateToken,\r\n} from 'ng-primitives/state';\r\n\r\nexport const FlowbiteClipboardStateToken = createStateToken<Clipboard>('Flowbite Clipboard');\r\nexport const provideFlowbiteClipboardState = createStateProvider(FlowbiteClipboardStateToken);\r\nexport const injectFlowbiteClipboardState = createStateInjector(FlowbiteClipboardStateToken);\r\nexport const flowbiteClipboardState = createState(FlowbiteClipboardStateToken);\r\n","import { injectFlowbiteClipboardConfig } from '../config/clipboard-config';\r\nimport { flowbiteClipboardState, provideFlowbiteClipboardState } from './clipboard-state';\r\nimport type { FlowbiteClipboardTheme } from './theme';\r\n\r\nimport { mergeDeep, type DeepPartial } from 'flowbite-angular';\r\nimport { Button } from 'flowbite-angular/button';\r\nimport { Icon } from 'flowbite-angular/icon';\r\nimport { fileCopy } from 'flowbite-angular/icon/outline/files-folders';\r\nimport { Tooltip } from 'flowbite-angular/tooltip';\r\n\r\nimport { Clipboard as CdkClipboard } from '@angular/cdk/clipboard';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  computed,\r\n  inject,\r\n  input,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { provideIcons } from '@ng-icons/core';\r\nimport { NgpTooltipTrigger } from 'ng-primitives/tooltip';\r\nimport { twMerge } from 'tailwind-merge';\r\n\r\n@Component({\r\n  standalone: true,\r\n  selector: `\r\n    div[flowbiteClipboard]\r\n  `,\r\n  exportAs: 'flowbiteClipboard',\r\n  hostDirectives: [],\r\n  imports: [Button, Icon, NgpTooltipTrigger, Tooltip],\r\n  providers: [provideFlowbiteClipboardState(), provideIcons({ fileCopy })],\r\n  host: {\r\n    '[class]': `theme().host.root`,\r\n    '(click)': 'onClick()',\r\n  },\r\n  template: `\r\n    <div\r\n      [ngpTooltipTrigger]=\"tooltip\"\r\n      class=\"flex flex-row *:first:rounded-l-md *:last:rounded-none *:last:rounded-r-md\">\r\n      <input\r\n        [id]=\"id()\"\r\n        [name]=\"id()\"\r\n        [value]=\"value()\"\r\n        type=\"text\"\r\n        class=\"block w-full border border-gray-300 bg-gray-50 p-2.5 text-sm text-gray-500 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-400 dark:placeholder-gray-400\"\r\n        disabled\r\n        readonly />\r\n      <label\r\n        [for]=\"id()\"\r\n        class=\"sr-only\">\r\n        Label\r\n      </label>\r\n      <button\r\n        flowbiteButton\r\n        color=\"default\">\r\n        <flowbite-icon\r\n          name=\"fileCopy\"\r\n          class=\"size-4 stroke-2\" />\r\n      </button>\r\n    </div>\r\n    <ng-template #tooltip>\r\n      <div flowbiteTooltip>Copy to clipboard</div>\r\n    </ng-template>\r\n  `,\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class Clipboard {\r\n  readonly config = injectFlowbiteClipboardConfig();\r\n  readonly clipboard = inject(CdkClipboard);\r\n\r\n  readonly id = input<string>();\r\n  readonly value = input<string>();\r\n  /**\r\n   * @see {@link injectFlowbiteClipboardConfig}\r\n   */\r\n  readonly customTheme = input<DeepPartial<FlowbiteClipboardTheme>>(this.config.customTheme);\r\n\r\n  readonly theme = computed(() => {\r\n    const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());\r\n\r\n    return {\r\n      host: {\r\n        root: twMerge(mergedTheme.host.base, mergedTheme.host.transition),\r\n      },\r\n    };\r\n  });\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  readonly state = flowbiteClipboardState<Clipboard>(this);\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  onClick(): void {\r\n    this.copyToClipboard();\r\n  }\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  copyToClipboard(): void {\r\n    const value = this.value();\r\n\r\n    if (value) {\r\n      this.clipboard.copy(value);\r\n    }\r\n  }\r\n}\r\n","/* Clipboard */\r\nexport * from './clipboard/clipboard.component';\r\nexport * from './clipboard/clipboard-state';\r\nexport * from './clipboard/theme';\r\n/* Config */\r\nexport * from './config/clipboard-config';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CdkClipboard"],"mappings":"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"}