@eric-emg/symphiq-components 1.2.41 → 1.2.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/symphiq-components.mjs +193 -25
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts +4 -1
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -21670,16 +21670,56 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
21670
21670
|
// Store reference for use in scrollToSection and tooltips
|
|
21671
21671
|
this.embeddedScrollContainer = scrollElement;
|
|
21672
21672
|
this.tooltipService.setScrollContainer(scrollElement);
|
|
21673
|
-
//
|
|
21674
|
-
const
|
|
21675
|
-
|
|
21676
|
-
|
|
21677
|
-
|
|
21678
|
-
|
|
21679
|
-
|
|
21680
|
-
|
|
21681
|
-
|
|
21682
|
-
|
|
21673
|
+
// Helper function to check and update scroll state
|
|
21674
|
+
const checkInitialScroll = () => {
|
|
21675
|
+
const currentScrollTop = scrollElement.scrollTop;
|
|
21676
|
+
const scrollHeight = scrollElement.scrollHeight;
|
|
21677
|
+
const clientHeight = scrollElement.clientHeight;
|
|
21678
|
+
console.log('[SCROLL DEBUG] Checking initial scroll position', {
|
|
21679
|
+
scrollTop: currentScrollTop,
|
|
21680
|
+
scrollHeight,
|
|
21681
|
+
clientHeight,
|
|
21682
|
+
shouldCollapse: currentScrollTop > 50
|
|
21683
|
+
});
|
|
21684
|
+
if (currentScrollTop > 50) {
|
|
21685
|
+
console.log('[SCROLL DEBUG] Collapsing header due to scroll position', { currentScrollTop });
|
|
21686
|
+
this.isScrolled.set(true);
|
|
21687
|
+
}
|
|
21688
|
+
else {
|
|
21689
|
+
console.log('[SCROLL DEBUG] Expanding header due to scroll position', { currentScrollTop });
|
|
21690
|
+
this.isScrolled.set(false);
|
|
21691
|
+
}
|
|
21692
|
+
};
|
|
21693
|
+
// Use ResizeObserver to detect when content has finished rendering
|
|
21694
|
+
let lastHeight = scrollElement.scrollHeight;
|
|
21695
|
+
let stableCount = 0;
|
|
21696
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
21697
|
+
const currentHeight = scrollElement.scrollHeight;
|
|
21698
|
+
console.log('[SCROLL DEBUG] Content height changed', {
|
|
21699
|
+
lastHeight,
|
|
21700
|
+
currentHeight,
|
|
21701
|
+
stableCount
|
|
21702
|
+
});
|
|
21703
|
+
if (currentHeight === lastHeight) {
|
|
21704
|
+
stableCount++;
|
|
21705
|
+
// Height has been stable for 2 consecutive observations
|
|
21706
|
+
if (stableCount >= 2) {
|
|
21707
|
+
console.log('[SCROLL DEBUG] Content height stabilized, checking scroll position');
|
|
21708
|
+
checkInitialScroll();
|
|
21709
|
+
resizeObserver.disconnect();
|
|
21710
|
+
}
|
|
21711
|
+
}
|
|
21712
|
+
else {
|
|
21713
|
+
stableCount = 0;
|
|
21714
|
+
lastHeight = currentHeight;
|
|
21715
|
+
// Check on each significant height change
|
|
21716
|
+
checkInitialScroll();
|
|
21717
|
+
}
|
|
21718
|
+
});
|
|
21719
|
+
// Observe the scroll element for size changes
|
|
21720
|
+
resizeObserver.observe(scrollElement);
|
|
21721
|
+
// Also check immediately
|
|
21722
|
+
checkInitialScroll();
|
|
21683
21723
|
// Attach scroll listeners
|
|
21684
21724
|
scrollElement.addEventListener('scroll', () => this.onContainerScroll(scrollElement), { passive: true });
|
|
21685
21725
|
ionContent.addEventListener('ionScroll', () => this.onContainerScroll(scrollElement), { passive: true });
|
|
@@ -21706,12 +21746,48 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
21706
21746
|
});
|
|
21707
21747
|
this.embeddedScrollContainer = element;
|
|
21708
21748
|
this.tooltipService.setScrollContainer(element);
|
|
21709
|
-
//
|
|
21710
|
-
const
|
|
21711
|
-
|
|
21712
|
-
console.log('[SCROLL DEBUG]
|
|
21713
|
-
|
|
21714
|
-
|
|
21749
|
+
// Helper function to check and update scroll state
|
|
21750
|
+
const checkInitialScroll = () => {
|
|
21751
|
+
const currentScrollTop = element.scrollTop;
|
|
21752
|
+
console.log('[SCROLL DEBUG] Checking initial scroll position (fallback)', {
|
|
21753
|
+
scrollTop: currentScrollTop,
|
|
21754
|
+
shouldCollapse: currentScrollTop > 50
|
|
21755
|
+
});
|
|
21756
|
+
if (currentScrollTop > 50) {
|
|
21757
|
+
console.log('[SCROLL DEBUG] Collapsing header due to scroll position', { currentScrollTop });
|
|
21758
|
+
this.isScrolled.set(true);
|
|
21759
|
+
}
|
|
21760
|
+
else {
|
|
21761
|
+
console.log('[SCROLL DEBUG] Expanding header due to scroll position', { currentScrollTop });
|
|
21762
|
+
this.isScrolled.set(false);
|
|
21763
|
+
}
|
|
21764
|
+
};
|
|
21765
|
+
// Use ResizeObserver to detect when content has finished rendering
|
|
21766
|
+
let lastHeight = element.scrollHeight;
|
|
21767
|
+
let stableCount = 0;
|
|
21768
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
21769
|
+
const currentHeight = element.scrollHeight;
|
|
21770
|
+
console.log('[SCROLL DEBUG] Content height changed (fallback)', {
|
|
21771
|
+
lastHeight,
|
|
21772
|
+
currentHeight,
|
|
21773
|
+
stableCount
|
|
21774
|
+
});
|
|
21775
|
+
if (currentHeight === lastHeight) {
|
|
21776
|
+
stableCount++;
|
|
21777
|
+
if (stableCount >= 2) {
|
|
21778
|
+
console.log('[SCROLL DEBUG] Content height stabilized (fallback), checking scroll position');
|
|
21779
|
+
checkInitialScroll();
|
|
21780
|
+
resizeObserver.disconnect();
|
|
21781
|
+
}
|
|
21782
|
+
}
|
|
21783
|
+
else {
|
|
21784
|
+
stableCount = 0;
|
|
21785
|
+
lastHeight = currentHeight;
|
|
21786
|
+
checkInitialScroll();
|
|
21787
|
+
}
|
|
21788
|
+
});
|
|
21789
|
+
resizeObserver.observe(element);
|
|
21790
|
+
checkInitialScroll();
|
|
21715
21791
|
element.addEventListener('scroll', () => this.onContainerScroll(element), { passive: true });
|
|
21716
21792
|
return true;
|
|
21717
21793
|
}
|
|
@@ -21723,12 +21799,48 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
21723
21799
|
});
|
|
21724
21800
|
this.embeddedScrollContainer = element;
|
|
21725
21801
|
this.tooltipService.setScrollContainer(element);
|
|
21726
|
-
//
|
|
21727
|
-
const
|
|
21728
|
-
|
|
21729
|
-
console.log('[SCROLL DEBUG]
|
|
21730
|
-
|
|
21731
|
-
|
|
21802
|
+
// Helper function to check and update scroll state
|
|
21803
|
+
const checkInitialScroll = () => {
|
|
21804
|
+
const currentScrollTop = element.scrollTop;
|
|
21805
|
+
console.log('[SCROLL DEBUG] Checking initial scroll position (regular)', {
|
|
21806
|
+
scrollTop: currentScrollTop,
|
|
21807
|
+
shouldCollapse: currentScrollTop > 50
|
|
21808
|
+
});
|
|
21809
|
+
if (currentScrollTop > 50) {
|
|
21810
|
+
console.log('[SCROLL DEBUG] Collapsing header due to scroll position', { currentScrollTop });
|
|
21811
|
+
this.isScrolled.set(true);
|
|
21812
|
+
}
|
|
21813
|
+
else {
|
|
21814
|
+
console.log('[SCROLL DEBUG] Expanding header due to scroll position', { currentScrollTop });
|
|
21815
|
+
this.isScrolled.set(false);
|
|
21816
|
+
}
|
|
21817
|
+
};
|
|
21818
|
+
// Use ResizeObserver to detect when content has finished rendering
|
|
21819
|
+
let lastHeight = element.scrollHeight;
|
|
21820
|
+
let stableCount = 0;
|
|
21821
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
21822
|
+
const currentHeight = element.scrollHeight;
|
|
21823
|
+
console.log('[SCROLL DEBUG] Content height changed (regular)', {
|
|
21824
|
+
lastHeight,
|
|
21825
|
+
currentHeight,
|
|
21826
|
+
stableCount
|
|
21827
|
+
});
|
|
21828
|
+
if (currentHeight === lastHeight) {
|
|
21829
|
+
stableCount++;
|
|
21830
|
+
if (stableCount >= 2) {
|
|
21831
|
+
console.log('[SCROLL DEBUG] Content height stabilized (regular), checking scroll position');
|
|
21832
|
+
checkInitialScroll();
|
|
21833
|
+
resizeObserver.disconnect();
|
|
21834
|
+
}
|
|
21835
|
+
}
|
|
21836
|
+
else {
|
|
21837
|
+
stableCount = 0;
|
|
21838
|
+
lastHeight = currentHeight;
|
|
21839
|
+
checkInitialScroll();
|
|
21840
|
+
}
|
|
21841
|
+
});
|
|
21842
|
+
resizeObserver.observe(element);
|
|
21843
|
+
checkInitialScroll();
|
|
21732
21844
|
element.addEventListener('scroll', () => this.onContainerScroll(element), { passive: true });
|
|
21733
21845
|
return true;
|
|
21734
21846
|
}
|
|
@@ -23687,12 +23799,14 @@ class SymphiqFunnelAnalysisPreviewComponent {
|
|
|
23687
23799
|
this.analysisInput = input(undefined, ...(ngDevMode ? [{ debugName: "analysisInput", alias: 'funnelAnalysis' }] : [{ alias: 'funnelAnalysis' }]));
|
|
23688
23800
|
this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
23689
23801
|
this.useSampleData = input(false, ...(ngDevMode ? [{ debugName: "useSampleData" }] : []));
|
|
23802
|
+
this.scrollContainerId = input(undefined, ...(ngDevMode ? [{ debugName: "scrollContainerId" }] : []));
|
|
23690
23803
|
// Computed theme
|
|
23691
23804
|
this.isLightMode = computed(() => this.viewMode() === ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "isLightMode" }] : []));
|
|
23692
23805
|
// Outputs
|
|
23693
23806
|
this.onViewAnalysis = output();
|
|
23694
23807
|
// Services
|
|
23695
23808
|
this.tooltipDataService = inject(TooltipDataService);
|
|
23809
|
+
this.tooltipService = inject(TooltipService);
|
|
23696
23810
|
this.competitiveScoreService = inject(CompetitiveScoreService);
|
|
23697
23811
|
// Analysis data - use sample data if useSampleData is true, otherwise use provided data
|
|
23698
23812
|
this.analysisData = computed(() => {
|
|
@@ -23902,6 +24016,60 @@ class SymphiqFunnelAnalysisPreviewComponent {
|
|
|
23902
24016
|
}, ...(ngDevMode ? [{ debugName: "statusIconClass" }] : []));
|
|
23903
24017
|
this.insightsCardClass = computed(() => getInsightsCardClasses(this.viewMode()), ...(ngDevMode ? [{ debugName: "insightsCardClass" }] : []));
|
|
23904
24018
|
this.insightsBadgeClass = computed(() => getInsightsBadgeClasses(this.viewMode()), ...(ngDevMode ? [{ debugName: "insightsBadgeClass" }] : []));
|
|
24019
|
+
// Set up scroll container for tooltips when scrollContainerId changes
|
|
24020
|
+
effect(() => {
|
|
24021
|
+
const containerId = this.scrollContainerId();
|
|
24022
|
+
if (containerId) {
|
|
24023
|
+
const setupTooltipScrollContainer = () => {
|
|
24024
|
+
const element = document.getElementById(containerId);
|
|
24025
|
+
if (!element) {
|
|
24026
|
+
return false;
|
|
24027
|
+
}
|
|
24028
|
+
// Check if this is an Ionic ion-content element
|
|
24029
|
+
if (element.tagName.toLowerCase() === 'ion-content') {
|
|
24030
|
+
const ionContent = element;
|
|
24031
|
+
// Get the scrollable element from Ionic
|
|
24032
|
+
if (typeof ionContent.getScrollElement === 'function') {
|
|
24033
|
+
ionContent.getScrollElement().then((scrollElement) => {
|
|
24034
|
+
this.tooltipService.setScrollContainer(scrollElement);
|
|
24035
|
+
}).catch((error) => {
|
|
24036
|
+
console.error('Error getting Ionic scroll element for tooltips:', error);
|
|
24037
|
+
});
|
|
24038
|
+
return true;
|
|
24039
|
+
}
|
|
24040
|
+
else {
|
|
24041
|
+
// Fallback for older Ionic versions
|
|
24042
|
+
this.tooltipService.setScrollContainer(element);
|
|
24043
|
+
return true;
|
|
24044
|
+
}
|
|
24045
|
+
}
|
|
24046
|
+
else {
|
|
24047
|
+
// Regular HTML element
|
|
24048
|
+
this.tooltipService.setScrollContainer(element);
|
|
24049
|
+
return true;
|
|
24050
|
+
}
|
|
24051
|
+
};
|
|
24052
|
+
// Try to set up immediately
|
|
24053
|
+
if (!setupTooltipScrollContainer()) {
|
|
24054
|
+
// If not found, retry with delays (element might not be in DOM yet)
|
|
24055
|
+
let retries = 0;
|
|
24056
|
+
const maxRetries = 10;
|
|
24057
|
+
const retryInterval = setInterval(() => {
|
|
24058
|
+
retries++;
|
|
24059
|
+
if (setupTooltipScrollContainer() || retries >= maxRetries) {
|
|
24060
|
+
clearInterval(retryInterval);
|
|
24061
|
+
if (retries >= maxRetries) {
|
|
24062
|
+
console.warn(`Tooltip scroll container with id "${containerId}" not found after ${maxRetries} retries.`);
|
|
24063
|
+
}
|
|
24064
|
+
}
|
|
24065
|
+
}, 100);
|
|
24066
|
+
}
|
|
24067
|
+
}
|
|
24068
|
+
else {
|
|
24069
|
+
// No scroll container specified, reset to null (use window)
|
|
24070
|
+
this.tooltipService.setScrollContainer(null);
|
|
24071
|
+
}
|
|
24072
|
+
});
|
|
23905
24073
|
}
|
|
23906
24074
|
// Helper methods for metrics
|
|
23907
24075
|
metricMiniCardClass(metric) {
|
|
@@ -24014,7 +24182,7 @@ class SymphiqFunnelAnalysisPreviewComponent {
|
|
|
24014
24182
|
this.onViewAnalysis.emit();
|
|
24015
24183
|
}
|
|
24016
24184
|
static { this.ɵfac = function SymphiqFunnelAnalysisPreviewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SymphiqFunnelAnalysisPreviewComponent)(); }; }
|
|
24017
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SymphiqFunnelAnalysisPreviewComponent, selectors: [["symphiq-funnel-analysis-preview"]], inputs: { analysisInput: [1, "funnelAnalysis", "analysisInput"], viewMode: [1, "viewMode"], useSampleData: [1, "useSampleData"] }, outputs: { onViewAnalysis: "onViewAnalysis" }, decls: 34, vars: 40, consts: [[1, "w-full", "sm:max-w-md", "rounded-xl", "border", "shadow-lg", "backdrop-blur-lg", "transition-all", "duration-300", "sm:hover:shadow-xl", "sm:hover:scale-[1.01]", "overflow-hidden"], [1, "px-3", "py-2", "sm:px-4", "sm:py-3", "border-b", "flex", "items-center", "justify-between", "gap-2", "sm:gap-3"], [1, "flex-1", "min-w-0"], [1, "text-sm", "font-bold", "truncate"], [1, "text-xs", "truncate", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-center", "gap-1.5", "sm:gap-2", "flex-shrink-0"], ["tooltipType", "badge", 1, "px-2", "py-1", "rounded", "text-center", "min-w-[44px]", "min-h-[44px]", "flex", "items-center", "justify-center", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "text-lg", "font-bold"], [1, "p-3", "sm:p-4", "space-y-2.5", "sm:space-y-3"], ["tooltipType", "metric", 1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "cursor-help", "active:scale-[0.98]", 3, "class", "libSymphiqTooltip", "tooltipPosition"], [1, "grid", "grid-cols-2", "gap-1.5", "sm:gap-2"], ["tooltipType", "metric", 1, "rounded-lg", "p-1.5", "sm:p-2", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "class", "libSymphiqTooltip", "tooltipPosition"], [1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "class"], [1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]"], [1, "flex", "items-center", "justify-between", "mb-2"], [1, "flex", "items-center", "gap-1.5", "sm:gap-2"], [1, "text-lg"], [1, "text-xs", "sm:text-sm", "font-bold"], ["tooltipType", "competitive", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "class", "animate-pulse", "libSymphiqTooltip", "tooltipPosition"], ["tooltipType", "narrative", 1, "text-xs", "leading-relaxed", "line-clamp-3", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "px-3", "py-1.5", "sm:px-4", "sm:py-2", "border-t"], [1, "w-full", "py-2.5", "sm:py-2", "rounded-lg", "font-semibold", "text-xs", "transition-all", "duration-300", "sm:hover:scale-105", "active:scale-[0.98]", "flex", "items-center", "justify-center", "gap-2", "group", "cursor-pointer", "min-h-[44px]", 3, "click"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3", "transition-transform", "duration-300", "group-hover:translate-x-1"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7l5 5m0 0l-5 5m5-5H6"], ["tooltipType", "metric", 1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "cursor-help", "active:scale-[0.98]", 3, "libSymphiqTooltip", "tooltipPosition"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5", "sm:w-4", "sm:h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "text-xs", "font-semibold"], ["tooltipType", "status", 1, "px-2", "py-1", "rounded", "text-xs", "font-bold", "flex", "items-center", "gap-1", "relative", "z-10", "min-h-[32px]", 3, "mouseenter", "mouseleave", "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-baseline", "justify-between"], [1, "text-lg", "sm:text-xl", "font-bold"], [1, "flex", "items-center", "gap-1"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-3", "h-3"], ["fill-rule", "evenodd", "d", "M5.293 9.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 7.414V15a1 1 0 11-2 0V7.414L6.707 9.707a1 1 0 01-1.414 0z", "clip-rule", "evenodd"], ["tooltipType", "metric", 1, "rounded-lg", "p-1.5", "sm:p-2", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-center", "justify-between", "mb-1"], [1, "text-xs", "font-medium", "truncate", "flex-1"], [1, "w-2", "h-2", "rounded-full", "flex-shrink-0"], [1, "flex", "items-center", "justify-between"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"], ["tooltipType", "insightsList", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "libSymphiqTooltip", "tooltipPosition"], ["tooltipType", "competitive", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "libSymphiqTooltip", "tooltipPosition"]], template: function SymphiqFunnelAnalysisPreviewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
24185
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SymphiqFunnelAnalysisPreviewComponent, selectors: [["symphiq-funnel-analysis-preview"]], inputs: { analysisInput: [1, "funnelAnalysis", "analysisInput"], viewMode: [1, "viewMode"], useSampleData: [1, "useSampleData"], scrollContainerId: [1, "scrollContainerId"] }, outputs: { onViewAnalysis: "onViewAnalysis" }, decls: 34, vars: 40, consts: [[1, "w-full", "sm:max-w-md", "rounded-xl", "border", "shadow-lg", "backdrop-blur-lg", "transition-all", "duration-300", "sm:hover:shadow-xl", "sm:hover:scale-[1.01]", "overflow-hidden"], [1, "px-3", "py-2", "sm:px-4", "sm:py-3", "border-b", "flex", "items-center", "justify-between", "gap-2", "sm:gap-3"], [1, "flex-1", "min-w-0"], [1, "text-sm", "font-bold", "truncate"], [1, "text-xs", "truncate", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-center", "gap-1.5", "sm:gap-2", "flex-shrink-0"], ["tooltipType", "badge", 1, "px-2", "py-1", "rounded", "text-center", "min-w-[44px]", "min-h-[44px]", "flex", "items-center", "justify-center", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "text-lg", "font-bold"], [1, "p-3", "sm:p-4", "space-y-2.5", "sm:space-y-3"], ["tooltipType", "metric", 1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "cursor-help", "active:scale-[0.98]", 3, "class", "libSymphiqTooltip", "tooltipPosition"], [1, "grid", "grid-cols-2", "gap-1.5", "sm:gap-2"], ["tooltipType", "metric", 1, "rounded-lg", "p-1.5", "sm:p-2", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "class", "libSymphiqTooltip", "tooltipPosition"], [1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "class"], [1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]"], [1, "flex", "items-center", "justify-between", "mb-2"], [1, "flex", "items-center", "gap-1.5", "sm:gap-2"], [1, "text-lg"], [1, "text-xs", "sm:text-sm", "font-bold"], ["tooltipType", "competitive", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "class", "animate-pulse", "libSymphiqTooltip", "tooltipPosition"], ["tooltipType", "narrative", 1, "text-xs", "leading-relaxed", "line-clamp-3", "cursor-help", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "px-3", "py-1.5", "sm:px-4", "sm:py-2", "border-t"], [1, "w-full", "py-2.5", "sm:py-2", "rounded-lg", "font-semibold", "text-xs", "transition-all", "duration-300", "sm:hover:scale-105", "active:scale-[0.98]", "flex", "items-center", "justify-center", "gap-2", "group", "cursor-pointer", "min-h-[44px]", 3, "click"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3", "transition-transform", "duration-300", "group-hover:translate-x-1"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7l5 5m0 0l-5 5m5-5H6"], ["tooltipType", "metric", 1, "rounded-lg", "p-2.5", "sm:p-3", "border", "transition-all", "duration-200", "sm:hover:scale-105", "cursor-help", "active:scale-[0.98]", 3, "libSymphiqTooltip", "tooltipPosition"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5", "sm:w-4", "sm:h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "text-xs", "font-semibold"], ["tooltipType", "status", 1, "px-2", "py-1", "rounded", "text-xs", "font-bold", "flex", "items-center", "gap-1", "relative", "z-10", "min-h-[32px]", 3, "mouseenter", "mouseleave", "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-baseline", "justify-between"], [1, "text-lg", "sm:text-xl", "font-bold"], [1, "flex", "items-center", "gap-1"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-3", "h-3"], ["fill-rule", "evenodd", "d", "M5.293 9.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 7.414V15a1 1 0 11-2 0V7.414L6.707 9.707a1 1 0 01-1.414 0z", "clip-rule", "evenodd"], ["tooltipType", "metric", 1, "rounded-lg", "p-1.5", "sm:p-2", "border", "transition-all", "duration-200", "sm:hover:scale-105", "active:scale-[0.98]", 3, "libSymphiqTooltip", "tooltipPosition"], [1, "flex", "items-center", "justify-between", "mb-1"], [1, "text-xs", "font-medium", "truncate", "flex-1"], [1, "w-2", "h-2", "rounded-full", "flex-shrink-0"], [1, "flex", "items-center", "justify-between"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"], ["tooltipType", "insightsList", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "libSymphiqTooltip", "tooltipPosition"], ["tooltipType", "competitive", 1, "px-2", "py-0.5", "rounded", "text-xs", "font-bold", 3, "libSymphiqTooltip", "tooltipPosition"]], template: function SymphiqFunnelAnalysisPreviewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
24018
24186
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h3", 3);
|
|
24019
24187
|
i0.ɵɵtext(4, "Funnel Analysis");
|
|
24020
24188
|
i0.ɵɵelementEnd();
|
|
@@ -24276,8 +24444,8 @@ class SymphiqFunnelAnalysisPreviewComponent {
|
|
|
24276
24444
|
<!-- Tooltip Container -->
|
|
24277
24445
|
<symphiq-tooltip-container />
|
|
24278
24446
|
`, styles: ["@keyframes statusPulse{0%,to{opacity:1}50%{opacity:.6}}.status-pulse{animation:statusPulse 2s ease-in-out infinite}\n"] }]
|
|
24279
|
-
}],
|
|
24280
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisPreviewComponent, { className: "SymphiqFunnelAnalysisPreviewComponent", filePath: "lib/components/funnel-analysis-preview/symphiq-funnel-analysis-preview.component.ts", lineNumber:
|
|
24447
|
+
}], () => [], { analysisInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelAnalysis", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], useSampleData: [{ type: i0.Input, args: [{ isSignal: true, alias: "useSampleData", required: false }] }], scrollContainerId: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollContainerId", required: false }] }], onViewAnalysis: [{ type: i0.Output, args: ["onViewAnalysis"] }] }); })();
|
|
24448
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisPreviewComponent, { className: "SymphiqFunnelAnalysisPreviewComponent", filePath: "lib/components/funnel-analysis-preview/symphiq-funnel-analysis-preview.component.ts", lineNumber: 216 }); })();
|
|
24281
24449
|
|
|
24282
24450
|
const _c0$3 = ["chartdiv"];
|
|
24283
24451
|
class LineChartComponent {
|