@memberjunction/ng-timeline 5.3.1 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/index.test.js.map +1 -1
- package/dist/__tests__/types.test.js.map +1 -1
- package/dist/lib/component/timeline.component.js.map +1 -1
- package/dist/lib/events.js.map +1 -1
- package/dist/lib/module.js.map +1 -1
- package/dist/lib/timeline-group.js.map +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/public-api.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe, it, expect } from 'vitest';\n\ndescribe('@memberjunction/ng-timeline', () => {\n it('should have a passing test', () => {\n expect(true).toBe(true);\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../src/__tests__/types.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../src/__tests__/types.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, it, expect } from 'vitest';\nimport {\n DEFAULT_CARD_CONFIG,\n DEFAULT_VIRTUAL_SCROLL_CONFIG,\n DEFAULT_VIRTUAL_SCROLL_STATE\n} from '../lib/types';\nimport type {\n TimelineOrientation,\n TimelineLayout,\n TimelineSortOrder,\n TimeSegmentGrouping,\n TimelineCardConfig,\n VirtualScrollConfig,\n TimelineAction,\n TimelineDisplayField,\n MJTimelineEvent,\n TimelineSegment\n} from '../lib/types';\n\ndescribe('DEFAULT_CARD_CONFIG', () => {\n it('should have showIcon true', () => {\n expect(DEFAULT_CARD_CONFIG.showIcon).toBe(true);\n });\n\n it('should have showDate true', () => {\n expect(DEFAULT_CARD_CONFIG.showDate).toBe(true);\n });\n\n it('should have showSubtitle true', () => {\n expect(DEFAULT_CARD_CONFIG.showSubtitle).toBe(true);\n });\n\n it('should have default date format', () => {\n expect(DEFAULT_CARD_CONFIG.dateFormat).toBe('MMM d, yyyy');\n });\n\n it('should default to collapsible', () => {\n expect(DEFAULT_CARD_CONFIG.collapsible).toBe(true);\n expect(DEFAULT_CARD_CONFIG.defaultExpanded).toBe(false);\n });\n\n it('should default descriptionMaxLines to 3', () => {\n expect(DEFAULT_CARD_CONFIG.descriptionMaxLines).toBe(3);\n });\n\n it('should not allow HTML description by default', () => {\n expect(DEFAULT_CARD_CONFIG.allowHtmlDescription).toBe(false);\n });\n\n it('should have maxWidth of 400px', () => {\n expect(DEFAULT_CARD_CONFIG.maxWidth).toBe('400px');\n });\n});\n\ndescribe('DEFAULT_VIRTUAL_SCROLL_CONFIG', () => {\n it('should be enabled by default', () => {\n expect(DEFAULT_VIRTUAL_SCROLL_CONFIG.enabled).toBe(true);\n });\n\n it('should have batchSize of 20', () => {\n expect(DEFAULT_VIRTUAL_SCROLL_CONFIG.batchSize).toBe(20);\n });\n\n it('should have loadThreshold of 200', () => {\n expect(DEFAULT_VIRTUAL_SCROLL_CONFIG.loadThreshold).toBe(200);\n });\n\n it('should show loading indicator', () => {\n expect(DEFAULT_VIRTUAL_SCROLL_CONFIG.showLoadingIndicator).toBe(true);\n });\n});\n\ndescribe('DEFAULT_VIRTUAL_SCROLL_STATE', () => {\n it('should start with zero loaded count', () => {\n expect(DEFAULT_VIRTUAL_SCROLL_STATE.loadedCount).toBe(0);\n });\n\n it('should have hasMore as false', () => {\n expect(DEFAULT_VIRTUAL_SCROLL_STATE.hasMore).toBe(false);\n });\n\n it('should not be loading', () => {\n expect(DEFAULT_VIRTUAL_SCROLL_STATE.isLoading).toBe(false);\n });\n\n it('should have zero scroll offset', () => {\n expect(DEFAULT_VIRTUAL_SCROLL_STATE.scrollOffset).toBe(0);\n });\n});\n\ndescribe('type correctness', () => {\n it('should accept valid TimelineOrientation values', () => {\n const v: TimelineOrientation = 'vertical';\n const h: TimelineOrientation = 'horizontal';\n expect(v).toBe('vertical');\n expect(h).toBe('horizontal');\n });\n\n it('should accept valid TimelineLayout values', () => {\n const s: TimelineLayout = 'single';\n const a: TimelineLayout = 'alternating';\n expect(s).toBe('single');\n expect(a).toBe('alternating');\n });\n\n it('should accept valid TimeSegmentGrouping values', () => {\n const groups: TimeSegmentGrouping[] = ['none', 'day', 'week', 'month', 'quarter', 'year'];\n expect(groups).toHaveLength(6);\n });\n\n it('should construct TimelineAction', () => {\n const action: TimelineAction = {\n id: 'view',\n label: 'View',\n icon: 'fa-solid fa-eye',\n variant: 'primary',\n tooltip: 'View details',\n disabled: false\n };\n expect(action.id).toBe('view');\n expect(action.variant).toBe('primary');\n });\n\n it('should construct TimelineDisplayField', () => {\n const field: TimelineDisplayField = {\n fieldName: 'Status',\n label: 'Status',\n icon: 'fa-solid fa-circle',\n formatter: (v) => String(v).toUpperCase()\n };\n expect(field.formatter!('active')).toBe('ACTIVE');\n });\n\n it('should construct MJTimelineEvent', () => {\n const event: MJTimelineEvent<{ Name: string }> = {\n id: '1',\n entity: { Name: 'Test' },\n title: 'Test Event',\n date: new Date(),\n config: {},\n groupIndex: 0,\n isExpanded: false\n };\n expect(event.entity.Name).toBe('Test');\n });\n\n it('should construct TimelineSegment', () => {\n const segment: TimelineSegment = {\n label: 'January 2026',\n startDate: new Date(2026, 0, 1),\n endDate: new Date(2026, 1, 1),\n events: [],\n isExpanded: true,\n eventCount: 0\n };\n expect(segment.label).toBe('January 2026');\n expect(segment.isExpanded).toBe(true);\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.component.js","sourceRoot":"","sources":["../../../src/lib/component/timeline.component.ts","../../../src/lib/component/timeline.component.html"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,SAAS,EACT,KAAK,EACL,MAAM,EACN,YAAY,EAKZ,SAAS,EACT,YAAY,EAGZ,uBAAuB,EACvB,iBAAiB,EAElB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAaL,mBAAmB,EACnB,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAiB,aAAa,EAAE,MAAM,mBAAmB,CAAC;;;;;;;;;;;;;;;;;ICvB3D,wBAAiE;;;IAAjE,gHAAkD;;;IAAnC,yDAAiC;;;IAEhD,8BAAkC;IAChC,yBAAgD;IAChD,+BAAwC;IAAA,YAAoB;IAC9D,AAD8D,iBAAO,EAC/D;;;IADoC,eAAoB;IAApB,2CAAoB;;;IAH9D,AAFF,uGAAuB,2EAEd;;;IAFT,gDAOC;;;IAMC,wBAA+D;;;IAA/D,gHAAgD;;;IAAjC,uDAA+B;;;IAE9C,8BAAgC;IAC9B,wBAA2D;IAC3D,gCAAsC;IAAA,YAAkB;IAC1D,AAD0D,iBAAO,EAC3D;;;IAFD,cAAmB;IAAnB,+BAAmB;IACgB,eAAkB;IAAlB,yCAAkB;;;IAH1D,AAFF,uGAAqB,2EAEZ;;;IAFT,8CAOC;;;IAqBS,wBAAsG;;;IAAtG,qIAAuF;;;;IAA/B,AAAzC,+DAAyC,mEAA6B;;;IAGnF,gCAA0C;IACxC,oBAA+F;IACjG,iBAAO;;;IADF,cAAuF;IAAvF,+FAAuF;;;IAF9F,qIAA2B;IAK3B,gCAAyC;IAAA,YAAmB;IAAA,iBAAO;IACnE,gCAAyC;IAAA,YAA8E;IAAA,iBAAO;IAC9H,2BAA+C;;;;IAP/C,qDAIC;IACwC,eAAmB;IAAnB,sCAAmB;IACnB,eAA8E;IAA9E,6GAA8E;;;IAYvH,wBAKkB;;;IALlB,6HAKG;;;;;;IALyC,AAA7B,+CAA6B,0IAK3C;;;;IAjCL,AALF,+BAG4C,cAQiB;IAHzD,oOAAS,iCAAuB,KAAC;IAM/B,AAFF,2HAA6B,qFAEpB;IAUX,iBAAM;IAMJ,AAJF,+BAGqE,cACpC;IAE7B,qKAOC;IAGP,AADE,AADE,iBAAM,EACF,EACF;;;;;IAxCJ,yEAA6D;;IAK3D,cAAoE;IAApE,oFAAoE;;IAKpE,cAWC;IAXD,sDAWC;IAMD,eAAkE;IAAlE,8EAAkE;IADlE,uDAAwC;IAItC,eAOC;IAPD,gCAOC;;;IAxCT,0JA4CC;;;IA5CD,8BA4CC;;;IAMG,wBAKkB;;;IALlB,uHAKG;;;;;;IALyC,AAA7B,+CAA6B,2HAK3C;;;IAPL,+BAA+B;IAC7B,+JAOC;IACH,iBAAM;;;IARJ,cAOC;IAPD,+BAOC;;;IAzDL,uFAAkC;IAgDlC,kGAAkC;;;IAhDlC,4DA8CC;IAED,cAWC;IAXD,4DAWC;;;IAKD,yBAGM;;;IAKN,8BAEG;IACD,0BAAoF;IACpF,4BAAM;IAAA,YAAkC;IAC1C,AAD0C,iBAAO,EAC3C;;;IADE,eAAkC;IAAlC,yDAAkC;;;IA4BxC,+BAAqC;IACnC,YACF;IAAA,iBAAM;;;;IADJ,cACF;IADE,kEACF;;;IAgBE,wBAGkB;;;IAHlB,iHAGG;;;;IAH4C,AAAhC,sDAAgC,wGAG9C;;;IAMG,+BAI+F;IAC7F,0BAAkD;IACpD,iBAAM;;;;IAFJ,AADA,AADA,gHAA4F,oGACE,kGACF;IACvF,cAAsB;IAAC,AAAvB,0DAAsB,wBAAoB;;;IAM/C,wBAA2F;;;IAA3F,+HAA4E;;;;IAA3B,AAAlC,wDAAkC,mEAAyB;;;IAIxE,gCAEkC;IAChC,oBAAgC;IAClC,iBAAO;;;;IAFL,mDAA+B;IAC5B,cAAwB;IAAxB,wCAAwB;;;IAO3B,gCAEG;IACD,YACF;IAAA,iBAAO;;;IADL,cACF;IADE,mDACF;;;IAGA,gCAEG;IACD,YACF;IAAA,iBAAO;;;;IADL,cACF;IADE,uHACF;;;;IAKF,kCAIgB;IAFd,yVAAS,yDAA0C,KAAC;IAGpD,oBAA0F;IAC5F,iBAAS;;;;IADJ,cAAkF;IAAlF,2FAAkF;;;IAhCzF,+HAA8C;IAS5C,AADF,+BAAsC,aACA;IAAA,YAAiB;IAAA,iBAAK;IAC1D,+HAAoE;IAOpE,+HAA0E;IAO5E,iBAAM;IAEN,iIAAiD;;;;IA1BjD,4EAMC;IAGqC,eAAiB;IAAjB,qCAAiB;IACrD,cAMC;IAND,sGAMC;IACD,cAMC;IAND,+GAMC;IAGH,cAQC;IARD,+EAQC;;;IAML,+BAEG;IACD,0BAAkD;IACpD,iBAAM;;;IADC,cAAsB;IAAC,AAAvB,0DAAsB,wBAAoB;;;IAS/C,wBAAyF;;;IAAzF,+HAA0E;;;;IAA3B,AAAhC,sDAAgC,mEAAyB;;;IAU9D,wBAAmE;;;IAAhE,wCAAsB;;;IAGzB,gCAA4C;IAAA,YAAkB;IAAA,iBAAO;;;IAAzB,cAAkB;IAAlB,+CAAkB;;;IALlE,+BAAgE;IAC9D,gJAAkB;IAGlB,mJAAuC;IAGvC,gCAA4C;IAAA,YAAiC;IAC/E,AAD+E,iBAAO,EAChF;;;;;IAR+B,4CAA0B;IAC7D,cAEC;IAFD,yCAEC;IACD,cAEC;IAFD,kEAEC;IAC2C,eAAiC;IAAjC,gEAAiC;;;IAXnF,+BAEG;IACD,+JAUC;IACH,iBAAM;;;;IAXJ,cAUC;IAVD,cAAA,wCAA6B,eAU5B;;;IAUC,0BAA2C;;;IAAtC,oEAA+B;;;IAEpC,YACF;;;IADE,sDACF;;;IARF,+BAGyF;IAGrF,AAFF,4IAA0D,2GAEjD;IAGX,iBAAM;;;;IANJ,0GAAsF;IADtF,iIAA6G;IAE7G,cAIC;IAJD,uFAIC;;;IAWK,wBAAmE;;;IAAhE,wCAAsB;;;IAGzB,gCAA4C;IAAA,YAAqC;IAAA,iBAAO;;;IAA5C,cAAqC;IAArC,sEAAqC;;;IALrF,+BAAgE;IAC9D,gJAAkB;IAGlB,mJAAwB;IAGxB,gCAA4C;IAAA,YAAiC;IAC/E,AAD+E,iBAAO,EAChF;;;;;IAR+B,4CAA0B;IAC7D,cAEC;IAFD,yCAEC;IACD,cAEC;IAFD,+CAEC;IAC2C,eAAiC;IAAjC,gEAAiC;;;IAXnF,+BAEG;IACD,+JAUC;IACH,iBAAM;;;;IAXJ,cAUC;IAVD,cAAA,wCAA6B,gBAU5B;;;IA7CL,8HAA2D;IAkB3D,8HAA6C;IAa7C,8HAAgF;;;;;;IA/BhF,+HAgBC;IAED,cAWC;IAXD,wEAWC;IAED,cAgBC;IAhBD,0JAgBC;;;IAWD,wBAGkB;;;IAHlB,6IAGG;;;;IAH+C,AAAnC,yDAAmC,iGAGjD;;;IAeO,wBAA+B;;;IAA5B,yCAAuB;;;;IAZ9B,kCAUgB;IADd,4XAAS,oEAAiD,KAAC;IAE3D,gJAAmB;IAGnB,4BAAM;IAAA,YAAkB;IAC1B,AAD0B,iBAAO,EACxB;;;IAVP,AADA,AADA,AADA,gFAAmE,6FACuB,gEACzB,4DACJ;IAG7D,AADA,AADA,6CAA2B,iCACC,mCACE;IAG9B,cAEC;IAFD,0CAEC;IACK,eAAkB;IAAlB,sCAAkB;;;IAf5B,mKAiBC;;;;IAjBD,cAAA,4BAAiB,CAiBhB;;;IA5BL,+BAGG;IAOC,AALF,mIAAuB,6FAKd;IAoBX,iBAAM;;;;IA5BJ,gHAA4F;IAG5F,cAwBC;IAxBD,gDAwBC;;;IAzJL,+BAAsC;IAEpC,gHAAgF;IAShF,+BAA8C;IAI1C,AAFF,qHAAsB,+EAEb;IAuCb,AADE,iBAAM,EACF;IAEN,gHAA+E;IAQ/E,+BAE6G;IAIzG,AAFF,qHAAoB,+EAEX;IAmDX,iBAAM;IAEN,gHAAoC;;;;IAzHlC,cAQC;IARD,kHAQC;IAGC,eAuCC;IAvCD,+CAuCC;IAIL,eAMC;IAND,iHAMC;IAIC,cAA0G;IAA1G,kIAA0G;IAE1G,cAoDC;IApDD,6CAoDC;IAGH,eAgCC;IAhCD,kEAgCC;;;;IA5LL,AAXF,+BAQ0C,cAGoC;IAC1E,wBAAiE;IACnE,iBAAM;IAGN,0BAAqF;IAGrF,kGAAgC;IAOhC,+BAQ+D;IAA7D,AADA,AADA,uRAAS,uDAAwC,KAAC,oRACpC,4DAA6C,KAAC,oRAC9C,4DAA6C,KAAC;IAQ1D,AALF,uGAAoB,kEAKX;IAkKb,AADE,iBAAM,EACF;;;;;;IAvMJ,AADA,AADA,AADA,uFAAmE,2EACE,sDACd,mFACkB;;IAMxC,cAA0C;IAA1C,8DAA0C;IACtE,cAAwB;IAAxB,wCAAwB;IAIO,cAA0C;IAA1C,8DAA0C;IAG9E,cAIC;IAJD,0DAIC;IAMC,cAA0D;IAE1D,AADA,AADA,8EAA0D,gEACA,iDACf;IAH3C,2EAAkD;IASlD,cAmKC;IAnKD,6CAmKC;;ADxQP,+EAA+E;AAC/E,kCAAkC;AAClC,+EAA+E;AAE/E,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,MAAM;IACjB,SAAS,CAAE,OAAO;CACnB,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,kBAAkB;IAClB,mBAAmB;CACpB,CAAC;AAEF,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AASH,MAAM,OAAO,iBAAiB;IA6WlB;IACA;IACA;IA9WV,+EAA+E;IAC/E,gBAAgB;IAChB,+EAA+E;IAE/E;;;OAGG;IACH,IACI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,IAAI,MAAM,CAAC,KAAyB;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1C,0EAA0E;QAC1E,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,aAAa;gBACb,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;iBAAM,IAAI,aAAa,EAAE,CAAC;gBACzB,oDAAoD;gBACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IACO,OAAO,GAAuB,EAAE,CAAC;IAEzC;;OAEG;IACK,eAAe,CAAC,IAAwB,EAAE,IAAwB;QACxE,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa;gBACnC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;gBAC7B,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,IACI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAI,SAAS,CAAC,KAAc;QAC1B,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,kEAAkE;QAClE,IAAI,KAAK,IAAI,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACO,UAAU,GAAG,IAAI,CAAC;IAE1B,+EAA+E;IAC/E,uDAAuD;IACvD,+EAA+E;IAE/E;;;;;OAKG;IACH,IACI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IACD,IAAI,WAAW,CAAC,KAA0B;QACxC,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACO,YAAY,GAAwB,UAAU,CAAC;IAEvD;;;;;OAKG;IACH,IACI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,IAAI,MAAM,CAAC,KAAqB;QAC9B,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACO,OAAO,GAAmB,QAAQ,CAAC;IAE3C;;;;;OAKG;IACH,IACI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAI,SAAS,CAAC,KAAwB;QACpC,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,sFAAsF;YACtF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACO,UAAU,GAAsB,MAAM,CAAC;IAE/C;;;OAGG;IACH,IACI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IACD,IAAI,eAAe,CAAC,KAA0B;QAC5C,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,oFAAoF;YACpF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACO,gBAAgB,GAAwB,OAAO,CAAC;IAExD,+EAA+E;IAC/E,yBAAyB;IACzB,+EAA+E;IAE/E;;;OAGG;IACM,iBAAiB,GAAuB,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAE5E,+EAA+E;IAC/E,6BAA6B;IAC7B,+EAA+E;IAE/E;;OAEG;IACM,aAAa,GAAwB,EAAE,GAAG,6BAA6B,EAAE,CAAC;IAEnF,+EAA+E;IAC/E,oBAAoB;IACpB,+EAA+E;IAE/E;;;OAGG;IACM,mBAAmB,GAAG,IAAI,CAAC;IAEpC;;;OAGG;IACM,uBAAuB,GAAG,IAAI,CAAC;IAExC,+EAA+E;IAC/E,kCAAkC;IAClC,+EAA+E;IAE/E;;;OAGG;IACM,YAAY,GAAG,sBAAsB,CAAC;IAE/C;;;OAGG;IACM,SAAS,GAAG,8BAA8B,CAAC;IAEpD;;;OAGG;IACM,cAAc,GAAG,qBAAqB,CAAC;IAEhD,+EAA+E;IAC/E,yBAAyB;IACzB,+EAA+E;IAE/E;;;OAGG;IACM,SAAS,GAAG,UAAU,CAAC;IAEhC;;;OAGG;IACM,wBAAwB,GAAG,IAAI,CAAC;IAEzC;;;OAGG;IACH,IACI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IACD,IAAI,eAAe,CAAC,KAAoB;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACO,gBAAgB,GAAkB,IAAI,CAAC;IAE/C,+EAA+E;IAC/E,gDAAgD;IAChD,+EAA+E;IAE/E,+EAA+E;IACrE,gBAAgB,GAAG,IAAI,YAAY,EAA2B,CAAC;IAEzE,4EAA4E;IAClE,iBAAiB,GAAG,IAAI,YAAY,EAA4B,CAAC;IAE3E,8EAA8E;IACpE,mBAAmB,GAAG,IAAI,YAAY,EAA8B,CAAC;IAE/E,0EAA0E;IAChE,gBAAgB,GAAG,IAAI,YAAY,EAA2B,CAAC;IAEzE,kFAAkF;IACxE,iBAAiB,GAAG,IAAI,YAAY,EAA4B,CAAC;IAE3E,6EAA6E;IACnE,mBAAmB,GAAG,IAAI,YAAY,EAA2B,CAAC;IAE5E,+EAA+E;IACrE,qBAAqB,GAAG,IAAI,YAAY,EAA6B,CAAC;IAEhF,0EAA0E;IAChE,UAAU,GAAG,IAAI,YAAY,EAAkB,CAAC;IAE1D,+EAA+E;IAC/E,yBAAyB;IACzB,+EAA+E;IAE/E,8CAA8C;IACpC,eAAe,GAAG,IAAI,YAAY,EAA0B,CAAC;IAEvE,2CAA2C;IACjC,gBAAgB,GAAG,IAAI,YAAY,EAA2B,CAAC;IAEzE,6CAA6C;IACnC,kBAAkB,GAAG,IAAI,YAAY,EAA6B,CAAC;IAE7E,yCAAyC;IAC/B,eAAe,GAAG,IAAI,YAAY,EAA0B,CAAC;IAEvE,iDAAiD;IACvC,gBAAgB,GAAG,IAAI,YAAY,EAA2B,CAAC;IAEzE,4CAA4C;IAClC,kBAAkB,GAAG,IAAI,YAAY,EAA0B,CAAC;IAE1E,8CAA8C;IACpC,oBAAoB,GAAG,IAAI,YAAY,EAA4B,CAAC;IAE9E,4CAA4C;IAClC,SAAS,GAAG,IAAI,YAAY,EAAiB,CAAC;IAExD,+EAA+E;IAC/E,wCAAwC;IACxC,+EAA+E;IAE/E,iEAAiE;IACnC,YAAY,CAAuE;IAEjH,0DAA0D;IAC1B,cAAc,CAA8C;IAE5F,wDAAwD;IAC1B,YAAY,CAA8C;IAExF,oEAAoE;IACnC,eAAe,CAAyE;IAEzH,+DAA+D;IACxB,qBAAqB,CAA6C;IAEzG,uCAAuC;IACR,aAAa,CAAqB;IAEjE,yCAAyC;IACR,eAAe,CAAqB;IAErE,+EAA+E;IAC/E,gBAAgB;IAChB,+EAA+E;IAEjD,eAAe,CAA2B;IAExE,+EAA+E;IAC/E,oBAAoB;IACpB,+EAA+E;IAE/E,yCAAyC;IACzC,QAAQ,GAAsB,EAAE,CAAC;IAEjC,wDAAwD;IACxD,SAAS,GAAyB,EAAE,CAAC;IAErC,4BAA4B;IAC5B,WAAW,GAAuB,EAAE,GAAG,4BAA4B,EAAE,CAAC;IAEtE,wCAAwC;IACxC,aAAa,GAAG,KAAK,CAAC;IAEtB,sCAAsC;IACtC,SAAS,GAAG,KAAK,CAAC;IAElB,kEAAkE;IAClE,iBAAiB,GAAG,CAAC,CAAC,CAAC;IAEvB,+EAA+E;IAC/E,qBAAqB;IACrB,+EAA+E;IAEvE,YAAY,GAAG,KAAK,CAAC;IACrB,UAAU,GAAG,KAAK,CAAC;IACnB,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;IAChC,QAAQ,GAAG,IAAI,OAAO,EAAS,CAAC;IAChC,qBAAqB,CAAwB;IAErD,+EAA+E;IAC/E,cAAc;IACd,+EAA+E;IAE/E,YACU,GAAsB,EACtB,UAAsB,EACtB,MAAc;QAFd,QAAG,GAAH,GAAG,CAAmB;QACtB,eAAU,GAAV,UAAU,CAAY;QACtB,WAAM,GAAN,MAAM,CAAQ;IACrB,CAAC;IAEJ,+EAA+E;IAC/E,kBAAkB;IAClB,+EAA+E;IAE/E,QAAQ;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,+CAA+C;QAC/C,IAAI,CAAC,QAAQ;aACV,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;QAED,0DAA0D;QAC1D,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,iBAAiB;IACjB,+EAA+E;IAE/E;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,QAAiB,KAAK;QAClC,6EAA6E;QAC7E,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,oBAAoB;QACpB,MAAM,UAAU,GAAmB;YACjC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,aAAa,EAAE,KAAK;SACrB,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEjC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAExB,IAAI,CAAC;YACH,sBAAsB;YACtB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,4BAA4B,EAAE,CAAC;YAEvD,4BAA4B;YAC5B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAE3B,sBAAsB;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,mBAAmB;YACnB,MAAM,SAAS,GAAkB;gBAC/B,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;gBACnC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;gBAClC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAClC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;aAClC,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YAErD,MAAM,SAAS,GAAkB;gBAC/B,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;gBACtE,YAAY,EAAE,CAAC;gBACf,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAClC,OAAO,EAAE,KAAK;aACf,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3F,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,oBAAoB;QACpB,MAAM,UAAU,GAAmB;YACjC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW;YACpC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS;SACxC,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEjC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAExB,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAE5C,kCAAkC;YAClC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAE3B,iCAAiC;YACjC,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC;YAEvD,mBAAmB;YACnB,MAAM,SAAS,GAAkB;gBAC/B,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,QAAQ;gBACtB,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;gBAClC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAClC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;aAClC,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe;QACb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBACtB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBACxB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAe;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAe;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAe,EAAE,WAA2B,QAAQ;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,OAAO,IAAI,CAAC,CAAC;QAC5F,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAU,EAAE,WAA2B,QAAQ;QAC1D,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACrC,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,GAAG,CAAC,CAAC,OAAO,CACxC,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CACzD,wBAAwB,OAAO,CAAC,KAAK,IAAI,CAC1C,CAAC;YACF,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,+EAA+E;IAC/E,qCAAqC;IACrC,+EAA+E;IAE/E;;OAEG;IACH,YAAY,CAAC,KAAyB,EAAE,KAAa,EAAE,QAAe;QACpE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE7C,oBAAoB;QACpB,MAAM,UAAU,GAA4B;YAC1C,MAAM,EAAE,KAAK;YACb,KAAK;YACL,KAAK;YACL,KAAK;YACL,QAAQ;SACT,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,0DAA0D;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;QAED,mBAAmB;QACnB,MAAM,SAAS,GAA2B;YACxC,OAAO,EAAE,IAAI;YACb,KAAK;YACL,KAAK;YACL,KAAK;YACL,QAAQ;SACT,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAyB,EAAE,KAAa,EAAE,QAAe;QACtE,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC3B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAyB,EAAE,KAAa,EAAE,QAAe;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,UAAU,GAA4B;YAC1C,MAAM,EAAE,KAAK;YACb,KAAK;YACL,KAAK;YACL,KAAK;YACL,QAAQ;YACR,UAAU,EAAE,OAAO;SACpB,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,SAAS,GAA2B;gBACxC,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,QAAQ;gBACR,UAAU,EAAE,OAAO;aACpB,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAyB,EAAE,KAAa,EAAE,QAAe;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,UAAU,GAA4B;YAC1C,MAAM,EAAE,KAAK;YACb,KAAK;YACL,KAAK;YACL,KAAK;YACL,QAAQ;YACR,UAAU,EAAE,OAAO;SACpB,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,SAAS,GAA2B;gBACxC,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,QAAQ;gBACR,UAAU,EAAE,OAAO;aACpB,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAyB,EAAE,MAAsB,EAAE,KAAa,EAAE,QAAe;QAC7F,QAAQ,CAAC,eAAe,EAAE,CAAC;QAE3B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,UAAU,GAA6B;YAC3C,MAAM,EAAE,KAAK;YACb,KAAK;YACL,KAAK;YACL,KAAK;YACL,QAAQ;YACR,MAAM;SACP,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,SAAS,GAA4B;gBACzC,OAAO,EAAE,IAAI;gBACb,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,QAAQ;gBACR,MAAM;aACP,CAAC;YACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,OAAwB;QACrC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAY;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAoB;QAC5B,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,WAAW,CAAC;YACjB,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;YAER,KAAK,SAAS,CAAC;YACf,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,MAAM;YAER,KAAK,OAAO,CAAC;YACb,KAAK,GAAG;gBACN,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,MAAM;YAER,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,MAAM;YAER,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,MAAM;YAER,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;QACV,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,mBAAmB;IACnB,+EAA+E;IAE/E;;OAEG;IACH,sBAAsB,CAAC,KAAyB;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO;YACL,GAAG,IAAI,CAAC,iBAAiB;YACzB,GAAG,KAAK,EAAE,UAAU;YACpB,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC;SACjD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAyB;QAChC,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAC5B,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,KAAK,EAAE,gBAAgB,KAAK,QAAQ,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC,YAAY,CAAC;QAC5B,CAAC;QAED,OAAO,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,KAAyB;QAC/B,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3B,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,KAAK,EAAE,eAAe,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YAC7D,OAAO,KAAK,CAAC,WAAW,CAAC;QAC3B,CAAC;QAED,OAAO,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,KAAyB;QAClC,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9B,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAU,EAAE,MAAe;QACpC,MAAM,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,IAAI,aAAa,CAAC;QACzE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAyB,EAAE,KAA2B;QAClE,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAE3D,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAAc,EAAE,KAAyB;QACtD,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAAc,EAAE,OAAwB;QAC1D,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAyB;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,KAAyB,EAAE,WAAmB;QAC5D,2DAA2D;QAC3D,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,yCAAyC;QACzC,OAAO,IAAI,CAAC,iBAAiB,KAAK,WAAW,CAAC;IAChD,CAAC;IAED,+EAA+E;IAC/E,iCAAiC;IACjC,+EAA+E;IAE/E;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;YACxE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,sBAAsB;QACtB,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACrD,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,8CAA8C;IAClF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS,CAAC,KAAuB,EAAE,UAAkB;QACjE,IAAI,OAAO,GAAQ,EAAE,CAAC;QAEtB,IAAI,KAAK,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;YACrC,OAAO,GAAG,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;QACtC,CAAC;aAAM,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACjE,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,qCAAqC;QACrC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,KAAuB;QAClD,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACzD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YAEzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;gBAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,WAAW,EAAE,KAAK,CAAC,MAAM;gBACzB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,UAAU;gBACzB,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;YAEH,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,OAAO,MAAM,CAAC,OAAc,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,0EAA0E,EAAE,KAAK,CAAC,CAAC;QAClG,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,yDAAyD;QACzD,iCAAiC;IACnC,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,MAAS,EAAE,KAAuB,EAAE,UAAkB;QAChF,MAAM,UAAU,GAAG,KAAK,CAAC,sBAAsB,EAAE,CAAC;QAElD,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC3B,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;YACnC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;YACzC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;YACnC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;YACpC,UAAU;YACV,UAAU,EAAE,UAAU,CAAC,eAAe,IAAI,KAAK;SAChD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IAC/E,iCAAiC;IACjC,+EAA+E;IAE/E;;OAEG;IACK,aAAa;QACnB,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAA2B,CAAC;QAEtD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEtE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE;oBACpB,KAAK;oBACL,SAAS;oBACT,OAAO;oBACP,MAAM,EAAE,EAAE;oBACV,UAAU,EAAE,IAAI,CAAC,uBAAuB;oBACxC,UAAU,EAAE,CAAC;iBACd,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;YACvC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAU;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAE3B,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7B,KAAK,KAAK;gBACR,OAAO;oBACL,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,CAAC;oBACpD,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;oBACrC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;iBACxC,CAAC;YAEJ,KAAK,MAAM;gBACT,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;gBACpC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzC,OAAO;oBACL,KAAK,EAAE,WAAW,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE;oBACrE,SAAS,EAAE,SAAS;oBACpB,OAAO,EAAE,OAAO;iBACjB,CAAC;YAEJ,KAAK,OAAO;gBACV,OAAO;oBACL,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC;oBACrE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;oBACnC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;iBACtC,CAAC;YAEJ,KAAK,SAAS;gBACZ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACtC,OAAO;oBACL,KAAK,EAAE,IAAI,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE;oBAChC,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;oBACzC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBAC9C,CAAC;YAEJ,KAAK,MAAM;gBACT,OAAO;oBACL,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;oBACnB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC/B,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;iBAClC,CAAC;YAEJ;gBACE,OAAO;oBACL,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC;oBACjD,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;oBACnC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;iBACtC,CAAC;QACN,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,oCAAoC;IACpC,+EAA+E;IAE/E;;OAEG;IACK,mBAAmB,CAAC,KAAyB,EAAE,KAAa,EAAE,QAAgB;QACpF,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAyB,EAAE,QAAiB;QACnE,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,KAAyB,EAAE,KAAa,EAAE,QAAgB;QACpF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,UAAU,GAA6B;YAC3C,MAAM,EAAE,KAAK;YACb,KAAK;YACL,KAAK;YACL,KAAK;YACL,QAAQ;SACT,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAExB,MAAM,SAAS,GAA4B;YACzC,OAAO,EAAE,IAAI;YACb,KAAK;YACL,KAAK;YACL,KAAK;YACL,QAAQ;SACT,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,KAAyB,EAAE,KAAa,EAAE,QAAgB;QACtF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,UAAU,GAA+B;YAC7C,MAAM,EAAE,KAAK;YACb,KAAK;YACL,KAAK;YACL,KAAK;YACL,QAAQ;SACT,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1C,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAExB,MAAM,SAAS,GAA8B;YAC3C,OAAO,EAAE,IAAI;YACb,KAAK;YACL,KAAK;YACL,KAAK;YACL,QAAQ;SACT,CAAC;QACF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,OAAwB;QAC5C,MAAM,UAAU,GAA4B;YAC1C,MAAM,EAAE,KAAK;YACb,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1C,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAExB,MAAM,SAAS,GAA2B;YACxC,OAAO,EAAE,IAAI;YACb,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QACF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAAwB;QAC9C,MAAM,UAAU,GAA8B;YAC5C,MAAM,EAAE,KAAK;YACb,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAExB,MAAM,SAAS,GAA6B;YAC1C,OAAO,EAAE,IAAI;YACb,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,OAAwB,EAAE,QAAiB;QACpE,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC;IAChC,CAAC;IAED,+EAA+E;IAC/E,wCAAwC;IACxC,+EAA+E;IAEvE,cAAc;QACpB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAC/B,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAC1B,CAAC;QACF,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAExC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAClF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAClF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAClF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1B,CAAC;IAED,+EAA+E;IAC/E,sCAAsC;IACtC,+EAA+E;IAEvE,yBAAyB;QAC/B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO;YAAE,OAAO;QAExC,mDAAmD;QACnD,qBAAqB,CAAC,GAAG,EAAE;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC;YAC7F,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,IAAI,CAAC,qBAAqB,GAAG,IAAI,oBAAoB,CACnD,CAAC,OAAO,EAAE,EAAE;gBACV,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,KAAK,EAAE,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;oBACrF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC,EACD;gBACE,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa;gBACzC,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI;aACpD,CACF,CAAC;YAEF,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,SAAS,CAAC;QAE7C,MAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC;QAC5E,IAAI,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACtF,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,8BAA8B;IAC9B,+EAA+E;IAE/E;;OAEG;IACK,0BAA0B,CAAC,SAA8B,EAAE;QACjE,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,IAAU,EAAE,MAAc;QACnD,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;YACtD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAClF,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;YACxC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElC,yEAAyE;QACzE,0EAA0E;QAC1E,IAAI,MAAM,GAAG,MAAM,CAAC;QAEpB,kDAAkD;QAClD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC7C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAChD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC9C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC9C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAClD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAE1C,mCAAmC;QACnC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAClF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3F,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEpE,OAAO,MAAM,CAAC;IAChB,CAAC;2GAh+CU,iBAAiB;6DAAjB,iBAAiB;;;;;;;;;;;;;;;;;;YCjI9B,iCAW8B;YAA5B,AAFA,2IAAW,qBAAiB,KAAC,4HAEnB,oBAAgB,KAAC;YAG3B,yEAAmC;YAYnC,yEAA6D;YAY7D,yEAA6C;YAiE7C,mFAAoD;YAQpD,mFAAmE;YASrE,iBAAM;YAGN,oHAA4G;;YAtH1G,AADA,AADA,AADA,uEAA0D,6DACI,gDACb,0DACU;;YAS3D,eASC;YATD,8DASC;YAGD,cASC;YATD,4FASC;YAGD,cA8DC;YA9DD,wEA8DC;YAGD,cAKC;YALD,+EAKC;YAGD,cAOC;YAPD,8FAOC;;;iFDWU,iBAAiB;cAR7B,SAAS;6BACI,KAAK,YACP,aAAa,mBAGN,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI;;kBAWpC,KAAK;;kBA8CL,KAAK;;kBAwBL,KAAK;;kBAkBL,KAAK;;kBAkBL,KAAK;;kBAoBL,KAAK;;kBAwBL,KAAK;;kBASL,KAAK;;kBAUL,KAAK;;kBAML,KAAK;;kBAUL,KAAK;;kBAML,KAAK;;kBAML,KAAK;;kBAUL,KAAK;;kBAML,KAAK;;kBAML,KAAK;;kBAkBL,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAON,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAON,YAAY;mBAAC,cAAc;;kBAG3B,YAAY;mBAAC,gBAAgB;;kBAG7B,YAAY;mBAAC,cAAc;;kBAG3B,YAAY;mBAAC,iBAAiB;;kBAG9B,YAAY;mBAAC,uBAAuB;;kBAGpC,YAAY;mBAAC,eAAe;;kBAG5B,YAAY;mBAAC,iBAAiB;;kBAM9B,SAAS;mBAAC,iBAAiB;;kFAtUjB,iBAAiB"}
|
|
1
|
+
{"version":3,"file":"timeline.component.js","sourceRoot":"","sources":["../../../src/lib/component/timeline.component.ts","../../../src/lib/component/timeline.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview MJ Timeline Component - A flexible, responsive timeline for Angular.\n *\n * This component displays chronological data in a timeline format with support for:\n * - Multiple data sources (MemberJunction entities or plain objects)\n * - Virtual scrolling for large datasets\n * - Collapsible time segments\n * - Rich event system with BeforeX/AfterX pattern\n * - Full keyboard navigation and accessibility\n * - Responsive design for all screen sizes\n *\n * @module @memberjunction/ng-timeline\n */\n\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n OnDestroy,\n AfterViewInit,\n ElementRef,\n ViewChild,\n ContentChild,\n TemplateRef,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n NgZone\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil, debounceTime } from 'rxjs/operators';\n\nimport {\n TimelineOrientation,\n TimelineLayout,\n TimelineSortOrder,\n TimeSegmentGrouping,\n TimelineCardConfig,\n TimelineEventConfig,\n VirtualScrollConfig,\n VirtualScrollState,\n MJTimelineEvent,\n TimelineSegment,\n TimelineAction,\n TimelineDisplayField,\n DEFAULT_CARD_CONFIG,\n DEFAULT_VIRTUAL_SCROLL_CONFIG,\n DEFAULT_VIRTUAL_SCROLL_STATE\n} from '../types';\n\nimport { TimelineGroup, getFieldValue } from '../timeline-group';\n\nimport {\n BeforeEventClickArgs,\n AfterEventClickArgs,\n BeforeEventExpandArgs,\n AfterEventExpandArgs,\n BeforeEventCollapseArgs,\n AfterEventCollapseArgs,\n BeforeEventHoverArgs,\n AfterEventHoverArgs,\n BeforeActionClickArgs,\n AfterActionClickArgs,\n BeforeSegmentExpandArgs,\n AfterSegmentExpandArgs,\n BeforeSegmentCollapseArgs,\n AfterSegmentCollapseArgs,\n BeforeLoadArgs,\n AfterLoadArgs\n} from '../events';\n\n// ============================================================================\n// AUTO-ASSIGNED COLORS FOR GROUPS\n// ============================================================================\n\nconst AUTO_COLORS = [\n '#1976d2', // Blue\n '#388e3c', // Green\n '#f57c00', // Orange\n '#7b1fa2', // Purple\n '#c2185b', // Pink\n '#00796b', // Teal\n '#5d4037', // Brown\n '#455a64', // Blue Grey\n '#d32f2f', // Red\n '#0097a7' // Cyan\n];\n\nconst DEFAULT_ICONS = [\n 'fa-solid fa-circle',\n 'fa-solid fa-square',\n 'fa-solid fa-diamond',\n 'fa-solid fa-star',\n 'fa-solid fa-heart'\n];\n\n// ============================================================================\n// TIMELINE COMPONENT\n// ============================================================================\n\n/**\n * MJ Timeline Component - Displays chronological data in a rich, interactive timeline.\n *\n * The timeline component supports multiple data groups, virtual scrolling for large\n * datasets, collapsible time segments, and a comprehensive event system that allows\n * container components to intercept and modify behavior.\n *\n * @example Basic usage\n * ```html\n * <mj-timeline [groups]=\"myGroups\"></mj-timeline>\n * ```\n *\n * @example Full configuration\n * ```html\n * <mj-timeline\n * [groups]=\"groups\"\n * orientation=\"vertical\"\n * layout=\"alternating\"\n * sortOrder=\"desc\"\n * segmentGrouping=\"month\"\n * [segmentsCollapsible]=\"true\"\n * [virtualScroll]=\"{ enabled: true, batchSize: 25 }\"\n * (beforeEventClick)=\"onBeforeClick($event)\"\n * (afterActionClick)=\"onAction($event)\">\n *\n * <ng-template #emptyTemplate>\n * <div class=\"custom-empty\">No events found</div>\n * </ng-template>\n *\n * </mj-timeline>\n * ```\n */\n@Component({\n standalone: false,\n selector: 'mj-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class TimelineComponent<T = any> implements OnInit, OnDestroy, AfterViewInit {\n // ============================================================================\n // INPUTS - DATA\n // ============================================================================\n\n /**\n * Array of timeline groups to display.\n * Each group defines a data source and display configuration.\n */\n @Input()\n get groups(): TimelineGroup<T>[] {\n return this._groups;\n }\n set groups(value: TimelineGroup<T>[]) {\n const prevGroups = this._groups;\n this._groups = value || [];\n const hasGroups = this._groups.length > 0;\n\n // Check if groups actually changed (different date field, label, or data)\n const groupsChanged = this.didGroupsChange(prevGroups, this._groups);\n\n if (this.allowLoad && hasGroups) {\n if (!this._hasLoaded) {\n // First load\n this.refresh();\n } else if (groupsChanged) {\n // Groups changed after initial load - force refresh\n this.refresh(true);\n }\n }\n }\n private _groups: TimelineGroup<T>[] = [];\n\n /**\n * Check if timeline groups have meaningfully changed\n */\n private didGroupsChange(prev: TimelineGroup<T>[], next: TimelineGroup<T>[]): boolean {\n if (prev.length !== next.length) return true;\n for (let i = 0; i < prev.length; i++) {\n const p = prev[i];\n const n = next[i];\n if (p.DateFieldName !== n.DateFieldName ||\n p.GroupLabel !== n.GroupLabel ||\n p.EntityObjects !== n.EntityObjects) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Controls whether data loading is allowed.\n * Set to false to defer loading until ready.\n * @default true\n */\n @Input()\n get allowLoad(): boolean {\n return this._allowLoad;\n }\n set allowLoad(value: boolean) {\n const wasDisabled = !this._allowLoad;\n this._allowLoad = value;\n // When allowLoad becomes true and we have groups, trigger refresh\n if (value && wasDisabled && this._groups.length > 0) {\n this.refresh(this._hasLoaded);\n }\n }\n private _allowLoad = true;\n\n // ============================================================================\n // INPUTS - LAYOUT (using setters for reactive updates)\n // ============================================================================\n\n /**\n * Timeline orientation.\n * - `vertical`: Events displayed top-to-bottom\n * - `horizontal`: Events displayed left-to-right\n * @default 'vertical'\n */\n @Input()\n get orientation(): TimelineOrientation {\n return this._orientation;\n }\n set orientation(value: TimelineOrientation) {\n if (this._orientation !== value) {\n this._orientation = value;\n this.cdr.markForCheck();\n }\n }\n private _orientation: TimelineOrientation = 'vertical';\n\n /**\n * Layout mode for vertical timeline.\n * - `single`: All cards on one side\n * - `alternating`: Cards alternate sides\n * @default 'single'\n */\n @Input()\n get layout(): TimelineLayout {\n return this._layout;\n }\n set layout(value: TimelineLayout) {\n if (this._layout !== value) {\n this._layout = value;\n this.cdr.markForCheck();\n }\n }\n private _layout: TimelineLayout = 'single';\n\n /**\n * Sort order for events.\n * - `desc`: Newest first\n * - `asc`: Oldest first\n * @default 'desc'\n */\n @Input()\n get sortOrder(): TimelineSortOrder {\n return this._sortOrder;\n }\n set sortOrder(value: TimelineSortOrder) {\n if (this._sortOrder !== value) {\n this._sortOrder = value;\n // Re-process events when sort order changes - force refresh since data already loaded\n if (this._initialized) {\n this.refresh(true);\n }\n this.cdr.markForCheck();\n }\n }\n private _sortOrder: TimelineSortOrder = 'desc';\n\n /**\n * How to group events into time segments.\n * @default 'month'\n */\n @Input()\n get segmentGrouping(): TimeSegmentGrouping {\n return this._segmentGrouping;\n }\n set segmentGrouping(value: TimeSegmentGrouping) {\n if (this._segmentGrouping !== value) {\n this._segmentGrouping = value;\n // Re-segment events when grouping changes - force refresh since data already loaded\n if (this._initialized) {\n this.refresh(true);\n }\n this.cdr.markForCheck();\n }\n }\n private _segmentGrouping: TimeSegmentGrouping = 'month';\n\n // ============================================================================\n // INPUTS - CARD DEFAULTS\n // ============================================================================\n\n /**\n * Default card configuration applied to all groups.\n * Individual groups can override these settings.\n */\n @Input() defaultCardConfig: TimelineCardConfig = { ...DEFAULT_CARD_CONFIG };\n\n // ============================================================================\n // INPUTS - VIRTUAL SCROLLING\n // ============================================================================\n\n /**\n * Virtual scrolling configuration.\n */\n @Input() virtualScroll: VirtualScrollConfig = { ...DEFAULT_VIRTUAL_SCROLL_CONFIG };\n\n // ============================================================================\n // INPUTS - SEGMENTS\n // ============================================================================\n\n /**\n * Whether time segments can be collapsed.\n * @default true\n */\n @Input() segmentsCollapsible = true;\n\n /**\n * Whether segments start expanded.\n * @default true\n */\n @Input() segmentsDefaultExpanded = true;\n\n // ============================================================================\n // INPUTS - EMPTY & LOADING STATES\n // ============================================================================\n\n /**\n * Message shown when no events exist.\n * @default 'No events to display'\n */\n @Input() emptyMessage = 'No events to display';\n\n /**\n * Icon shown with empty message.\n * @default 'fa-regular fa-calendar-xmark'\n */\n @Input() emptyIcon = 'fa-regular fa-calendar-xmark';\n\n /**\n * Message shown while loading.\n * @default 'Loading timeline...'\n */\n @Input() loadingMessage = 'Loading timeline...';\n\n // ============================================================================\n // INPUTS - ACCESSIBILITY\n // ============================================================================\n\n /**\n * ARIA label for the timeline container.\n * @default 'Timeline'\n */\n @Input() ariaLabel = 'Timeline';\n\n /**\n * Enable keyboard navigation.\n * @default true\n */\n @Input() enableKeyboardNavigation = true;\n\n /**\n * ID of the currently selected event.\n * When set, the corresponding event will be highlighted with the focused style.\n */\n @Input()\n get selectedEventId(): string | null {\n return this._selectedEventId;\n }\n set selectedEventId(value: string | null) {\n const changed = this._selectedEventId !== value;\n this._selectedEventId = value;\n if (changed) {\n this.cdr.markForCheck();\n }\n }\n private _selectedEventId: string | null = null;\n\n // ============================================================================\n // OUTPUTS - BEFORE EVENTS (with cancel support)\n // ============================================================================\n\n /** Emitted before an event card is clicked. Set `cancel = true` to prevent. */\n @Output() beforeEventClick = new EventEmitter<BeforeEventClickArgs<T>>();\n\n /** Emitted before an event card expands. Set `cancel = true` to prevent. */\n @Output() beforeEventExpand = new EventEmitter<BeforeEventExpandArgs<T>>();\n\n /** Emitted before an event card collapses. Set `cancel = true` to prevent. */\n @Output() beforeEventCollapse = new EventEmitter<BeforeEventCollapseArgs<T>>();\n\n /** Emitted before hover state changes. Set `cancel = true` to prevent. */\n @Output() beforeEventHover = new EventEmitter<BeforeEventHoverArgs<T>>();\n\n /** Emitted before an action button is clicked. Set `cancel = true` to prevent. */\n @Output() beforeActionClick = new EventEmitter<BeforeActionClickArgs<T>>();\n\n /** Emitted before a time segment expands. Set `cancel = true` to prevent. */\n @Output() beforeSegmentExpand = new EventEmitter<BeforeSegmentExpandArgs>();\n\n /** Emitted before a time segment collapses. Set `cancel = true` to prevent. */\n @Output() beforeSegmentCollapse = new EventEmitter<BeforeSegmentCollapseArgs>();\n\n /** Emitted before data loading begins. Set `cancel = true` to prevent. */\n @Output() beforeLoad = new EventEmitter<BeforeLoadArgs>();\n\n // ============================================================================\n // OUTPUTS - AFTER EVENTS\n // ============================================================================\n\n /** Emitted after an event card is clicked. */\n @Output() afterEventClick = new EventEmitter<AfterEventClickArgs<T>>();\n\n /** Emitted after an event card expands. */\n @Output() afterEventExpand = new EventEmitter<AfterEventExpandArgs<T>>();\n\n /** Emitted after an event card collapses. */\n @Output() afterEventCollapse = new EventEmitter<AfterEventCollapseArgs<T>>();\n\n /** Emitted after hover state changes. */\n @Output() afterEventHover = new EventEmitter<AfterEventHoverArgs<T>>();\n\n /** Emitted after an action button is clicked. */\n @Output() afterActionClick = new EventEmitter<AfterActionClickArgs<T>>();\n\n /** Emitted after a time segment expands. */\n @Output() afterSegmentExpand = new EventEmitter<AfterSegmentExpandArgs>();\n\n /** Emitted after a time segment collapses. */\n @Output() afterSegmentCollapse = new EventEmitter<AfterSegmentCollapseArgs>();\n\n /** Emitted after data loading completes. */\n @Output() afterLoad = new EventEmitter<AfterLoadArgs>();\n\n // ============================================================================\n // CONTENT CHILDREN - OPTIONAL TEMPLATES\n // ============================================================================\n\n /** Custom template for entire card. Context: { event, group } */\n @ContentChild('cardTemplate') cardTemplate?: TemplateRef<{ event: MJTimelineEvent<T>; group: TimelineGroup<T> }>;\n\n /** Custom template for card header. Context: { event } */\n @ContentChild('headerTemplate') headerTemplate?: TemplateRef<{ event: MJTimelineEvent<T> }>;\n\n /** Custom template for card body. Context: { event } */\n @ContentChild('bodyTemplate') bodyTemplate?: TemplateRef<{ event: MJTimelineEvent<T> }>;\n\n /** Custom template for card actions. Context: { event, actions } */\n @ContentChild('actionsTemplate') actionsTemplate?: TemplateRef<{ event: MJTimelineEvent<T>; actions: TimelineAction[] }>;\n\n /** Custom template for segment header. Context: { segment } */\n @ContentChild('segmentHeaderTemplate') segmentHeaderTemplate?: TemplateRef<{ segment: TimelineSegment }>;\n\n /** Custom template for empty state. */\n @ContentChild('emptyTemplate') emptyTemplate?: TemplateRef<void>;\n\n /** Custom template for loading state. */\n @ContentChild('loadingTemplate') loadingTemplate?: TemplateRef<void>;\n\n // ============================================================================\n // VIEW CHILDREN\n // ============================================================================\n\n @ViewChild('scrollContainer') scrollContainer?: ElementRef<HTMLElement>;\n\n // ============================================================================\n // PUBLIC PROPERTIES\n // ============================================================================\n\n /** Current time segments with events. */\n segments: TimelineSegment[] = [];\n\n /** All flattened events (for non-segmented display). */\n allEvents: MJTimelineEvent<T>[] = [];\n\n /** Virtual scroll state. */\n scrollState: VirtualScrollState = { ...DEFAULT_VIRTUAL_SCROLL_STATE };\n\n /** Whether initial load is complete. */\n isInitialized = false;\n\n /** Whether currently loading data. */\n isLoading = false;\n\n /** Index of currently focused event (for keyboard navigation). */\n focusedEventIndex = -1;\n\n // ============================================================================\n // PRIVATE PROPERTIES\n // ============================================================================\n\n private _initialized = false;\n private _hasLoaded = false;\n private _destroy$ = new Subject<void>();\n private _scroll$ = new Subject<Event>();\n private _intersectionObserver?: IntersectionObserver;\n\n // ============================================================================\n // CONSTRUCTOR\n // ============================================================================\n\n constructor(\n private cdr: ChangeDetectorRef,\n private elementRef: ElementRef,\n private ngZone: NgZone\n ) {}\n\n // ============================================================================\n // LIFECYCLE HOOKS\n // ============================================================================\n\n ngOnInit(): void {\n this._initialized = true;\n\n // Set up scroll listener for virtual scrolling\n this._scroll$\n .pipe(\n debounceTime(100),\n takeUntil(this._destroy$)\n )\n .subscribe(() => this.onScrollCheck());\n }\n\n ngAfterViewInit(): void {\n if (this.allowLoad && !this._hasLoaded) {\n this.refresh();\n }\n\n // Set up intersection observer for virtual scroll trigger\n this.setupIntersectionObserver();\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n\n if (this._intersectionObserver) {\n this._intersectionObserver.disconnect();\n }\n }\n\n // ============================================================================\n // PUBLIC METHODS\n // ============================================================================\n\n /**\n * Refreshes all data from the configured groups.\n * Clears existing data and reloads from sources.\n */\n async refresh(force: boolean = false): Promise<void> {\n // Prevent concurrent refresh calls - if already refreshing, exit immediately\n if (this.isLoading || (this._hasLoaded && !force)) {\n return;\n }\n\n const startTime = Date.now();\n\n // Emit before event\n const beforeArgs: BeforeLoadArgs = {\n cancel: false,\n groups: this._groups,\n isIncremental: false\n };\n this.beforeLoad.emit(beforeArgs);\n\n if (beforeArgs.cancel) {\n return;\n }\n\n this.isLoading = true;\n this.cdr.markForCheck();\n\n try {\n // Clear existing data\n this.allEvents = [];\n this.segments = [];\n this.scrollState = { ...DEFAULT_VIRTUAL_SCROLL_STATE };\n\n // Load data from all groups\n await this.loadAllGroups();\n\n // Group into segments\n this.buildSegments();\n\n this._hasLoaded = true;\n this.isInitialized = true;\n\n // Emit after event\n const afterArgs: AfterLoadArgs = {\n success: true,\n eventsLoaded: this.allEvents.length,\n totalEvents: this.allEvents.length,\n loadTimeMs: Date.now() - startTime,\n hasMore: this.scrollState.hasMore\n };\n this.afterLoad.emit(afterArgs);\n } catch (error) {\n console.error('Timeline: Error loading data', error);\n\n const afterArgs: AfterLoadArgs = {\n success: false,\n errorMessage: error instanceof Error ? error.message : 'Unknown error',\n eventsLoaded: 0,\n totalEvents: 0,\n loadTimeMs: Date.now() - startTime,\n hasMore: false\n };\n this.afterLoad.emit(afterArgs);\n } finally {\n this.isLoading = false;\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Loads more events (for virtual scrolling).\n */\n async loadMore(): Promise<void> {\n if (!this.virtualScroll.enabled || this.scrollState.isLoading || !this.scrollState.hasMore) {\n return;\n }\n\n const startTime = Date.now();\n\n // Emit before event\n const beforeArgs: BeforeLoadArgs = {\n cancel: false,\n groups: this._groups,\n isIncremental: true,\n offset: this.scrollState.loadedCount,\n batchSize: this.virtualScroll.batchSize\n };\n this.beforeLoad.emit(beforeArgs);\n\n if (beforeArgs.cancel) {\n return;\n }\n\n this.scrollState.isLoading = true;\n this.cdr.markForCheck();\n\n try {\n const previousCount = this.allEvents.length;\n\n // Load next batch from all groups\n await this.loadNextBatch();\n\n // Rebuild segments with new data\n this.buildSegments();\n\n const newCount = this.allEvents.length - previousCount;\n\n // Emit after event\n const afterArgs: AfterLoadArgs = {\n success: true,\n eventsLoaded: newCount,\n totalEvents: this.allEvents.length,\n loadTimeMs: Date.now() - startTime,\n hasMore: this.scrollState.hasMore\n };\n this.afterLoad.emit(afterArgs);\n } catch (error) {\n console.error('Timeline: Error loading more data', error);\n } finally {\n this.scrollState.isLoading = false;\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Expands all event cards.\n */\n expandAllEvents(): void {\n for (const event of this.allEvents) {\n if (!event.isExpanded) {\n this.setEventExpanded(event, true);\n }\n }\n this.cdr.markForCheck();\n }\n\n /**\n * Collapses all event cards.\n */\n collapseAllEvents(): void {\n for (const event of this.allEvents) {\n if (event.isExpanded) {\n this.setEventExpanded(event, false);\n }\n }\n this.cdr.markForCheck();\n }\n\n /**\n * Expands all time segments.\n */\n expandAllSegments(): void {\n for (const segment of this.segments) {\n if (!segment.isExpanded) {\n this.setSegmentExpanded(segment, true);\n }\n }\n this.cdr.markForCheck();\n }\n\n /**\n * Collapses all time segments.\n */\n collapseAllSegments(): void {\n for (const segment of this.segments) {\n if (segment.isExpanded) {\n this.setSegmentExpanded(segment, false);\n }\n }\n this.cdr.markForCheck();\n }\n\n /**\n * Expands a specific event by ID.\n */\n expandEvent(eventId: string): void {\n const event = this.getEvent(eventId);\n if (event && !event.isExpanded) {\n this.setEventExpanded(event, true);\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Collapses a specific event by ID.\n */\n collapseEvent(eventId: string): void {\n const event = this.getEvent(eventId);\n if (event && event.isExpanded) {\n this.setEventExpanded(event, false);\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Scrolls to a specific event.\n */\n scrollToEvent(eventId: string, behavior: ScrollBehavior = 'smooth'): void {\n const element = this.elementRef.nativeElement.querySelector(`[data-event-id=\"${eventId}\"]`);\n if (element) {\n element.scrollIntoView({ behavior, block: 'center' });\n }\n }\n\n /**\n * Scrolls to a specific date.\n */\n scrollToDate(date: Date, behavior: ScrollBehavior = 'smooth'): void {\n // Find the segment containing this date\n const segment = this.segments.find(s =>\n date >= s.startDate && date < s.endDate\n );\n\n if (segment) {\n const element = this.elementRef.nativeElement.querySelector(\n `[data-segment-label=\"${segment.label}\"]`\n );\n if (element) {\n element.scrollIntoView({ behavior, block: 'start' });\n }\n }\n }\n\n /**\n * Gets an event by ID.\n */\n getEvent(eventId: string): MJTimelineEvent<T> | undefined {\n return this.allEvents.find(e => e.id === eventId);\n }\n\n /**\n * Gets all events (flattened).\n */\n getAllEvents(): MJTimelineEvent<T>[] {\n return [...this.allEvents];\n }\n\n // ============================================================================\n // EVENT HANDLERS (Template bindings)\n // ============================================================================\n\n /**\n * Handles click on an event card.\n */\n onEventClick(event: MJTimelineEvent<T>, index: number, domEvent: Event): void {\n const group = this._groups[event.groupIndex];\n\n // Emit before event\n const beforeArgs: BeforeEventClickArgs<T> = {\n cancel: false,\n event,\n group,\n index,\n domEvent\n };\n this.beforeEventClick.emit(beforeArgs);\n\n if (beforeArgs.cancel) {\n return;\n }\n\n // Default behavior: toggle expand/collapse if collapsible\n const cardConfig = this.getEffectiveCardConfig(event);\n if (cardConfig.collapsible) {\n this.toggleEventExpanded(event, index, domEvent);\n }\n\n // Emit after event\n const afterArgs: AfterEventClickArgs<T> = {\n success: true,\n event,\n group,\n index,\n domEvent\n };\n this.afterEventClick.emit(afterArgs);\n }\n\n /**\n * Handles expand/collapse toggle on an event.\n */\n onToggleExpand(event: MJTimelineEvent<T>, index: number, domEvent: Event): void {\n domEvent.stopPropagation();\n this.toggleEventExpanded(event, index, domEvent);\n }\n\n /**\n * Handles mouse enter on an event card.\n */\n onEventMouseEnter(event: MJTimelineEvent<T>, index: number, domEvent: Event): void {\n const group = this._groups[event.groupIndex];\n\n const beforeArgs: BeforeEventHoverArgs<T> = {\n cancel: false,\n event,\n group,\n index,\n domEvent,\n hoverState: 'enter'\n };\n this.beforeEventHover.emit(beforeArgs);\n\n if (!beforeArgs.cancel) {\n const afterArgs: AfterEventHoverArgs<T> = {\n success: true,\n event,\n group,\n index,\n domEvent,\n hoverState: 'enter'\n };\n this.afterEventHover.emit(afterArgs);\n }\n }\n\n /**\n * Handles mouse leave on an event card.\n */\n onEventMouseLeave(event: MJTimelineEvent<T>, index: number, domEvent: Event): void {\n const group = this._groups[event.groupIndex];\n\n const beforeArgs: BeforeEventHoverArgs<T> = {\n cancel: false,\n event,\n group,\n index,\n domEvent,\n hoverState: 'leave'\n };\n this.beforeEventHover.emit(beforeArgs);\n\n if (!beforeArgs.cancel) {\n const afterArgs: AfterEventHoverArgs<T> = {\n success: true,\n event,\n group,\n index,\n domEvent,\n hoverState: 'leave'\n };\n this.afterEventHover.emit(afterArgs);\n }\n }\n\n /**\n * Handles action button click.\n */\n onActionClick(event: MJTimelineEvent<T>, action: TimelineAction, index: number, domEvent: Event): void {\n domEvent.stopPropagation();\n\n if (action.disabled) {\n return;\n }\n\n const group = this._groups[event.groupIndex];\n\n const beforeArgs: BeforeActionClickArgs<T> = {\n cancel: false,\n event,\n group,\n index,\n domEvent,\n action\n };\n this.beforeActionClick.emit(beforeArgs);\n\n if (!beforeArgs.cancel) {\n const afterArgs: AfterActionClickArgs<T> = {\n success: true,\n event,\n group,\n index,\n domEvent,\n action\n };\n this.afterActionClick.emit(afterArgs);\n }\n }\n\n /**\n * Handles segment header click.\n */\n onSegmentClick(segment: TimelineSegment): void {\n if (!this.segmentsCollapsible) {\n return;\n }\n\n if (segment.isExpanded) {\n this.collapseSegment(segment);\n } else {\n this.expandSegment(segment);\n }\n }\n\n /**\n * Handles scroll events for virtual scrolling.\n */\n onScroll(event: Event): void {\n this._scroll$.next(event);\n }\n\n /**\n * Handles keyboard navigation.\n */\n onKeyDown(event: KeyboardEvent): void {\n if (!this.enableKeyboardNavigation) {\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowRight':\n event.preventDefault();\n this.focusNextEvent();\n break;\n\n case 'ArrowUp':\n case 'ArrowLeft':\n event.preventDefault();\n this.focusPreviousEvent();\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.activateFocusedEvent();\n break;\n\n case 'Escape':\n event.preventDefault();\n this.collapseFocusedEvent();\n break;\n\n case 'Home':\n event.preventDefault();\n this.focusFirstEvent();\n break;\n\n case 'End':\n event.preventDefault();\n this.focusLastEvent();\n break;\n }\n }\n\n // ============================================================================\n // TEMPLATE HELPERS\n // ============================================================================\n\n /**\n * Gets the effective card config for an event.\n */\n getEffectiveCardConfig(event: MJTimelineEvent<T>): TimelineCardConfig {\n const group = this._groups[event.groupIndex];\n return {\n ...this.defaultCardConfig,\n ...group?.CardConfig,\n ...this.mapEventConfigToCardConfig(event.config)\n };\n }\n\n /**\n * Gets the color for a group/event.\n */\n getColor(event: MJTimelineEvent<T>): string {\n if (event.config?.color) {\n return event.config.color;\n }\n\n const group = this._groups[event.groupIndex];\n if (group?.DisplayColorMode === 'manual' && group.DisplayColor) {\n return group.DisplayColor;\n }\n\n return AUTO_COLORS[event.groupIndex % AUTO_COLORS.length];\n }\n\n /**\n * Gets the icon for a group/event.\n */\n getIcon(event: MJTimelineEvent<T>): string {\n if (event.config?.icon) {\n return event.config.icon;\n }\n\n const group = this._groups[event.groupIndex];\n if (group?.DisplayIconMode === 'custom' && group.DisplayIcon) {\n return group.DisplayIcon;\n }\n\n return DEFAULT_ICONS[event.groupIndex % DEFAULT_ICONS.length];\n }\n\n /**\n * Gets the actions for an event.\n */\n getActions(event: MJTimelineEvent<T>): TimelineAction[] {\n if (event.config?.actions) {\n return event.config.actions;\n }\n\n const cardConfig = this.getEffectiveCardConfig(event);\n return cardConfig.actions || [];\n }\n\n /**\n * Formats a date for display.\n */\n formatDate(date: Date, format?: string): string {\n const fmt = format || this.defaultCardConfig.dateFormat || 'MMM d, yyyy';\n return this.formatDateInternal(date, fmt);\n }\n\n /**\n * Gets the value of a display field from an event.\n */\n getFieldValue(event: MJTimelineEvent<T>, field: TimelineDisplayField): string {\n const value = getFieldValue(event.entity, field.fieldName);\n\n if (field.formatter) {\n return field.formatter(value);\n }\n\n if (value == null) {\n return '';\n }\n\n if (field.format && value instanceof Date) {\n return this.formatDateInternal(value, field.format);\n }\n\n return String(value);\n }\n\n /**\n * Track by function for ngFor.\n */\n trackByEventId(_index: number, event: MJTimelineEvent<T>): string {\n return event.id;\n }\n\n /**\n * Track by function for segments.\n */\n trackBySegmentLabel(_index: number, segment: TimelineSegment): string {\n return segment.label;\n }\n\n /**\n * Gets the global index of an event in the allEvents array.\n */\n getGlobalIndex(event: MJTimelineEvent<T>): number {\n return this.allEvents.indexOf(event);\n }\n\n /**\n * Checks if an event is currently selected/focused.\n * An event is selected if either:\n * - Its ID matches the selectedEventId input\n * - Its global index matches the focusedEventIndex (keyboard navigation)\n */\n isEventSelected(event: MJTimelineEvent<T>, globalIndex: number): boolean {\n // Check selectedEventId from parent first (takes priority)\n if (this.selectedEventId && event.id === this.selectedEventId) {\n return true;\n }\n // Fall back to keyboard navigation focus\n return this.focusedEventIndex === globalIndex;\n }\n\n // ============================================================================\n // PRIVATE METHODS - DATA LOADING\n // ============================================================================\n\n /**\n * Loads data from all groups.\n */\n private async loadAllGroups(): Promise<void> {\n for (let groupIndex = 0; groupIndex < this._groups.length; groupIndex++) {\n const group = this._groups[groupIndex];\n await this.loadGroup(group, groupIndex);\n }\n\n // Sort all events by date\n this.sortEvents();\n\n // Update scroll state\n this.scrollState.loadedCount = this.allEvents.length;\n this.scrollState.hasMore = false; // TODO: Implement proper pagination detection\n }\n\n /**\n * Loads data from a single group.\n */\n private async loadGroup(group: TimelineGroup<T>, groupIndex: number): Promise<void> {\n let records: T[] = [];\n\n if (group.DataSourceType === 'array') {\n records = group.EntityObjects || [];\n } else if (group.DataSourceType === 'entity' && group.EntityName) {\n records = await this.loadFromEntity(group);\n }\n\n // Convert records to timeline events\n for (const record of records) {\n const event = this.createTimelineEvent(record, group, groupIndex);\n this.allEvents.push(event);\n }\n }\n\n /**\n * Loads data from MemberJunction entity.\n */\n private async loadFromEntity(group: TimelineGroup<T>): Promise<T[]> {\n try {\n const { RunView } = await import('@memberjunction/core');\n const rv = new RunView();\n\n const result = await rv.RunView({\n EntityName: group.EntityName,\n ExtraFilter: group.Filter,\n OrderBy: group.OrderBy,\n MaxRows: group.MaxRecords,\n ResultType: 'entity_object'\n });\n\n if (result?.Success) {\n return result.Results as T[];\n }\n } catch (error) {\n console.warn('Timeline: Could not load from entity. Is @memberjunction/core available?', error);\n }\n\n return [];\n }\n\n /**\n * Loads the next batch for virtual scrolling.\n */\n private async loadNextBatch(): Promise<void> {\n // TODO: Implement proper batch loading with offset/limit\n // For now, this is a placeholder\n }\n\n /**\n * Creates a timeline event from a source record.\n */\n private createTimelineEvent(record: T, group: TimelineGroup<T>, groupIndex: number): MJTimelineEvent<T> {\n const cardConfig = group.getEffectiveCardConfig();\n\n return {\n id: group.getId(record),\n entity: record,\n title: group.getTitle(record),\n date: group.getDate(record),\n subtitle: group.getSubtitle(record),\n description: group.getDescription(record),\n imageUrl: group.getImageUrl(record),\n config: group.getEventConfig(record),\n groupIndex,\n isExpanded: cardConfig.defaultExpanded ?? false\n };\n }\n\n /**\n * Sorts events by date according to sortOrder.\n */\n private sortEvents(): void {\n this.allEvents.sort((a, b) => {\n const diff = a.date.getTime() - b.date.getTime();\n return this.sortOrder === 'asc' ? diff : -diff;\n });\n }\n\n // ============================================================================\n // PRIVATE METHODS - SEGMENTATION\n // ============================================================================\n\n /**\n * Builds time segments from events.\n */\n private buildSegments(): void {\n if (this.segmentGrouping === 'none') {\n this.segments = [];\n return;\n }\n\n const segmentMap = new Map<string, TimelineSegment>();\n\n for (const event of this.allEvents) {\n const { label, startDate, endDate } = this.getSegmentInfo(event.date);\n\n if (!segmentMap.has(label)) {\n segmentMap.set(label, {\n label,\n startDate,\n endDate,\n events: [],\n isExpanded: this.segmentsDefaultExpanded,\n eventCount: 0\n });\n }\n\n const segment = segmentMap.get(label)!;\n segment.events.push(event);\n segment.eventCount++;\n }\n\n // Convert to array and sort\n this.segments = Array.from(segmentMap.values());\n this.segments.sort((a, b) => {\n const diff = a.startDate.getTime() - b.startDate.getTime();\n return this.sortOrder === 'asc' ? diff : -diff;\n });\n }\n\n /**\n * Gets segment information for a date.\n */\n private getSegmentInfo(date: Date): { label: string; startDate: Date; endDate: Date } {\n const year = date.getFullYear();\n const month = date.getMonth();\n const day = date.getDate();\n\n switch (this.segmentGrouping) {\n case 'day':\n return {\n label: this.formatDateInternal(date, 'MMMM d, yyyy'),\n startDate: new Date(year, month, day),\n endDate: new Date(year, month, day + 1)\n };\n\n case 'week':\n const weekStart = new Date(date);\n weekStart.setDate(day - date.getDay());\n const weekEnd = new Date(weekStart);\n weekEnd.setDate(weekStart.getDate() + 7);\n return {\n label: `Week of ${this.formatDateInternal(weekStart, 'MMM d, yyyy')}`,\n startDate: weekStart,\n endDate: weekEnd\n };\n\n case 'month':\n return {\n label: this.formatDateInternal(new Date(year, month, 1), 'MMMM yyyy'),\n startDate: new Date(year, month, 1),\n endDate: new Date(year, month + 1, 1)\n };\n\n case 'quarter':\n const quarter = Math.floor(month / 3);\n return {\n label: `Q${quarter + 1} ${year}`,\n startDate: new Date(year, quarter * 3, 1),\n endDate: new Date(year, (quarter + 1) * 3, 1)\n };\n\n case 'year':\n return {\n label: String(year),\n startDate: new Date(year, 0, 1),\n endDate: new Date(year + 1, 0, 1)\n };\n\n default:\n return {\n label: this.formatDateInternal(date, 'MMMM yyyy'),\n startDate: new Date(year, month, 1),\n endDate: new Date(year, month + 1, 1)\n };\n }\n }\n\n // ============================================================================\n // PRIVATE METHODS - EXPAND/COLLAPSE\n // ============================================================================\n\n /**\n * Toggles event expanded state.\n */\n private toggleEventExpanded(event: MJTimelineEvent<T>, index: number, domEvent?: Event): void {\n if (event.isExpanded) {\n this.collapseEventInternal(event, index, domEvent);\n } else {\n this.expandEventInternal(event, index, domEvent);\n }\n }\n\n /**\n * Sets event expanded state.\n */\n private setEventExpanded(event: MJTimelineEvent<T>, expanded: boolean): void {\n event.isExpanded = expanded;\n }\n\n /**\n * Expands an event with events.\n */\n private expandEventInternal(event: MJTimelineEvent<T>, index: number, domEvent?: Event): void {\n const group = this._groups[event.groupIndex];\n\n const beforeArgs: BeforeEventExpandArgs<T> = {\n cancel: false,\n event,\n group,\n index,\n domEvent\n };\n this.beforeEventExpand.emit(beforeArgs);\n\n if (beforeArgs.cancel) {\n return;\n }\n\n event.isExpanded = true;\n this.cdr.markForCheck();\n\n const afterArgs: AfterEventExpandArgs<T> = {\n success: true,\n event,\n group,\n index,\n domEvent\n };\n this.afterEventExpand.emit(afterArgs);\n }\n\n /**\n * Collapses an event with events.\n */\n private collapseEventInternal(event: MJTimelineEvent<T>, index: number, domEvent?: Event): void {\n const group = this._groups[event.groupIndex];\n\n const beforeArgs: BeforeEventCollapseArgs<T> = {\n cancel: false,\n event,\n group,\n index,\n domEvent\n };\n this.beforeEventCollapse.emit(beforeArgs);\n\n if (beforeArgs.cancel) {\n return;\n }\n\n event.isExpanded = false;\n this.cdr.markForCheck();\n\n const afterArgs: AfterEventCollapseArgs<T> = {\n success: true,\n event,\n group,\n index,\n domEvent\n };\n this.afterEventCollapse.emit(afterArgs);\n }\n\n /**\n * Expands a segment.\n */\n private expandSegment(segment: TimelineSegment): void {\n const beforeArgs: BeforeSegmentExpandArgs = {\n cancel: false,\n segment,\n label: segment.label,\n startDate: segment.startDate,\n endDate: segment.endDate,\n eventCount: segment.eventCount\n };\n this.beforeSegmentExpand.emit(beforeArgs);\n\n if (beforeArgs.cancel) {\n return;\n }\n\n segment.isExpanded = true;\n this.cdr.markForCheck();\n\n const afterArgs: AfterSegmentExpandArgs = {\n success: true,\n segment,\n label: segment.label,\n startDate: segment.startDate,\n endDate: segment.endDate,\n eventCount: segment.eventCount\n };\n this.afterSegmentExpand.emit(afterArgs);\n }\n\n /**\n * Collapses a segment.\n */\n private collapseSegment(segment: TimelineSegment): void {\n const beforeArgs: BeforeSegmentCollapseArgs = {\n cancel: false,\n segment,\n label: segment.label,\n startDate: segment.startDate,\n endDate: segment.endDate,\n eventCount: segment.eventCount\n };\n this.beforeSegmentCollapse.emit(beforeArgs);\n\n if (beforeArgs.cancel) {\n return;\n }\n\n segment.isExpanded = false;\n this.cdr.markForCheck();\n\n const afterArgs: AfterSegmentCollapseArgs = {\n success: true,\n segment,\n label: segment.label,\n startDate: segment.startDate,\n endDate: segment.endDate,\n eventCount: segment.eventCount\n };\n this.afterSegmentCollapse.emit(afterArgs);\n }\n\n /**\n * Sets segment expanded state without events.\n */\n private setSegmentExpanded(segment: TimelineSegment, expanded: boolean): void {\n segment.isExpanded = expanded;\n }\n\n // ============================================================================\n // PRIVATE METHODS - KEYBOARD NAVIGATION\n // ============================================================================\n\n private focusNextEvent(): void {\n if (this.allEvents.length === 0) return;\n\n this.focusedEventIndex = Math.min(\n this.focusedEventIndex + 1,\n this.allEvents.length - 1\n );\n this.scrollToFocusedEvent();\n }\n\n private focusPreviousEvent(): void {\n if (this.allEvents.length === 0) return;\n\n this.focusedEventIndex = Math.max(this.focusedEventIndex - 1, 0);\n this.scrollToFocusedEvent();\n }\n\n private focusFirstEvent(): void {\n if (this.allEvents.length === 0) return;\n\n this.focusedEventIndex = 0;\n this.scrollToFocusedEvent();\n }\n\n private focusLastEvent(): void {\n if (this.allEvents.length === 0) return;\n\n this.focusedEventIndex = this.allEvents.length - 1;\n this.scrollToFocusedEvent();\n }\n\n private activateFocusedEvent(): void {\n if (this.focusedEventIndex >= 0 && this.focusedEventIndex < this.allEvents.length) {\n const event = this.allEvents[this.focusedEventIndex];\n this.toggleEventExpanded(event, this.focusedEventIndex);\n }\n }\n\n private collapseFocusedEvent(): void {\n if (this.focusedEventIndex >= 0 && this.focusedEventIndex < this.allEvents.length) {\n const event = this.allEvents[this.focusedEventIndex];\n if (event.isExpanded) {\n this.collapseEventInternal(event, this.focusedEventIndex);\n }\n }\n }\n\n private scrollToFocusedEvent(): void {\n if (this.focusedEventIndex >= 0 && this.focusedEventIndex < this.allEvents.length) {\n const event = this.allEvents[this.focusedEventIndex];\n this.scrollToEvent(event.id, 'smooth');\n }\n this.cdr.markForCheck();\n }\n\n // ============================================================================\n // PRIVATE METHODS - VIRTUAL SCROLLING\n // ============================================================================\n\n private setupIntersectionObserver(): void {\n if (!this.virtualScroll.enabled) return;\n\n // Use requestAnimationFrame to ensure DOM is ready\n requestAnimationFrame(() => {\n const sentinel = this.elementRef.nativeElement.querySelector('.mj-timeline-scroll-sentinel');\n if (!sentinel) return;\n\n this._intersectionObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry?.isIntersecting && !this.scrollState.isLoading && this.scrollState.hasMore) {\n this.ngZone.run(() => this.loadMore());\n }\n },\n {\n root: this.scrollContainer?.nativeElement,\n threshold: 0,\n rootMargin: `${this.virtualScroll.loadThreshold}px`\n }\n );\n\n this._intersectionObserver.observe(sentinel);\n });\n }\n\n private onScrollCheck(): void {\n if (!this.scrollContainer?.nativeElement || !this.virtualScroll.enabled) {\n return;\n }\n\n const el = this.scrollContainer.nativeElement;\n this.scrollState.scrollOffset = el.scrollTop;\n\n const distanceFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight;\n if (distanceFromBottom < this.virtualScroll.loadThreshold && this.scrollState.hasMore) {\n this.loadMore();\n }\n }\n\n // ============================================================================\n // PRIVATE METHODS - UTILITIES\n // ============================================================================\n\n /**\n * Maps event config to card config properties.\n */\n private mapEventConfigToCardConfig(config: TimelineEventConfig = {}): Partial<TimelineCardConfig> {\n return {\n collapsible: config.collapsible,\n defaultExpanded: config.defaultExpanded,\n actions: config.actions\n };\n }\n\n /**\n * Simple date formatter (replaces Angular DatePipe for standalone use).\n * Uses placeholder tokens to avoid replacement conflicts.\n */\n private formatDateInternal(date: Date, format: string): string {\n const months = ['January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'];\n const monthsShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n const year = date.getFullYear();\n const month = date.getMonth();\n const day = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n\n // Use placeholder tokens to avoid conflicts (e.g., 'May' containing 'M')\n // Replace longer patterns first with placeholders, then substitute values\n let result = format;\n\n // Replace patterns with unique placeholders first\n result = result.replace(/yyyy/g, '{{YEAR}}');\n result = result.replace(/MMMM/g, '{{MONTH_FULL}}');\n result = result.replace(/MMM/g, '{{MONTH_SHORT}}');\n result = result.replace(/MM/g, '{{MONTH_PAD}}');\n result = result.replace(/dd/g, '{{DAY_PAD}}');\n result = result.replace(/d/g, '{{DAY}}');\n result = result.replace(/HH/g, '{{HOUR_24}}');\n result = result.replace(/hh/g, '{{HOUR_12_PAD}}');\n result = result.replace(/h/g, '{{HOUR_12}}');\n result = result.replace(/mm/g, '{{MIN}}');\n result = result.replace(/a/g, '{{AMPM}}');\n\n // Now substitute the actual values\n result = result.replace(/\\{\\{YEAR\\}\\}/g, String(year));\n result = result.replace(/\\{\\{MONTH_FULL\\}\\}/g, months[month]);\n result = result.replace(/\\{\\{MONTH_SHORT\\}\\}/g, monthsShort[month]);\n result = result.replace(/\\{\\{MONTH_PAD\\}\\}/g, String(month + 1).padStart(2, '0'));\n result = result.replace(/\\{\\{DAY_PAD\\}\\}/g, String(day).padStart(2, '0'));\n result = result.replace(/\\{\\{DAY\\}\\}/g, String(day));\n result = result.replace(/\\{\\{HOUR_24\\}\\}/g, String(hours).padStart(2, '0'));\n result = result.replace(/\\{\\{HOUR_12_PAD\\}\\}/g, String(hours % 12 || 12).padStart(2, '0'));\n result = result.replace(/\\{\\{HOUR_12\\}\\}/g, String(hours % 12 || 12));\n result = result.replace(/\\{\\{MIN\\}\\}/g, String(minutes).padStart(2, '0'));\n result = result.replace(/\\{\\{AMPM\\}\\}/g, hours >= 12 ? 'PM' : 'AM');\n\n return result;\n }\n}\n","<!--\nMJ Timeline Component Template\n\nStructure:\n- Loading state\n- Empty state\n- Timeline container (vertical/horizontal)\n- Time segments (collapsible)\n- Segment header\n- Event cards within segment\n- Or flat list of events (when segmentGrouping='none')\n- Virtual scroll sentinel\n-->\n\n<div\n class=\"mj-timeline\"\n [class.mj-timeline--vertical]=\"orientation === 'vertical'\"\n [class.mj-timeline--horizontal]=\"orientation === 'horizontal'\"\n [class.mj-timeline--single]=\"layout === 'single'\"\n [class.mj-timeline--alternating]=\"layout === 'alternating'\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"list\"\n tabindex=\"0\"\n (keydown)=\"onKeyDown($event)\"\n #scrollContainer\n (scroll)=\"onScroll($event)\">\n\n <!-- Loading State -->\n @if (isLoading && !isInitialized) {\n @if (loadingTemplate) {\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n } @else {\n <div class=\"mj-timeline__loading\">\n <div class=\"mj-timeline__loading-spinner\"></div>\n <span class=\"mj-timeline__loading-text\">{{ loadingMessage }}</span>\n </div>\n }\n }\n\n <!-- Empty State -->\n @if (isInitialized && allEvents.length === 0 && !isLoading) {\n @if (emptyTemplate) {\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n } @else {\n <div class=\"mj-timeline__empty\">\n <i [class]=\"emptyIcon\" class=\"mj-timeline__empty-icon\"></i>\n <span class=\"mj-timeline__empty-text\">{{ emptyMessage }}</span>\n </div>\n }\n }\n\n <!-- Timeline Content -->\n @if (isInitialized && allEvents.length > 0) {\n <!-- Segmented View -->\n @if (segmentGrouping !== 'none') {\n @for (segment of segments; track trackBySegmentLabel(segmentIndex, segment); let segmentIndex = $index) {\n <div\n class=\"mj-timeline__segment\"\n [class.mj-timeline__segment--collapsed]=\"!segment.isExpanded\"\n [attr.data-segment-label]=\"segment.label\">\n <!-- Segment Header -->\n <div\n class=\"mj-timeline__segment-header\"\n [class.mj-timeline__segment-header--clickable]=\"segmentsCollapsible\"\n (click)=\"onSegmentClick(segment)\"\n role=\"button\"\n [attr.aria-expanded]=\"segment.isExpanded\"\n [attr.aria-controls]=\"'segment-content-' + segmentIndex\">\n @if (segmentHeaderTemplate) {\n <ng-container *ngTemplateOutlet=\"segmentHeaderTemplate; context: { segment: segment }\"></ng-container>\n } @else {\n @if (segmentsCollapsible) {\n <span class=\"mj-timeline__segment-toggle\">\n <i [class]=\"segment.isExpanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\"></i>\n </span>\n }\n <span class=\"mj-timeline__segment-label\">{{ segment.label }}</span>\n <span class=\"mj-timeline__segment-count\">({{ segment.eventCount }} {{ segment.eventCount === 1 ? 'event' : 'events' }})</span>\n <span class=\"mj-timeline__segment-line\"></span>\n }\n </div>\n <!-- Segment Content -->\n <div\n class=\"mj-timeline__segment-content\"\n [id]=\"'segment-content-' + segmentIndex\"\n [class.mj-timeline__segment-content--hidden]=\"!segment.isExpanded\">\n <div class=\"mj-timeline__axis\">\n <!-- Events in Segment -->\n @for (event of segment.events; track trackByEventId(eventIndex, event); let eventIndex = $index; let isOdd = $odd) {\n <ng-container *ngTemplateOutlet=\"eventCard; context: {\n event: event,\n index: eventIndex,\n isOdd: isOdd,\n globalIndex: getGlobalIndex(event)\n }\"></ng-container>\n }\n </div>\n </div>\n </div>\n }\n }\n <!-- Flat View (no segments) -->\n @if (segmentGrouping === 'none') {\n <div class=\"mj-timeline__axis\">\n @for (event of allEvents; track trackByEventId(eventIndex, event); let eventIndex = $index; let isOdd = $odd) {\n <ng-container *ngTemplateOutlet=\"eventCard; context: {\n event: event,\n index: eventIndex,\n isOdd: isOdd,\n globalIndex: eventIndex\n }\"></ng-container>\n }\n </div>\n }\n }\n\n <!-- Virtual Scroll Sentinel -->\n @if (virtualScroll.enabled && scrollState.hasMore) {\n <div\n class=\"mj-timeline-scroll-sentinel\"\n >\n </div>\n }\n\n <!-- Loading More Indicator -->\n @if (scrollState.isLoading && virtualScroll.showLoadingIndicator) {\n <div\n class=\"mj-timeline__loading-more\"\n >\n <div class=\"mj-timeline__loading-spinner mj-timeline__loading-spinner--small\"></div>\n <span>{{ virtualScroll.loadingMessage }}</span>\n </div>\n }\n\n</div>\n\n<!-- Event Card Template -->\n<ng-template #eventCard let-event=\"event\" let-index=\"index\" let-isOdd=\"isOdd\" let-globalIndex=\"globalIndex\">\n <div\n class=\"mj-timeline__event\"\n [class.mj-timeline__event--odd]=\"isOdd && layout === 'alternating'\"\n [class.mj-timeline__event--even]=\"!isOdd && layout === 'alternating'\"\n [class.mj-timeline__event--expanded]=\"event.isExpanded\"\n [class.mj-timeline__event--focused]=\"isEventSelected(event, globalIndex)\"\n [attr.data-event-id]=\"event.id\"\n role=\"listitem\"\n [attr.aria-expanded]=\"event.isExpanded\">\n\n <!-- Timeline Marker -->\n <div class=\"mj-timeline__marker\" [style.background-color]=\"getColor(event)\">\n <i [class]=\"getIcon(event)\" class=\"mj-timeline__marker-icon\"></i>\n </div>\n\n <!-- Connector Line -->\n <div class=\"mj-timeline__connector\" [style.background-color]=\"getColor(event)\"></div>\n\n <!-- Date Label (for alternating layout) -->\n @if (layout === 'alternating') {\n <div class=\"mj-timeline__date-label\">\n {{ formatDate(event.date) }}\n </div>\n }\n\n <!-- Event Card -->\n <div\n class=\"mj-timeline__card\"\n [ngClass]=\"getEffectiveCardConfig(event).cssClass\"\n [style.max-width]=\"getEffectiveCardConfig(event).maxWidth\"\n [style.min-width]=\"getEffectiveCardConfig(event).minWidth\"\n [style.border-left-color]=\"getColor(event)\"\n (click)=\"onEventClick(event, globalIndex, $event)\"\n (mouseenter)=\"onEventMouseEnter(event, globalIndex, $event)\"\n (mouseleave)=\"onEventMouseLeave(event, globalIndex, $event)\">\n\n <!-- Custom Card Template -->\n @if (cardTemplate) {\n <ng-container *ngTemplateOutlet=\"cardTemplate; context: {\n event: event,\n group: groups[event.groupIndex]\n }\"></ng-container>\n } @else {\n <!-- Card Header -->\n <div class=\"mj-timeline__card-header\">\n <!-- Image (left position) -->\n @if (event.imageUrl && getEffectiveCardConfig(event).imagePosition === 'left') {\n <div\n class=\"mj-timeline__card-image mj-timeline__card-image--left\"\n [class.mj-timeline__card-image--small]=\"getEffectiveCardConfig(event).imageSize === 'small'\"\n [class.mj-timeline__card-image--medium]=\"getEffectiveCardConfig(event).imageSize === 'medium'\"\n [class.mj-timeline__card-image--large]=\"getEffectiveCardConfig(event).imageSize === 'large'\">\n <img [src]=\"event.imageUrl\" [alt]=\"event.title\" />\n </div>\n }\n <div class=\"mj-timeline__card-header-content\">\n <!-- Custom Header Template -->\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { event: event }\"></ng-container>\n } @else {\n <!-- Icon -->\n @if (getEffectiveCardConfig(event).showIcon) {\n <span\n class=\"mj-timeline__card-icon\"\n [style.color]=\"getColor(event)\">\n <i [class]=\"getIcon(event)\"></i>\n </span>\n }\n <!-- Title & Subtitle -->\n <div class=\"mj-timeline__card-titles\">\n <h4 class=\"mj-timeline__card-title\">{{ event.title }}</h4>\n @if (event.subtitle && getEffectiveCardConfig(event).showSubtitle) {\n <span\n class=\"mj-timeline__card-subtitle\"\n >\n {{ event.subtitle }}\n </span>\n }\n @if (getEffectiveCardConfig(event).showDate && layout !== 'alternating') {\n <span\n class=\"mj-timeline__card-date\"\n >\n {{ formatDate(event.date, getEffectiveCardConfig(event).dateFormat) }}\n </span>\n }\n </div>\n <!-- Expand/Collapse Toggle -->\n @if (getEffectiveCardConfig(event).collapsible) {\n <button\n class=\"mj-timeline__card-toggle\"\n (click)=\"onToggleExpand(event, globalIndex, $event)\"\n [attr.aria-label]=\"event.isExpanded ? 'Collapse' : 'Expand'\"\n type=\"button\">\n <i [class]=\"event.isExpanded ? 'fa-solid fa-chevron-up' : 'fa-solid fa-chevron-down'\"></i>\n </button>\n }\n }\n </div>\n </div>\n <!-- Image (top position) -->\n @if (event.imageUrl && getEffectiveCardConfig(event).imagePosition === 'top') {\n <div\n class=\"mj-timeline__card-image mj-timeline__card-image--top\"\n >\n <img [src]=\"event.imageUrl\" [alt]=\"event.title\" />\n </div>\n }\n <!-- Card Body -->\n <div\n class=\"mj-timeline__card-body\"\n [class.mj-timeline__card-body--collapsed]=\"!event.isExpanded && getEffectiveCardConfig(event).collapsible\">\n <!-- Custom Body Template -->\n @if (bodyTemplate) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { event: event }\"></ng-container>\n } @else {\n <!-- Summary Fields (always visible) -->\n @if (getEffectiveCardConfig(event).summaryFields?.length) {\n <div\n class=\"mj-timeline__card-fields mj-timeline__card-fields--summary\"\n >\n @for (field of getEffectiveCardConfig(event).summaryFields; track field) {\n <div class=\"mj-timeline__card-field\" [ngClass]=\"field.cssClass\">\n @if (field.icon) {\n <i [ngClass]=\"field.icon\" class=\"mj-timeline__card-field-icon\"></i>\n }\n @if (!field.hideLabel && field.label) {\n <span class=\"mj-timeline__card-field-label\">{{ field.label }}:</span>\n }\n <span class=\"mj-timeline__card-field-value\">{{ getFieldValue(event, field) }}</span>\n </div>\n }\n </div>\n }\n <!-- Description (expanded view) -->\n @if (event.description && event.isExpanded) {\n <div\n class=\"mj-timeline__card-description\"\n [class.mj-timeline__card-description--clamped]=\"(getEffectiveCardConfig(event).descriptionMaxLines ?? 0) > 0\"\n [style.-webkit-line-clamp]=\"getEffectiveCardConfig(event).descriptionMaxLines || null\">\n @if (getEffectiveCardConfig(event).allowHtmlDescription) {\n <div [innerHTML]=\"event.description\"></div>\n } @else {\n {{ event.description }}\n }\n </div>\n }\n <!-- Expanded Fields -->\n @if (event.isExpanded && getEffectiveCardConfig(event).expandedFields?.length) {\n <div\n class=\"mj-timeline__card-fields mj-timeline__card-fields--expanded\"\n >\n @for (field of getEffectiveCardConfig(event).expandedFields; track field) {\n <div class=\"mj-timeline__card-field\" [ngClass]=\"field.cssClass\">\n @if (field.icon) {\n <i [ngClass]=\"field.icon\" class=\"mj-timeline__card-field-icon\"></i>\n }\n @if (!field.hideLabel) {\n <span class=\"mj-timeline__card-field-label\">{{ field.label || field.fieldName }}:</span>\n }\n <span class=\"mj-timeline__card-field-value\">{{ getFieldValue(event, field) }}</span>\n </div>\n }\n </div>\n }\n }\n </div>\n <!-- Card Actions -->\n @if (getActions(event).length > 0) {\n <div\n class=\"mj-timeline__card-actions\"\n [class.mj-timeline__card-actions--hover-only]=\"getEffectiveCardConfig(event).actionsOnHover\"\n >\n <!-- Custom Actions Template -->\n @if (actionsTemplate) {\n <ng-container *ngTemplateOutlet=\"actionsTemplate; context: {\n event: event,\n actions: getActions(event)\n }\"></ng-container>\n } @else {\n @for (action of getActions(event); track action) {\n <button\n class=\"mj-timeline__action\"\n [class.mj-timeline__action--primary]=\"action.variant === 'primary'\"\n [class.mj-timeline__action--secondary]=\"action.variant === 'secondary' || !action.variant\"\n [class.mj-timeline__action--danger]=\"action.variant === 'danger'\"\n [class.mj-timeline__action--link]=\"action.variant === 'link'\"\n [ngClass]=\"action.cssClass\"\n [disabled]=\"action.disabled\"\n [title]=\"action.tooltip || ''\"\n (click)=\"onActionClick(event, action, globalIndex, $event)\"\n type=\"button\">\n @if (action.icon) {\n <i [ngClass]=\"action.icon\"></i>\n }\n <span>{{ action.label }}</span>\n </button>\n }\n }\n </div>\n }\n }\n\n <!-- Default Card Template -->\n </div>\n </div>\n</ng-template>\n"]}
|
package/dist/lib/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/lib/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/lib/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG","sourcesContent":["/**\n * @fileoverview Event interfaces for the MJ Timeline component.\n *\n * This module defines all event argument interfaces following the BeforeX/AfterX pattern.\n * BeforeX events include a `cancel` property that can be set to `true` to prevent\n * the default behavior. AfterX events include a `success` property indicating completion.\n *\n * @module @memberjunction/ng-timeline/events\n */\n\nimport { MJTimelineEvent, TimelineAction, TimelineSegment } from './types';\nimport { TimelineGroup } from './timeline-group';\n\n// ============================================================================\n// BASE EVENT INTERFACES\n// ============================================================================\n\n/**\n * Base interface for all \"Before\" event arguments.\n * Handlers can set `cancel = true` to prevent the default behavior.\n *\n * @example\n * ```typescript\n * onBeforeClick(args: BeforeEventClickArgs) {\n * if (!this.userHasPermission()) {\n * args.cancel = true; // Prevents the click action\n * }\n * }\n * ```\n */\nexport interface BeforeEventArgs {\n /**\n * Set to `true` to cancel the default behavior.\n * Default value is `false`.\n */\n cancel: boolean;\n}\n\n/**\n * Base interface for all \"After\" event arguments.\n * Indicates whether the operation completed successfully.\n */\nexport interface AfterEventArgs {\n /**\n * Whether the operation completed successfully.\n * Will be `false` if an error occurred during the operation.\n */\n success: boolean;\n\n /**\n * Error message if the operation failed.\n * Only populated when `success` is `false`.\n */\n errorMessage?: string;\n}\n\n// ============================================================================\n// TIMELINE EVENT INTERACTIONS\n// ============================================================================\n\n/**\n * Base interface for event-related arguments.\n * Contains common properties for all timeline event interactions.\n *\n * @typeParam T - The type of the source record (defaults to `any`)\n */\nexport interface TimelineEventArgs<T = any> {\n /**\n * The timeline event being interacted with.\n */\n event: MJTimelineEvent<T>;\n\n /**\n * The source group this event belongs to.\n */\n group: TimelineGroup<T>;\n\n /**\n * Index of this event within the flattened events array.\n */\n index: number;\n\n /**\n * The original DOM event, if applicable.\n * May be undefined for programmatic triggers.\n */\n domEvent?: Event;\n}\n\n// ============================================================================\n// CLICK EVENTS\n// ============================================================================\n\n/**\n * Arguments for the `beforeEventClick` event.\n * Emitted before a timeline event card is clicked.\n *\n * @typeParam T - The type of the source record\n *\n * @example\n * ```typescript\n * onBeforeClick(args: BeforeEventClickArgs<MJTaskEntity>) {\n * // Prevent click on archived items\n * if (args.event.entity.Status === 'Archived') {\n * args.cancel = true;\n * this.showToast('Archived items cannot be opened');\n * }\n * }\n * ```\n */\nexport interface BeforeEventClickArgs<T = any>\n extends BeforeEventArgs, TimelineEventArgs<T> {}\n\n/**\n * Arguments for the `afterEventClick` event.\n * Emitted after a timeline event card click is processed.\n *\n * @typeParam T - The type of the source record\n */\nexport interface AfterEventClickArgs<T = any>\n extends AfterEventArgs, TimelineEventArgs<T> {}\n\n// ============================================================================\n// EXPAND EVENTS\n// ============================================================================\n\n/**\n * Arguments for the `beforeEventExpand` event.\n * Emitted before a timeline event card is expanded.\n *\n * @typeParam T - The type of the source record\n *\n * @example\n * ```typescript\n * onBeforeExpand(args: BeforeEventExpandArgs<MJTaskEntity>) {\n * // Require permission to view details\n * if (!this.canViewDetails(args.event.entity)) {\n * args.cancel = true;\n * this.promptLogin();\n * }\n * }\n * ```\n */\nexport interface BeforeEventExpandArgs<T = any>\n extends BeforeEventArgs, TimelineEventArgs<T> {}\n\n/**\n * Arguments for the `afterEventExpand` event.\n * Emitted after a timeline event card is expanded.\n *\n * @typeParam T - The type of the source record\n */\nexport interface AfterEventExpandArgs<T = any>\n extends AfterEventArgs, TimelineEventArgs<T> {}\n\n// ============================================================================\n// COLLAPSE EVENTS\n// ============================================================================\n\n/**\n * Arguments for the `beforeEventCollapse` event.\n * Emitted before a timeline event card is collapsed.\n *\n * @typeParam T - The type of the source record\n */\nexport interface BeforeEventCollapseArgs<T = any>\n extends BeforeEventArgs, TimelineEventArgs<T> {}\n\n/**\n * Arguments for the `afterEventCollapse` event.\n * Emitted after a timeline event card is collapsed.\n *\n * @typeParam T - The type of the source record\n */\nexport interface AfterEventCollapseArgs<T = any>\n extends AfterEventArgs, TimelineEventArgs<T> {}\n\n// ============================================================================\n// HOVER EVENTS\n// ============================================================================\n\n/**\n * Arguments for the `beforeEventHover` event.\n * Emitted before hover state changes on a timeline event card.\n *\n * @typeParam T - The type of the source record\n *\n * @example\n * ```typescript\n * onBeforeHover(args: BeforeEventHoverArgs<MJTaskEntity>) {\n * if (args.hoverState === 'enter') {\n * // Could cancel hover effects\n * // args.cancel = true;\n * }\n * }\n * ```\n */\nexport interface BeforeEventHoverArgs<T = any>\n extends BeforeEventArgs, TimelineEventArgs<T> {\n /**\n * The hover state change type.\n * - `enter`: Mouse entering the card\n * - `leave`: Mouse leaving the card\n */\n hoverState: 'enter' | 'leave';\n}\n\n/**\n * Arguments for the `afterEventHover` event.\n * Emitted after hover state changes on a timeline event card.\n *\n * @typeParam T - The type of the source record\n */\nexport interface AfterEventHoverArgs<T = any>\n extends AfterEventArgs, TimelineEventArgs<T> {\n /**\n * The hover state that was applied.\n */\n hoverState: 'enter' | 'leave';\n}\n\n// ============================================================================\n// ACTION CLICK EVENTS\n// ============================================================================\n\n/**\n * Arguments for the `beforeActionClick` event.\n * Emitted before an action button is clicked.\n *\n * @typeParam T - The type of the source record\n *\n * @example\n * ```typescript\n * onBeforeAction(args: BeforeActionClickArgs<MJTaskEntity>) {\n * if (args.action.id === 'delete') {\n * // Show confirmation before allowing delete\n * if (!this.confirmDelete(args.event.entity)) {\n * args.cancel = true;\n * }\n * }\n * }\n * ```\n */\nexport interface BeforeActionClickArgs<T = any>\n extends BeforeEventArgs, TimelineEventArgs<T> {\n /**\n * The action that was clicked.\n */\n action: TimelineAction;\n}\n\n/**\n * Arguments for the `afterActionClick` event.\n * Emitted after an action button click is processed.\n *\n * @typeParam T - The type of the source record\n *\n * @example\n * ```typescript\n * onAfterAction(args: AfterActionClickArgs<MJTaskEntity>) {\n * switch (args.action.id) {\n * case 'view':\n * this.router.navigate(['/tasks', args.event.entity.ID]);\n * break;\n * case 'edit':\n * this.openEditDialog(args.event.entity);\n * break;\n * }\n * }\n * ```\n */\nexport interface AfterActionClickArgs<T = any>\n extends AfterEventArgs, TimelineEventArgs<T> {\n /**\n * The action that was clicked.\n */\n action: TimelineAction;\n}\n\n// ============================================================================\n// TIME SEGMENT EVENTS\n// ============================================================================\n\n/**\n * Base interface for time segment event arguments.\n */\nexport interface TimeSegmentEventArgs {\n /**\n * The segment being interacted with.\n */\n segment: TimelineSegment;\n\n /**\n * The segment's display label.\n */\n label: string;\n\n /**\n * Start date of the segment.\n */\n startDate: Date;\n\n /**\n * End date of the segment.\n */\n endDate: Date;\n\n /**\n * Number of events in the segment.\n */\n eventCount: number;\n}\n\n/**\n * Arguments for the `beforeSegmentExpand` event.\n * Emitted before a time segment is expanded.\n *\n * @example\n * ```typescript\n * onBeforeSegmentExpand(args: BeforeSegmentExpandArgs) {\n * // Could cancel expansion of certain segments\n * if (args.eventCount > 100) {\n * args.cancel = true;\n * this.showToast('Too many events. Please filter first.');\n * }\n * }\n * ```\n */\nexport interface BeforeSegmentExpandArgs\n extends BeforeEventArgs, TimeSegmentEventArgs {}\n\n/**\n * Arguments for the `afterSegmentExpand` event.\n * Emitted after a time segment is expanded.\n */\nexport interface AfterSegmentExpandArgs\n extends AfterEventArgs, TimeSegmentEventArgs {}\n\n/**\n * Arguments for the `beforeSegmentCollapse` event.\n * Emitted before a time segment is collapsed.\n */\nexport interface BeforeSegmentCollapseArgs\n extends BeforeEventArgs, TimeSegmentEventArgs {}\n\n/**\n * Arguments for the `afterSegmentCollapse` event.\n * Emitted after a time segment is collapsed.\n */\nexport interface AfterSegmentCollapseArgs\n extends AfterEventArgs, TimeSegmentEventArgs {}\n\n// ============================================================================\n// DATA LOADING EVENTS\n// ============================================================================\n\n/**\n * Arguments for the `beforeLoad` event.\n * Emitted before data loading begins.\n *\n * @example\n * ```typescript\n * onBeforeLoad(args: BeforeLoadArgs) {\n * if (this.isOffline) {\n * args.cancel = true;\n * this.showOfflineMessage();\n * }\n * }\n * ```\n */\nexport interface BeforeLoadArgs extends BeforeEventArgs {\n /**\n * The groups that will be loaded.\n */\n groups: TimelineGroup[];\n\n /**\n * Whether this is an incremental load (virtual scroll)\n * or a full refresh.\n */\n isIncremental: boolean;\n\n /**\n * For incremental loads, the current offset.\n */\n offset?: number;\n\n /**\n * For incremental loads, the batch size.\n */\n batchSize?: number;\n}\n\n/**\n * Arguments for the `afterLoad` event.\n * Emitted after data loading completes.\n *\n * @example\n * ```typescript\n * onAfterLoad(args: AfterLoadArgs) {\n * console.log(`Loaded ${args.totalEvents} events in ${args.loadTimeMs}ms`);\n * if (args.hasMore) {\n * console.log('More events available');\n * }\n * }\n * ```\n */\nexport interface AfterLoadArgs extends AfterEventArgs {\n /**\n * Total number of events loaded in this operation.\n */\n eventsLoaded: number;\n\n /**\n * Total number of events now displayed.\n */\n totalEvents: number;\n\n /**\n * Time taken to load the data (milliseconds).\n */\n loadTimeMs: number;\n\n /**\n * Whether more events are available to load.\n */\n hasMore: boolean;\n}\n\n// ============================================================================\n// KEYBOARD NAVIGATION EVENTS\n// ============================================================================\n\n/**\n * Arguments for keyboard navigation events.\n *\n * @typeParam T - The type of the source record\n */\nexport interface KeyboardNavigationArgs<T = any> {\n /**\n * The currently focused event (if any).\n */\n currentEvent?: MJTimelineEvent<T>;\n\n /**\n * The event that will receive focus (if any).\n */\n targetEvent?: MJTimelineEvent<T>;\n\n /**\n * The key that was pressed.\n */\n key: string;\n\n /**\n * The original keyboard event.\n */\n domEvent: KeyboardEvent;\n}\n\n/**\n * Arguments for the `beforeKeyboardNavigate` event.\n * Emitted before keyboard navigation moves focus.\n *\n * @typeParam T - The type of the source record\n */\nexport interface BeforeKeyboardNavigateArgs<T = any>\n extends BeforeEventArgs, KeyboardNavigationArgs<T> {}\n\n/**\n * Arguments for the `afterKeyboardNavigate` event.\n * Emitted after keyboard navigation moves focus.\n *\n * @typeParam T - The type of the source record\n */\nexport interface AfterKeyboardNavigateArgs<T = any>\n extends AfterEventArgs, KeyboardNavigationArgs<T> {}\n\n// ============================================================================\n// SCROLL EVENTS\n// ============================================================================\n\n/**\n * Arguments for scroll-related events.\n */\nexport interface ScrollEventArgs {\n /**\n * Current scroll position (pixels from top).\n */\n scrollTop: number;\n\n /**\n * Total scrollable height.\n */\n scrollHeight: number;\n\n /**\n * Visible viewport height.\n */\n clientHeight: number;\n\n /**\n * Distance from bottom (pixels).\n */\n distanceFromBottom: number;\n}\n\n/**\n * Arguments for the `beforeScrollLoadMore` event.\n * Emitted before virtual scroll triggers loading more data.\n */\nexport interface BeforeScrollLoadMoreArgs\n extends BeforeEventArgs, ScrollEventArgs {}\n\n/**\n * Arguments for the `afterScrollLoadMore` event.\n * Emitted after virtual scroll load completes.\n */\nexport interface AfterScrollLoadMoreArgs\n extends AfterEventArgs, ScrollEventArgs {\n /**\n * Number of new events loaded.\n */\n eventsLoaded: number;\n}\n\n// ============================================================================\n// UTILITY TYPE FOR EVENT EMITTER MAP\n// ============================================================================\n\n/**\n * Union type of all BeforeX event argument types.\n * Useful for generic event handling.\n */\nexport type AnyBeforeEventArgs<T = any> =\n | BeforeEventClickArgs<T>\n | BeforeEventExpandArgs<T>\n | BeforeEventCollapseArgs<T>\n | BeforeEventHoverArgs<T>\n | BeforeActionClickArgs<T>\n | BeforeSegmentExpandArgs\n | BeforeSegmentCollapseArgs\n | BeforeLoadArgs\n | BeforeKeyboardNavigateArgs<T>\n | BeforeScrollLoadMoreArgs;\n\n/**\n * Union type of all AfterX event argument types.\n * Useful for generic event handling.\n */\nexport type AnyAfterEventArgs<T = any> =\n | AfterEventClickArgs<T>\n | AfterEventExpandArgs<T>\n | AfterEventCollapseArgs<T>\n | AfterEventHoverArgs<T>\n | AfterActionClickArgs<T>\n | AfterSegmentExpandArgs\n | AfterSegmentCollapseArgs\n | AfterLoadArgs\n | AfterKeyboardNavigateArgs<T>\n | AfterScrollLoadMoreArgs;\n"]}
|
package/dist/lib/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;;AAEnE;;;;;;;;;;;;GAYG;AAYH,MAAM,OAAO,cAAc;wGAAd,cAAc;4DAAd,cAAc;gEANvB,YAAY;;iFAMH,cAAc;cAX1B,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,iBAAiB;iBAClB;gBACD,OAAO,EAAE;oBACP,YAAY;iBACb;gBACD,OAAO,EAAE;oBACP,iBAAiB;iBAClB;aACF;;wFACY,cAAc,mBATvB,iBAAiB,aAGjB,YAAY,aAGZ,iBAAiB"}
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;;AAEnE;;;;;;;;;;;;GAYG;AAYH,MAAM,OAAO,cAAc;wGAAd,cAAc;4DAAd,cAAc;gEANvB,YAAY;;iFAMH,cAAc;cAX1B,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,iBAAiB;iBAClB;gBACD,OAAO,EAAE;oBACP,YAAY;iBACb;gBACD,OAAO,EAAE;oBACP,iBAAiB;iBAClB;aACF;;wFACY,cAAc,mBATvB,iBAAiB,aAGjB,YAAY,aAGZ,iBAAiB","sourcesContent":["/**\n * @fileoverview Angular module for the MJ Timeline component.\n *\n * This module provides a rich, responsive timeline component that works with\n * both MemberJunction BaseEntity objects and plain JavaScript objects.\n *\n * @module @memberjunction/ng-timeline\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TimelineComponent } from './component/timeline.component';\n\n/**\n * Angular module that provides the MJ Timeline component.\n *\n * @example\n * ```typescript\n * import { TimelineModule } from '@memberjunction/ng-timeline';\n *\n * @NgModule({\n * imports: [TimelineModule]\n * })\n * export class MyModule { }\n * ```\n */\n@NgModule({\n declarations: [\n TimelineComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n TimelineComponent\n ]\n})\nexport class TimelineModule { }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline-group.js","sourceRoot":"","sources":["../../src/lib/timeline-group.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"timeline-group.js","sourceRoot":"","sources":["../../src/lib/timeline-group.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAGL,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,aAAa,CAAC,MAAW,EAAE,SAAiB;IAC1D,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,oDAAoD;IACpD,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,sCAAsC;IACtC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAW,EAAE,WAAoB;IAC3D,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,aAAa,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED,gCAAgC;IAChC,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC9C,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YACf,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YACf,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,OAAO,aAAa,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,MAAM,OAAO,aAAa;IACxB,+EAA+E;IAC/E,4BAA4B;IAC5B,+EAA+E;IAE/E;;;;;OAKG;IACH,UAAU,CAAU;IAEpB;;;;;;OAMG;IACH,cAAc,GAAuB,QAAQ,CAAC;IAE9C;;;;;OAKG;IACH,MAAM,CAAU;IAEhB;;;OAGG;IACH,aAAa,GAAQ,EAAE,CAAC;IAExB;;;;;OAKG;IACH,OAAO,CAAU;IAEjB;;;;;OAKG;IACH,UAAU,CAAU;IAEpB,+EAA+E;IAC/E,iBAAiB;IACjB,+EAA+E;IAE/E;;;;;OAKG;IACH,cAAc,CAAU;IAExB;;;;;OAKG;IACH,aAAa,CAAU;IAEvB;;;OAGG;IACH,iBAAiB,CAAU;IAE3B;;;OAGG;IACH,oBAAoB,CAAU;IAE9B;;;OAGG;IACH,cAAc,CAAU;IAExB;;;OAGG;IACH,WAAW,CAAU;IAErB,+EAA+E;IAC/E,sBAAsB;IACtB,+EAA+E;IAE/E;;;;;;OAMG;IACH,eAAe,GAA0B,UAAU,CAAC;IAEpD;;;;;OAKG;IACH,WAAW,CAAU;IAErB;;;;;;OAMG;IACH,gBAAgB,GAAsB,MAAM,CAAC;IAE7C;;;;;;OAMG;IACH,YAAY,CAAU;IAEtB;;;;;OAKG;IACH,UAAU,CAAU;IAEpB,+EAA+E;IAC/E,qBAAqB;IACrB,+EAA+E;IAE/E;;;;OAIG;IACH,UAAU,CAAsB;IAEhC,+EAA+E;IAC/E,mBAAmB;IACnB,+EAA+E;IAE/E;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAyB;IAExC;;;;;;;;;;;;;;;OAeG;IACH,mBAAmB,CAAsC;IAEzD,+EAA+E;IAC/E,UAAU;IACV,+EAA+E;IAE/E;;;;OAIG;IACH,sBAAsB;QACpB,OAAO;YACL,GAAG,mBAAmB;YACtB,GAAG,IAAI,CAAC,UAAU;SACnB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,MAAS,EAAE,SAAiB;QACnC,OAAO,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAS;QACb,OAAO,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,MAAS;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACzD,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,MAAS;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAS;QACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5D,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAS;QACtB,0CAA0C;QAC1C,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC/D,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnD,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAS;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC;QACrE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAS;QACtB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,+EAA+E;IAC/E,yBAAyB;IACzB,+EAA+E;IAE/E;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAU,MAMrC;QACC,MAAM,KAAK,GAAG,IAAI,aAAa,EAAK,CAAC;QAErC,IAAI,CAAC;YACH,sDAAsD;YACtD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;YAEzD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG;gBACjB,GAAG,MAAM;gBACT,UAAU,EAAE,eAAwB;aACrC,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE5C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gBACrC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,OAAc,CAAC;gBAC5C,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC,iBAAiB;gBACjD,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;gBAClC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACjC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CACV,wDAAwD;gBACxD,wEAAwE,EACxE,KAAK,CACN,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACI,MAAM,CAAC,SAAS,CACrB,IAAS,EACT,MAUC;QAED,MAAM,KAAK,GAAG,IAAI,aAAa,EAAK,CAAC;QAErC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;QAC/B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC;QACzC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC;QACvC,KAAK,CAAC,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC;QAC/C,KAAK,CAAC,oBAAoB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACrD,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC;QACzC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;QACnC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAErC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;YACjC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;QAClC,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,KAAK,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YAClC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;QACpC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["/**\n * @fileoverview TimelineGroup class for configuring timeline data sources.\n *\n * The TimelineGroup class defines how data is loaded and displayed in the timeline.\n * It supports both MemberJunction BaseEntity objects and plain JavaScript objects,\n * making it usable in any Angular application.\n *\n * @module @memberjunction/ng-timeline/timeline-group\n */\n\nimport {\n TimelineCardConfig,\n TimelineEventConfig,\n DEFAULT_CARD_CONFIG\n} from './types';\n\n// ============================================================================\n// HELPER FUNCTION - FIELD VALUE ACCESS\n// ============================================================================\n\n/**\n * Extracts a field value from a record, supporting both BaseEntity and plain objects.\n *\n * For BaseEntity objects (detected by presence of `.Get()` method), uses the `.Get()` method.\n * For plain JavaScript objects, uses standard bracket notation.\n *\n * @param record - The source record (BaseEntity or plain object)\n * @param fieldName - The name of the field to extract\n * @returns The field value, or undefined if not found\n *\n * @example\n * ```typescript\n * // Works with BaseEntity\n * const entity = await md.GetEntityObject<MJTaskEntity>('Tasks');\n * const name = getFieldValue(entity, 'Name'); // Uses entity.Get('Name')\n *\n * // Works with plain objects\n * const obj = { name: 'My Task', status: 'Open' };\n * const name = getFieldValue(obj, 'name'); // Uses obj['name']\n * ```\n */\nexport function getFieldValue(record: any, fieldName: string): unknown {\n if (record == null) {\n return undefined;\n }\n\n // Check if this is a BaseEntity (has .Get() method)\n if (typeof record.Get === 'function') {\n return record.Get(fieldName);\n }\n\n // Plain object - use bracket notation\n return record[fieldName];\n}\n\n/**\n * Extracts an ID from a record, trying common ID field names.\n *\n * @param record - The source record\n * @param idFieldName - Optional explicit ID field name\n * @returns The record ID as a string, or a generated fallback ID\n */\nexport function getRecordId(record: any, idFieldName?: string): string {\n if (record == null) {\n return `generated-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n // Try explicit field name first\n if (idFieldName) {\n const id = getFieldValue(record, idFieldName);\n if (id != null) {\n return String(id);\n }\n }\n\n // Try common ID field names\n const commonIdFields = ['ID', 'id', 'Id', '_id', 'uuid', 'UUID'];\n for (const field of commonIdFields) {\n const id = getFieldValue(record, field);\n if (id != null) {\n return String(id);\n }\n }\n\n // Fallback: generate a unique ID\n return `generated-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\n// ============================================================================\n// TIMELINE GROUP CLASS\n// ============================================================================\n\n/**\n * Configures a data source for the timeline component.\n *\n * TimelineGroup defines how records are loaded, which fields to display,\n * and how they should be styled. Multiple groups can be used to display\n * different types of events on the same timeline.\n *\n * @typeParam T - The type of the source records. Defaults to `any` for maximum\n * flexibility. MemberJunction users can specify BaseEntity subclasses\n * for full type safety.\n *\n * @example Basic usage with plain objects\n * ```typescript\n * interface MyEvent {\n * id: string;\n * title: string;\n * eventDate: Date;\n * description: string;\n * }\n *\n * const group = new TimelineGroup<MyEvent>();\n * group.DataSourceType = 'array';\n * group.EntityObjects = myEventsArray;\n * group.TitleFieldName = 'title';\n * group.DateFieldName = 'eventDate';\n * group.DescriptionFieldName = 'description';\n * ```\n *\n * @example MemberJunction usage with BaseEntity\n * ```typescript\n * import { MJTaskEntity } from '@memberjunction/core-entities';\n *\n * const group = new TimelineGroup<MJTaskEntity>();\n * group.EntityName = 'Tasks';\n * group.DataSourceType = 'entity';\n * group.Filter = \"Status = 'Open'\";\n * group.TitleFieldName = 'Name';\n * group.DateFieldName = 'DueDate';\n * ```\n *\n * @example With full configuration\n * ```typescript\n * const group = new TimelineGroup<MJTaskEntity>();\n * group.EntityName = 'Tasks';\n * group.TitleFieldName = 'Name';\n * group.DateFieldName = 'CompletedAt';\n * group.SubtitleFieldName = 'Category';\n * group.DescriptionFieldName = 'Description';\n * group.DisplayIcon = 'fa-solid fa-check-circle';\n * group.DisplayColor = '#4caf50';\n * group.GroupLabel = 'Completed Tasks';\n *\n * group.CardConfig = {\n * collapsible: true,\n * defaultExpanded: false,\n * summaryFields: [\n * { fieldName: 'AssignedTo', label: 'Assignee', icon: 'fa-solid fa-user' },\n * { fieldName: 'Priority', icon: 'fa-solid fa-flag' }\n * ],\n * actions: [\n * { id: 'view', label: 'View', variant: 'primary' },\n * { id: 'edit', label: 'Edit', variant: 'secondary' }\n * ]\n * };\n *\n * group.EventConfigFunction = (task) => ({\n * icon: task.Priority === 'High' ? 'fa-solid fa-exclamation' : undefined,\n * color: task.Status === 'Overdue' ? '#f44336' : undefined\n * });\n * ```\n */\nexport class TimelineGroup<T = any> {\n // ============================================================================\n // DATA SOURCE CONFIGURATION\n // ============================================================================\n\n /**\n * The MemberJunction entity name for this group.\n * Required when `DataSourceType` is `'entity'`.\n *\n * @example 'Tasks', 'MJ: AI Agents', 'Users'\n */\n EntityName?: string;\n\n /**\n * How data is provided to the timeline.\n * - `'array'`: Data is provided via the `EntityObjects` array (works with any object type)\n * - `'entity'`: Data is loaded using MemberJunction's RunView (requires MJ core)\n *\n * @default 'entity'\n */\n DataSourceType: 'array' | 'entity' = 'entity';\n\n /**\n * SQL WHERE clause filter for entity queries.\n * Only used when `DataSourceType` is `'entity'`.\n *\n * @example \"Status = 'Open' AND Priority = 'High'\"\n */\n Filter?: string;\n\n /**\n * Pre-loaded data array.\n * Used when `DataSourceType` is `'array'`, or populated after loading when using `'entity'`.\n */\n EntityObjects: T[] = [];\n\n /**\n * SQL ORDER BY clause for entity queries.\n * Only used when `DataSourceType` is `'entity'`.\n *\n * @example 'CreatedAt DESC', 'Priority ASC, DueDate DESC'\n */\n OrderBy?: string;\n\n /**\n * Maximum number of records to load per batch.\n * Used for virtual scrolling.\n *\n * @default undefined (uses component's virtualScroll.batchSize)\n */\n MaxRecords?: number;\n\n // ============================================================================\n // FIELD MAPPINGS\n // ============================================================================\n\n /**\n * Field name for the event title.\n * This is the primary text displayed on each timeline card.\n *\n * @required\n */\n TitleFieldName!: string;\n\n /**\n * Field name for the event date.\n * Used for chronological ordering and date display.\n *\n * @required\n */\n DateFieldName!: string;\n\n /**\n * Field name for the subtitle.\n * Displayed below the title in smaller text.\n */\n SubtitleFieldName?: string;\n\n /**\n * Field name for the description/body text.\n * Displayed in the card body when expanded.\n */\n DescriptionFieldName?: string;\n\n /**\n * Field name containing an image URL.\n * When set, displays an image in the card.\n */\n ImageFieldName?: string;\n\n /**\n * Field name for the unique record ID.\n * Defaults to 'ID' or 'id' if not specified.\n */\n IdFieldName?: string;\n\n // ============================================================================\n // GROUP-LEVEL DISPLAY\n // ============================================================================\n\n /**\n * Icon display mode.\n * - `'standard'`: Uses a default icon based on the group index\n * - `'custom'`: Uses the icon specified in `DisplayIcon`\n *\n * @default 'standard'\n */\n DisplayIconMode: 'standard' | 'custom' = 'standard';\n\n /**\n * Custom icon class (Font Awesome).\n * Only used when `DisplayIconMode` is `'custom'`.\n *\n * @example 'fa-solid fa-check', 'fa-regular fa-calendar'\n */\n DisplayIcon?: string;\n\n /**\n * Color assignment mode.\n * - `'auto'`: System assigns colors based on group index\n * - `'manual'`: Uses the color specified in `DisplayColor`\n *\n * @default 'auto'\n */\n DisplayColorMode: 'auto' | 'manual' = 'auto';\n\n /**\n * Custom color for this group's markers and accents.\n * Only used when `DisplayColorMode` is `'manual'`.\n * Any valid CSS color value.\n *\n * @example '#4caf50', 'rgb(66, 135, 245)', 'var(--primary-color)'\n */\n DisplayColor?: string;\n\n /**\n * Human-readable label for this group.\n * Used in legends, headers, or when distinguishing multiple groups.\n *\n * @example 'Completed Tasks', 'System Events', 'User Activities'\n */\n GroupLabel?: string;\n\n // ============================================================================\n // CARD CONFIGURATION\n // ============================================================================\n\n /**\n * Card display configuration for this group.\n * Defines how event cards are rendered.\n * If not set, uses the component's `defaultCardConfig`.\n */\n CardConfig?: TimelineCardConfig;\n\n // ============================================================================\n // CUSTOM FUNCTIONS\n // ============================================================================\n\n /**\n * Custom function to generate the event summary/description.\n * Takes precedence over `DescriptionFieldName`.\n *\n * @param record - The source record\n * @returns HTML string or plain text to display\n *\n * @example\n * ```typescript\n * group.SummaryFunction = (task) => {\n * return `<strong>${task.Status}</strong>: ${task.Description}`;\n * };\n * ```\n */\n SummaryFunction?: (record: T) => string;\n\n /**\n * Custom function to configure individual events.\n * Allows per-event customization of icons, colors, and actions.\n *\n * @param record - The source record\n * @returns Configuration overrides for this event\n *\n * @example\n * ```typescript\n * group.EventConfigFunction = (task) => ({\n * icon: task.Priority === 'High' ? 'fa-solid fa-exclamation' : undefined,\n * color: task.IsOverdue ? '#f44336' : undefined,\n * actions: task.CanEdit ? [{ id: 'edit', label: 'Edit' }] : []\n * });\n * ```\n */\n EventConfigFunction?: (record: T) => TimelineEventConfig;\n\n // ============================================================================\n // METHODS\n // ============================================================================\n\n /**\n * Gets the effective card configuration, merging with defaults.\n *\n * @returns The merged card configuration\n */\n getEffectiveCardConfig(): TimelineCardConfig {\n return {\n ...DEFAULT_CARD_CONFIG,\n ...this.CardConfig\n };\n }\n\n /**\n * Extracts a field value from a record in this group.\n *\n * @param record - The source record\n * @param fieldName - The field name to extract\n * @returns The field value\n */\n getValue(record: T, fieldName: string): unknown {\n return getFieldValue(record, fieldName);\n }\n\n /**\n * Gets the ID of a record in this group.\n *\n * @param record - The source record\n * @returns The record ID\n */\n getId(record: T): string {\n return getRecordId(record, this.IdFieldName);\n }\n\n /**\n * Gets the title from a record.\n *\n * @param record - The source record\n * @returns The title string\n */\n getTitle(record: T): string {\n const value = this.getValue(record, this.TitleFieldName);\n return value != null ? String(value) : '';\n }\n\n /**\n * Gets the date from a record.\n *\n * @param record - The source record\n * @returns The date object\n */\n getDate(record: T): Date {\n const value = this.getValue(record, this.DateFieldName);\n if (value instanceof Date) {\n return value;\n }\n if (typeof value === 'string' || typeof value === 'number') {\n return new Date(value);\n }\n return new Date();\n }\n\n /**\n * Gets the subtitle from a record.\n *\n * @param record - The source record\n * @returns The subtitle string, or undefined\n */\n getSubtitle(record: T): string | undefined {\n if (!this.SubtitleFieldName) {\n return undefined;\n }\n const value = this.getValue(record, this.SubtitleFieldName);\n return value != null ? String(value) : undefined;\n }\n\n /**\n * Gets the description from a record.\n *\n * @param record - The source record\n * @returns The description string, or undefined\n */\n getDescription(record: T): string | undefined {\n // Use custom summary function if provided\n if (this.SummaryFunction) {\n return this.SummaryFunction(record);\n }\n\n // Use description field\n if (this.DescriptionFieldName) {\n const value = this.getValue(record, this.DescriptionFieldName);\n return value != null ? String(value) : undefined;\n }\n\n return undefined;\n }\n\n /**\n * Gets the image URL from a record.\n *\n * @param record - The source record\n * @returns The image URL, or undefined\n */\n getImageUrl(record: T): string | undefined {\n const fieldName = this.CardConfig?.imageField || this.ImageFieldName;\n if (!fieldName) {\n return undefined;\n }\n const value = this.getValue(record, fieldName);\n return value != null ? String(value) : undefined;\n }\n\n /**\n * Gets the event configuration for a specific record.\n *\n * @param record - The source record\n * @returns The event configuration (from EventConfigFunction or defaults)\n */\n getEventConfig(record: T): TimelineEventConfig {\n if (this.EventConfigFunction) {\n return this.EventConfigFunction(record);\n }\n return {};\n }\n\n // ============================================================================\n // STATIC FACTORY METHODS\n // ============================================================================\n\n /**\n * Creates a TimelineGroup from MemberJunction RunViewParams.\n *\n * This is a convenience method for MemberJunction applications.\n * It loads data immediately and returns a configured group.\n *\n * **Note**: This method requires `@memberjunction/core` to be available.\n * It will throw an error if used in non-MJ applications.\n *\n * @param params - RunView parameters for loading data\n * @returns A configured TimelineGroup with loaded data\n *\n * @example\n * ```typescript\n * const group = await TimelineGroup.FromView<MJTaskEntity>({\n * EntityName: 'Tasks',\n * ExtraFilter: \"Status = 'Open'\",\n * OrderBy: 'DueDate DESC'\n * });\n * group.TitleFieldName = 'Name';\n * group.DateFieldName = 'DueDate';\n * ```\n */\n public static async FromView<T = any>(params: {\n EntityName?: string;\n ExtraFilter?: string;\n OrderBy?: string;\n MaxRows?: number;\n [key: string]: unknown;\n }): Promise<TimelineGroup<T>> {\n const group = new TimelineGroup<T>();\n\n try {\n // Dynamically import MJ core to avoid hard dependency\n const { RunView } = await import('@memberjunction/core');\n\n const rv = new RunView();\n const viewParams = {\n ...params,\n ResultType: 'entity_object' as const\n };\n\n const result = await rv.RunView(viewParams);\n\n if (result?.Success) {\n group.EntityName = params.EntityName;\n group.EntityObjects = result.Results as T[];\n group.DataSourceType = 'array'; // Already loaded\n group.Filter = params.ExtraFilter;\n group.OrderBy = params.OrderBy;\n }\n } catch (error) {\n console.warn(\n 'TimelineGroup.FromView requires @memberjunction/core. ' +\n 'Use DataSourceType=\"array\" with EntityObjects for non-MJ applications.',\n error\n );\n }\n\n return group;\n }\n\n /**\n * Creates a TimelineGroup from a plain array of objects.\n *\n * This is a convenience method that sets up the group for array-based data.\n *\n * @param data - Array of objects to display\n * @param config - Configuration for field mappings\n * @returns A configured TimelineGroup\n *\n * @example\n * ```typescript\n * const group = TimelineGroup.FromArray(myEvents, {\n * titleField: 'name',\n * dateField: 'eventDate',\n * descriptionField: 'details'\n * });\n * ```\n */\n public static FromArray<T = any>(\n data: T[],\n config: {\n titleField: string;\n dateField: string;\n subtitleField?: string;\n descriptionField?: string;\n imageField?: string;\n idField?: string;\n groupLabel?: string;\n icon?: string;\n color?: string;\n }\n ): TimelineGroup<T> {\n const group = new TimelineGroup<T>();\n\n group.DataSourceType = 'array';\n group.EntityObjects = data;\n group.TitleFieldName = config.titleField;\n group.DateFieldName = config.dateField;\n group.SubtitleFieldName = config.subtitleField;\n group.DescriptionFieldName = config.descriptionField;\n group.ImageFieldName = config.imageField;\n group.IdFieldName = config.idField;\n group.GroupLabel = config.groupLabel;\n\n if (config.icon) {\n group.DisplayIconMode = 'custom';\n group.DisplayIcon = config.icon;\n }\n\n if (config.color) {\n group.DisplayColorMode = 'manual';\n group.DisplayColor = config.color;\n }\n\n return group;\n }\n}\n"]}
|
package/dist/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2kBH,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAuB;IACrD,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,aAAa;IACzB,aAAa,EAAE,MAAM;IACrB,SAAS,EAAE,OAAO;IAClB,mBAAmB,EAAE,CAAC;IACtB,oBAAoB,EAAE,KAAK;IAC3B,WAAW,EAAE,IAAI;IACjB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,QAAQ,EAAE,OAAO;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAwB;IAChE,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,GAAG;IAClB,oBAAoB,EAAE,IAAI;IAC1B,cAAc,EAAE,wBAAwB;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAuB;IAC9D,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,KAAK;IAChB,YAAY,EAAE,CAAC;CAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2kBH,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAuB;IACrD,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,aAAa;IACzB,aAAa,EAAE,MAAM;IACrB,SAAS,EAAE,OAAO;IAClB,mBAAmB,EAAE,CAAC;IACtB,oBAAoB,EAAE,KAAK;IAC3B,WAAW,EAAE,IAAI;IACjB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,QAAQ,EAAE,OAAO;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAwB;IAChE,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,GAAG;IAClB,oBAAoB,EAAE,IAAI;IAC1B,cAAc,EAAE,wBAAwB;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAuB;IAC9D,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,KAAK;IAChB,YAAY,EAAE,CAAC;CAChB,CAAC","sourcesContent":["/**\n * @fileoverview Core type definitions for the MJ Timeline component.\n *\n * This module defines all interfaces, types, and classes used by the timeline.\n * The types are designed to work with both MemberJunction BaseEntity objects\n * and plain JavaScript objects, making the component usable in any Angular application.\n *\n * @module @memberjunction/ng-timeline/types\n */\n\n// ============================================================================\n// UTILITY TYPES\n// ============================================================================\n\n/**\n * Orientation options for the timeline display.\n * - `vertical`: Events displayed top-to-bottom (default)\n * - `horizontal`: Events displayed left-to-right with horizontal scrolling\n */\nexport type TimelineOrientation = 'vertical' | 'horizontal';\n\n/**\n * Layout options for vertical timeline.\n * - `single`: All events on one side of the axis\n * - `alternating`: Events alternate between left and right sides\n */\nexport type TimelineLayout = 'single' | 'alternating';\n\n/**\n * Sort order for timeline events.\n * - `asc`: Oldest events first (ascending by date)\n * - `desc`: Newest events first (descending by date)\n */\nexport type TimelineSortOrder = 'asc' | 'desc';\n\n/**\n * Grouping options for time segments.\n * - `none`: No grouping, flat list of events\n * - `day`: Group by day\n * - `week`: Group by week\n * - `month`: Group by month (default)\n * - `quarter`: Group by quarter\n * - `year`: Group by year\n */\nexport type TimeSegmentGrouping = 'none' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\n/**\n * Button style variants for action buttons.\n */\nexport type ActionVariant = 'primary' | 'secondary' | 'danger' | 'link';\n\n/**\n * Image position options within a card.\n */\nexport type ImagePosition = 'left' | 'top' | 'none';\n\n/**\n * Image size presets.\n */\nexport type ImageSize = 'small' | 'medium' | 'large';\n\n// ============================================================================\n// FIELD DISPLAY CONFIGURATION\n// ============================================================================\n\n/**\n * Configuration for displaying a field within a timeline card.\n * Used for both summary fields (always visible) and expanded fields (visible when expanded).\n *\n * @example\n * ```typescript\n * const field: TimelineDisplayField = {\n * fieldName: 'AssignedTo',\n * label: 'Assignee',\n * icon: 'fa-solid fa-user',\n * formatter: (value) => value?.toString().toUpperCase() ?? 'Unassigned'\n * };\n * ```\n */\nexport interface TimelineDisplayField {\n /**\n * The field name to extract from the record.\n * For BaseEntity objects, this is passed to `.Get()`.\n * For plain objects, this is used as a property key.\n */\n fieldName: string;\n\n /**\n * Display label shown before the value.\n * If not provided, defaults to the fieldName.\n */\n label?: string;\n\n /**\n * Font Awesome icon class to display before the label.\n * @example 'fa-solid fa-user'\n */\n icon?: string;\n\n /**\n * Format string for dates/numbers.\n * For dates, uses Angular DatePipe format strings.\n * For numbers, uses Angular DecimalPipe format strings.\n */\n format?: string;\n\n /**\n * Custom formatter function for complex value transformations.\n * Takes precedence over the `format` property.\n *\n * @param value - The raw field value\n * @returns Formatted string to display\n */\n formatter?: (value: unknown) => string;\n\n /**\n * If true, only shows the value without the label.\n * @default false\n */\n hideLabel?: boolean;\n\n /**\n * Additional CSS class(es) to apply to this field's container.\n */\n cssClass?: string;\n}\n\n// ============================================================================\n// ACTION BUTTON CONFIGURATION\n// ============================================================================\n\n/**\n * Configuration for an action button displayed on a timeline card.\n *\n * @example\n * ```typescript\n * const viewAction: TimelineAction = {\n * id: 'view',\n * label: 'View Details',\n * icon: 'fa-solid fa-eye',\n * variant: 'primary',\n * tooltip: 'Open the full details view'\n * };\n * ```\n */\nexport interface TimelineAction {\n /**\n * Unique identifier for this action.\n * Used in event handlers to identify which action was clicked.\n */\n id: string;\n\n /**\n * Display text for the button.\n */\n label: string;\n\n /**\n * Font Awesome icon class to display in the button.\n * @example 'fa-solid fa-edit'\n */\n icon?: string;\n\n /**\n * Visual style variant for the button.\n * - `primary`: Prominent action (filled/solid)\n * - `secondary`: Standard action (outlined)\n * - `danger`: Destructive action (red)\n * - `link`: Text-only button\n * @default 'secondary'\n */\n variant?: ActionVariant;\n\n /**\n * Tooltip text shown on hover.\n */\n tooltip?: string;\n\n /**\n * Whether the action is disabled.\n * Disabled actions are visually muted and not clickable.\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Additional CSS class(es) to apply to the button.\n */\n cssClass?: string;\n}\n\n// ============================================================================\n// CARD CONFIGURATION\n// ============================================================================\n\n/**\n * Configuration for how timeline cards are displayed.\n * Can be set at the group level (applies to all events in group) or\n * overridden per-event via `EventConfigFunction`.\n *\n * @example\n * ```typescript\n * const cardConfig: TimelineCardConfig = {\n * showIcon: true,\n * showDate: true,\n * dateFormat: 'MMM d, yyyy h:mm a',\n * collapsible: true,\n * defaultExpanded: false,\n * descriptionMaxLines: 3,\n * summaryFields: [\n * { fieldName: 'Status', icon: 'fa-solid fa-circle' },\n * { fieldName: 'Priority', icon: 'fa-solid fa-flag' }\n * ],\n * actions: [\n * { id: 'view', label: 'View', variant: 'primary' },\n * { id: 'edit', label: 'Edit', variant: 'secondary' }\n * ]\n * };\n * ```\n */\nexport interface TimelineCardConfig {\n // === Header Section ===\n\n /**\n * Whether to show the icon in the card header.\n * @default true\n */\n showIcon?: boolean;\n\n /**\n * Whether to show the date in the card header.\n * @default true\n */\n showDate?: boolean;\n\n /**\n * Whether to show the subtitle below the title.\n * @default true\n */\n showSubtitle?: boolean;\n\n /**\n * Date format string (Angular DatePipe format).\n * @default 'MMM d, yyyy'\n * @example 'short', 'medium', 'MMM d, yyyy h:mm a'\n */\n dateFormat?: string;\n\n // === Image Section ===\n\n /**\n * Field name containing the image URL.\n * If not set, no image is displayed.\n */\n imageField?: string;\n\n /**\n * Position of the image within the card.\n * - `left`: Image on the left side of the header\n * - `top`: Image above the content (full width)\n * - `none`: No image displayed\n * @default 'left'\n */\n imagePosition?: ImagePosition;\n\n /**\n * Size preset for the image.\n * - `small`: 48x48px\n * - `medium`: 80x80px\n * - `large`: 120x120px\n * @default 'small'\n */\n imageSize?: ImageSize;\n\n // === Body Section ===\n\n /**\n * Field name for the description/body text.\n * If not set, uses the group's DescriptionFieldName.\n */\n descriptionField?: string;\n\n /**\n * Maximum number of lines to show before truncating.\n * Set to 0 for no limit.\n * @default 3\n */\n descriptionMaxLines?: number;\n\n /**\n * Whether to render HTML in the description.\n * WARNING: Only enable if content is trusted to prevent XSS.\n * @default false\n */\n allowHtmlDescription?: boolean;\n\n // === Expansion ===\n\n /**\n * Whether this card can be expanded/collapsed.\n * @default true\n */\n collapsible?: boolean;\n\n /**\n * Whether the card starts in expanded state.\n * @default false\n */\n defaultExpanded?: boolean;\n\n /**\n * Fields to display only when the card is expanded.\n * These appear in the detail section below the description.\n */\n expandedFields?: TimelineDisplayField[];\n\n /**\n * Fields to always display (even when collapsed).\n * These appear as compact field:value pairs.\n */\n summaryFields?: TimelineDisplayField[];\n\n // === Actions ===\n\n /**\n * Action buttons to display at the bottom of the card.\n */\n actions?: TimelineAction[];\n\n /**\n * If true, actions are only visible on hover/focus.\n * @default false\n */\n actionsOnHover?: boolean;\n\n // === Styling ===\n\n /**\n * Additional CSS class(es) to apply to the card container.\n */\n cssClass?: string;\n\n /**\n * Minimum width for the card.\n * @example '200px', '15rem'\n */\n minWidth?: string;\n\n /**\n * Maximum width for the card.\n * @default '400px'\n */\n maxWidth?: string;\n}\n\n// ============================================================================\n// PER-EVENT CONFIGURATION\n// ============================================================================\n\n/**\n * Per-event display configuration returned by `EventConfigFunction`.\n * Allows customizing individual events within a group.\n *\n * @example\n * ```typescript\n * group.EventConfigFunction = (record) => ({\n * icon: record.Priority === 'High' ? 'fa-solid fa-exclamation' : undefined,\n * color: record.Status === 'Overdue' ? '#f44336' : undefined,\n * cssClass: record.IsImportant ? 'important-event' : ''\n * });\n * ```\n */\nexport interface TimelineEventConfig {\n /**\n * Override the icon for this specific event.\n * Font Awesome class string.\n */\n icon?: string;\n\n /**\n * Override the marker/accent color for this event.\n * Any valid CSS color value.\n */\n color?: string;\n\n /**\n * Additional CSS class(es) for this event's card.\n */\n cssClass?: string;\n\n /**\n * Override the actions for this specific event.\n */\n actions?: TimelineAction[];\n\n /**\n * Override whether this specific event is collapsible.\n */\n collapsible?: boolean;\n\n /**\n * Override whether this specific event starts expanded.\n */\n defaultExpanded?: boolean;\n}\n\n// ============================================================================\n// VIRTUAL SCROLLING\n// ============================================================================\n\n/**\n * Configuration for virtual scrolling behavior.\n *\n * @example\n * ```typescript\n * const scrollConfig: VirtualScrollConfig = {\n * enabled: true,\n * batchSize: 25,\n * loadThreshold: 300,\n * showLoadingIndicator: true,\n * loadingMessage: 'Loading more events...'\n * };\n * ```\n */\nexport interface VirtualScrollConfig {\n /**\n * Whether virtual scrolling is enabled.\n * When disabled, all events load at once.\n * @default true\n */\n enabled: boolean;\n\n /**\n * Number of events to load per batch.\n * @default 20\n */\n batchSize: number;\n\n /**\n * Distance from bottom (in pixels) at which to trigger loading more.\n * @default 200\n */\n loadThreshold: number;\n\n /**\n * Whether to show a loading indicator while fetching.\n * @default true\n */\n showLoadingIndicator: boolean;\n\n /**\n * Custom message to display while loading.\n * @default 'Loading more events...'\n */\n loadingMessage?: string;\n}\n\n/**\n * Runtime state for virtual scrolling.\n * Exposed as a public property on the component for monitoring.\n */\nexport interface VirtualScrollState {\n /**\n * Total number of events available (if known).\n * May be undefined if total is unknown.\n */\n totalCount?: number;\n\n /**\n * Number of events currently loaded and displayed.\n */\n loadedCount: number;\n\n /**\n * Whether more events are available to load.\n */\n hasMore: boolean;\n\n /**\n * Whether a load operation is currently in progress.\n */\n isLoading: boolean;\n\n /**\n * Current scroll position offset.\n */\n scrollOffset: number;\n}\n\n// ============================================================================\n// TIMELINE EVENT (Internal Representation)\n// ============================================================================\n\n/**\n * Internal representation of a timeline event.\n * Created by mapping source records to this structure.\n *\n * @typeParam T - The type of the source record (defaults to `any`)\n */\nexport interface MJTimelineEvent<T = any> {\n /**\n * Unique identifier for this event.\n * Extracted from the source record using IdFieldName.\n */\n id: string;\n\n /**\n * Reference to the original source record.\n * Can be a BaseEntity or plain object.\n */\n entity: T;\n\n /**\n * Event title extracted from TitleFieldName.\n */\n title: string;\n\n /**\n * Event date extracted from DateFieldName.\n */\n date: Date;\n\n /**\n * Optional subtitle extracted from SubtitleFieldName.\n */\n subtitle?: string;\n\n /**\n * Event description/body text.\n */\n description?: string;\n\n /**\n * Image URL if configured.\n */\n imageUrl?: string;\n\n /**\n * Display configuration for this event.\n * Merged from group defaults and per-event overrides.\n */\n config: TimelineEventConfig;\n\n /**\n * Index of the parent group in the groups array.\n */\n groupIndex: number;\n\n /**\n * Current expansion state.\n */\n isExpanded: boolean;\n}\n\n// ============================================================================\n// TIME SEGMENT\n// ============================================================================\n\n/**\n * Represents a collapsible time segment (e.g., \"December 2025\").\n * Contains a collection of events within the time period.\n */\nexport interface TimelineSegment {\n /**\n * Human-readable label for the segment.\n * @example \"December 2025\", \"Week of Nov 25\", \"Q4 2025\"\n */\n label: string;\n\n /**\n * Start date of this segment (inclusive).\n */\n startDate: Date;\n\n /**\n * End date of this segment (exclusive).\n */\n endDate: Date;\n\n /**\n * Events within this time segment.\n */\n events: MJTimelineEvent[];\n\n /**\n * Current expansion state of the segment.\n */\n isExpanded: boolean;\n\n /**\n * Total count of events (for display when collapsed).\n */\n eventCount: number;\n}\n\n// ============================================================================\n// DEFAULT CONFIGURATIONS\n// ============================================================================\n\n/**\n * Default card configuration applied when not overridden.\n */\nexport const DEFAULT_CARD_CONFIG: TimelineCardConfig = {\n showIcon: true,\n showDate: true,\n showSubtitle: true,\n dateFormat: 'MMM d, yyyy',\n imagePosition: 'left',\n imageSize: 'small',\n descriptionMaxLines: 3,\n allowHtmlDescription: false,\n collapsible: true,\n defaultExpanded: false,\n actionsOnHover: false,\n maxWidth: '400px'\n};\n\n/**\n * Default virtual scroll configuration.\n */\nexport const DEFAULT_VIRTUAL_SCROLL_CONFIG: VirtualScrollConfig = {\n enabled: true,\n batchSize: 20,\n loadThreshold: 200,\n showLoadingIndicator: true,\n loadingMessage: 'Loading more events...'\n};\n\n/**\n * Default virtual scroll state.\n */\nexport const DEFAULT_VIRTUAL_SCROLL_STATE: VirtualScrollState = {\n loadedCount: 0,\n hasMore: false,\n isLoading: false,\n scrollOffset: 0\n};\n"]}
|
package/dist/public-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,4BAA4B;AAC5B,cAAc,aAAa,CAAC;AAE5B,4CAA4C;AAC5C,cAAc,cAAc,CAAC;AAE7B,sBAAsB;AACtB,cAAc,sBAAsB,CAAC;AAErC,uBAAuB;AACvB,cAAc,oCAAoC,CAAC;AACnD,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,4BAA4B;AAC5B,cAAc,aAAa,CAAC;AAE5B,4CAA4C;AAC5C,cAAc,cAAc,CAAC;AAE7B,sBAAsB;AACtB,cAAc,sBAAsB,CAAC;AAErC,uBAAuB;AACvB,cAAc,oCAAoC,CAAC;AACnD,cAAc,cAAc,CAAC","sourcesContent":["/**\n * @fileoverview Public API surface for @memberjunction/ng-timeline\n *\n * This module exports all public types, classes, and components for the\n * MJ Timeline component. The component works with both MemberJunction\n * BaseEntity objects and plain JavaScript objects.\n *\n * @packageDocumentation\n */\n\n// Core types and interfaces\nexport * from './lib/types';\n\n// Event interfaces (BeforeX/AfterX pattern)\nexport * from './lib/events';\n\n// TimelineGroup class\nexport * from './lib/timeline-group';\n\n// Component and Module\nexport * from './lib/component/timeline.component';\nexport * from './lib/module';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ng-timeline",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.4.0",
|
|
4
4
|
"description": "MemberJunction: Responsive timeline component for Angular. Works with MemberJunction entities or plain JavaScript objects. No external dependencies.",
|
|
5
5
|
"main": "./dist/public-api.js",
|
|
6
6
|
"typings": "./dist/public-api.d.ts",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@memberjunction/core": "5.
|
|
40
|
+
"@memberjunction/core": "5.4.0",
|
|
41
41
|
"rxjs": "~7.8.2",
|
|
42
42
|
"tslib": "^2.8.1"
|
|
43
43
|
},
|