@ship-ui/core 0.19.5 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/assets/mcp/components.json +66 -4243
- package/bin/mcp/index.js +6027 -273
- package/bin/ship-fg-scanner +0 -0
- package/bin/ship-fg.mjs +14 -12
- package/bin/src/subset.ts +3 -1
- package/fesm2022/ship-ui-core-sh-form-field-experimental.mjs +42 -0
- package/fesm2022/ship-ui-core-sh-form-field-experimental.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-accordion.mjs +127 -0
- package/fesm2022/ship-ui-core-ship-accordion.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-alert.mjs +305 -0
- package/fesm2022/ship-ui-core-ship-alert.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-blueprint.mjs +1156 -0
- package/fesm2022/ship-ui-core-ship-blueprint.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-button-group.mjs +41 -0
- package/fesm2022/ship-ui-core-ship-button-group.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-button.mjs +38 -0
- package/fesm2022/ship-ui-core-ship-button.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-card.mjs +35 -0
- package/fesm2022/ship-ui-core-ship-card.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-checkbox.mjs +113 -0
- package/fesm2022/ship-ui-core-ship-checkbox.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-chip.mjs +44 -0
- package/fesm2022/ship-ui-core-ship-chip.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-color-picker.mjs +947 -0
- package/fesm2022/ship-ui-core-ship-color-picker.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-datepicker.mjs +951 -0
- package/fesm2022/ship-ui-core-ship-datepicker.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-dialog.mjs +263 -0
- package/fesm2022/ship-ui-core-ship-dialog.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-divider.mjs +22 -0
- package/fesm2022/ship-ui-core-ship-divider.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-event-card.mjs +50 -0
- package/fesm2022/ship-ui-core-ship-event-card.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-file-upload.mjs +112 -0
- package/fesm2022/ship-ui-core-ship-file-upload.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-form-field.mjs +310 -0
- package/fesm2022/ship-ui-core-ship-form-field.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-icon.mjs +81 -0
- package/fesm2022/ship-ui-core-ship-icon.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-list.mjs +22 -0
- package/fesm2022/ship-ui-core-ship-list.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-menu.mjs +545 -0
- package/fesm2022/ship-ui-core-ship-menu.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-popover.mjs +286 -0
- package/fesm2022/ship-ui-core-ship-popover.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-progress-bar.mjs +37 -0
- package/fesm2022/ship-ui-core-ship-progress-bar.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-radio.mjs +102 -0
- package/fesm2022/ship-ui-core-ship-radio.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-range-slider.mjs +277 -0
- package/fesm2022/ship-ui-core-ship-range-slider.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-select.mjs +971 -0
- package/fesm2022/ship-ui-core-ship-select.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-sidenav.mjs +248 -0
- package/fesm2022/ship-ui-core-ship-sidenav.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-sortable.mjs +485 -0
- package/fesm2022/ship-ui-core-ship-sortable.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-spinner.mjs +28 -0
- package/fesm2022/ship-ui-core-ship-spinner.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-stepper.mjs +76 -0
- package/fesm2022/ship-ui-core-ship-stepper.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-table-filter-bar.mjs +28 -0
- package/fesm2022/ship-ui-core-ship-table-filter-bar.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-table.mjs +442 -0
- package/fesm2022/ship-ui-core-ship-table.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-tabs.mjs +38 -0
- package/fesm2022/ship-ui-core-ship-tabs.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-theme-toggle.mjs +119 -0
- package/fesm2022/ship-ui-core-ship-theme-toggle.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-toggle-card.mjs +75 -0
- package/fesm2022/ship-ui-core-ship-toggle-card.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-toggle.mjs +105 -0
- package/fesm2022/ship-ui-core-ship-toggle.mjs.map +1 -0
- package/fesm2022/ship-ui-core-ship-virtual-scroll.mjs +186 -0
- package/fesm2022/ship-ui-core-ship-virtual-scroll.mjs.map +1 -0
- package/fesm2022/ship-ui-core.mjs +880 -8782
- package/fesm2022/ship-ui-core.mjs.map +1 -1
- package/package.json +147 -3
- package/styles/core.scss +43 -0
- package/styles/helpers.scss +2 -0
- package/styles/index.scss +12 -123
- package/types/ship-ui-core-sh-form-field-experimental.d.ts +11 -0
- package/types/ship-ui-core-ship-accordion.d.ts +19 -0
- package/types/ship-ui-core-ship-alert.d.ts +68 -0
- package/types/ship-ui-core-ship-blueprint.d.ts +112 -0
- package/types/ship-ui-core-ship-button-group.d.ts +15 -0
- package/types/ship-ui-core-ship-button.d.ts +13 -0
- package/types/ship-ui-core-ship-card.d.ts +11 -0
- package/types/ship-ui-core-ship-checkbox.d.ts +22 -0
- package/types/ship-ui-core-ship-chip.d.ts +15 -0
- package/types/ship-ui-core-ship-color-picker.d.ts +105 -0
- package/types/ship-ui-core-ship-datepicker.d.ts +96 -0
- package/types/ship-ui-core-ship-dialog.d.ts +76 -0
- package/types/ship-ui-core-ship-divider.d.ts +8 -0
- package/types/ship-ui-core-ship-event-card.d.ts +11 -0
- package/types/ship-ui-core-ship-file-upload.d.ts +20 -0
- package/types/ship-ui-core-ship-form-field.d.ts +32 -0
- package/types/ship-ui-core-ship-icon.d.ts +18 -0
- package/types/ship-ui-core-ship-list.d.ts +8 -0
- package/types/ship-ui-core-ship-menu.d.ts +49 -0
- package/types/ship-ui-core-ship-popover.d.ts +40 -0
- package/types/ship-ui-core-ship-progress-bar.d.ts +14 -0
- package/types/ship-ui-core-ship-radio.d.ts +22 -0
- package/types/ship-ui-core-ship-range-slider.d.ts +31 -0
- package/types/ship-ui-core-ship-select.d.ts +81 -0
- package/types/ship-ui-core-ship-sidenav.d.ts +36 -0
- package/types/ship-ui-core-ship-sortable.d.ts +72 -0
- package/types/ship-ui-core-ship-spinner.d.ts +10 -0
- package/types/ship-ui-core-ship-stepper.d.ts +13 -0
- package/types/ship-ui-core-ship-table-filter-bar.d.ts +8 -0
- package/types/ship-ui-core-ship-table.d.ts +69 -0
- package/types/ship-ui-core-ship-tabs.d.ts +14 -0
- package/types/ship-ui-core-ship-theme-toggle.d.ts +28 -0
- package/types/ship-ui-core-ship-toggle-card.d.ts +15 -0
- package/types/ship-ui-core-ship-toggle.d.ts +21 -0
- package/types/ship-ui-core-ship-virtual-scroll.d.ts +22 -0
- package/types/ship-ui-core.d.ts +88 -1070
- package/styles/components/ship-accordion.scss +0 -113
- package/styles/components/ship-alert-container.scss +0 -49
- package/styles/components/ship-alert.scss +0 -177
- package/styles/components/ship-blueprint.scss +0 -242
- package/styles/components/ship-button-group.scss +0 -165
- package/styles/components/ship-button.scss +0 -141
- package/styles/components/ship-card.scss +0 -57
- package/styles/components/ship-checkbox.scss +0 -116
- package/styles/components/ship-chip.scss +0 -104
- package/styles/components/ship-color-picker.scss +0 -150
- package/styles/components/ship-datepicker.scss +0 -317
- package/styles/components/ship-dialog.scss +0 -152
- package/styles/components/ship-divider.scss +0 -27
- package/styles/components/ship-event-card.scss +0 -51
- package/styles/components/ship-file-upload.scss +0 -47
- package/styles/components/ship-form-field.scss +0 -408
- package/styles/components/ship-icon.scss +0 -54
- package/styles/components/ship-list.scss +0 -165
- package/styles/components/ship-menu.scss +0 -237
- package/styles/components/ship-popover.scss +0 -205
- package/styles/components/ship-progress-bar.scss +0 -173
- package/styles/components/ship-radio.scss +0 -113
- package/styles/components/ship-range-slider.scss +0 -421
- package/styles/components/ship-select.scss +0 -153
- package/styles/components/ship-sidenav.scss +0 -195
- package/styles/components/ship-sortable.scss +0 -45
- package/styles/components/ship-spinner.scss +0 -53
- package/styles/components/ship-stepper.scss +0 -158
- package/styles/components/ship-table.scss +0 -443
- package/styles/components/ship-tabs.scss +0 -125
- package/styles/components/ship-theme-toggle.scss +0 -41
- package/styles/components/ship-toggle-card.scss +0 -69
- package/styles/components/ship-toggle.scss +0 -255
- package/styles/components/ship-tooltip.scss +0 -151
- package/styles/components/ship-virtual-scroll.scss +0 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-ui-core-ship-color-picker.mjs","sources":["../../../projects/ship-ui/ship-color-picker/ship-color-picker.ts","../../../projects/ship-ui/ship-color-picker/ship-color-picker-input.ts","../../../projects/ship-ui/ship-color-picker/ship-ui-core-ship-color-picker.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, DOCUMENT, effect, ElementRef, HostListener, inject, input, model, output, PLATFORM_ID, signal, untracked, viewChild, ViewEncapsulation } from '@angular/core';\nimport { rgbToHsv, rgbToHex, rgbToHsl, hslToRgbExact, hsvToRgbExact, rgbaToHex8 } from '@ship-ui/core';\n\ntype R = number;\ntype G = number;\ntype B = number;\ntype A = number;\n\n@Component({\n selector: 'sh-color-picker',\n styleUrl: './ship-color-picker.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [],\n template: `\n <canvas #colorCanvas></canvas>\n <div\n class=\"marker\"\n [style.left]=\"markerPosition().x\"\n [style.top]=\"markerPosition().y\"\n [style.background]=\"selectedColorRgb()\"></div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'renderingType()',\n '[class.vertical]': '(renderingType() === \"hue\" || renderingType() === \"saturation\") && direction() === \"vertical\"',\n },\n})\nexport class ShipColorPicker {\n #document = inject(DOCUMENT);\n #platformId = inject(PLATFORM_ID);\n\n readonly canvasRef = viewChild.required<ElementRef<HTMLCanvasElement>>('colorCanvas');\n #canvasData = signal<{\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n centerX: number;\n centerY: number;\n radius: number;\n } | null>(null);\n\n showDarkColors = input(false);\n renderingType = input<'hsl' | 'grid' | 'hue' | 'rgb' | 'saturation' | 'alpha'>('hsl');\n gridSize = input(20);\n hue = model(0);\n direction = input<'horizontal' | 'vertical'>('horizontal');\n selectedColor = model<[R, G, B, A?]>([255, 255, 255, 1]);\n alpha = model(1);\n currentColor = output<{\n rgb: string;\n rgba: string;\n hex: string;\n hex8: string;\n hsl: string;\n hsla: string;\n hue: number;\n saturation: number;\n alpha: number;\n }>();\n\n centerLightness = computed(() => (this.showDarkColors() ? 200 : 100));\n isDragging = signal(false);\n markerPosition = signal({ x: '50%', y: '50%' });\n _pos = { x: '0', y: '0' };\n _markerPosition = effect(() => (this._pos = this.markerPosition()));\n #skipMarkerUpdate = false;\n\n selectedColorRgb = computed(() => {\n const c = this.selectedColor();\n return c[3] !== undefined ? `rgba(${c[0]},${c[1]},${c[2]},${c[3]})` : `rgb(${c[0]},${c[1]},${c[2]})`;\n });\n selectedColorHex = computed(() => rgbToHex(...(this.selectedColor() as [number, number, number])));\n selectedColorHsl = computed(() => rgbToHsl(...(this.selectedColor() as [number, number, number])).string);\n\n alphaEffect = effect(() => {\n const a = this.alpha();\n const current = untracked(() => this.selectedColor());\n\n if (current[3] !== a) {\n this.#skipMarkerUpdate = false;\n this.selectedColor.set([current[0], current[1], current[2], a]);\n }\n });\n\n _prevColorStr = '';\n selectedColorEffect = effect(() => {\n const selectedColor = this.selectedColor();\n const r = selectedColor[0];\n const g = selectedColor[1];\n const b = selectedColor[2];\n const a = selectedColor[3] ?? 1;\n\n untracked(() => {\n if (this.alpha() !== a) {\n this.alpha.set(a);\n }\n });\n\n const str = `${r},${g},${b},${a}`;\n\n if (this._prevColorStr === str && !this.#skipMarkerUpdate) {\n // We still want to clear skipMarkerUpdate if it was set\n // wait, actually if skipMarkerUpdate is true, it means we JUST dragged.\n // In that case we do want to emit currentColor.\n }\n\n const hsl = rgbToHsl(r, g, b);\n const hex = rgbToHex(r, g, b);\n\n if (this.#skipMarkerUpdate) {\n this.#skipMarkerUpdate = false;\n this._prevColorStr = str;\n } else {\n if (this._prevColorStr !== str) {\n this.updateMarkerFromColor(selectedColor);\n this._prevColorStr = str;\n } else {\n // Color is structurally identical and not from a drag event, skip marker jump\n }\n }\n\n this.currentColor.emit({\n rgb: `rgb(${r}, ${g}, ${b})`,\n rgba: `rgba(${r}, ${g}, ${b}, ${a})`,\n hex: hex,\n hex8: rgbaToHex8(r, g, b, a),\n hsl: hsl.string,\n hsla: `hsla(${hsl.h}, ${hsl.s}%, ${hsl.l}%, ${a})`,\n hue: hsl.h,\n saturation: hsl.s,\n alpha: a,\n });\n });\n\n private alphaColorRedrawEffect = effect(() => {\n const color = this.selectedColor();\n if (this.renderingType() === 'alpha' && this.#canvasData()) {\n untracked(() => this.drawAlpha());\n }\n });\n\n @HostListener('window:resize', [])\n onResize() {\n this.setCanvasSize();\n }\n\n private previousLayoutHash = '';\n private previousHue: number | null = null;\n\n private getLayoutHash() {\n return `${this.renderingType()}-${this.direction()}-${this.gridSize()}-${this.showDarkColors()}`;\n }\n\n private renderingTypeEffect = effect(() => {\n const currentHue = this.hue();\n const layoutHash = this.getLayoutHash();\n\n const canvasData = untracked(() => this.#canvasData());\n\n if (canvasData) {\n untracked(() => this.drawColorPicker());\n\n if (this.previousLayoutHash !== layoutHash) {\n if (this.renderingType() === 'hsl') {\n this.adjustMarkerPosition();\n queueMicrotask(() => this.updateMarkerFromColor(untracked(() => this.selectedColor())));\n } else {\n this.updateMarkerFromColor(untracked(() => this.selectedColor()));\n }\n this.previousLayoutHash = layoutHash;\n this.previousHue = currentHue;\n } else if (this.previousHue !== currentHue) {\n const pos = untracked(() => this.markerPosition());\n const { canvas, ctx } = canvasData;\n let x = (parseFloat(pos.x.replace('%', '')) / 100) * Math.max(1, canvas.width - 1);\n let y = (parseFloat(pos.y.replace('%', '')) / 100) * Math.max(1, canvas.height - 1);\n x = Math.max(0, Math.min(canvas.width - 1, Math.round(x)));\n y = Math.max(0, Math.min(canvas.height - 1, Math.round(y)));\n\n const color = untracked(() => this.getColorAtPosition(x, y));\n\n if (this.renderingType() !== 'alpha') {\n color[3] = untracked(() => this.selectedColor()[3] ?? 1);\n }\n\n this.#skipMarkerUpdate = true;\n this.selectedColor.set(color as any);\n this.previousHue = currentHue;\n }\n }\n });\n\n #resizeObserver =\n typeof ResizeObserver !== 'undefined'\n ? new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.contentRect.width > 0 && entry.contentRect.height > 0) {\n this.setCanvasSize();\n }\n }\n })\n : null;\n\n initColor: [R, G, B, A?] | null = null;\n ngAfterViewInit() {\n this.initColor = this.selectedColor();\n\n const canvas = this.canvasRef()?.nativeElement;\n if (canvas?.parentElement) {\n this.#resizeObserver?.observe(canvas.parentElement);\n }\n\n this.setCanvasSize();\n this.initCanvasEvents();\n }\n\n ngOnDestroy() {\n this.#resizeObserver?.disconnect();\n }\n\n private updateMarkerFromColor(rgba: [R, G, B, A?]) {\n const [r, g, b, a] = rgba;\n const coords = this.findPositionByColor(r, g, b, a);\n\n if (coords === null) return;\n\n const { x, y } = coords;\n\n const mockEvent = {\n offsetX: x,\n offsetY: y,\n clientX: x,\n clientY: y,\n touches: [{ clientX: x, clientY: y }],\n };\n\n this.updateColorAndMarker(mockEvent as any, false, true);\n }\n\n private findPositionByColor(r: number, g: number, b: number, a?: number): { x: number; y: number } | null {\n const canvasData = this.#canvasData();\n if (!canvasData || !canvasData.canvas) return null;\n\n const { canvas, ctx } = canvasData;\n if (canvas.width === 0 || canvas.height === 0) return null;\n\n if (this.renderingType() === 'alpha') {\n const aVal = a ?? 1;\n if (this.direction() === 'horizontal') {\n return { x: Math.round(aVal * (canvas.width - 1)), y: Math.round((canvas.height - 1) / 2) };\n } else {\n return { x: Math.round((canvas.width - 1) / 2), y: Math.round(aVal * (canvas.height - 1)) };\n }\n }\n\n if (this.renderingType() === 'hue') {\n const hsl = rgbToHsl(r, g, b);\n const ratio = hsl.h / 360;\n if (this.direction() === 'horizontal') {\n return { x: Math.round(ratio * (canvas.width - 1)), y: Math.round((canvas.height - 1) / 2) };\n } else {\n return { x: Math.round((canvas.width - 1) / 2), y: Math.round(ratio * (canvas.height - 1)) };\n }\n }\n\n if (this.renderingType() === 'rgb') {\n const hsv = rgbToHsv(r, g, b);\n return {\n x: Math.round((hsv.s / 100) * (canvas.width - 1)),\n y: Math.round((1 - hsv.v / 100) * (canvas.height - 1)),\n };\n }\n\n if (this.renderingType() === 'saturation') {\n const hsl = rgbToHsl(r, g, b);\n const ratio = hsl.s / 100;\n if (this.direction() === 'horizontal') {\n return { x: Math.round(ratio * (canvas.width - 1)), y: Math.round((canvas.height - 1) / 2) };\n } else {\n return { x: Math.round((canvas.width - 1) / 2), y: Math.round(ratio * (canvas.height - 1)) };\n }\n }\n\n if (this.renderingType() === 'hsl') {\n const { centerX, centerY, radius } = canvasData;\n const hsl = rgbToHsl(r, g, b);\n const centerL = this.centerLightness();\n let distance = 0;\n if (centerL > 0) {\n distance = ((100 - hsl.l) * radius) / ((50 * centerL) / 100);\n }\n const angle = (hsl.h / 360) * 2 * Math.PI - Math.PI;\n return {\n x: Math.round(centerX + distance * Math.cos(angle)),\n y: Math.round(centerY + distance * Math.sin(angle)),\n };\n }\n\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height).data;\n\n let bestMatch = { x: 0, y: 0, distance: Infinity };\n\n for (let y = 0; y < canvas.height; y++) {\n for (let x = 0; x < canvas.width; x++) {\n const index = (y * canvas.width + x) * 4;\n const pixelR = imageData[index];\n const pixelG = imageData[index + 1];\n const pixelB = imageData[index + 2];\n\n const distance = Math.sqrt(Math.pow(r - pixelR, 2) + Math.pow(g - pixelG, 2) + Math.pow(b - pixelB, 2));\n\n if (distance < bestMatch.distance) {\n bestMatch = { x, y, distance };\n }\n }\n }\n\n return { x: bestMatch.x, y: bestMatch.y };\n }\n\n private adjustMarkerPosition() {\n const { canvas, centerX, centerY, radius } = this.#canvasData()!;\n let { x, y } = this._pos;\n\n let markerX = (parseFloat(x.replace('%', '')) / 100) * canvas.width;\n let markerY = (parseFloat(y.replace('%', '')) / 100) * canvas.height;\n\n const distance = Math.sqrt(Math.pow(markerX - centerX, 2) + Math.pow(markerY - centerY, 2));\n\n if (distance > radius) {\n const angle = Math.atan2(markerY - centerY, markerX - centerX);\n markerX = centerX + radius * Math.cos(angle);\n markerY = centerY + radius * Math.sin(angle);\n\n x = ((markerX / canvas.width) * 100).toFixed(2) + '%';\n y = ((markerY / canvas.height) * 100).toFixed(2) + '%';\n this.markerPosition.set({ x, y });\n }\n }\n\n private initCanvasEvents() {\n const data = this.#canvasData();\n if (!data) return;\n const { canvas } = data;\n\n canvas.addEventListener('mousedown', (event) => {\n this.isDragging.set(true);\n this.updateColorAndMarker(event);\n });\n\n this.#document.addEventListener('mousemove', (event) => {\n if (this.isDragging()) {\n event.preventDefault();\n this.updateColorAndMarker(event, true);\n }\n });\n\n this.#document.addEventListener('mouseup', () => this.isDragging.set(false));\n\n canvas.addEventListener('touchstart', (_) => this.isDragging.set(true));\n this.#document.addEventListener('touchmove', (event) => {\n if (this.isDragging()) {\n event.preventDefault();\n this.updateColorAndMarker(event.touches[0], true);\n }\n });\n\n this.#document.addEventListener('touchend', () => this.isDragging.set(false));\n this.#document.addEventListener('touchcancel', () => this.isDragging.set(false));\n }\n\n private setCanvasSize() {\n if (!isPlatformBrowser(this.#platformId)) return;\n\n const canvas = this.canvasRef()?.nativeElement;\n\n if (canvas) {\n const ctx = canvas.getContext('2d', {\n willReadFrequently: true,\n imageSmoothingEnabled: true,\n imageSmoothingQuality: 'high',\n }) as CanvasRenderingContext2D;\n const parentWidth = canvas.parentElement?.offsetWidth || canvas.offsetWidth;\n canvas.width = parentWidth;\n canvas.height = parentWidth;\n\n this.#canvasData.set({\n canvas,\n ctx,\n centerX: canvas.width / 2,\n centerY: canvas.height / 2,\n radius: Math.min(canvas.width, canvas.height) / 2,\n });\n\n this.drawColorPicker();\n\n setTimeout(() => {\n if (!this.isDragging()) {\n this.updateMarkerFromColor(untracked(() => this.selectedColor()));\n }\n });\n }\n }\n\n private getColorAtPosition(mouseX: number, mouseY: number): [R, G, B, A?] {\n const { canvas, ctx } = this.#canvasData()!;\n const w = Math.max(1, canvas.width - 1);\n const h = Math.max(1, canvas.height - 1);\n const xRatio = mouseX / w;\n const yRatio = mouseY / h;\n\n if (this.renderingType() === 'rgb') {\n return hsvToRgbExact(this.hue(), xRatio * 100, (1 - yRatio) * 100);\n } else if (this.renderingType() === 'saturation') {\n const ratio = this.direction() === 'horizontal' ? xRatio : yRatio;\n return hslToRgbExact(this.hue(), ratio * 100, 50);\n } else if (this.renderingType() === 'hue') {\n const ratio = this.direction() === 'horizontal' ? xRatio : yRatio;\n return hslToRgbExact(ratio * 360, 100, 50);\n } else if (this.renderingType() === 'alpha') {\n const ratio = this.direction() === 'horizontal' ? xRatio : yRatio;\n const current = this.selectedColor();\n return [current[0], current[1], current[2], parseFloat(ratio.toFixed(2))];\n } else {\n const pixelData = ctx.getImageData(mouseX, mouseY, 1, 1).data;\n return [pixelData[0], pixelData[1], pixelData[2]];\n }\n }\n\n private updateColorAndMarker(event: MouseEvent | Touch, outsideCanvas = false, onlyMarker = false) {\n const { canvas, ctx } = this.#canvasData()!;\n\n let mouseX = event instanceof MouseEvent ? event.offsetX : event.clientX;\n let mouseY = event instanceof MouseEvent ? event.offsetY : event.clientY;\n\n if (outsideCanvas) {\n const rect = canvas.getBoundingClientRect();\n mouseX = Math.round(event.clientX - rect.left);\n mouseY = Math.round(event.clientY - rect.top);\n }\n\n if (this.renderingType() === 'hsl') {\n const centerX = canvas.width / 2;\n const centerY = canvas.height / 2;\n const radius = Math.min(canvas.width, canvas.height) / 2;\n\n const distance = Math.sqrt(Math.pow(mouseX - centerX, 2) + Math.pow(mouseY - centerY, 2));\n\n if (distance > radius) {\n const angle = Math.atan2(mouseY - centerY, mouseX - centerX);\n mouseX = centerX + radius * Math.cos(angle);\n mouseY = centerY + radius * Math.sin(angle);\n }\n }\n\n mouseX = Math.max(0, Math.min(canvas.width - 1, Math.round(mouseX)));\n mouseY = Math.max(0, Math.min(canvas.height - 1, Math.round(mouseY)));\n\n if (!onlyMarker) {\n const newColor = this.getColorAtPosition(mouseX, mouseY);\n if (this.renderingType() !== 'alpha') {\n newColor[3] = this.selectedColor()[3] ?? 1;\n }\n this.#skipMarkerUpdate = true;\n this.selectedColor.set(newColor as any);\n }\n\n const xPercent = ((mouseX / Math.max(1, canvas.width - 1)) * 100).toFixed(2) + '%';\n const yPercent = ((mouseY / Math.max(1, canvas.height - 1)) * 100).toFixed(2) + '%';\n\n this.markerPosition.set({ x: xPercent, y: yPercent });\n }\n\n private drawColorPicker() {\n switch (this.renderingType()) {\n case 'hsl':\n this.drawColorWheel();\n break;\n case 'grid':\n this.drawGrid();\n break;\n case 'hue':\n this.drawHue();\n break;\n case 'alpha':\n this.drawAlpha();\n break;\n case 'rgb':\n this.drawRgb();\n break;\n case 'saturation':\n this.drawSaturation();\n break;\n }\n }\n\n private drawAlpha() {\n const { canvas, ctx } = this.#canvasData()!;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n const w = Math.max(1, canvas.width - 1);\n const h = Math.max(1, canvas.height - 1);\n\n const gradient = ctx.createLinearGradient(\n 0,\n 0,\n this.direction() === 'horizontal' ? w : 0,\n this.direction() === 'horizontal' ? 0 : h\n );\n\n const [r, g, b] = this.selectedColor();\n\n gradient.addColorStop(0, `rgba(${r}, ${g}, ${b}, 0)`);\n gradient.addColorStop(1, `rgba(${r}, ${g}, ${b}, 1)`);\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n private drawRgb() {\n const { canvas, ctx } = this.#canvasData()!;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n const w = Math.max(1, canvas.width - 1);\n const h = Math.max(1, canvas.height - 1);\n\n const gradient = ctx.createLinearGradient(0, 0, w, 0);\n gradient.addColorStop(0, '#ffffff');\n gradient.addColorStop(1, `hsl(${this.hue()}, 100%, 50%)`);\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n const gradient2 = ctx.createLinearGradient(0, 0, 0, h);\n gradient2.addColorStop(0, 'rgba(0, 0, 0, 0)');\n gradient2.addColorStop(1, '#000000');\n\n ctx.fillStyle = gradient2;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n private drawSaturation() {\n const { canvas, ctx } = this.#canvasData()!;\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n const w = Math.max(1, canvas.width - 1);\n const h = Math.max(1, canvas.height - 1);\n\n if (this.direction() === 'horizontal') {\n const gradient = ctx.createLinearGradient(0, 0, w, 0);\n gradient.addColorStop(0, `hsl(${this.hue()}, 0%, 50%)`);\n gradient.addColorStop(1, `hsl(${this.hue()}, 100%, 50%)`);\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n } else {\n const gradient = ctx.createLinearGradient(0, 0, 0, h);\n gradient.addColorStop(0, `hsl(${this.hue()}, 0%, 50%)`);\n gradient.addColorStop(1, `hsl(${this.hue()}, 100%, 50%)`);\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n }\n\n private drawHue() {\n const { canvas, ctx } = this.#canvasData()!;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n const w = Math.max(1, canvas.width - 1);\n const h = Math.max(1, canvas.height - 1);\n\n const gradient = ctx.createLinearGradient(\n 0,\n 0,\n this.direction() === 'horizontal' ? w : 0,\n this.direction() === 'horizontal' ? 0 : h\n );\n\n for (let i = 0; i <= 360; i += 10) {\n gradient.addColorStop(i / 360, `hsl(${i}, 100%, 50%)`);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n private drawColorWheel() {\n const { canvas, ctx, centerX, centerY, radius } = this.#canvasData()!;\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n for (let y = 0; y < canvas.height; y++) {\n for (let x = 0; x < canvas.width; x++) {\n const distance = Math.sqrt(Math.pow(x - centerX, 2) + Math.pow(y - centerY, 2));\n\n if (distance <= radius + 2) {\n const angle = Math.atan2(y - centerY, x - centerX);\n const hue = ((angle + Math.PI) / (2 * Math.PI)) * 360;\n ctx.fillStyle = `hsl(${hue}, 100%, ${100 - (this.centerLightness() / 100) * (distance / radius) * 50}%)`;\n ctx.fillRect(x, y, 1, 1);\n }\n }\n }\n }\n\n private drawGrid() {\n const { canvas, ctx } = this.#canvasData()!;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n const gridSize = this.gridSize();\n const cellSize = canvas.width / gridSize;\n const inputHue = this.hue();\n const reversedHue = (inputHue + 180) % 360;\n const maxDistance = Math.sqrt(2) * (gridSize - 1);\n\n for (let y = 0; y < canvas.height; y += cellSize) {\n for (let x = 0; x < canvas.width; x += cellSize) {\n const cellX = Math.floor(x / cellSize);\n const cellY = Math.floor(y / cellSize);\n const distanceTopLeft = Math.sqrt(cellX * cellX + cellY * cellY);\n const l = Math.floor((distanceTopLeft / maxDistance) * 100);\n const h = cellX >= cellY ? inputHue : reversedHue;\n const distanceFromCenter = Math.abs(cellX - cellY) / (gridSize - 1);\n const s = Math.floor(distanceFromCenter * 100);\n\n ctx.fillStyle = `hsl(${h}, ${s}%, ${l}%)`;\n ctx.fillRect(x, y, cellSize, cellSize);\n }\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, computed, DOCUMENT, effect, inject, input, model, output, signal, untracked, ViewEncapsulation } from '@angular/core';\nimport { ShipButton } from '@ship-ui/core/ship-button';\nimport { ShipFormFieldPopover } from '@ship-ui/core/ship-form-field';\nimport { ShipIcon } from '@ship-ui/core/ship-icon';\nimport { classMutationSignal } from '@ship-ui/core';\nimport { hslToRgbExact, rgbaToHex8, rgbToHex, rgbToHsl } from '@ship-ui/core';\nimport { contentProjectionSignal } from '@ship-ui/core';\nimport { ShipColor, ShipFormFieldVariant, ShipSize } from '@ship-ui/core';\nimport { ShipColorPicker } from './ship-color-picker';\n\n@Component({\n selector: 'sh-color-picker-input',\n styleUrl: './ship-color-picker.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [ShipFormFieldPopover, ShipColorPicker, ShipIcon, ShipButton],\n template: `\n <sh-form-field-popover\n (closed)=\"close()\"\n [(isOpen)]=\"isOpen\"\n [class]=\"currentClass()\"\n [variant]=\"variant()\"\n [size]=\"size()\"\n [color]=\"color()\"\n [readonly]=\"readonly()\">\n <ng-content select=\"label\" ngProjectAs=\"label\" />\n\n <ng-content select=\"[prefix]\" ngProjectAs=\"[prefix]\" />\n <ng-content select=\"[textPrefix]\" ngProjectAs=\"[textPrefix]\" />\n\n <div id=\"input-wrap\" class=\"input-container\" ngProjectAs=\"input\">\n <ng-content select=\"input\" />\n\n <div class=\"color-indicator\" [style.--indicator-color]=\"formattedColorString()\"></div>\n\n @if (isEyeDropperSupported && showEyeDropper()) {\n <button size=\"xsmall\" tabindex=\"-1\" variant=\"outlined\" shButton (click)=\"openEyeDropper($event)\">\n <sh-icon>eyedropper</sh-icon>\n </button>\n }\n </div>\n\n <ng-content select=\"[textSuffix]\" ngProjectAs=\"[textSuffix]\" />\n <ng-content select=\"[suffix]\" ngProjectAs=\"[suffix]\" />\n\n <div popoverContent>\n @if (this.isOpen()) {\n <sh-color-picker\n [renderingType]=\"renderingType()\"\n [direction]=\"'horizontal'\"\n [(selectedColor)]=\"internalColorTuple\"\n [hue]=\"internalHue()\"\n [(alpha)]=\"internalAlpha\"\n (currentColor)=\"onMainColorChange($event)\" />\n\n @if (renderingType() !== 'hsl') {\n <sh-color-picker\n renderingType=\"hue\"\n [direction]=\"'horizontal'\"\n [hue]=\"internalHue()\"\n [selectedColor]=\"pureHueColor()\"\n (currentColor)=\"onHuePickerChange($event)\" />\n }\n\n @if (hasAlpha()) {\n <sh-color-picker\n renderingType=\"alpha\"\n [direction]=\"'horizontal'\"\n [(alpha)]=\"internalAlpha\"\n [(selectedColor)]=\"internalColorTuple\" />\n }\n }\n </div>\n </sh-form-field-popover>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShipColorPickerInput {\n #document = inject(DOCUMENT);\n\n renderingType = input<'hsl' | 'grid' | 'hue' | 'rgb' | 'saturation' | 'alpha'>('hsl');\n format = input<'rgb' | 'rgba' | 'hex' | 'hex8' | 'hsl' | 'hsla'>('rgb');\n\n color = input<ShipColor | null>(null);\n variant = input<ShipFormFieldVariant | null>(null);\n size = input<ShipSize | null>(null);\n readonly = input<boolean>(false);\n\n closed = output<string>();\n\n isOpen = model<boolean>(false);\n currentClass = classMutationSignal();\n\n isEyeDropperSupported = typeof window !== 'undefined' && 'EyeDropper' in window;\n showEyeDropper = input<boolean>(true);\n\n internalHue = signal(0);\n internalAlpha = signal(1);\n internalColorTuple = signal<[number, number, number, number?]>([255, 255, 255, 1]);\n\n hasAlpha = computed(() => ['rgba', 'hex8', 'hsla'].includes(this.format()));\n\n formattedColorString = computed(() => {\n const format = this.format();\n const tuple = this.internalColorTuple();\n const [r, g, b, aRaw] = tuple;\n const a = aRaw ?? 1;\n\n switch (format) {\n case 'rgb':\n return `rgb(${r}, ${g}, ${b})`;\n case 'rgba':\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n case 'hex':\n return rgbToHex(r, g, b);\n case 'hex8':\n return rgbaToHex8(r, g, b, a);\n case 'hsl':\n return rgbToHsl(r, g, b).string;\n case 'hsla': {\n const hsl = rgbToHsl(r, g, b);\n return `hsla(${hsl.h}, ${hsl.s}%, ${hsl.l}%, ${a})`;\n }\n default:\n return `rgb(${r}, ${g}, ${b})`;\n }\n });\n\n #formatSyncEffect = effect(() => {\n const str = this.formattedColorString();\n const input = untracked(() => this.#inputRef());\n if (input && input.value !== str) {\n if (this.#document.activeElement !== input) {\n input.value = str;\n input.dispatchEvent(new Event('input'));\n }\n }\n });\n\n pureHueColor = computed<[number, number, number]>(() => {\n return hslToRgbExact(this.internalHue(), 100, 50);\n });\n\n #inputRef = signal<HTMLInputElement | null>(null);\n #inputObserver = contentProjectionSignal<HTMLInputElement>('#input-wrap input');\n\n onMainColorChange(colorObj: any) {\n if (colorObj.hue !== undefined) {\n if (this.renderingType() === 'hsl' && colorObj.saturation > 0) {\n this.internalHue.set(colorObj.hue);\n }\n }\n }\n\n onHuePickerChange(colorObj: any) {\n if (colorObj.hue !== undefined && colorObj.hue !== this.internalHue()) {\n this.internalHue.set(colorObj.hue);\n }\n }\n\n async openEyeDropper(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n try {\n // @ts-ignore\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open();\n if (result && result.sRGBHex) {\n this.parseAndSetColor(result.sRGBHex);\n\n // Force the text field to immediately display the new output string according to the active format\n const input = untracked(() => this.#inputRef());\n if (input) {\n const str = this.formattedColorString();\n if (input.value !== str) {\n input.value = str;\n input.dispatchEvent(new Event('input'));\n }\n }\n }\n } catch (e) {\n // User cancelled\n }\n }\n\n close() {\n this.closed.emit(this.formattedColorString());\n }\n\n #inputRefEffect = effect(() => {\n const inputs = this.#inputObserver();\n if (!inputs.length) return;\n\n const input = inputs[0];\n if (!input) return;\n\n this.#createCustomInputEventListener(input);\n\n input.addEventListener('inputValueChanged', (event: any) => {\n this.parseAndSetColor(event.detail.value);\n });\n\n input.addEventListener('input', (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.parseAndSetColor(target.value);\n });\n\n input.addEventListener('blur', () => {\n const str = untracked(() => this.formattedColorString());\n if (input.value !== str) {\n input.value = str;\n input.dispatchEvent(new Event('input'));\n }\n });\n\n input.addEventListener('focus', () => {\n this.isOpen.set(true);\n });\n\n this.#inputRef.set(input);\n input.autocomplete = 'off';\n\n if (typeof input.value === 'string' && input.value) {\n this.parseAndSetColor(input.value);\n }\n });\n\n private parseAndSetColor(colorStr: string) {\n if (!colorStr) return;\n if (colorStr === untracked(() => this.formattedColorString())) return;\n\n const div = this.#document.createElement('div');\n div.style.color = colorStr;\n if (div.style.color === '') return; // Not a valid color format\n\n this.#document.body.appendChild(div);\n const computedColor = getComputedStyle(div).color;\n this.#document.body.removeChild(div);\n\n const rgbaMatch = computedColor.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([\\d.]+))?\\)/);\n if (rgbaMatch) {\n const r = parseInt(rgbaMatch[1], 10);\n const g = parseInt(rgbaMatch[2], 10);\n const b = parseInt(rgbaMatch[3], 10);\n const a = rgbaMatch[4] ? parseFloat(rgbaMatch[4]) : 1;\n\n const current = untracked(() => this.internalColorTuple());\n if (current[0] !== r || current[1] !== g || current[2] !== b || (current[3] ?? 1) !== a) {\n this.internalColorTuple.set([r, g, b, a]);\n this.internalAlpha.set(a);\n\n // Also update hue so the hue slider matches the typed color!\n const max = Math.max(r, g, b) / 255;\n const min = Math.min(r, g, b) / 255;\n if (max !== min) {\n const d = max - min;\n let h = 0;\n switch (max) {\n case r / 255:\n h = (g / 255 - b / 255) / d + (g / 255 < b / 255 ? 6 : 0);\n break;\n case g / 255:\n h = (b / 255 - r / 255) / d + 2;\n break;\n case b / 255:\n h = (r / 255 - g / 255) / d + 4;\n break;\n }\n h /= 6;\n this.internalHue.set(Math.floor(h * 360));\n }\n }\n }\n }\n\n private hslToRgbExact(h: number, s: number, l: number): [number, number, number] {\n s /= 100;\n l /= 100;\n const k = (n: number) => (n + h / 30) % 12;\n const a = s * Math.min(l, 1 - l);\n const f = (n: number) => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));\n return [Math.round(255 * f(0)), Math.round(255 * f(8)), Math.round(255 * f(4))];\n }\n\n private rgbToHex(r: number, g: number, b: number): string {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n }\n\n private rgbaToHex8(r: number, g: number, b: number, a: number): string {\n const alphaHex = Math.round(a * 255)\n .toString(16)\n .padStart(2, '0');\n return this.rgbToHex(r, g, b) + alphaHex;\n }\n\n private rgbToHsl(r: number, g: number, b: number): { h: number; s: number; l: number; string: string } {\n r /= 255;\n g /= 255;\n b /= 255;\n\n const max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n let h = 0,\n s = 0,\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n const hDeg = Math.floor(h * 360);\n const sPct = Math.round(s * 100);\n const lPct = Math.round(l * 100);\n\n return {\n h: hDeg,\n s: sPct,\n l: lPct,\n string: `hsl(${hDeg}, ${sPct}%, ${lPct}%)`,\n };\n }\n\n #createCustomInputEventListener(input: HTMLInputElement) {\n Object.defineProperty(input, 'value', {\n configurable: true,\n get() {\n const descriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');\n return descriptor!.get!.call(this);\n },\n set(newVal) {\n const descriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');\n descriptor!.set!.call(this, newVal);\n\n const inputEvent = new CustomEvent('inputValueChanged', {\n bubbles: true,\n cancelable: true,\n detail: {\n value: newVal,\n },\n });\n\n this.dispatchEvent(inputEvent);\n\n return newVal;\n },\n });\n\n return input;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|