@spartan-ng/brain 1.0.2 → 1.0.4-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -23,14 +23,20 @@ class BrnResizablePanel {
|
|
|
23
23
|
/** Whether this panel can be collapsed entirely. */
|
|
24
24
|
collapsible = input(true, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
25
25
|
/** Reactive signal holding the current size of the panel. */
|
|
26
|
-
_panelSize = signal(
|
|
26
|
+
_panelSize = signal(undefined, ...(ngDevMode ? [{ debugName: "_panelSize" }] : /* istanbul ignore next */ []));
|
|
27
27
|
/**
|
|
28
28
|
* CSS flex style for this panel, derived from its current size.
|
|
29
29
|
* Format: `"flex-grow flex-shrink flex-basis"`.
|
|
30
30
|
*
|
|
31
|
-
*
|
|
31
|
+
* Before the group synchronizes the layout, falls back to {@link defaultSize} so the panel
|
|
32
|
+
* paints at its intended size on the very first render instead of briefly flexing to an equal
|
|
33
|
+
* share (e.g. 50/50) and then snapping to the configured size. Example: `"25 1 0"` means
|
|
34
|
+
* 25% width (or height in vertical layout).
|
|
32
35
|
*/
|
|
33
|
-
_flex = computed(() =>
|
|
36
|
+
_flex = computed(() => {
|
|
37
|
+
const size = this._panelSize() ?? this.defaultSize() ?? 100;
|
|
38
|
+
return `${size} 1 0`;
|
|
39
|
+
}, ...(ngDevMode ? [{ debugName: "_flex" }] : /* istanbul ignore next */ []));
|
|
34
40
|
/**
|
|
35
41
|
* Sets the size of the panel.
|
|
36
42
|
* @param size New size (percentage of container space).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-resizable.mjs","sources":["../../../../libs/brain/resizable/src/lib/brn-resizable-panel.ts","../../../../libs/brain/resizable/src/lib/brn-resizable-group.ts","../../../../libs/brain/resizable/src/lib/brn-resizable-handle.ts","../../../../libs/brain/resizable/src/spartan-ng-brain-resizable.ts"],"sourcesContent":["import { BooleanInput, type NumberInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tcomputed,\n\tDirective,\n\tElementRef,\n\tinject,\n\tinput,\n\tnumberAttribute,\n\tsignal,\n} from '@angular/core';\nimport { BrnResizableGroup } from './brn-resizable-group';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: 'brn-resizable-panel, [brnResizablePanel]',\n\texportAs: 'brnResizablePanel',\n\thost: {\n\t\t'[attr.data-panel-group-id]': '_panelGroup.id()',\n\t\t'[attr.data-panel-id]': 'id()',\n\t\t'[attr.data-panel-size]': '_panelSize()',\n\t\t'[id]': 'id()',\n\t\t'[style.flex]': '_flex()',\n\t\t'[style.overflow]': '\"hidden\"',\n\t\t'data-panel': '',\n\t\t'data-slot': 'resizable-panel',\n\t},\n})\nexport class BrnResizablePanel {\n\t/** Unique ID for the panel. */\n\tpublic readonly id = input<string>(`brn-resizable-panel-${++nextId}`);\n\n\t/** Reference to the parent {@link BrnResizableGroup}. */\n\tprotected readonly _panelGroup = inject(BrnResizableGroup);\n\n\t/** Host DOM element reference. */\n\tpublic readonly el = inject(ElementRef<HTMLElement>);\n\n\t/**\n\t * The default size of the panel (percentage of container space).\n\t * - `undefined` → group decides initial size.\n\t * - Number → interpreted as percentage (0–100).\n\t */\n\tpublic readonly defaultSize = input<number, NumberInput>(undefined, { transform: numberAttribute });\n\n\t/** The minimum size this panel can shrink to (percentage). */\n\n\tpublic readonly minSize = input<number, NumberInput>(0, { transform: numberAttribute });\n\n\t/**\t The maximum size this panel can grow to (percentage). */\n\tpublic readonly maxSize = input<number, NumberInput>(100, { transform: numberAttribute });\n\n\t/** Whether this panel can be collapsed entirely. */\n\tpublic readonly collapsible = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n\t/** Reactive signal holding the current size of the panel. */\n\tprotected readonly _panelSize = signal<number>(100);\n\n\t/**\n\t * CSS flex style for this panel, derived from its current size.\n\t * Format: `\"flex-grow flex-shrink flex-basis\"`.\n\t *\n\t * Example: `\"25 1 0\"` means 25% width (or height in vertical layout).\n\t */\n\tprotected readonly _flex = computed(() => `${this._panelSize()} 1 0`);\n\n\t/**\n\t * Sets the size of the panel.\n\t * @param size New size (percentage of container space).\n\t */\n\tpublic setSize(size: number) {\n\t\tthis._panelSize.set(size);\n\t}\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport {\n\tafterRenderEffect,\n\tcontentChildren,\n\tDestroyRef,\n\tDirective,\n\tDOCUMENT,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tNgZone,\n\toutput,\n\tuntracked,\n} from '@angular/core';\nimport { BrnResizablePanel } from './brn-resizable-panel';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: 'brn-resizable-group, [brnResizableGroup]',\n\texportAs: 'brnResizableGroup',\n\thost: {\n\t\t'[attr.data-panel-group-direction]': 'direction()',\n\t\t'[attr.data-panel-group-id]': 'id()',\n\t\t'[id]': 'id()',\n\t\t'data-panel-group': '',\n\t\t'data-slot': 'resizable-panel-group',\n\t},\n})\nexport class BrnResizableGroup {\n\t/** The id of the BrnResizableGroup */\n\tpublic readonly id = input<string>(`brn-resizable-group-${++nextId}`);\n\n\t/** Host element reference. */\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\n\t/** Layout direction, used to mirror horizontal resizing under RTL. */\n\tprivate readonly _dir = inject(Directionality);\n\n\t/** Group orientation */\n\tpublic readonly direction = input<'horizontal' | 'vertical'>('horizontal');\n\n\t/** @internal Access all the panels within the group */\n\tpublic readonly panels = contentChildren(BrnResizablePanel);\n\n\t/** event when resize starts */\n\tpublic readonly dragStart = output<void>();\n\n\t/** event when resize ends */\n\tpublic readonly dragEnd = output<void>();\n\n\t/** Resize panel group to the specified layout ([1 - 100, ...]). */\n\tpublic readonly layout = model<number[]>([]);\n\n\t/** Called when group layout changes */\n\tpublic readonly layoutChanged = output<number[]>();\n\n\tprivate readonly _document = inject(DOCUMENT);\n\n\tprivate readonly _zone = inject(NgZone);\n\n\tprivate _resizeRaf: number | null = null;\n\n\tprivate _pendingSizes: number[] | null = null;\n\n\t/** Tears down the in-flight drag (document listeners, queued frame, cursor); null when idle. */\n\tprivate _stopResize: (() => void) | null = null;\n\t/** Panel order and sizes from the last layout applied to the rendered panels. */\n\tprivate _knownPanels: readonly BrnResizablePanel[] = [];\n\tprivate _appliedLayout: number[] = [];\n\n\tconstructor() {\n\t\t// If the group is destroyed mid-drag, the document listeners would otherwise stay attached\n\t\t// (document is never GC'd), pinning this directive and firing against a torn-down view.\n\t\tinject(DestroyRef).onDestroy(() => this._stopResize?.());\n\n\t\tafterRenderEffect(() => {\n\t\t\t// Track both membership and external model updates, but not the writes performed while reconciling them.\n\t\t\tconst panels = this.panels();\n\t\t\tconst layout = this.layout();\n\t\t\tuntracked(() => this._synchronizePanelSizes(panels, layout));\n\t\t});\n\t}\n\n\tprivate _synchronizePanelSizes(panels: readonly BrnResizablePanel[], currentLayout: number[]): void {\n\t\tconst totalPanels = panels.length;\n\n\t\tif (totalPanels === 0) {\n\t\t\tthis._knownPanels = panels;\n\t\t\tthis._appliedLayout = [];\n\t\t\treturn;\n\t\t}\n\n\t\tconst isInitialLayout = this._knownPanels.length === 0;\n\t\tconst hasCompleteExternalLayout =\n\t\t\t!isInitialLayout &&\n\t\t\tcurrentLayout.length === totalPanels &&\n\t\t\t!this._layoutsEqual(currentLayout, this._appliedLayout);\n\n\t\tlet sizes: number[];\n\t\tif (isInitialLayout) {\n\t\t\t// Preserve the existing initialization contract: defaults take precedence over the input layout.\n\t\t\tsizes = panels.map((panel, index) => panel.defaultSize() ?? currentLayout[index] ?? 100 / totalPanels);\n\t\t} else if (hasCompleteExternalLayout) {\n\t\t\t// A complete changed layout is explicit consumer intent for the current panel order.\n\t\t\tsizes = [...currentLayout];\n\t\t} else {\n\t\t\t// Membership changed on its own: reserve new panel sizes, then preserve the relative proportions\n\t\t\t// of known panels within the remaining space.\n\t\t\tconst previousSizes = new Map(this._knownPanels.map((panel, index) => [panel, this._appliedLayout[index]]));\n\t\t\tconst newPanelSizes = new Map(\n\t\t\t\tpanels\n\t\t\t\t\t.filter((panel) => !previousSizes.has(panel))\n\t\t\t\t\t.map((panel) => [panel, panel.defaultSize() ?? 100 / totalPanels]),\n\t\t\t);\n\t\t\tconst newPanelsTotal = Array.from(newPanelSizes.values()).reduce((total, size) => total + size, 0);\n\t\t\tconst previousPanelsTotal = panels.reduce((total, panel) => total + (previousSizes.get(panel) ?? 0), 0);\n\n\t\t\tif (newPanelsTotal <= 100 && previousPanelsTotal > 0) {\n\t\t\t\tconst remainingSize = 100 - newPanelsTotal;\n\t\t\t\tsizes = panels.map(\n\t\t\t\t\t(panel) =>\n\t\t\t\t\t\tnewPanelSizes.get(panel) ?? ((previousSizes.get(panel) ?? 0) / previousPanelsTotal) * remainingSize,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst rawSizes = panels.map((panel) => newPanelSizes.get(panel) ?? previousSizes.get(panel) ?? 0);\n\t\t\t\tconst totalSize = rawSizes.reduce((total, size) => total + size, 0);\n\t\t\t\tsizes = totalSize > 0 ? rawSizes.map((size) => (size / totalSize) * 100) : rawSizes;\n\t\t\t}\n\t\t}\n\n\t\tpanels.forEach((panel, index) => panel.setSize(sizes[index]));\n\t\tthis._knownPanels = panels;\n\t\tthis._appliedLayout = [...sizes];\n\n\t\tif (!this._layoutsEqual(currentLayout, sizes)) {\n\t\t\tthis._setLayout(sizes);\n\t\t}\n\t}\n\n\tprivate _layoutsEqual(first: readonly number[], second: readonly number[]): boolean {\n\t\treturn first.length === second.length && first.every((size, index) => size === second[index]);\n\t}\n\n\tpublic startResize(handleIndex: number, event: MouseEvent | TouchEvent): void {\n\t\tevent.preventDefault();\n\n\t\t// tear down any in-flight drag before starting a new one\n\t\tthis._stopResize?.();\n\n\t\tconst cursor = this.direction() === 'vertical' ? 'ns-resize' : 'ew-resize';\n\t\tthis._document.body.style.cursor = `${cursor}`;\n\t\tconst sizes = [...this.layout()];\n\t\tthis.dragStart.emit();\n\n\t\tconst startPosition = this._getEventPosition(event);\n\t\tconst startSizes = [...sizes];\n\t\t// Horizontal resizing is mirrored under RTL: the panel order is reversed, so the pixel\n\t\t// delta is inverted in _handleResize to keep the handle tracking the pointer correctly.\n\t\tconst isRtl = this.direction() === 'horizontal' && this._dir.valueSignal() === 'rtl';\n\n\t\tconst handleMove = (moveEvent: MouseEvent | TouchEvent) => {\n\t\t\tthis._zone.runOutsideAngular(() => {\n\t\t\t\tthis._handleResize(moveEvent, handleIndex, startPosition, startSizes, isRtl);\n\t\t\t});\n\t\t};\n\n\t\t// Detaches the document listeners, cancels any queued frame and restores the cursor. Stored\n\t\t// on the instance so it runs on normal drag-end and on destroy-during-drag alike.\n\t\tconst cleanup = () => {\n\t\t\tthis._document.removeEventListener('mousemove', handleMove);\n\t\t\tthis._document.removeEventListener('touchmove', handleMove);\n\t\t\tthis._document.removeEventListener('mouseup', handleEnd);\n\t\t\tthis._document.removeEventListener('touchend', handleEnd);\n\t\t\tthis._document.removeEventListener('touchcancel', handleEnd);\n\t\t\tthis._document.body.style.cursor = 'default';\n\n\t\t\tif (this._resizeRaf !== null) {\n\t\t\t\tcancelAnimationFrame(this._resizeRaf);\n\t\t\t\tthis._resizeRaf = null;\n\t\t\t\tthis._pendingSizes = null;\n\t\t\t}\n\n\t\t\tthis._stopResize = null;\n\t\t};\n\n\t\tconst handleEnd = () => {\n\t\t\tthis._zone.run(() => this._endResize());\n\t\t\tcleanup();\n\t\t};\n\n\t\tthis._stopResize = cleanup;\n\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tthis._document.addEventListener('mousemove', handleMove);\n\t\t\tthis._document.addEventListener('touchmove', handleMove);\n\t\t\tthis._document.addEventListener('mouseup', handleEnd);\n\t\t\tthis._document.addEventListener('touchend', handleEnd);\n\t\t\t// touch drags can be interrupted by the system (touchcancel) without firing touchend;\n\t\t\t// end the resize on it too so listeners + cursor are not left dangling.\n\t\t\tthis._document.addEventListener('touchcancel', handleEnd);\n\t\t});\n\t}\n\n\tprivate _handleResize(\n\t\tevent: MouseEvent | TouchEvent,\n\t\thandleIndex: number,\n\t\tstartPosition: number,\n\t\tstartSizes: number[],\n\t\tisRtl = false,\n\t): void {\n\t\tconst currentPosition = this._getEventPosition(event);\n\t\tconst delta = (currentPosition - startPosition) * (isRtl ? -1 : 1);\n\t\tconst containerSize = this._getContainerSize();\n\t\tconst deltaPercentage = (delta / containerSize) * 100;\n\n\t\tconst newSizes = [...startSizes];\n\t\tconst panels = this.panels();\n\n\t\tconst leftPanel = panels[handleIndex];\n\t\tconst rightPanel = panels[handleIndex + 1];\n\n\t\tif (!leftPanel || !rightPanel) return;\n\n\t\tconst leftMin = leftPanel.minSize();\n\t\tconst leftMax = leftPanel.maxSize();\n\t\tconst rightMin = rightPanel.minSize();\n\t\tconst rightMax = rightPanel.maxSize();\n\n\t\tlet newLeftSize = startSizes[handleIndex] + deltaPercentage;\n\t\tlet newRightSize = startSizes[handleIndex + 1] - deltaPercentage;\n\n\t\tnewLeftSize = Math.max(leftMin, Math.min(leftMax, newLeftSize));\n\t\tnewRightSize = Math.max(rightMin, Math.min(rightMax, newRightSize));\n\n\t\tconst totalSize = newLeftSize + newRightSize;\n\t\tconst originalTotal = startSizes[handleIndex] + startSizes[handleIndex + 1];\n\n\t\tif (Math.abs(totalSize - originalTotal) < 0.01) {\n\t\t\tnewSizes[handleIndex] = newLeftSize;\n\t\t\tnewSizes[handleIndex + 1] = newRightSize;\n\n\t\t\t// batch update\n\t\t\tthis._queueResize(newSizes);\n\t\t}\n\t}\n\n\tprivate _queueResize(sizes: number[]): void {\n\t\tthis._pendingSizes = sizes;\n\n\t\tif (this._resizeRaf !== null) return;\n\n\t\tthis._resizeRaf = requestAnimationFrame(() => {\n\t\t\tthis._resizeRaf = null;\n\t\t\tif (this._pendingSizes) {\n\t\t\t\tthis._setLayout(this._pendingSizes);\n\t\t\t\tthis.updatePanelStyles();\n\t\t\t\tthis._pendingSizes = null;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _endResize(): void {\n\t\tif (this._resizeRaf !== null) {\n\t\t\tcancelAnimationFrame(this._resizeRaf);\n\t\t\tthis._resizeRaf = null;\n\t\t\tthis._pendingSizes = null;\n\t\t}\n\t\tthis.dragEnd.emit();\n\t}\n\n\tpublic updatePanelStyles(): void {\n\t\tconst panels = this.panels();\n\t\tconst sizes = this.layout();\n\n\t\tpanels.forEach((panel, index) => {\n\t\t\tconst size = sizes[index];\n\t\t\tif (size !== undefined) {\n\t\t\t\tpanel.setSize(size);\n\t\t\t}\n\t\t});\n\t\t// Keyboard resizing writes to the public model directly, so capture the applied value here as well.\n\t\tthis._appliedLayout = [...sizes];\n\t}\n\n\tprivate _getEventPosition(event: MouseEvent | TouchEvent): number {\n\t\tconst layout = this.direction();\n\t\tif (event instanceof MouseEvent) {\n\t\t\treturn layout === 'vertical' ? event.clientY : event.clientX;\n\t\t} else {\n\t\t\tconst touch = event.touches[0];\n\t\t\treturn layout === 'vertical' ? touch.clientY : touch.clientX;\n\t\t}\n\t}\n\n\tprivate _getContainerSize(): number {\n\t\tconst element = this._el.nativeElement as HTMLElement;\n\t\tconst layout = this.direction();\n\t\treturn layout === 'vertical' ? element.offsetHeight : element.offsetWidth;\n\t}\n\n\tpublic collapsePanel(index: number): void {\n\t\tconst panels = this.panels();\n\t\tconst panel = panels[index];\n\n\t\tif (!panel || !panel.collapsible()) return;\n\n\t\tconst sizes = [...this.layout()];\n\t\tconst isCollapsed = sizes[index] === 0;\n\n\t\tif (isCollapsed) {\n\t\t\tconst panelDefaultSize = panel.defaultSize();\n\t\t\tconst defaultSize = panelDefaultSize !== undefined ? panelDefaultSize / panels.length : 100 / panels.length;\n\t\t\tsizes[index] = defaultSize;\n\n\t\t\tconst totalOthers = sizes.reduce((sum, size, i) => (i !== index ? sum + size : sum), 0);\n\t\t\tconst scale = (100 - defaultSize) / totalOthers;\n\n\t\t\tsizes.forEach((size, i) => {\n\t\t\t\tif (i !== index) {\n\t\t\t\t\tsizes[i] = size * scale;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst collapsedSize = sizes[index];\n\t\t\tsizes[index] = 0;\n\n\t\t\tconst totalOthers = sizes.reduce((sum, size, i) => (i !== index ? sum + size : sum), 0);\n\t\t\tconst scale = (totalOthers + collapsedSize) / totalOthers;\n\n\t\t\tsizes.forEach((size, i) => {\n\t\t\t\tif (i !== index) {\n\t\t\t\t\tsizes[i] = size * scale;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._setLayout(sizes);\n\t\tthis.updatePanelStyles();\n\t}\n\n\tprivate _setLayout(sizes: number[]): void {\n\t\tthis._appliedLayout = [...sizes];\n\t\tthis.layout.set(sizes);\n\t\tthis.layoutChanged.emit(sizes);\n\t}\n}\n","import { type BooleanInput } from '@angular/cdk/coercion';\nimport { afterNextRender, booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnResizableGroup } from './brn-resizable-group';\n\n@Directive({\n\tselector: 'brn-resizable-handle, [brnResizeHandle]',\n\texportAs: 'brnResizableHandle',\n\thost: {\n\t\t'[attr.data-layout]': '_layout()',\n\t\t'[attr.tabindex]': 'disabled() ? null : 0',\n\t\t'[attr.role]': '\"separator\"',\n\t\t'[attr.data-panel-group-direction]': '_direction()',\n\t\t'[attr.aria-orientation]': '_layout() === \"vertical\" ? \"horizontal\" : \"vertical\"',\n\t\t'[attr.aria-disabled]': 'disabled()',\n\t\t'(mousedown)': '_handleMouseDown($event)',\n\t\t'(keydown)': '_handleKeyDown($event)',\n\t},\n})\nexport class BrnResizableHandle {\n\t/** Parent resizable group. */\n\tprivate readonly _resizable = inject(BrnResizableGroup);\n\n\t/** Host element reference. */\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\n\t/** Whether a visual handle is rendered inside the separator. */\n\tpublic readonly withHandle = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/** Whether the handle is disabled (not interactive). */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/** The direction of the resizable group (`horizontal` or `vertical`). */\n\tprotected readonly _direction = this._resizable.direction;\n\n\t/** Computed layout orientation based on the parent group. */\n\tprotected readonly _layout = computed(() => this._resizable?.direction() || 'horizontal');\n\n\t/** Always-current index of this handle relative to panels in the group. */\n\tprivate get _handleIndex(): number {\n\t\treturn this._getHandleIndex();\n\t}\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._el.nativeElement.onpointerdown = (e: PointerEvent) => {\n\t\t\t\tthis._el.nativeElement.setPointerCapture(e.pointerId);\n\t\t\t};\n\n\t\t\tthis._el.nativeElement.onpointerup = (e: PointerEvent) => {\n\t\t\t\tthis._el.nativeElement.releasePointerCapture(e.pointerId);\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate _getHandleIndex(): number {\n\t\tconst host = this._el.nativeElement;\n\t\tconst parent = host.parentElement;\n\t\tif (!parent) return -1;\n\n\t\t// Collect all panels under this group\n\t\tconst panels = Array.from(parent.querySelectorAll('[data-slot=\"resizable-panel\"]'));\n\n\t\t// Find the previous panel (the closest one before this handle)\n\t\tconst prevPanel = host.previousElementSibling;\n\t\tif (!prevPanel) return -1;\n\n\t\t// Return its index among all panels\n\t\treturn panels.indexOf(prevPanel as HTMLElement);\n\t}\n\n\tprotected _handleMouseDown(event: MouseEvent): void {\n\t\tif (this.disabled() || !this._resizable) return;\n\n\t\tthis._resizable.startResize(this._handleIndex, event);\n\t}\n\n\tprotected _handleKeyDown(event: KeyboardEvent): void {\n\t\tif (this.disabled()) return;\n\n\t\tconst panels = this._resizable.panels();\n\t\tconst handleIndex = this._handleIndex;\n\t\tconst layout = this._layout();\n\n\t\tlet delta = 0;\n\t\tconst step = event.shiftKey ? 10 : 1;\n\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tif (layout === 'horizontal') delta = -step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tif (layout === 'horizontal') delta = step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tif (layout === 'vertical') delta = -step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tif (layout === 'vertical') delta = step;\n\t\t\t\tbreak;\n\t\t\tcase 'Home':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis._moveToExtreme(true);\n\t\t\t\treturn;\n\t\t\tcase 'End':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis._moveToExtreme(false);\n\t\t\t\treturn;\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (panels[handleIndex]?.collapsible() || panels[handleIndex + 1]?.collapsible()) {\n\t\t\t\t\tconst collapsibleIndex = panels[handleIndex]?.collapsible() ? handleIndex : handleIndex + 1;\n\t\t\t\t\tthis._resizable.collapsePanel(collapsibleIndex);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (delta !== 0) {\n\t\t\tevent.preventDefault();\n\t\t\tthis._adjustSizes(delta);\n\t\t}\n\t}\n\n\tprivate _getPanelContext() {\n\t\tconst panels = this._resizable.panels();\n\t\tconst li = this._handleIndex;\n\t\tconst ri = li + 1;\n\n\t\tconst left = panels[li];\n\t\tconst right = panels[ri];\n\t\tif (!left || !right) return null;\n\n\t\tconst sizes = [...this._resizable.layout()];\n\n\t\treturn {\n\t\t\tsizes,\n\t\t\tli,\n\t\t\tri,\n\t\t\tleft,\n\t\t\tright,\n\t\t\tleftMin: left.minSize(),\n\t\t\tleftMax: left.maxSize(),\n\t\t\trightMin: right.minSize(),\n\t\t\trightMax: right.maxSize(),\n\t\t};\n\t}\n\n\tprivate _adjustSizes(delta: number): void {\n\t\tconst ctx = this._getPanelContext();\n\t\tif (!ctx) return;\n\n\t\tlet newLeftSize = ctx.sizes[ctx.li] + delta;\n\t\tlet newRightSize = ctx.sizes[ctx.ri] - delta;\n\n\t\tnewLeftSize = Math.max(ctx.leftMin, Math.min(ctx.leftMax, newLeftSize));\n\t\tnewRightSize = Math.max(ctx.rightMin, Math.min(ctx.rightMax, newRightSize));\n\n\t\tconst totalSize = newLeftSize + newRightSize;\n\t\tconst originalTotal = ctx.sizes[ctx.li] + ctx.sizes[ctx.ri];\n\n\t\tif (Math.abs(totalSize - originalTotal) < 0.01) {\n\t\t\tctx.sizes[ctx.li] = newLeftSize;\n\t\t\tctx.sizes[ctx.ri] = newRightSize;\n\n\t\t\tthis._resizable.layout.set(ctx.sizes);\n\t\t\tthis._resizable.updatePanelStyles();\n\t\t}\n\t}\n\n\tprivate _moveToExtreme(toMin: boolean): void {\n\t\tconst ctx = this._getPanelContext();\n\t\tif (!ctx) return;\n\n\t\tconst totalSize = ctx.sizes[ctx.li] + ctx.sizes[ctx.ri];\n\n\t\tif (toMin) {\n\t\t\tctx.sizes[ctx.li] = ctx.leftMin;\n\t\t\tctx.sizes[ctx.ri] = Math.min(totalSize - ctx.leftMin, ctx.rightMax);\n\t\t} else {\n\t\t\tctx.sizes[ctx.li] = Math.min(totalSize - ctx.rightMin, ctx.leftMax);\n\t\t\tctx.sizes[ctx.ri] = ctx.rightMin;\n\t\t}\n\n\t\tthis._resizable.layout.set(ctx.sizes);\n\t\tthis._resizable.updatePanelStyles();\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-resizable.mjs","sources":["../../../../libs/brain/resizable/src/lib/brn-resizable-panel.ts","../../../../libs/brain/resizable/src/lib/brn-resizable-group.ts","../../../../libs/brain/resizable/src/lib/brn-resizable-handle.ts","../../../../libs/brain/resizable/src/spartan-ng-brain-resizable.ts"],"sourcesContent":["import { BooleanInput, type NumberInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tcomputed,\n\tDirective,\n\tElementRef,\n\tinject,\n\tinput,\n\tnumberAttribute,\n\tsignal,\n} from '@angular/core';\nimport { BrnResizableGroup } from './brn-resizable-group';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: 'brn-resizable-panel, [brnResizablePanel]',\n\texportAs: 'brnResizablePanel',\n\thost: {\n\t\t'[attr.data-panel-group-id]': '_panelGroup.id()',\n\t\t'[attr.data-panel-id]': 'id()',\n\t\t'[attr.data-panel-size]': '_panelSize()',\n\t\t'[id]': 'id()',\n\t\t'[style.flex]': '_flex()',\n\t\t'[style.overflow]': '\"hidden\"',\n\t\t'data-panel': '',\n\t\t'data-slot': 'resizable-panel',\n\t},\n})\nexport class BrnResizablePanel {\n\t/** Unique ID for the panel. */\n\tpublic readonly id = input<string>(`brn-resizable-panel-${++nextId}`);\n\n\t/** Reference to the parent {@link BrnResizableGroup}. */\n\tprotected readonly _panelGroup = inject(BrnResizableGroup);\n\n\t/** Host DOM element reference. */\n\tpublic readonly el = inject(ElementRef<HTMLElement>);\n\n\t/**\n\t * The default size of the panel (percentage of container space).\n\t * - `undefined` → group decides initial size.\n\t * - Number → interpreted as percentage (0–100).\n\t */\n\tpublic readonly defaultSize = input<number, NumberInput>(undefined, { transform: numberAttribute });\n\n\t/** The minimum size this panel can shrink to (percentage). */\n\n\tpublic readonly minSize = input<number, NumberInput>(0, { transform: numberAttribute });\n\n\t/**\t The maximum size this panel can grow to (percentage). */\n\tpublic readonly maxSize = input<number, NumberInput>(100, { transform: numberAttribute });\n\n\t/** Whether this panel can be collapsed entirely. */\n\tpublic readonly collapsible = input<boolean, BooleanInput>(true, { transform: booleanAttribute });\n\n\t/** Reactive signal holding the current size of the panel. */\n\tprotected readonly _panelSize = signal<number | undefined>(undefined);\n\n\t/**\n\t * CSS flex style for this panel, derived from its current size.\n\t * Format: `\"flex-grow flex-shrink flex-basis\"`.\n\t *\n\t * Before the group synchronizes the layout, falls back to {@link defaultSize} so the panel\n\t * paints at its intended size on the very first render instead of briefly flexing to an equal\n\t * share (e.g. 50/50) and then snapping to the configured size. Example: `\"25 1 0\"` means\n\t * 25% width (or height in vertical layout).\n\t */\n\tprotected readonly _flex = computed(() => {\n\t\tconst size = this._panelSize() ?? this.defaultSize() ?? 100;\n\t\treturn `${size} 1 0`;\n\t});\n\t/**\n\t * Sets the size of the panel.\n\t * @param size New size (percentage of container space).\n\t */\n\tpublic setSize(size: number) {\n\t\tthis._panelSize.set(size);\n\t}\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport {\n\tafterRenderEffect,\n\tcontentChildren,\n\tDestroyRef,\n\tDirective,\n\tDOCUMENT,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tNgZone,\n\toutput,\n\tuntracked,\n} from '@angular/core';\nimport { BrnResizablePanel } from './brn-resizable-panel';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: 'brn-resizable-group, [brnResizableGroup]',\n\texportAs: 'brnResizableGroup',\n\thost: {\n\t\t'[attr.data-panel-group-direction]': 'direction()',\n\t\t'[attr.data-panel-group-id]': 'id()',\n\t\t'[id]': 'id()',\n\t\t'data-panel-group': '',\n\t\t'data-slot': 'resizable-panel-group',\n\t},\n})\nexport class BrnResizableGroup {\n\t/** The id of the BrnResizableGroup */\n\tpublic readonly id = input<string>(`brn-resizable-group-${++nextId}`);\n\n\t/** Host element reference. */\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\n\t/** Layout direction, used to mirror horizontal resizing under RTL. */\n\tprivate readonly _dir = inject(Directionality);\n\n\t/** Group orientation */\n\tpublic readonly direction = input<'horizontal' | 'vertical'>('horizontal');\n\n\t/** @internal Access all the panels within the group */\n\tpublic readonly panels = contentChildren(BrnResizablePanel);\n\n\t/** event when resize starts */\n\tpublic readonly dragStart = output<void>();\n\n\t/** event when resize ends */\n\tpublic readonly dragEnd = output<void>();\n\n\t/** Resize panel group to the specified layout ([1 - 100, ...]). */\n\tpublic readonly layout = model<number[]>([]);\n\n\t/** Called when group layout changes */\n\tpublic readonly layoutChanged = output<number[]>();\n\n\tprivate readonly _document = inject(DOCUMENT);\n\n\tprivate readonly _zone = inject(NgZone);\n\n\tprivate _resizeRaf: number | null = null;\n\n\tprivate _pendingSizes: number[] | null = null;\n\n\t/** Tears down the in-flight drag (document listeners, queued frame, cursor); null when idle. */\n\tprivate _stopResize: (() => void) | null = null;\n\t/** Panel order and sizes from the last layout applied to the rendered panels. */\n\tprivate _knownPanels: readonly BrnResizablePanel[] = [];\n\tprivate _appliedLayout: number[] = [];\n\n\tconstructor() {\n\t\t// If the group is destroyed mid-drag, the document listeners would otherwise stay attached\n\t\t// (document is never GC'd), pinning this directive and firing against a torn-down view.\n\t\tinject(DestroyRef).onDestroy(() => this._stopResize?.());\n\n\t\tafterRenderEffect(() => {\n\t\t\t// Track both membership and external model updates, but not the writes performed while reconciling them.\n\t\t\tconst panels = this.panels();\n\t\t\tconst layout = this.layout();\n\t\t\tuntracked(() => this._synchronizePanelSizes(panels, layout));\n\t\t});\n\t}\n\n\tprivate _synchronizePanelSizes(panels: readonly BrnResizablePanel[], currentLayout: number[]): void {\n\t\tconst totalPanels = panels.length;\n\n\t\tif (totalPanels === 0) {\n\t\t\tthis._knownPanels = panels;\n\t\t\tthis._appliedLayout = [];\n\t\t\treturn;\n\t\t}\n\n\t\tconst isInitialLayout = this._knownPanels.length === 0;\n\t\tconst hasCompleteExternalLayout =\n\t\t\t!isInitialLayout &&\n\t\t\tcurrentLayout.length === totalPanels &&\n\t\t\t!this._layoutsEqual(currentLayout, this._appliedLayout);\n\n\t\tlet sizes: number[];\n\t\tif (isInitialLayout) {\n\t\t\t// Preserve the existing initialization contract: defaults take precedence over the input layout.\n\t\t\tsizes = panels.map((panel, index) => panel.defaultSize() ?? currentLayout[index] ?? 100 / totalPanels);\n\t\t} else if (hasCompleteExternalLayout) {\n\t\t\t// A complete changed layout is explicit consumer intent for the current panel order.\n\t\t\tsizes = [...currentLayout];\n\t\t} else {\n\t\t\t// Membership changed on its own: reserve new panel sizes, then preserve the relative proportions\n\t\t\t// of known panels within the remaining space.\n\t\t\tconst previousSizes = new Map(this._knownPanels.map((panel, index) => [panel, this._appliedLayout[index]]));\n\t\t\tconst newPanelSizes = new Map(\n\t\t\t\tpanels\n\t\t\t\t\t.filter((panel) => !previousSizes.has(panel))\n\t\t\t\t\t.map((panel) => [panel, panel.defaultSize() ?? 100 / totalPanels]),\n\t\t\t);\n\t\t\tconst newPanelsTotal = Array.from(newPanelSizes.values()).reduce((total, size) => total + size, 0);\n\t\t\tconst previousPanelsTotal = panels.reduce((total, panel) => total + (previousSizes.get(panel) ?? 0), 0);\n\n\t\t\tif (newPanelsTotal <= 100 && previousPanelsTotal > 0) {\n\t\t\t\tconst remainingSize = 100 - newPanelsTotal;\n\t\t\t\tsizes = panels.map(\n\t\t\t\t\t(panel) =>\n\t\t\t\t\t\tnewPanelSizes.get(panel) ?? ((previousSizes.get(panel) ?? 0) / previousPanelsTotal) * remainingSize,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst rawSizes = panels.map((panel) => newPanelSizes.get(panel) ?? previousSizes.get(panel) ?? 0);\n\t\t\t\tconst totalSize = rawSizes.reduce((total, size) => total + size, 0);\n\t\t\t\tsizes = totalSize > 0 ? rawSizes.map((size) => (size / totalSize) * 100) : rawSizes;\n\t\t\t}\n\t\t}\n\n\t\tpanels.forEach((panel, index) => panel.setSize(sizes[index]));\n\t\tthis._knownPanels = panels;\n\t\tthis._appliedLayout = [...sizes];\n\n\t\tif (!this._layoutsEqual(currentLayout, sizes)) {\n\t\t\tthis._setLayout(sizes);\n\t\t}\n\t}\n\n\tprivate _layoutsEqual(first: readonly number[], second: readonly number[]): boolean {\n\t\treturn first.length === second.length && first.every((size, index) => size === second[index]);\n\t}\n\n\tpublic startResize(handleIndex: number, event: MouseEvent | TouchEvent): void {\n\t\tevent.preventDefault();\n\n\t\t// tear down any in-flight drag before starting a new one\n\t\tthis._stopResize?.();\n\n\t\tconst cursor = this.direction() === 'vertical' ? 'ns-resize' : 'ew-resize';\n\t\tthis._document.body.style.cursor = `${cursor}`;\n\t\tconst sizes = [...this.layout()];\n\t\tthis.dragStart.emit();\n\n\t\tconst startPosition = this._getEventPosition(event);\n\t\tconst startSizes = [...sizes];\n\t\t// Horizontal resizing is mirrored under RTL: the panel order is reversed, so the pixel\n\t\t// delta is inverted in _handleResize to keep the handle tracking the pointer correctly.\n\t\tconst isRtl = this.direction() === 'horizontal' && this._dir.valueSignal() === 'rtl';\n\n\t\tconst handleMove = (moveEvent: MouseEvent | TouchEvent) => {\n\t\t\tthis._zone.runOutsideAngular(() => {\n\t\t\t\tthis._handleResize(moveEvent, handleIndex, startPosition, startSizes, isRtl);\n\t\t\t});\n\t\t};\n\n\t\t// Detaches the document listeners, cancels any queued frame and restores the cursor. Stored\n\t\t// on the instance so it runs on normal drag-end and on destroy-during-drag alike.\n\t\tconst cleanup = () => {\n\t\t\tthis._document.removeEventListener('mousemove', handleMove);\n\t\t\tthis._document.removeEventListener('touchmove', handleMove);\n\t\t\tthis._document.removeEventListener('mouseup', handleEnd);\n\t\t\tthis._document.removeEventListener('touchend', handleEnd);\n\t\t\tthis._document.removeEventListener('touchcancel', handleEnd);\n\t\t\tthis._document.body.style.cursor = 'default';\n\n\t\t\tif (this._resizeRaf !== null) {\n\t\t\t\tcancelAnimationFrame(this._resizeRaf);\n\t\t\t\tthis._resizeRaf = null;\n\t\t\t\tthis._pendingSizes = null;\n\t\t\t}\n\n\t\t\tthis._stopResize = null;\n\t\t};\n\n\t\tconst handleEnd = () => {\n\t\t\tthis._zone.run(() => this._endResize());\n\t\t\tcleanup();\n\t\t};\n\n\t\tthis._stopResize = cleanup;\n\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tthis._document.addEventListener('mousemove', handleMove);\n\t\t\tthis._document.addEventListener('touchmove', handleMove);\n\t\t\tthis._document.addEventListener('mouseup', handleEnd);\n\t\t\tthis._document.addEventListener('touchend', handleEnd);\n\t\t\t// touch drags can be interrupted by the system (touchcancel) without firing touchend;\n\t\t\t// end the resize on it too so listeners + cursor are not left dangling.\n\t\t\tthis._document.addEventListener('touchcancel', handleEnd);\n\t\t});\n\t}\n\n\tprivate _handleResize(\n\t\tevent: MouseEvent | TouchEvent,\n\t\thandleIndex: number,\n\t\tstartPosition: number,\n\t\tstartSizes: number[],\n\t\tisRtl = false,\n\t): void {\n\t\tconst currentPosition = this._getEventPosition(event);\n\t\tconst delta = (currentPosition - startPosition) * (isRtl ? -1 : 1);\n\t\tconst containerSize = this._getContainerSize();\n\t\tconst deltaPercentage = (delta / containerSize) * 100;\n\n\t\tconst newSizes = [...startSizes];\n\t\tconst panels = this.panels();\n\n\t\tconst leftPanel = panels[handleIndex];\n\t\tconst rightPanel = panels[handleIndex + 1];\n\n\t\tif (!leftPanel || !rightPanel) return;\n\n\t\tconst leftMin = leftPanel.minSize();\n\t\tconst leftMax = leftPanel.maxSize();\n\t\tconst rightMin = rightPanel.minSize();\n\t\tconst rightMax = rightPanel.maxSize();\n\n\t\tlet newLeftSize = startSizes[handleIndex] + deltaPercentage;\n\t\tlet newRightSize = startSizes[handleIndex + 1] - deltaPercentage;\n\n\t\tnewLeftSize = Math.max(leftMin, Math.min(leftMax, newLeftSize));\n\t\tnewRightSize = Math.max(rightMin, Math.min(rightMax, newRightSize));\n\n\t\tconst totalSize = newLeftSize + newRightSize;\n\t\tconst originalTotal = startSizes[handleIndex] + startSizes[handleIndex + 1];\n\n\t\tif (Math.abs(totalSize - originalTotal) < 0.01) {\n\t\t\tnewSizes[handleIndex] = newLeftSize;\n\t\t\tnewSizes[handleIndex + 1] = newRightSize;\n\n\t\t\t// batch update\n\t\t\tthis._queueResize(newSizes);\n\t\t}\n\t}\n\n\tprivate _queueResize(sizes: number[]): void {\n\t\tthis._pendingSizes = sizes;\n\n\t\tif (this._resizeRaf !== null) return;\n\n\t\tthis._resizeRaf = requestAnimationFrame(() => {\n\t\t\tthis._resizeRaf = null;\n\t\t\tif (this._pendingSizes) {\n\t\t\t\tthis._setLayout(this._pendingSizes);\n\t\t\t\tthis.updatePanelStyles();\n\t\t\t\tthis._pendingSizes = null;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _endResize(): void {\n\t\tif (this._resizeRaf !== null) {\n\t\t\tcancelAnimationFrame(this._resizeRaf);\n\t\t\tthis._resizeRaf = null;\n\t\t\tthis._pendingSizes = null;\n\t\t}\n\t\tthis.dragEnd.emit();\n\t}\n\n\tpublic updatePanelStyles(): void {\n\t\tconst panels = this.panels();\n\t\tconst sizes = this.layout();\n\n\t\tpanels.forEach((panel, index) => {\n\t\t\tconst size = sizes[index];\n\t\t\tif (size !== undefined) {\n\t\t\t\tpanel.setSize(size);\n\t\t\t}\n\t\t});\n\t\t// Keyboard resizing writes to the public model directly, so capture the applied value here as well.\n\t\tthis._appliedLayout = [...sizes];\n\t}\n\n\tprivate _getEventPosition(event: MouseEvent | TouchEvent): number {\n\t\tconst layout = this.direction();\n\t\tif (event instanceof MouseEvent) {\n\t\t\treturn layout === 'vertical' ? event.clientY : event.clientX;\n\t\t} else {\n\t\t\tconst touch = event.touches[0];\n\t\t\treturn layout === 'vertical' ? touch.clientY : touch.clientX;\n\t\t}\n\t}\n\n\tprivate _getContainerSize(): number {\n\t\tconst element = this._el.nativeElement as HTMLElement;\n\t\tconst layout = this.direction();\n\t\treturn layout === 'vertical' ? element.offsetHeight : element.offsetWidth;\n\t}\n\n\tpublic collapsePanel(index: number): void {\n\t\tconst panels = this.panels();\n\t\tconst panel = panels[index];\n\n\t\tif (!panel || !panel.collapsible()) return;\n\n\t\tconst sizes = [...this.layout()];\n\t\tconst isCollapsed = sizes[index] === 0;\n\n\t\tif (isCollapsed) {\n\t\t\tconst panelDefaultSize = panel.defaultSize();\n\t\t\tconst defaultSize = panelDefaultSize !== undefined ? panelDefaultSize / panels.length : 100 / panels.length;\n\t\t\tsizes[index] = defaultSize;\n\n\t\t\tconst totalOthers = sizes.reduce((sum, size, i) => (i !== index ? sum + size : sum), 0);\n\t\t\tconst scale = (100 - defaultSize) / totalOthers;\n\n\t\t\tsizes.forEach((size, i) => {\n\t\t\t\tif (i !== index) {\n\t\t\t\t\tsizes[i] = size * scale;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst collapsedSize = sizes[index];\n\t\t\tsizes[index] = 0;\n\n\t\t\tconst totalOthers = sizes.reduce((sum, size, i) => (i !== index ? sum + size : sum), 0);\n\t\t\tconst scale = (totalOthers + collapsedSize) / totalOthers;\n\n\t\t\tsizes.forEach((size, i) => {\n\t\t\t\tif (i !== index) {\n\t\t\t\t\tsizes[i] = size * scale;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._setLayout(sizes);\n\t\tthis.updatePanelStyles();\n\t}\n\n\tprivate _setLayout(sizes: number[]): void {\n\t\tthis._appliedLayout = [...sizes];\n\t\tthis.layout.set(sizes);\n\t\tthis.layoutChanged.emit(sizes);\n\t}\n}\n","import { type BooleanInput } from '@angular/cdk/coercion';\nimport { afterNextRender, booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnResizableGroup } from './brn-resizable-group';\n\n@Directive({\n\tselector: 'brn-resizable-handle, [brnResizeHandle]',\n\texportAs: 'brnResizableHandle',\n\thost: {\n\t\t'[attr.data-layout]': '_layout()',\n\t\t'[attr.tabindex]': 'disabled() ? null : 0',\n\t\t'[attr.role]': '\"separator\"',\n\t\t'[attr.data-panel-group-direction]': '_direction()',\n\t\t'[attr.aria-orientation]': '_layout() === \"vertical\" ? \"horizontal\" : \"vertical\"',\n\t\t'[attr.aria-disabled]': 'disabled()',\n\t\t'(mousedown)': '_handleMouseDown($event)',\n\t\t'(keydown)': '_handleKeyDown($event)',\n\t},\n})\nexport class BrnResizableHandle {\n\t/** Parent resizable group. */\n\tprivate readonly _resizable = inject(BrnResizableGroup);\n\n\t/** Host element reference. */\n\tprivate readonly _el = inject(ElementRef<HTMLElement>);\n\n\t/** Whether a visual handle is rendered inside the separator. */\n\tpublic readonly withHandle = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/** Whether the handle is disabled (not interactive). */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/** The direction of the resizable group (`horizontal` or `vertical`). */\n\tprotected readonly _direction = this._resizable.direction;\n\n\t/** Computed layout orientation based on the parent group. */\n\tprotected readonly _layout = computed(() => this._resizable?.direction() || 'horizontal');\n\n\t/** Always-current index of this handle relative to panels in the group. */\n\tprivate get _handleIndex(): number {\n\t\treturn this._getHandleIndex();\n\t}\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._el.nativeElement.onpointerdown = (e: PointerEvent) => {\n\t\t\t\tthis._el.nativeElement.setPointerCapture(e.pointerId);\n\t\t\t};\n\n\t\t\tthis._el.nativeElement.onpointerup = (e: PointerEvent) => {\n\t\t\t\tthis._el.nativeElement.releasePointerCapture(e.pointerId);\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate _getHandleIndex(): number {\n\t\tconst host = this._el.nativeElement;\n\t\tconst parent = host.parentElement;\n\t\tif (!parent) return -1;\n\n\t\t// Collect all panels under this group\n\t\tconst panels = Array.from(parent.querySelectorAll('[data-slot=\"resizable-panel\"]'));\n\n\t\t// Find the previous panel (the closest one before this handle)\n\t\tconst prevPanel = host.previousElementSibling;\n\t\tif (!prevPanel) return -1;\n\n\t\t// Return its index among all panels\n\t\treturn panels.indexOf(prevPanel as HTMLElement);\n\t}\n\n\tprotected _handleMouseDown(event: MouseEvent): void {\n\t\tif (this.disabled() || !this._resizable) return;\n\n\t\tthis._resizable.startResize(this._handleIndex, event);\n\t}\n\n\tprotected _handleKeyDown(event: KeyboardEvent): void {\n\t\tif (this.disabled()) return;\n\n\t\tconst panels = this._resizable.panels();\n\t\tconst handleIndex = this._handleIndex;\n\t\tconst layout = this._layout();\n\n\t\tlet delta = 0;\n\t\tconst step = event.shiftKey ? 10 : 1;\n\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tif (layout === 'horizontal') delta = -step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tif (layout === 'horizontal') delta = step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tif (layout === 'vertical') delta = -step;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tif (layout === 'vertical') delta = step;\n\t\t\t\tbreak;\n\t\t\tcase 'Home':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis._moveToExtreme(true);\n\t\t\t\treturn;\n\t\t\tcase 'End':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis._moveToExtreme(false);\n\t\t\t\treturn;\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (panels[handleIndex]?.collapsible() || panels[handleIndex + 1]?.collapsible()) {\n\t\t\t\t\tconst collapsibleIndex = panels[handleIndex]?.collapsible() ? handleIndex : handleIndex + 1;\n\t\t\t\t\tthis._resizable.collapsePanel(collapsibleIndex);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\tif (delta !== 0) {\n\t\t\tevent.preventDefault();\n\t\t\tthis._adjustSizes(delta);\n\t\t}\n\t}\n\n\tprivate _getPanelContext() {\n\t\tconst panels = this._resizable.panels();\n\t\tconst li = this._handleIndex;\n\t\tconst ri = li + 1;\n\n\t\tconst left = panels[li];\n\t\tconst right = panels[ri];\n\t\tif (!left || !right) return null;\n\n\t\tconst sizes = [...this._resizable.layout()];\n\n\t\treturn {\n\t\t\tsizes,\n\t\t\tli,\n\t\t\tri,\n\t\t\tleft,\n\t\t\tright,\n\t\t\tleftMin: left.minSize(),\n\t\t\tleftMax: left.maxSize(),\n\t\t\trightMin: right.minSize(),\n\t\t\trightMax: right.maxSize(),\n\t\t};\n\t}\n\n\tprivate _adjustSizes(delta: number): void {\n\t\tconst ctx = this._getPanelContext();\n\t\tif (!ctx) return;\n\n\t\tlet newLeftSize = ctx.sizes[ctx.li] + delta;\n\t\tlet newRightSize = ctx.sizes[ctx.ri] - delta;\n\n\t\tnewLeftSize = Math.max(ctx.leftMin, Math.min(ctx.leftMax, newLeftSize));\n\t\tnewRightSize = Math.max(ctx.rightMin, Math.min(ctx.rightMax, newRightSize));\n\n\t\tconst totalSize = newLeftSize + newRightSize;\n\t\tconst originalTotal = ctx.sizes[ctx.li] + ctx.sizes[ctx.ri];\n\n\t\tif (Math.abs(totalSize - originalTotal) < 0.01) {\n\t\t\tctx.sizes[ctx.li] = newLeftSize;\n\t\t\tctx.sizes[ctx.ri] = newRightSize;\n\n\t\t\tthis._resizable.layout.set(ctx.sizes);\n\t\t\tthis._resizable.updatePanelStyles();\n\t\t}\n\t}\n\n\tprivate _moveToExtreme(toMin: boolean): void {\n\t\tconst ctx = this._getPanelContext();\n\t\tif (!ctx) return;\n\n\t\tconst totalSize = ctx.sizes[ctx.li] + ctx.sizes[ctx.ri];\n\n\t\tif (toMin) {\n\t\t\tctx.sizes[ctx.li] = ctx.leftMin;\n\t\t\tctx.sizes[ctx.ri] = Math.min(totalSize - ctx.leftMin, ctx.rightMax);\n\t\t} else {\n\t\t\tctx.sizes[ctx.li] = Math.min(totalSize - ctx.rightMin, ctx.leftMax);\n\t\t\tctx.sizes[ctx.ri] = ctx.rightMin;\n\t\t}\n\n\t\tthis._resizable.layout.set(ctx.sizes);\n\t\tthis._resizable.updatePanelStyles();\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}
|
|
@@ -324,6 +324,16 @@ class BrnTooltip {
|
|
|
324
324
|
this._setupDelayMechanism();
|
|
325
325
|
this._cleanupTriggerEvents();
|
|
326
326
|
this._initTriggers();
|
|
327
|
+
/**
|
|
328
|
+
* This effect is used to update the tooltip content when the tooltip text changes.
|
|
329
|
+
* It's the reactive bridge between the tooltip text and the tooltip content.
|
|
330
|
+
*/
|
|
331
|
+
effect(() => {
|
|
332
|
+
const text = this._tooltipText();
|
|
333
|
+
if (this._componentRef) {
|
|
334
|
+
this._applyContentProps(this._componentRef.instance, this._activePosition ?? this.position(), text);
|
|
335
|
+
}
|
|
336
|
+
});
|
|
327
337
|
this._listenersRefs = [
|
|
328
338
|
...this._listenersRefs,
|
|
329
339
|
this._renderer.listen(this._overlayRef.hostElement, 'mouseenter', () => (this._tooltipHovered = true)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-tooltip.mjs","sources":["../../../../libs/brain/tooltip/src/lib/brn-tooltip-string-template-outlet.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-content.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-group.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-position.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.token.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.ts","../../../../libs/brain/tooltip/src/index.ts","../../../../libs/brain/tooltip/src/spartan-ng-brain-tooltip.ts"],"sourcesContent":["import {\n\tDirective,\n\teffect,\n\ttype EffectRef,\n\ttype EmbeddedViewRef,\n\tinject,\n\tinput,\n\ttype OnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\n\nexport function isTemplateRef<C = unknown>(value: unknown): value is TemplateRef<C> {\n\treturn value instanceof TemplateRef;\n}\n\nexport interface BrnTemplateOutletContext {\n\t$implicit: unknown;\n\t[key: string]: unknown;\n}\n\n@Directive({\n\tselector: '[brnTooltipStringTemplateOutlet]',\n\texportAs: 'brnTooltipStringTemplateOutlet',\n})\nexport class BrnTooltipStringTemplateOutlet<T = unknown> implements OnDestroy {\n\tprivate readonly _viewContainer = inject(ViewContainerRef);\n\tprivate readonly _templateRef = inject(TemplateRef<void>);\n\n\tprivate _embeddedViewRef: EmbeddedViewRef<BrnTemplateOutletContext> | null = null;\n\tprivate readonly _context = {} as BrnTemplateOutletContext;\n\n\tprivate _isFirstChange = true;\n\tprivate _lastOutletWasTemplate = false;\n\tprivate _lastTemplateRef: TemplateRef<void> | null = null;\n\tprivate _lastContext?: BrnTemplateOutletContext;\n\n\tpublic readonly brnTooltipStringTemplateOutletContext = input<BrnTemplateOutletContext | undefined>(undefined);\n\tpublic readonly brnTooltipStringTemplateOutlet = input.required<T | TemplateRef<void>>();\n\n\t_hasContextShapeChanged(context: BrnTemplateOutletContext | undefined): boolean {\n\t\tif (!context) {\n\t\t\treturn false;\n\t\t}\n\t\tconst prevCtxKeys = Object.keys(this._lastContext || {});\n\t\tconst currCtxKeys = Object.keys(context || {});\n\n\t\tif (prevCtxKeys.length === currCtxKeys.length) {\n\t\t\tfor (const propName of currCtxKeys) {\n\t\t\t\tif (!prevCtxKeys.includes(propName)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t_shouldViewBeRecreated(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): boolean {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\n\t\tconst shouldOutletRecreate =\n\t\t\tthis._isFirstChange ||\n\t\t\tisTemplate !== this._lastOutletWasTemplate ||\n\t\t\t(isTemplate && stringTemplateOutlet !== this._lastTemplateRef);\n\n\t\tconst shouldContextRecreate = this._hasContextShapeChanged(stringTemplateOutletContext);\n\t\treturn shouldContextRecreate || shouldOutletRecreate;\n\t}\n\n\t_updateTrackingState(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\t\tif (this._isFirstChange && !isTemplate) {\n\t\t\tthis._isFirstChange = false;\n\t\t}\n\n\t\tif (stringTemplateOutletContext !== undefined) {\n\t\t\tthis._lastContext = stringTemplateOutletContext;\n\t\t}\n\n\t\tthis._lastOutletWasTemplate = isTemplate;\n\t\tthis._lastTemplateRef = isTemplate ? stringTemplateOutlet : null;\n\t}\n\n\tprivate readonly _viewEffect: EffectRef = effect(() => {\n\t\tconst stringTemplateOutlet = this.brnTooltipStringTemplateOutlet();\n\t\tconst stringTemplateOutletContext = this.brnTooltipStringTemplateOutletContext();\n\n\t\tif (!this._isFirstChange && isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._isFirstChange = true;\n\t\t}\n\n\t\tif (!isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._context['$implicit'] = stringTemplateOutlet as T;\n\t\t}\n\n\t\tconst recreateView = this._shouldViewBeRecreated(stringTemplateOutlet, stringTemplateOutletContext);\n\t\tthis._updateTrackingState(stringTemplateOutlet, stringTemplateOutletContext);\n\n\t\tif (recreateView) {\n\t\t\tthis._recreateView(stringTemplateOutlet as TemplateRef<BrnTemplateOutletContext>, stringTemplateOutletContext);\n\t\t} else {\n\t\t\tthis._updateContext(stringTemplateOutlet, stringTemplateOutletContext);\n\t\t}\n\t});\n\n\tprivate _recreateView(\n\t\toutlet: TemplateRef<BrnTemplateOutletContext>,\n\t\tcontext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tthis._viewContainer.clear();\n\t\tif (isTemplateRef(outlet)) {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(outlet, context);\n\t\t} else {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(this._templateRef, this._context);\n\t\t}\n\t}\n\n\tprivate _updateContext(outlet: TemplateRef<void> | T, context: BrnTemplateOutletContext | undefined): void {\n\t\tconst newCtx = isTemplateRef(outlet) ? context : this._context;\n\t\tlet oldCtx = this._embeddedViewRef?.context;\n\n\t\tif (!oldCtx) {\n\t\t\toldCtx = newCtx;\n\t\t} else if (newCtx && typeof newCtx === 'object') {\n\t\t\tfor (const propName of Object.keys(newCtx)) {\n\t\t\t\toldCtx[propName] = newCtx[propName];\n\t\t\t}\n\t\t}\n\t\tthis._lastContext = oldCtx;\n\t}\n\n\tstatic ngTemplateContextGuard<T>(\n\t\t_dir: BrnTooltipStringTemplateOutlet<T>,\n\t\t_ctx: unknown,\n\t): _ctx is BrnTemplateOutletContext {\n\t\treturn true;\n\t}\n\n\tpublic ngOnDestroy(): void {\n\t\tthis._viewEffect.destroy();\n\t\tthis._viewContainer.clear();\n\t\tthis._embeddedViewRef = null;\n\t}\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { BrnTooltipPosition } from './brn-tooltip-position';\nimport { BrnTooltipStringTemplateOutlet } from './brn-tooltip-string-template-outlet';\nimport { BrnTooltipType } from './brn-tooltip-type';\n\nlet uniqueId = 0;\n\n@Component({\n\timports: [BrnTooltipStringTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\t'[class]': '_tooltipClass()',\n\t\t'[attr.id]': 'id()',\n\t\t'[attr.data-side]': '_position()',\n\t\t'[attr.data-state]': 'state()',\n\t\trole: 'tooltip',\n\t},\n\ttemplate: `\n\t\t<ng-container *brnTooltipStringTemplateOutlet=\"_tooltipText()\">{{ _tooltipText() }}</ng-container>\n\n\t\t<span [class]=\"_arrowClass()\">\n\t\t\t<svg [class]=\"_svgClass()\" width=\"10\" height=\"5\" viewBox=\"0 0 30 10\" preserveAspectRatio=\"none\">\n\t\t\t\t<polygon points=\"0,0 30,0 15,10\" />\n\t\t\t</svg>\n\t\t</span>\n\t`,\n})\nexport class BrnTooltipContent {\n\tpublic readonly id = input<string>(`brn-tooltip-${++uniqueId}`);\n\tpublic readonly state = signal<'closed' | 'open' | 'instant-open'>('closed');\n\n\tprotected readonly _tooltipClass = signal<ClassValue>('');\n\tprotected readonly _arrowClass = signal<ClassValue>('');\n\tprotected readonly _svgClass = signal<ClassValue>('');\n\n\tprotected readonly _position = signal<BrnTooltipPosition>('top');\n\tprotected readonly _tooltipText = signal<BrnTooltipType>(null);\n\n\tpublic setProps(\n\t\ttooltipText: BrnTooltipType,\n\t\tposition: BrnTooltipPosition,\n\t\ttooltipClasses: ClassValue,\n\t\tarrowClasses: ClassValue,\n\t\tsvgClasses: ClassValue,\n\t): void {\n\t\tif (tooltipText) {\n\t\t\tthis._tooltipText.set(tooltipText);\n\t\t}\n\t\tthis._position.set(position);\n\n\t\tthis._tooltipClass.set(tooltipClasses);\n\t\tthis._arrowClass.set(arrowClasses);\n\t\tthis._svgClass.set(svgClasses);\n\t}\n}\n","import { inject, Injectable, InjectionToken, type Provider } from '@angular/core';\nimport { injectSkipDelay } from '@spartan-ng/brain/core';\n\nexport interface BrnTooltipGroupOptions {\n\t/** Time (ms) after the last tooltip closes during which others open instantly. `0` disables it. */\n\tskipDelayDuration: number;\n}\n\nconst defaultGroupOptions: BrnTooltipGroupOptions = { skipDelayDuration: 300 };\n\nconst BRN_TOOLTIP_GROUP_OPTIONS = new InjectionToken<BrnTooltipGroupOptions>('BrnTooltipGroupOptions');\n\n/** Skip-delay coordinator for grouped tooltips; provide via `provideBrnTooltipGroup` on the wrapper. */\n@Injectable()\nexport class BrnTooltipGroup {\n\tprivate readonly _options = inject(BRN_TOOLTIP_GROUP_OPTIONS);\n\tprivate readonly _skipDelay = injectSkipDelay(() => this._options.skipDelayDuration);\n\n\t/** Whether the next tooltip waits for its show delay, or opens instantly within the skip window. */\n\tpublic readonly isOpenDelayed = this._skipDelay.isOpenDelayed;\n\n\tpublic onOpen(): void {\n\t\tthis._skipDelay.open();\n\t}\n\n\tpublic onClose(): void {\n\t\tthis._skipDelay.close();\n\t}\n}\n\nexport function provideBrnTooltipGroup(options?: Partial<BrnTooltipGroupOptions>): Provider[] {\n\treturn [{ provide: BRN_TOOLTIP_GROUP_OPTIONS, useValue: { ...defaultGroupOptions, ...options } }, BrnTooltipGroup];\n}\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport const BRN_TOOLTIP_POSITIONS_MAP: Record<BrnTooltipPosition, ConnectedPosition> = {\n\ttop: {\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t\toffsetY: -8,\n\t},\n\tbottom: {\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t\toffsetY: 8,\n\t},\n\tleft: {\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t\toffsetX: -8,\n\t},\n\tright: {\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t\toffsetX: 8,\n\t},\n};\n\n/** Fallback order for each preferred position when it doesn't fit in the viewport. */\nexport const BRN_TOOLTIP_FALLBACK_POSITIONS: Record<BrnTooltipPosition, BrnTooltipPosition[]> = {\n\ttop: ['bottom', 'right', 'left'],\n\tbottom: ['top', 'right', 'left'],\n\tleft: ['right', 'top', 'bottom'],\n\tright: ['left', 'top', 'bottom'],\n};\n\n/** Map a resolved CDK ConnectedPosition back to a BrnTooltipPosition, or null if no match. */\nexport function resolveTooltipPosition(pair: ConnectedPosition): BrnTooltipPosition | null {\n\tfor (const [pos, config] of Object.entries(BRN_TOOLTIP_POSITIONS_MAP)) {\n\t\tif (\n\t\t\tpair.originX === config.originX &&\n\t\t\tpair.originY === config.originY &&\n\t\t\tpair.overlayX === config.overlayX &&\n\t\t\tpair.overlayY === config.overlayY\n\t\t) {\n\t\t\treturn pos as BrnTooltipPosition;\n\t\t}\n\t}\n\treturn null;\n}\n","import { inject, InjectionToken, type ValueProvider } from '@angular/core';\nimport { type ClassValue } from 'clsx';\nimport { type BrnTooltipPosition } from './brn-tooltip-position';\n\nexport interface BrnTooltipOptions {\n\t/** Default delay when the tooltip is shown. */\n\tshowDelay: number;\n\t/** Default delay when the tooltip is hidden. */\n\thideDelay: number;\n\t/** Default position for tooltips. */\n\tposition?: BrnTooltipPosition;\n\t/** Additional classes for the SVG element in the tooltip arrow. */\n\tsvgClasses: ClassValue;\n\t/** Additional classes for the tooltip arrow element based on position. */\n\tarrowClasses: (position: BrnTooltipPosition) => ClassValue;\n\t/** Additional classes for the tooltip content element. */\n\ttooltipContentClasses: ClassValue;\n}\n\nexport const defaultOptions: BrnTooltipOptions = {\n\tshowDelay: 150,\n\thideDelay: 100,\n\tsvgClasses: '',\n\tarrowClasses: () => '',\n\ttooltipContentClasses: '',\n};\n\nconst BRN_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken<BrnTooltipOptions>('brn-tooltip-default-options', {\n\tprovidedIn: 'root',\n\tfactory: () => defaultOptions,\n});\n\nexport function provideBrnTooltipDefaultOptions(options: Partial<BrnTooltipOptions>): ValueProvider {\n\treturn { provide: BRN_TOOLTIP_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnTooltipDefaultOptions(): BrnTooltipOptions {\n\treturn inject(BRN_TOOLTIP_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","import {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\ttype ComponentRef,\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\toutput,\n\tRenderer2,\n\trunInInjectionContext,\n\ttype TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { waitForElementAnimations } from '@spartan-ng/brain/core';\nimport { of, Subject, Subscription, timer } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { BrnTooltipContent } from './brn-tooltip-content';\nimport { BrnTooltipGroup } from './brn-tooltip-group';\nimport {\n\tBRN_TOOLTIP_FALLBACK_POSITIONS,\n\tBRN_TOOLTIP_POSITIONS_MAP,\n\tBrnTooltipPosition,\n\tresolveTooltipPosition,\n} from './brn-tooltip-position';\nimport { BrnTooltipType } from './brn-tooltip-type';\nimport { injectBrnTooltipDefaultOptions } from './brn-tooltip.token';\n\ninterface DelayConfig {\n\tisShow: boolean;\n\tdelay: number;\n\t/** Snapshotted at request time: open instantly (no enter animation) because the group window was open. */\n\tinstant: boolean;\n}\n\n@Directive({ selector: '[brnTooltip]', exportAs: 'brnTooltip' })\nexport class BrnTooltip {\n\tprivate readonly _config = injectBrnTooltipDefaultOptions();\n\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _document = inject(DOCUMENT);\n\tprivate readonly _elementRef = inject(ElementRef<HTMLElement>);\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _overlayPositionBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _dir = inject(Directionality);\n\tprivate readonly _group = inject(BrnTooltipGroup, { optional: true });\n\n\tprivate _tooltipHovered = false;\n\tprivate _listenersRefs: (() => void)[] = [];\n\tprivate _delaySubject: Subject<DelayConfig> | undefined = undefined;\n\tprivate _componentRef: ComponentRef<BrnTooltipContent> | undefined = undefined;\n\tprivate _overlayRef: OverlayRef | undefined = undefined;\n\tprivate _ariaEffectRef: ReturnType<typeof effect> | undefined = undefined;\n\tprivate _positionChangeSub: Subscription | undefined = undefined;\n\t/** Bumped on every close/show so a pending exit-animation teardown can detect it was superseded. */\n\tprivate _closeGeneration = 0;\n\t/** The position currently applied to the content - the CDK-resolved one after a flip, not the raw input. */\n\tprivate _activePosition: BrnTooltipPosition | undefined = undefined;\n\n\tpublic readonly tooltipDisabled = input<boolean, boolean>(false, { transform: booleanAttribute });\n\tpublic readonly mutableTooltipDisabled = linkedSignal(this.tooltipDisabled);\n\n\tpublic readonly position = input<BrnTooltipPosition>(this._config.position ?? 'top');\n\tpublic readonly brnTooltip = input<BrnTooltipType>(null);\n\tpublic readonly showDelay = input<number, number>(this._config.showDelay, { transform: numberAttribute });\n\tpublic readonly hideDelay = input<number, number>(this._config.hideDelay, { transform: numberAttribute });\n\n\tpublic readonly show = output<void>();\n\tpublic readonly hide = output<void>();\n\n\tprivate readonly _tooltipText = computed<string | TemplateRef<void>>(() => {\n\t\tlet tooltipText = this.brnTooltip();\n\t\tif (!tooltipText) {\n\t\t\treturn '';\n\t\t} else if (typeof tooltipText === 'string') {\n\t\t\ttooltipText = tooltipText.trim();\n\t\t}\n\t\treturn tooltipText;\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._overlayRef = this._overlay.create({\n\t\t\t\tdirection: this._dir,\n\t\t\t\tpositionStrategy: this._buildPositionStrategy(),\n\t\t\t});\n\n\t\t\tthis._dir.change.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n\t\t\t\tif (this._overlayRef) {\n\t\t\t\t\tthis._updatePosition();\n\t\t\t\t\tif (this._overlayRef.hasAttached()) {\n\t\t\t\t\t\tthis._overlayRef.updatePosition();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trunInInjectionContext(this._injector, () => {\n\t\t\t\tif (!this._overlayRef) return;\n\t\t\t\tthis._setupDelayMechanism();\n\t\t\t\tthis._cleanupTriggerEvents();\n\t\t\t\tthis._initTriggers();\n\t\t\t\tthis._listenersRefs = [\n\t\t\t\t\t...this._listenersRefs,\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseenter', () => (this._tooltipHovered = true)),\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseleave', () => {\n\t\t\t\t\t\tthis._tooltipHovered = false;\n\t\t\t\t\t\tthis.delay(false, this.hideDelay());\n\t\t\t\t\t}),\n\t\t\t\t];\n\t\t\t});\n\t\t});\n\n\t\tthis._destroyRef.onDestroy(() => {\n\t\t\tthis._clearAriaDescribedBy();\n\t\t\tthis._delaySubject?.complete();\n\t\t\tthis._cleanupTriggerEvents();\n\t\t\tthis._overlayRef?.dispose();\n\t\t});\n\t}\n\n\tprivate _updatePosition(): void {\n\t\tconst strategy = this._overlayRef?.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n\t\tif (strategy) {\n\t\t\tstrategy.withPositions(this._getAllPositions());\n\t\t}\n\t}\n\n\tprivate _buildPositionStrategy() {\n\t\treturn this._overlayPositionBuilder\n\t\t\t.flexibleConnectedTo(this._elementRef)\n\t\t\t.withPositions(this._getAllPositions())\n\t\t\t.withViewportMargin(8);\n\t}\n\n\t/** Build [preferred, ...fallbacks] position array for viewport-aware auto-flip. */\n\tprivate _getAllPositions(): ConnectedPosition[] {\n\t\tconst preferred = this.position();\n\t\treturn [preferred, ...BRN_TOOLTIP_FALLBACK_POSITIONS[preferred]].map((pos) => this._getAdjustedPositionFor(pos));\n\t}\n\n\tprivate _getAdjustedPositionFor(pos: BrnTooltipPosition): ConnectedPosition {\n\t\tconst position = BRN_TOOLTIP_POSITIONS_MAP[pos];\n\t\tconst isLtr = this._dir.value !== 'rtl';\n\n\t\treturn {\n\t\t\t...position,\n\t\t\toffsetX: position.offsetX != null ? (isLtr ? position.offsetX : -position.offsetX) : undefined,\n\t\t};\n\t}\n\n\tprivate _initTriggers() {\n\t\tthis._initScrollListener();\n\t\tthis._initHoverListeners();\n\t}\n\n\tprivate _initHoverListeners(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseenter', () => this._requestShow()),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseleave', () => this.delay(false, this.hideDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'focus', () => this._requestShow()),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'blur', () => this.delay(false, this.hideDelay())),\n\t\t];\n\t}\n\n\t/** Snapshot the group skip decision once, so the delay and the instant-open state agree even if a\n\t * sibling flips the window during the show delay. */\n\tprivate _requestShow(): void {\n\t\tconst skip = !!this._group && !this._group.isOpenDelayed();\n\t\tthis.delay(true, skip ? 0 : this.showDelay(), skip);\n\t}\n\n\tprivate _initScrollListener(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._document.defaultView, 'scroll', () => this._hide()),\n\t\t];\n\t}\n\n\tprivate _cleanupTriggerEvents(): void {\n\t\tfor (const eventRef of this._listenersRefs) {\n\t\t\teventRef();\n\t\t}\n\t\tthis._listenersRefs = [];\n\t}\n\n\tprivate delay(isShow: boolean, delay = -1, instant = false): void {\n\t\tthis._delaySubject?.next({ isShow, delay, instant });\n\t}\n\n\tprivate _setupDelayMechanism(): void {\n\t\tthis._delaySubject?.complete();\n\t\tthis._delaySubject = new Subject<DelayConfig>();\n\n\t\tthis._delaySubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap((config) => (config.delay < 0 ? of(config) : timer(config.delay).pipe(map(() => config)))),\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t)\n\t\t\t.subscribe((config) => {\n\t\t\t\tif (config.isShow) {\n\t\t\t\t\tthis._show(config.instant);\n\t\t\t\t} else {\n\t\t\t\t\tthis._hide();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate _show(instant = false): void {\n\t\tif (!this._tooltipText() || this.mutableTooltipDisabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// 'instant-open' suppresses the enter animation. Decided with the delay at request time so a sibling\n\t\t// flipping the group window mid-delay can't desync the animation from the wait that actually happened.\n\t\tconst openState = instant ? 'instant-open' : 'open';\n\n\t\t// Already attached: revive only if it is mid-close (exit animation playing). Cancel the\n\t\t// pending teardown and flip it back open instead of letting it fade out and detach.\n\t\tif (this._componentRef) {\n\t\t\tif (this._componentRef.instance.state() === 'closed') {\n\t\t\t\tthis._closeGeneration++;\n\t\t\t\tthis._componentRef.instance.state.set(openState);\n\t\t\t\t// Re-apply props so a programmatic text change during the close is reflected on revive.\n\t\t\t\t// Keep the live (possibly flipped) position rather than resetting to the raw input.\n\t\t\t\tthis._applyContentProps(this._componentRef.instance, this._activePosition ?? this.position());\n\t\t\t\tthis._group?.onOpen();\n\t\t\t\tthis.show.emit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst tooltipPortal = new ComponentPortal(BrnTooltipContent);\n\t\tthis._componentRef = this._overlayRef?.attach(tooltipPortal);\n\t\tthis._componentRef?.onDestroy(() => {\n\t\t\tthis._componentRef = undefined;\n\t\t});\n\t\tthis._componentRef?.instance.state.set(openState);\n\t\tthis._group?.onOpen();\n\t\tif (this._componentRef) {\n\t\t\tthis._applyContentProps(this._componentRef.instance, this.position());\n\t\t}\n\n\t\t// Subscribe to position changes for the lifetime of the tooltip so that\n\t\t// arrow direction and CSS classes stay in sync when the CDK flips the\n\t\t// overlay (initial show, viewport resize, scroll, etc.).\n\t\tconst strategy = this._overlayRef?.getConfig().positionStrategy as FlexibleConnectedPositionStrategy | undefined;\n\t\tif (strategy && this._componentRef) {\n\t\t\tconst compRef = this._componentRef;\n\t\t\tthis._positionChangeSub = strategy.positionChanges\n\t\t\t\t.pipe(takeUntilDestroyed(this._destroyRef))\n\t\t\t\t.subscribe((change) => {\n\t\t\t\t\tconst resolved = resolveTooltipPosition(change.connectionPair);\n\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\tthis._applyContentProps(compRef.instance, resolved, null);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\trunInInjectionContext(this._injector, () => {\n\t\t\tthis._ariaEffectRef = effect(() => {\n\t\t\t\tconst tooltipId = this._componentRef?.instance.id();\n\t\t\t\tif (tooltipId) {\n\t\t\t\t\tthis._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', tooltipId);\n\t\t\t\t\tthis._ariaEffectRef?.destroy();\n\t\t\t\t\tthis._ariaEffectRef = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tthis.show.emit();\n\t}\n\n\t/** Apply text + position (and the position-derived classes) to the content, recording the position as\n\t * active. Pass `text = null` for a position-only update that keeps the content's existing text. */\n\tprivate _applyContentProps(\n\t\tcontent: BrnTooltipContent,\n\t\tposition: BrnTooltipPosition,\n\t\ttext: BrnTooltipType = this._tooltipText(),\n\t): void {\n\t\tthis._activePosition = position;\n\t\tcontent.setProps(\n\t\t\ttext,\n\t\t\tposition,\n\t\t\tthis._config.tooltipContentClasses,\n\t\t\tthis._config.arrowClasses(position),\n\t\t\tthis._config.svgClasses,\n\t\t);\n\t}\n\n\tprivate _hide(): void {\n\t\tif (!this._componentRef || this._tooltipHovered) return;\n\t\t// Already closing (exit animation in flight): nothing to do.\n\t\tif (this._componentRef.instance.state() === 'closed') return;\n\t\tthis._componentRef.instance.state.set('closed');\n\t\tthis._group?.onClose();\n\t\tthis.hide.emit();\n\t\tthis._scheduleDetach(this._componentRef);\n\t}\n\n\t/**\n\t * Keep the content mounted until its `data-[state=closed]` exit animation finishes, then tear it\n\t * down. A re-show (revive) bumps `_closeGeneration`, which cancels the pending detach.\n\t */\n\tprivate _scheduleDetach(componentRef: ComponentRef<BrnTooltipContent>): void {\n\t\tconst generation = ++this._closeGeneration;\n\t\tconst content = componentRef.location.nativeElement as HTMLElement;\n\t\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tvoid waitForElementAnimations(content).then(() => {\n\t\t\t\t\tif (generation === this._closeGeneration) this._detach();\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\t}\n\n\tprivate _detach(): void {\n\t\tthis._clearAriaDescribedBy();\n\t\tthis._positionChangeSub?.unsubscribe();\n\t\tthis._positionChangeSub = undefined;\n\t\tthis._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n\t\tthis._overlayRef?.detach();\n\t}\n\n\tprivate _clearAriaDescribedBy(): void {\n\t\tif (this._ariaEffectRef) {\n\t\t\tthis._ariaEffectRef.destroy();\n\t\t\tthis._ariaEffectRef = undefined;\n\t\t}\n\t}\n}\n","import { BrnTooltip } from './lib/brn-tooltip';\nimport { BrnTooltipContent } from './lib/brn-tooltip-content';\n\nexport * from './lib/brn-tooltip';\nexport * from './lib/brn-tooltip-content';\nexport * from './lib/brn-tooltip-group';\nexport { BRN_TOOLTIP_FALLBACK_POSITIONS, BrnTooltipPosition, resolveTooltipPosition } from './lib/brn-tooltip-position';\nexport * from './lib/brn-tooltip-type';\nexport * from './lib/brn-tooltip.token';\n\nexport const BrnTooltipImports = [BrnTooltip, BrnTooltipContent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-tooltip.mjs","sources":["../../../../libs/brain/tooltip/src/lib/brn-tooltip-string-template-outlet.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-content.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-group.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip-position.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.token.ts","../../../../libs/brain/tooltip/src/lib/brn-tooltip.ts","../../../../libs/brain/tooltip/src/index.ts","../../../../libs/brain/tooltip/src/spartan-ng-brain-tooltip.ts"],"sourcesContent":["import {\n\tDirective,\n\teffect,\n\ttype EffectRef,\n\ttype EmbeddedViewRef,\n\tinject,\n\tinput,\n\ttype OnDestroy,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\n\nexport function isTemplateRef<C = unknown>(value: unknown): value is TemplateRef<C> {\n\treturn value instanceof TemplateRef;\n}\n\nexport interface BrnTemplateOutletContext {\n\t$implicit: unknown;\n\t[key: string]: unknown;\n}\n\n@Directive({\n\tselector: '[brnTooltipStringTemplateOutlet]',\n\texportAs: 'brnTooltipStringTemplateOutlet',\n})\nexport class BrnTooltipStringTemplateOutlet<T = unknown> implements OnDestroy {\n\tprivate readonly _viewContainer = inject(ViewContainerRef);\n\tprivate readonly _templateRef = inject(TemplateRef<void>);\n\n\tprivate _embeddedViewRef: EmbeddedViewRef<BrnTemplateOutletContext> | null = null;\n\tprivate readonly _context = {} as BrnTemplateOutletContext;\n\n\tprivate _isFirstChange = true;\n\tprivate _lastOutletWasTemplate = false;\n\tprivate _lastTemplateRef: TemplateRef<void> | null = null;\n\tprivate _lastContext?: BrnTemplateOutletContext;\n\n\tpublic readonly brnTooltipStringTemplateOutletContext = input<BrnTemplateOutletContext | undefined>(undefined);\n\tpublic readonly brnTooltipStringTemplateOutlet = input.required<T | TemplateRef<void>>();\n\n\t_hasContextShapeChanged(context: BrnTemplateOutletContext | undefined): boolean {\n\t\tif (!context) {\n\t\t\treturn false;\n\t\t}\n\t\tconst prevCtxKeys = Object.keys(this._lastContext || {});\n\t\tconst currCtxKeys = Object.keys(context || {});\n\n\t\tif (prevCtxKeys.length === currCtxKeys.length) {\n\t\t\tfor (const propName of currCtxKeys) {\n\t\t\t\tif (!prevCtxKeys.includes(propName)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t_shouldViewBeRecreated(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): boolean {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\n\t\tconst shouldOutletRecreate =\n\t\t\tthis._isFirstChange ||\n\t\t\tisTemplate !== this._lastOutletWasTemplate ||\n\t\t\t(isTemplate && stringTemplateOutlet !== this._lastTemplateRef);\n\n\t\tconst shouldContextRecreate = this._hasContextShapeChanged(stringTemplateOutletContext);\n\t\treturn shouldContextRecreate || shouldOutletRecreate;\n\t}\n\n\t_updateTrackingState(\n\t\tstringTemplateOutlet: TemplateRef<void> | T,\n\t\tstringTemplateOutletContext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tconst isTemplate = isTemplateRef(stringTemplateOutlet);\n\t\tif (this._isFirstChange && !isTemplate) {\n\t\t\tthis._isFirstChange = false;\n\t\t}\n\n\t\tif (stringTemplateOutletContext !== undefined) {\n\t\t\tthis._lastContext = stringTemplateOutletContext;\n\t\t}\n\n\t\tthis._lastOutletWasTemplate = isTemplate;\n\t\tthis._lastTemplateRef = isTemplate ? stringTemplateOutlet : null;\n\t}\n\n\tprivate readonly _viewEffect: EffectRef = effect(() => {\n\t\tconst stringTemplateOutlet = this.brnTooltipStringTemplateOutlet();\n\t\tconst stringTemplateOutletContext = this.brnTooltipStringTemplateOutletContext();\n\n\t\tif (!this._isFirstChange && isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._isFirstChange = true;\n\t\t}\n\n\t\tif (!isTemplateRef(stringTemplateOutlet)) {\n\t\t\tthis._context['$implicit'] = stringTemplateOutlet as T;\n\t\t}\n\n\t\tconst recreateView = this._shouldViewBeRecreated(stringTemplateOutlet, stringTemplateOutletContext);\n\t\tthis._updateTrackingState(stringTemplateOutlet, stringTemplateOutletContext);\n\n\t\tif (recreateView) {\n\t\t\tthis._recreateView(stringTemplateOutlet as TemplateRef<BrnTemplateOutletContext>, stringTemplateOutletContext);\n\t\t} else {\n\t\t\tthis._updateContext(stringTemplateOutlet, stringTemplateOutletContext);\n\t\t}\n\t});\n\n\tprivate _recreateView(\n\t\toutlet: TemplateRef<BrnTemplateOutletContext>,\n\t\tcontext: BrnTemplateOutletContext | undefined,\n\t): void {\n\t\tthis._viewContainer.clear();\n\t\tif (isTemplateRef(outlet)) {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(outlet, context);\n\t\t} else {\n\t\t\tthis._embeddedViewRef = this._viewContainer.createEmbeddedView(this._templateRef, this._context);\n\t\t}\n\t}\n\n\tprivate _updateContext(outlet: TemplateRef<void> | T, context: BrnTemplateOutletContext | undefined): void {\n\t\tconst newCtx = isTemplateRef(outlet) ? context : this._context;\n\t\tlet oldCtx = this._embeddedViewRef?.context;\n\n\t\tif (!oldCtx) {\n\t\t\toldCtx = newCtx;\n\t\t} else if (newCtx && typeof newCtx === 'object') {\n\t\t\tfor (const propName of Object.keys(newCtx)) {\n\t\t\t\toldCtx[propName] = newCtx[propName];\n\t\t\t}\n\t\t}\n\t\tthis._lastContext = oldCtx;\n\t}\n\n\tstatic ngTemplateContextGuard<T>(\n\t\t_dir: BrnTooltipStringTemplateOutlet<T>,\n\t\t_ctx: unknown,\n\t): _ctx is BrnTemplateOutletContext {\n\t\treturn true;\n\t}\n\n\tpublic ngOnDestroy(): void {\n\t\tthis._viewEffect.destroy();\n\t\tthis._viewContainer.clear();\n\t\tthis._embeddedViewRef = null;\n\t}\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { ClassValue } from 'clsx';\nimport { BrnTooltipPosition } from './brn-tooltip-position';\nimport { BrnTooltipStringTemplateOutlet } from './brn-tooltip-string-template-outlet';\nimport { BrnTooltipType } from './brn-tooltip-type';\n\nlet uniqueId = 0;\n\n@Component({\n\timports: [BrnTooltipStringTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\t'[class]': '_tooltipClass()',\n\t\t'[attr.id]': 'id()',\n\t\t'[attr.data-side]': '_position()',\n\t\t'[attr.data-state]': 'state()',\n\t\trole: 'tooltip',\n\t},\n\ttemplate: `\n\t\t<ng-container *brnTooltipStringTemplateOutlet=\"_tooltipText()\">{{ _tooltipText() }}</ng-container>\n\n\t\t<span [class]=\"_arrowClass()\">\n\t\t\t<svg [class]=\"_svgClass()\" width=\"10\" height=\"5\" viewBox=\"0 0 30 10\" preserveAspectRatio=\"none\">\n\t\t\t\t<polygon points=\"0,0 30,0 15,10\" />\n\t\t\t</svg>\n\t\t</span>\n\t`,\n})\nexport class BrnTooltipContent {\n\tpublic readonly id = input<string>(`brn-tooltip-${++uniqueId}`);\n\tpublic readonly state = signal<'closed' | 'open' | 'instant-open'>('closed');\n\n\tprotected readonly _tooltipClass = signal<ClassValue>('');\n\tprotected readonly _arrowClass = signal<ClassValue>('');\n\tprotected readonly _svgClass = signal<ClassValue>('');\n\n\tprotected readonly _position = signal<BrnTooltipPosition>('top');\n\tprotected readonly _tooltipText = signal<BrnTooltipType>(null);\n\n\tpublic setProps(\n\t\ttooltipText: BrnTooltipType,\n\t\tposition: BrnTooltipPosition,\n\t\ttooltipClasses: ClassValue,\n\t\tarrowClasses: ClassValue,\n\t\tsvgClasses: ClassValue,\n\t): void {\n\t\tif (tooltipText) {\n\t\t\tthis._tooltipText.set(tooltipText);\n\t\t}\n\t\tthis._position.set(position);\n\n\t\tthis._tooltipClass.set(tooltipClasses);\n\t\tthis._arrowClass.set(arrowClasses);\n\t\tthis._svgClass.set(svgClasses);\n\t}\n}\n","import { inject, Injectable, InjectionToken, type Provider } from '@angular/core';\nimport { injectSkipDelay } from '@spartan-ng/brain/core';\n\nexport interface BrnTooltipGroupOptions {\n\t/** Time (ms) after the last tooltip closes during which others open instantly. `0` disables it. */\n\tskipDelayDuration: number;\n}\n\nconst defaultGroupOptions: BrnTooltipGroupOptions = { skipDelayDuration: 300 };\n\nconst BRN_TOOLTIP_GROUP_OPTIONS = new InjectionToken<BrnTooltipGroupOptions>('BrnTooltipGroupOptions');\n\n/** Skip-delay coordinator for grouped tooltips; provide via `provideBrnTooltipGroup` on the wrapper. */\n@Injectable()\nexport class BrnTooltipGroup {\n\tprivate readonly _options = inject(BRN_TOOLTIP_GROUP_OPTIONS);\n\tprivate readonly _skipDelay = injectSkipDelay(() => this._options.skipDelayDuration);\n\n\t/** Whether the next tooltip waits for its show delay, or opens instantly within the skip window. */\n\tpublic readonly isOpenDelayed = this._skipDelay.isOpenDelayed;\n\n\tpublic onOpen(): void {\n\t\tthis._skipDelay.open();\n\t}\n\n\tpublic onClose(): void {\n\t\tthis._skipDelay.close();\n\t}\n}\n\nexport function provideBrnTooltipGroup(options?: Partial<BrnTooltipGroupOptions>): Provider[] {\n\treturn [{ provide: BRN_TOOLTIP_GROUP_OPTIONS, useValue: { ...defaultGroupOptions, ...options } }, BrnTooltipGroup];\n}\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnTooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport const BRN_TOOLTIP_POSITIONS_MAP: Record<BrnTooltipPosition, ConnectedPosition> = {\n\ttop: {\n\t\toriginX: 'center',\n\t\toriginY: 'top',\n\t\toverlayX: 'center',\n\t\toverlayY: 'bottom',\n\t\toffsetY: -8,\n\t},\n\tbottom: {\n\t\toriginX: 'center',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'center',\n\t\toverlayY: 'top',\n\t\toffsetY: 8,\n\t},\n\tleft: {\n\t\toriginX: 'start',\n\t\toriginY: 'center',\n\t\toverlayX: 'end',\n\t\toverlayY: 'center',\n\t\toffsetX: -8,\n\t},\n\tright: {\n\t\toriginX: 'end',\n\t\toriginY: 'center',\n\t\toverlayX: 'start',\n\t\toverlayY: 'center',\n\t\toffsetX: 8,\n\t},\n};\n\n/** Fallback order for each preferred position when it doesn't fit in the viewport. */\nexport const BRN_TOOLTIP_FALLBACK_POSITIONS: Record<BrnTooltipPosition, BrnTooltipPosition[]> = {\n\ttop: ['bottom', 'right', 'left'],\n\tbottom: ['top', 'right', 'left'],\n\tleft: ['right', 'top', 'bottom'],\n\tright: ['left', 'top', 'bottom'],\n};\n\n/** Map a resolved CDK ConnectedPosition back to a BrnTooltipPosition, or null if no match. */\nexport function resolveTooltipPosition(pair: ConnectedPosition): BrnTooltipPosition | null {\n\tfor (const [pos, config] of Object.entries(BRN_TOOLTIP_POSITIONS_MAP)) {\n\t\tif (\n\t\t\tpair.originX === config.originX &&\n\t\t\tpair.originY === config.originY &&\n\t\t\tpair.overlayX === config.overlayX &&\n\t\t\tpair.overlayY === config.overlayY\n\t\t) {\n\t\t\treturn pos as BrnTooltipPosition;\n\t\t}\n\t}\n\treturn null;\n}\n","import { inject, InjectionToken, type ValueProvider } from '@angular/core';\nimport { type ClassValue } from 'clsx';\nimport { type BrnTooltipPosition } from './brn-tooltip-position';\n\nexport interface BrnTooltipOptions {\n\t/** Default delay when the tooltip is shown. */\n\tshowDelay: number;\n\t/** Default delay when the tooltip is hidden. */\n\thideDelay: number;\n\t/** Default position for tooltips. */\n\tposition?: BrnTooltipPosition;\n\t/** Additional classes for the SVG element in the tooltip arrow. */\n\tsvgClasses: ClassValue;\n\t/** Additional classes for the tooltip arrow element based on position. */\n\tarrowClasses: (position: BrnTooltipPosition) => ClassValue;\n\t/** Additional classes for the tooltip content element. */\n\ttooltipContentClasses: ClassValue;\n}\n\nexport const defaultOptions: BrnTooltipOptions = {\n\tshowDelay: 150,\n\thideDelay: 100,\n\tsvgClasses: '',\n\tarrowClasses: () => '',\n\ttooltipContentClasses: '',\n};\n\nconst BRN_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken<BrnTooltipOptions>('brn-tooltip-default-options', {\n\tprovidedIn: 'root',\n\tfactory: () => defaultOptions,\n});\n\nexport function provideBrnTooltipDefaultOptions(options: Partial<BrnTooltipOptions>): ValueProvider {\n\treturn { provide: BRN_TOOLTIP_DEFAULT_OPTIONS, useValue: { ...defaultOptions, ...options } };\n}\n\nexport function injectBrnTooltipDefaultOptions(): BrnTooltipOptions {\n\treturn inject(BRN_TOOLTIP_DEFAULT_OPTIONS, { optional: true }) ?? defaultOptions;\n}\n","import {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayPositionBuilder,\n\ttype OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\ttype ComponentRef,\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\toutput,\n\tRenderer2,\n\trunInInjectionContext,\n\ttype TemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { waitForElementAnimations } from '@spartan-ng/brain/core';\nimport { of, Subject, Subscription, timer } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { BrnTooltipContent } from './brn-tooltip-content';\nimport { BrnTooltipGroup } from './brn-tooltip-group';\nimport {\n\tBRN_TOOLTIP_FALLBACK_POSITIONS,\n\tBRN_TOOLTIP_POSITIONS_MAP,\n\tBrnTooltipPosition,\n\tresolveTooltipPosition,\n} from './brn-tooltip-position';\nimport { BrnTooltipType } from './brn-tooltip-type';\nimport { injectBrnTooltipDefaultOptions } from './brn-tooltip.token';\n\ninterface DelayConfig {\n\tisShow: boolean;\n\tdelay: number;\n\t/** Snapshotted at request time: open instantly (no enter animation) because the group window was open. */\n\tinstant: boolean;\n}\n\n@Directive({ selector: '[brnTooltip]', exportAs: 'brnTooltip' })\nexport class BrnTooltip {\n\tprivate readonly _config = injectBrnTooltipDefaultOptions();\n\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly _document = inject(DOCUMENT);\n\tprivate readonly _elementRef = inject(ElementRef<HTMLElement>);\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _overlayPositionBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _dir = inject(Directionality);\n\tprivate readonly _group = inject(BrnTooltipGroup, { optional: true });\n\n\tprivate _tooltipHovered = false;\n\tprivate _listenersRefs: (() => void)[] = [];\n\tprivate _delaySubject: Subject<DelayConfig> | undefined = undefined;\n\tprivate _componentRef: ComponentRef<BrnTooltipContent> | undefined = undefined;\n\tprivate _overlayRef: OverlayRef | undefined = undefined;\n\tprivate _ariaEffectRef: ReturnType<typeof effect> | undefined = undefined;\n\tprivate _positionChangeSub: Subscription | undefined = undefined;\n\t/** Bumped on every close/show so a pending exit-animation teardown can detect it was superseded. */\n\tprivate _closeGeneration = 0;\n\t/** The position currently applied to the content - the CDK-resolved one after a flip, not the raw input. */\n\tprivate _activePosition: BrnTooltipPosition | undefined = undefined;\n\n\tpublic readonly tooltipDisabled = input<boolean, boolean>(false, { transform: booleanAttribute });\n\tpublic readonly mutableTooltipDisabled = linkedSignal(this.tooltipDisabled);\n\n\tpublic readonly position = input<BrnTooltipPosition>(this._config.position ?? 'top');\n\tpublic readonly brnTooltip = input<BrnTooltipType>(null);\n\tpublic readonly showDelay = input<number, number>(this._config.showDelay, { transform: numberAttribute });\n\tpublic readonly hideDelay = input<number, number>(this._config.hideDelay, { transform: numberAttribute });\n\n\tpublic readonly show = output<void>();\n\tpublic readonly hide = output<void>();\n\n\tprivate readonly _tooltipText = computed<string | TemplateRef<void>>(() => {\n\t\tlet tooltipText = this.brnTooltip();\n\t\tif (!tooltipText) {\n\t\t\treturn '';\n\t\t} else if (typeof tooltipText === 'string') {\n\t\t\ttooltipText = tooltipText.trim();\n\t\t}\n\t\treturn tooltipText;\n\t});\n\n\tconstructor() {\n\t\tafterNextRender(() => {\n\t\t\tthis._overlayRef = this._overlay.create({\n\t\t\t\tdirection: this._dir,\n\t\t\t\tpositionStrategy: this._buildPositionStrategy(),\n\t\t\t});\n\n\t\t\tthis._dir.change.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n\t\t\t\tif (this._overlayRef) {\n\t\t\t\t\tthis._updatePosition();\n\t\t\t\t\tif (this._overlayRef.hasAttached()) {\n\t\t\t\t\t\tthis._overlayRef.updatePosition();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trunInInjectionContext(this._injector, () => {\n\t\t\t\tif (!this._overlayRef) return;\n\t\t\t\tthis._setupDelayMechanism();\n\t\t\t\tthis._cleanupTriggerEvents();\n\t\t\t\tthis._initTriggers();\n\n\t\t\t\t/**\n\t\t\t\t * This effect is used to update the tooltip content when the tooltip text changes.\n\t\t\t\t * It's the reactive bridge between the tooltip text and the tooltip content.\n\t\t\t\t */\n\t\t\t\teffect(() => {\n\t\t\t\t\tconst text = this._tooltipText();\n\t\t\t\t\tif (this._componentRef) {\n\t\t\t\t\t\tthis._applyContentProps(this._componentRef.instance, this._activePosition ?? this.position(), text);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._listenersRefs = [\n\t\t\t\t\t...this._listenersRefs,\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseenter', () => (this._tooltipHovered = true)),\n\t\t\t\t\tthis._renderer.listen(this._overlayRef.hostElement, 'mouseleave', () => {\n\t\t\t\t\t\tthis._tooltipHovered = false;\n\t\t\t\t\t\tthis.delay(false, this.hideDelay());\n\t\t\t\t\t}),\n\t\t\t\t];\n\t\t\t});\n\t\t});\n\n\t\tthis._destroyRef.onDestroy(() => {\n\t\t\tthis._clearAriaDescribedBy();\n\t\t\tthis._delaySubject?.complete();\n\t\t\tthis._cleanupTriggerEvents();\n\t\t\tthis._overlayRef?.dispose();\n\t\t});\n\t}\n\n\tprivate _updatePosition(): void {\n\t\tconst strategy = this._overlayRef?.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n\t\tif (strategy) {\n\t\t\tstrategy.withPositions(this._getAllPositions());\n\t\t}\n\t}\n\n\tprivate _buildPositionStrategy() {\n\t\treturn this._overlayPositionBuilder\n\t\t\t.flexibleConnectedTo(this._elementRef)\n\t\t\t.withPositions(this._getAllPositions())\n\t\t\t.withViewportMargin(8);\n\t}\n\n\t/** Build [preferred, ...fallbacks] position array for viewport-aware auto-flip. */\n\tprivate _getAllPositions(): ConnectedPosition[] {\n\t\tconst preferred = this.position();\n\t\treturn [preferred, ...BRN_TOOLTIP_FALLBACK_POSITIONS[preferred]].map((pos) => this._getAdjustedPositionFor(pos));\n\t}\n\n\tprivate _getAdjustedPositionFor(pos: BrnTooltipPosition): ConnectedPosition {\n\t\tconst position = BRN_TOOLTIP_POSITIONS_MAP[pos];\n\t\tconst isLtr = this._dir.value !== 'rtl';\n\n\t\treturn {\n\t\t\t...position,\n\t\t\toffsetX: position.offsetX != null ? (isLtr ? position.offsetX : -position.offsetX) : undefined,\n\t\t};\n\t}\n\n\tprivate _initTriggers() {\n\t\tthis._initScrollListener();\n\t\tthis._initHoverListeners();\n\t}\n\n\tprivate _initHoverListeners(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseenter', () => this._requestShow()),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'mouseleave', () => this.delay(false, this.hideDelay())),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'focus', () => this._requestShow()),\n\t\t\tthis._renderer.listen(this._elementRef.nativeElement, 'blur', () => this.delay(false, this.hideDelay())),\n\t\t];\n\t}\n\n\t/** Snapshot the group skip decision once, so the delay and the instant-open state agree even if a\n\t * sibling flips the window during the show delay. */\n\tprivate _requestShow(): void {\n\t\tconst skip = !!this._group && !this._group.isOpenDelayed();\n\t\tthis.delay(true, skip ? 0 : this.showDelay(), skip);\n\t}\n\n\tprivate _initScrollListener(): void {\n\t\tthis._listenersRefs = [\n\t\t\t...this._listenersRefs,\n\t\t\tthis._renderer.listen(this._document.defaultView, 'scroll', () => this._hide()),\n\t\t];\n\t}\n\n\tprivate _cleanupTriggerEvents(): void {\n\t\tfor (const eventRef of this._listenersRefs) {\n\t\t\teventRef();\n\t\t}\n\t\tthis._listenersRefs = [];\n\t}\n\n\tprivate delay(isShow: boolean, delay = -1, instant = false): void {\n\t\tthis._delaySubject?.next({ isShow, delay, instant });\n\t}\n\n\tprivate _setupDelayMechanism(): void {\n\t\tthis._delaySubject?.complete();\n\t\tthis._delaySubject = new Subject<DelayConfig>();\n\n\t\tthis._delaySubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap((config) => (config.delay < 0 ? of(config) : timer(config.delay).pipe(map(() => config)))),\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t)\n\t\t\t.subscribe((config) => {\n\t\t\t\tif (config.isShow) {\n\t\t\t\t\tthis._show(config.instant);\n\t\t\t\t} else {\n\t\t\t\t\tthis._hide();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate _show(instant = false): void {\n\t\tif (!this._tooltipText() || this.mutableTooltipDisabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// 'instant-open' suppresses the enter animation. Decided with the delay at request time so a sibling\n\t\t// flipping the group window mid-delay can't desync the animation from the wait that actually happened.\n\t\tconst openState = instant ? 'instant-open' : 'open';\n\n\t\t// Already attached: revive only if it is mid-close (exit animation playing). Cancel the\n\t\t// pending teardown and flip it back open instead of letting it fade out and detach.\n\t\tif (this._componentRef) {\n\t\t\tif (this._componentRef.instance.state() === 'closed') {\n\t\t\t\tthis._closeGeneration++;\n\t\t\t\tthis._componentRef.instance.state.set(openState);\n\t\t\t\t// Re-apply props so a programmatic text change during the close is reflected on revive.\n\t\t\t\t// Keep the live (possibly flipped) position rather than resetting to the raw input.\n\t\t\t\tthis._applyContentProps(this._componentRef.instance, this._activePosition ?? this.position());\n\t\t\t\tthis._group?.onOpen();\n\t\t\t\tthis.show.emit();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst tooltipPortal = new ComponentPortal(BrnTooltipContent);\n\t\tthis._componentRef = this._overlayRef?.attach(tooltipPortal);\n\t\tthis._componentRef?.onDestroy(() => {\n\t\t\tthis._componentRef = undefined;\n\t\t});\n\t\tthis._componentRef?.instance.state.set(openState);\n\t\tthis._group?.onOpen();\n\t\tif (this._componentRef) {\n\t\t\tthis._applyContentProps(this._componentRef.instance, this.position());\n\t\t}\n\n\t\t// Subscribe to position changes for the lifetime of the tooltip so that\n\t\t// arrow direction and CSS classes stay in sync when the CDK flips the\n\t\t// overlay (initial show, viewport resize, scroll, etc.).\n\t\tconst strategy = this._overlayRef?.getConfig().positionStrategy as FlexibleConnectedPositionStrategy | undefined;\n\t\tif (strategy && this._componentRef) {\n\t\t\tconst compRef = this._componentRef;\n\t\t\tthis._positionChangeSub = strategy.positionChanges\n\t\t\t\t.pipe(takeUntilDestroyed(this._destroyRef))\n\t\t\t\t.subscribe((change) => {\n\t\t\t\t\tconst resolved = resolveTooltipPosition(change.connectionPair);\n\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\tthis._applyContentProps(compRef.instance, resolved, null);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\trunInInjectionContext(this._injector, () => {\n\t\t\tthis._ariaEffectRef = effect(() => {\n\t\t\t\tconst tooltipId = this._componentRef?.instance.id();\n\t\t\t\tif (tooltipId) {\n\t\t\t\t\tthis._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', tooltipId);\n\t\t\t\t\tthis._ariaEffectRef?.destroy();\n\t\t\t\t\tthis._ariaEffectRef = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tthis.show.emit();\n\t}\n\n\t/** Apply text + position (and the position-derived classes) to the content, recording the position as\n\t * active. Pass `text = null` for a position-only update that keeps the content's existing text. */\n\tprivate _applyContentProps(\n\t\tcontent: BrnTooltipContent,\n\t\tposition: BrnTooltipPosition,\n\t\ttext: BrnTooltipType = this._tooltipText(),\n\t): void {\n\t\tthis._activePosition = position;\n\t\tcontent.setProps(\n\t\t\ttext,\n\t\t\tposition,\n\t\t\tthis._config.tooltipContentClasses,\n\t\t\tthis._config.arrowClasses(position),\n\t\t\tthis._config.svgClasses,\n\t\t);\n\t}\n\n\tprivate _hide(): void {\n\t\tif (!this._componentRef || this._tooltipHovered) return;\n\t\t// Already closing (exit animation in flight): nothing to do.\n\t\tif (this._componentRef.instance.state() === 'closed') return;\n\t\tthis._componentRef.instance.state.set('closed');\n\t\tthis._group?.onClose();\n\t\tthis.hide.emit();\n\t\tthis._scheduleDetach(this._componentRef);\n\t}\n\n\t/**\n\t * Keep the content mounted until its `data-[state=closed]` exit animation finishes, then tear it\n\t * down. A re-show (revive) bumps `_closeGeneration`, which cancels the pending detach.\n\t */\n\tprivate _scheduleDetach(componentRef: ComponentRef<BrnTooltipContent>): void {\n\t\tconst generation = ++this._closeGeneration;\n\t\tconst content = componentRef.location.nativeElement as HTMLElement;\n\t\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tvoid waitForElementAnimations(content).then(() => {\n\t\t\t\t\tif (generation === this._closeGeneration) this._detach();\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\t}\n\n\tprivate _detach(): void {\n\t\tthis._clearAriaDescribedBy();\n\t\tthis._positionChangeSub?.unsubscribe();\n\t\tthis._positionChangeSub = undefined;\n\t\tthis._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n\t\tthis._overlayRef?.detach();\n\t}\n\n\tprivate _clearAriaDescribedBy(): void {\n\t\tif (this._ariaEffectRef) {\n\t\t\tthis._ariaEffectRef.destroy();\n\t\t\tthis._ariaEffectRef = undefined;\n\t\t}\n\t}\n}\n","import { BrnTooltip } from './lib/brn-tooltip';\nimport { BrnTooltipContent } from './lib/brn-tooltip-content';\n\nexport * from './lib/brn-tooltip';\nexport * from './lib/brn-tooltip-content';\nexport * from './lib/brn-tooltip-group';\nexport { BRN_TOOLTIP_FALLBACK_POSITIONS, BrnTooltipPosition, resolveTooltipPosition } from './lib/brn-tooltip-position';\nexport * from './lib/brn-tooltip-type';\nexport * from './lib/brn-tooltip.token';\n\nexport const BrnTooltipImports = [BrnTooltip, BrnTooltipContent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -22,12 +22,15 @@ declare class BrnResizablePanel {
|
|
|
22
22
|
/** Whether this panel can be collapsed entirely. */
|
|
23
23
|
readonly collapsible: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
|
|
24
24
|
/** Reactive signal holding the current size of the panel. */
|
|
25
|
-
protected readonly _panelSize: _angular_core.WritableSignal<number>;
|
|
25
|
+
protected readonly _panelSize: _angular_core.WritableSignal<number | undefined>;
|
|
26
26
|
/**
|
|
27
27
|
* CSS flex style for this panel, derived from its current size.
|
|
28
28
|
* Format: `"flex-grow flex-shrink flex-basis"`.
|
|
29
29
|
*
|
|
30
|
-
*
|
|
30
|
+
* Before the group synchronizes the layout, falls back to {@link defaultSize} so the panel
|
|
31
|
+
* paints at its intended size on the very first render instead of briefly flexing to an equal
|
|
32
|
+
* share (e.g. 50/50) and then snapping to the configured size. Example: `"25 1 0"` means
|
|
33
|
+
* 25% width (or height in vertical layout).
|
|
31
34
|
*/
|
|
32
35
|
protected readonly _flex: _angular_core.Signal<string>;
|
|
33
36
|
/**
|