[{"data":1,"prerenderedAt":546},["ShallowReactive",2],{"navigation_docs":3,"-essentials-refining-the-timeline":85,"-essentials-refining-the-timeline-surround":541},[4,20,45,70],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15],{"title":11,"path":12,"stem":13,"icon":14},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F1.installation","i-lucide-download",{"title":16,"path":17,"stem":18,"icon":19},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F2.quick-start","i-lucide-play",{"title":21,"path":22,"stem":23,"children":24,"page":6},"Essentials","\u002Fessentials","2.essentials",[25,30,35,40],{"title":26,"path":27,"stem":28,"icon":29},"Core Concepts","\u002Fessentials\u002Fcore-concepts","2.essentials\u002F1.core-concepts","i-lucide-book-open",{"title":31,"path":32,"stem":33,"icon":34},"Data Sources","\u002Fessentials\u002Fdata-sources","2.essentials\u002F2.data-sources","i-lucide-database",{"title":36,"path":37,"stem":38,"icon":39},"Refining the Timeline","\u002Fessentials\u002Frefining-the-timeline","2.essentials\u002F3.refining-the-timeline","i-lucide-filter",{"title":41,"path":42,"stem":43,"icon":44},"Components","\u002Fessentials\u002Fcomponents","2.essentials\u002F4.components","i-lucide-layout-panel-left",{"title":46,"path":47,"stem":48,"children":49,"page":6},"Customization","\u002Fcustomization","3.customization",[50,55,60,65],{"title":51,"path":52,"stem":53,"icon":54},"Custom Renderers","\u002Fcustomization\u002Fcustom-renderers","3.customization\u002F1.custom-renderers","i-lucide-paintbrush",{"title":56,"path":57,"stem":58,"icon":59},"Caching","\u002Fcustomization\u002Fcaching","3.customization\u002F2.caching","i-lucide-database-zap",{"title":61,"path":62,"stem":63,"icon":64},"Configuration","\u002Fcustomization\u002Fconfiguration","3.customization\u002F3.configuration","i-lucide-settings",{"title":66,"path":67,"stem":68,"icon":69},"Tailwind","\u002Fcustomization\u002Ftailwind","3.customization\u002F4.tailwind","i-simple-icons-tailwindcss",{"title":71,"path":72,"stem":73,"children":74,"page":6},"Advanced","\u002Fadvanced","4.advanced",[75,80],{"title":76,"path":77,"stem":78,"icon":79},"Performance Notes","\u002Fadvanced\u002Fperformance","4.advanced\u002F1.performance","i-lucide-gauge",{"title":81,"path":82,"stem":83,"icon":84},"Testing","\u002Fadvanced\u002Ftesting","4.advanced\u002F2.testing","i-lucide-flask-conical",{"id":86,"title":36,"body":87,"description":534,"extension":535,"links":536,"meta":537,"navigation":538,"path":37,"seo":539,"stem":38,"__hash__":540},"docs\u002F2.essentials\u002F3.refining-the-timeline.md",{"type":88,"value":89,"toc":528},"minimark",[90,99,104,107,286,290,293,323,327,338,447,451,454,524],[91,92,93,94,98],"p",{},"Every refinement is a chainable method on ",[95,96,97],"code",{},"TimelineBuilder",". Compose only what you need - each section below covers one concern.",[100,101,103],"h2",{"id":102},"filtering","Filtering",[91,105,106],{},"Narrow the entries by date window, type, or event. All four filters stack and are cumulative.",[108,109,114],"pre",{"className":110,"code":111,"language":112,"meta":113,"style":113},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","$record->timeline()\n    ->between(now()->subMonth(), now())         \u002F\u002F CarbonInterface|null on each side\n    ->ofType(['related_model', 'activity_log']) \u002F\u002F type allow-list\n    ->exceptType(['custom'])                    \u002F\u002F type deny-list\n    ->ofEvent(['email_sent', 'task_completed']) \u002F\u002F event allow-list\n    ->exceptEvent(['draft_saved']);             \u002F\u002F event deny-list\n","php","",[95,115,116,139,173,210,232,263],{"__ignoreMap":113},[117,118,121,125,129,132,136],"span",{"class":119,"line":120},"line",1,[117,122,124],{"class":123},"sMK4o","$",[117,126,128],{"class":127},"sTEyZ","record",[117,130,131],{"class":123},"->",[117,133,135],{"class":134},"s2Zo4","timeline",[117,137,138],{"class":123},"()\n",[117,140,142,145,148,151,154,157,160,163,166,169],{"class":119,"line":141},2,[117,143,144],{"class":123},"    ->",[117,146,147],{"class":134},"between",[117,149,150],{"class":123},"(",[117,152,153],{"class":134},"now",[117,155,156],{"class":123},"()->",[117,158,159],{"class":134},"subMonth",[117,161,162],{"class":123},"(),",[117,164,165],{"class":134}," now",[117,167,168],{"class":123},"())",[117,170,172],{"class":171},"sHwdD","         \u002F\u002F CarbonInterface|null on each side\n",[117,174,176,178,181,184,187,191,193,196,199,202,204,207],{"class":119,"line":175},3,[117,177,144],{"class":123},[117,179,180],{"class":134},"ofType",[117,182,183],{"class":123},"([",[117,185,186],{"class":123},"'",[117,188,190],{"class":189},"sfazB","related_model",[117,192,186],{"class":123},[117,194,195],{"class":123},",",[117,197,198],{"class":123}," '",[117,200,201],{"class":189},"activity_log",[117,203,186],{"class":123},[117,205,206],{"class":123},"])",[117,208,209],{"class":171}," \u002F\u002F type allow-list\n",[117,211,213,215,218,220,222,225,227,229],{"class":119,"line":212},4,[117,214,144],{"class":123},[117,216,217],{"class":134},"exceptType",[117,219,183],{"class":123},[117,221,186],{"class":123},[117,223,224],{"class":189},"custom",[117,226,186],{"class":123},[117,228,206],{"class":123},[117,230,231],{"class":171},"                    \u002F\u002F type deny-list\n",[117,233,235,237,240,242,244,247,249,251,253,256,258,260],{"class":119,"line":234},5,[117,236,144],{"class":123},[117,238,239],{"class":134},"ofEvent",[117,241,183],{"class":123},[117,243,186],{"class":123},[117,245,246],{"class":189},"email_sent",[117,248,186],{"class":123},[117,250,195],{"class":123},[117,252,198],{"class":123},[117,254,255],{"class":189},"task_completed",[117,257,186],{"class":123},[117,259,206],{"class":123},[117,261,262],{"class":171}," \u002F\u002F event allow-list\n",[117,264,266,268,271,273,275,278,280,283],{"class":119,"line":265},6,[117,267,144],{"class":123},[117,269,270],{"class":134},"exceptEvent",[117,272,183],{"class":123},[117,274,186],{"class":123},[117,276,277],{"class":189},"draft_saved",[117,279,186],{"class":123},[117,281,282],{"class":123},"]);",[117,284,285],{"class":171},"             \u002F\u002F event deny-list\n",[100,287,289],{"id":288},"sorting","Sorting",[91,291,292],{},"Order the combined stream after sources are merged.",[108,294,296],{"className":110,"code":295,"language":112,"meta":113,"style":113},"$record->timeline()\n    ->sortByDateDesc(); \u002F\u002F default; use sortByDateAsc() for ascending\n",[95,297,298,310],{"__ignoreMap":113},[117,299,300,302,304,306,308],{"class":119,"line":120},[117,301,124],{"class":123},[117,303,128],{"class":127},[117,305,131],{"class":123},[117,307,135],{"class":134},[117,309,138],{"class":123},[117,311,312,314,317,320],{"class":119,"line":141},[117,313,144],{"class":123},[117,315,316],{"class":134},"sortByDateDesc",[117,318,319],{"class":123},"();",[117,321,322],{"class":171}," \u002F\u002F default; use sortByDateAsc() for ascending\n",[100,324,326],{"id":325},"deduplication","Deduplication",[91,328,329,330,333,334,337],{},"Entries sharing a ",[95,331,332],{},"dedupKey"," collapse to the highest ",[95,335,336],{},"sourcePriority"," (first occurrence wins on ties). Disable entirely, or override the key when the default identity isn't right for your use case.",[108,339,341],{"className":110,"code":340,"language":112,"meta":113,"style":113},"$record->timeline()\n    ->deduplicate(true) \u002F\u002F default: true - pass false to keep every entry\n    ->dedupKeyUsing(fn ($entry) =>\n        \"{$entry->type}:{$entry->event}:{$entry->occurredAt->toDateString()}\"\n    );\n",[95,342,343,355,368,393,442],{"__ignoreMap":113},[117,344,345,347,349,351,353],{"class":119,"line":120},[117,346,124],{"class":123},[117,348,128],{"class":127},[117,350,131],{"class":123},[117,352,135],{"class":134},[117,354,138],{"class":123},[117,356,357,359,362,365],{"class":119,"line":141},[117,358,144],{"class":123},[117,360,361],{"class":134},"deduplicate",[117,363,364],{"class":123},"(true)",[117,366,367],{"class":171}," \u002F\u002F default: true - pass false to keep every entry\n",[117,369,370,372,375,377,381,384,387,390],{"class":119,"line":175},[117,371,144],{"class":123},[117,373,374],{"class":134},"dedupKeyUsing",[117,376,150],{"class":123},[117,378,380],{"class":379},"spNyl","fn",[117,382,383],{"class":123}," ($",[117,385,386],{"class":127},"entry",[117,388,389],{"class":123},")",[117,391,392],{"class":123}," =>\n",[117,394,395,398,400,402,405,408,411,414,416,418,421,423,425,427,429,431,434,436,439],{"class":119,"line":212},[117,396,397],{"class":123},"        \"{$",[117,399,386],{"class":127},[117,401,131],{"class":123},[117,403,404],{"class":127},"type",[117,406,407],{"class":123},"}",[117,409,410],{"class":189},":",[117,412,413],{"class":123},"{$",[117,415,386],{"class":127},[117,417,131],{"class":123},[117,419,420],{"class":127},"event",[117,422,407],{"class":123},[117,424,410],{"class":189},[117,426,413],{"class":123},[117,428,386],{"class":127},[117,430,131],{"class":123},[117,432,433],{"class":127},"occurredAt",[117,435,131],{"class":123},[117,437,438],{"class":134},"toDateString",[117,440,441],{"class":123},"()}\"\n",[117,443,444],{"class":119,"line":234},[117,445,446],{"class":123},"    );\n",[100,448,450],{"id":449},"running-the-query","Running the query",[91,452,453],{},"After filters\u002Fsort\u002Fdedup are set, one of these methods executes and returns entries.",[455,456,457,470],"table",{},[458,459,460],"thead",{},[461,462,463,467],"tr",{},[464,465,466],"th",{},"Method",[464,468,469],{},"Returns",[471,472,473,487,508],"tbody",{},[461,474,475,481],{},[476,477,478],"td",{},[95,479,480],{},"get()",[476,482,483,486],{},[95,484,485],{},"Collection\u003Cint, TimelineEntry>"," - all entries up to the internal 10 000 cap.",[461,488,489,494],{},[476,490,491],{},[95,492,493],{},"paginate(?int $perPage, int $page = 1)",[476,495,496,499,500,503,504,507],{},[95,497,498],{},"LengthAwarePaginator\u003Cint, TimelineEntry>",". Uses ",[95,501,502],{},"activity-log.default_per_page"," if ",[95,505,506],{},"$perPage"," is null.",[461,509,510,515],{},[476,511,512],{},[95,513,514],{},"count()",[476,516,517,520,521,523],{},[95,518,519],{},"int"," (runs ",[95,522,480],{},").",[525,526,527],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":113,"searchDepth":141,"depth":141,"links":529},[530,531,532,533],{"id":102,"depth":141,"text":103},{"id":288,"depth":141,"text":289},{"id":325,"depth":141,"text":326},{"id":449,"depth":141,"text":450},"Filters, sorting, and deduplication.","md",null,{},{"icon":39},{"title":36,"description":534},"5HDm0svx0NgI57y2AInSiIbjZqyPFqCeU675MpFwato",[542,544],{"title":31,"path":32,"stem":33,"description":543,"icon":34,"children":-1},"Compose sources for your timeline.",{"title":41,"path":42,"stem":43,"description":545,"icon":44,"children":-1},"Infolist component, relation manager, and header action.",1776704455777]