[{"data":1,"prerenderedAt":3048},["ShallowReactive",2],{"navigation":3,"\u002Fapi\u002Fcart":72,"\u002Fapi\u002Fcart-surround":3045},[4,42,55],{"title":5,"path":6,"stem":7,"children":8,"page":41},"Api","\u002Fapi","api",[9,13,17,21,25,29,33,37],{"title":10,"path":11,"stem":12},"Cart API","\u002Fapi\u002Fcart","api\u002Fcart",{"title":14,"path":15,"stem":16},"Category API","\u002Fapi\u002Fcategory","api\u002Fcategory",{"title":18,"path":19,"stem":20},"Checkout API","\u002Fapi\u002Fcheckout","api\u002Fcheckout",{"title":22,"path":23,"stem":24},"Inventory","\u002Fapi\u002Finventory","api\u002Finventory",{"title":26,"path":27,"stem":28},"Order Numbers","\u002Fapi\u002Forder-numbers","api\u002Forder-numbers",{"title":30,"path":31,"stem":32},"Product API","\u002Fapi\u002Fproduct","api\u002Fproduct",{"title":34,"path":35,"stem":36},"Promotions API","\u002Fapi\u002Fpromotions","api\u002Fpromotions",{"title":38,"path":39,"stem":40},"Taxes","\u002Fapi\u002Ftaxes","api\u002Ftaxes",false,{"title":43,"path":44,"stem":45,"children":46,"page":41},"Getting Started","\u002Fgetting-started","getting-started",[47,51],{"title":48,"path":49,"stem":50},"Admin panel","\u002Fgetting-started\u002Fadmin-panel","getting-started\u002Fadmin-panel",{"title":52,"path":53,"stem":54},"Installation","\u002Fgetting-started\u002Finstallation","getting-started\u002Finstallation",{"title":56,"path":57,"stem":58,"children":59,"page":41},"Tasks","\u002Ftasks","tasks",[60,64,68],{"title":61,"path":62,"stem":63},"Building A Navigation","\u002Ftasks\u002Fbuilding-a-navigation","tasks\u002Fbuilding-a-navigation",{"title":65,"path":66,"stem":67},"Product Detail Page","\u002Ftasks\u002Fproduct-detail-page","tasks\u002Fproduct-detail-page",{"title":69,"path":70,"stem":71},"Product Listing Page","\u002Ftasks\u002Fproduct-listing-page","tasks\u002Fproduct-listing-page",{"id":73,"title":10,"body":74,"description":3039,"extension":3040,"links":3041,"meta":3042,"navigation":199,"path":11,"seo":3043,"stem":12,"__hash__":3044},"docs\u002Fapi\u002Fcart.md",{"type":75,"value":76,"toc":3028},"minimark",[77,81,85,88,389,394,401,476,486,492,552,555,565,621,624,628,637,846,849,852,855,893,904,907,1008,1013,1016,1137,1140,1671,1674,1678,1685,1788,1791,1884,1894,1898,1901,2088,2091,2143,2146,2150,2159,2291,2300,2303,2307,2310,2316,2767,2770,2851,2854,2983,2986,2993,2999,3003,3024],[78,79,10],"h1",{"id":80},"cart-api",[82,83,84],"p",{},"The cart model provides a small API for collecting products before\ncheckout. Each cart has one currency, supplied when the cart is created.",[82,86,87],{},"Cart items store the selected product and quantity. Totals are calculated\nfrom the product's current price.",[89,90,95],"pre",{"className":91,"code":92,"language":93,"meta":94,"style":94},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use Larasell\\Larasell\\Models\\Cart;\nuse Larasell\\Larasell\\Models\\Product;\nuse Larasell\\Larasell\\Enums\\Currency;\nuse Larasell\\Larasell\\Price;\n\n$cart = Cart::create([\n    'currency' => Currency::USD,\n    'session_id' => session()->getId(),\n]);\n\n$product = Product::query()->where('slug', 'basic-plan')->firstOrFail();\n\n$item = $cart->add($product, quantity: 2);\n","php","",[96,97,98,131,153,176,194,201,227,254,278,284,289,342,347],"code",{"__ignoreMap":94},[99,100,103,107,111,115,118,120,123,125,128],"span",{"class":101,"line":102},"line",1,[99,104,106],{"class":105},"sbssI","use",[99,108,110],{"class":109},"sTEyZ"," Larasell",[99,112,114],{"class":113},"sMK4o","\\",[99,116,117],{"class":109},"Larasell",[99,119,114],{"class":113},[99,121,122],{"class":109},"Models",[99,124,114],{"class":113},[99,126,127],{"class":109},"Cart",[99,129,130],{"class":113},";\n",[99,132,134,136,138,140,142,144,146,148,151],{"class":101,"line":133},2,[99,135,106],{"class":105},[99,137,110],{"class":109},[99,139,114],{"class":113},[99,141,117],{"class":109},[99,143,114],{"class":113},[99,145,122],{"class":109},[99,147,114],{"class":113},[99,149,150],{"class":109},"Product",[99,152,130],{"class":113},[99,154,156,158,160,162,164,166,169,171,174],{"class":101,"line":155},3,[99,157,106],{"class":105},[99,159,110],{"class":109},[99,161,114],{"class":113},[99,163,117],{"class":109},[99,165,114],{"class":113},[99,167,168],{"class":109},"Enums",[99,170,114],{"class":113},[99,172,173],{"class":109},"Currency",[99,175,130],{"class":113},[99,177,179,181,183,185,187,189,192],{"class":101,"line":178},4,[99,180,106],{"class":105},[99,182,110],{"class":109},[99,184,114],{"class":113},[99,186,117],{"class":109},[99,188,114],{"class":113},[99,190,191],{"class":109},"Price",[99,193,130],{"class":113},[99,195,197],{"class":101,"line":196},5,[99,198,200],{"emptyLinePlaceholder":199},true,"\n",[99,202,204,207,210,213,217,220,224],{"class":101,"line":203},6,[99,205,206],{"class":113},"$",[99,208,209],{"class":109},"cart ",[99,211,212],{"class":113},"=",[99,214,216],{"class":215},"sBMFI"," Cart",[99,218,219],{"class":113},"::",[99,221,223],{"class":222},"s2Zo4","create",[99,225,226],{"class":113},"([\n",[99,228,230,233,237,240,243,246,248,251],{"class":101,"line":229},7,[99,231,232],{"class":113},"    '",[99,234,236],{"class":235},"sfazB","currency",[99,238,239],{"class":113},"'",[99,241,242],{"class":113}," =>",[99,244,245],{"class":215}," Currency",[99,247,219],{"class":113},[99,249,250],{"class":109},"USD",[99,252,253],{"class":113},",\n",[99,255,257,259,262,264,266,269,272,275],{"class":101,"line":256},8,[99,258,232],{"class":113},[99,260,261],{"class":235},"session_id",[99,263,239],{"class":113},[99,265,242],{"class":113},[99,267,268],{"class":222}," session",[99,270,271],{"class":113},"()->",[99,273,274],{"class":222},"getId",[99,276,277],{"class":113},"(),\n",[99,279,281],{"class":101,"line":280},9,[99,282,283],{"class":113},"]);\n",[99,285,287],{"class":101,"line":286},10,[99,288,200],{"emptyLinePlaceholder":199},[99,290,292,294,297,299,302,304,307,309,312,315,317,320,322,325,328,331,333,336,339],{"class":101,"line":291},11,[99,293,206],{"class":113},[99,295,296],{"class":109},"product ",[99,298,212],{"class":113},[99,300,301],{"class":215}," Product",[99,303,219],{"class":113},[99,305,306],{"class":222},"query",[99,308,271],{"class":113},[99,310,311],{"class":222},"where",[99,313,314],{"class":113},"(",[99,316,239],{"class":113},[99,318,319],{"class":235},"slug",[99,321,239],{"class":113},[99,323,324],{"class":113},",",[99,326,327],{"class":113}," '",[99,329,330],{"class":235},"basic-plan",[99,332,239],{"class":113},[99,334,335],{"class":113},")->",[99,337,338],{"class":222},"firstOrFail",[99,340,341],{"class":113},"();\n",[99,343,345],{"class":101,"line":344},12,[99,346,200],{"emptyLinePlaceholder":199},[99,348,350,352,355,357,360,363,366,369,372,375,377,380,383,386],{"class":101,"line":349},13,[99,351,206],{"class":113},[99,353,354],{"class":109},"item ",[99,356,212],{"class":113},[99,358,359],{"class":113}," $",[99,361,362],{"class":109},"cart",[99,364,365],{"class":113},"->",[99,367,368],{"class":222},"add",[99,370,371],{"class":113},"($",[99,373,374],{"class":109},"product",[99,376,324],{"class":113},[99,378,379],{"class":215}," quantity",[99,381,382],{"class":113},":",[99,384,385],{"class":105}," 2",[99,387,388],{"class":113},");\n",[390,391,393],"h2",{"id":392},"updating-a-cart","Updating a cart",[82,395,396,397,400],{},"Use ",[96,398,399],{},"add()"," to add a new product or increase the quantity of an\nexisting cart item.",[89,402,404],{"className":91,"code":403,"language":93,"meta":94,"style":94},"$cart->add($product);\n$cart->add($product, quantity: 2);\n$cart->add($product->getKey(), quantity: 2);\n",[96,405,406,422,446],{"__ignoreMap":94},[99,407,408,410,412,414,416,418,420],{"class":101,"line":102},[99,409,206],{"class":113},[99,411,362],{"class":109},[99,413,365],{"class":113},[99,415,368],{"class":222},[99,417,371],{"class":113},[99,419,374],{"class":109},[99,421,388],{"class":113},[99,423,424,426,428,430,432,434,436,438,440,442,444],{"class":101,"line":133},[99,425,206],{"class":113},[99,427,362],{"class":109},[99,429,365],{"class":113},[99,431,368],{"class":222},[99,433,371],{"class":113},[99,435,374],{"class":109},[99,437,324],{"class":113},[99,439,379],{"class":215},[99,441,382],{"class":113},[99,443,385],{"class":105},[99,445,388],{"class":113},[99,447,448,450,452,454,456,458,460,462,465,468,470,472,474],{"class":101,"line":155},[99,449,206],{"class":113},[99,451,362],{"class":109},[99,453,365],{"class":113},[99,455,368],{"class":222},[99,457,371],{"class":113},[99,459,374],{"class":109},[99,461,365],{"class":113},[99,463,464],{"class":222},"getKey",[99,466,467],{"class":113},"(),",[99,469,379],{"class":215},[99,471,382],{"class":113},[99,473,385],{"class":105},[99,475,388],{"class":113},[82,477,478,479,481,482,485],{},"An integer passed to ",[96,480,399],{}," is resolved as a product ID through the configured\nproduct model. Variant IDs remain explicit ",[96,483,484],{},"ProductVariant"," instances.",[82,487,396,488,491],{},[96,489,490],{},"set()"," when you want to replace the quantity for a product\nalready in the cart.",[89,493,495],{"className":91,"code":494,"language":93,"meta":94,"style":94},"$cart->set($product, quantity: 5);\n$cart->set($item->getKey(), quantity: 5);\n",[96,496,497,523],{"__ignoreMap":94},[99,498,499,501,503,505,508,510,512,514,516,518,521],{"class":101,"line":102},[99,500,206],{"class":113},[99,502,362],{"class":109},[99,504,365],{"class":113},[99,506,507],{"class":222},"set",[99,509,371],{"class":113},[99,511,374],{"class":109},[99,513,324],{"class":113},[99,515,379],{"class":215},[99,517,382],{"class":113},[99,519,520],{"class":105}," 5",[99,522,388],{"class":113},[99,524,525,527,529,531,533,535,538,540,542,544,546,548,550],{"class":101,"line":133},[99,526,206],{"class":113},[99,528,362],{"class":109},[99,530,365],{"class":113},[99,532,507],{"class":222},[99,534,371],{"class":113},[99,536,537],{"class":109},"item",[99,539,365],{"class":113},[99,541,464],{"class":222},[99,543,467],{"class":113},[99,545,379],{"class":215},[99,547,382],{"class":113},[99,549,520],{"class":105},[99,551,388],{"class":113},[82,553,554],{},"Passing a cart item ID updates that specific line while preserving its metadata.\nThe lookup is scoped to the cart.",[82,556,396,557,560,561,564],{},[96,558,559],{},"remove()"," or ",[96,562,563],{},"clear()"," to remove items.",[89,566,568],{"className":91,"code":567,"language":93,"meta":94,"style":94},"$cart->remove($product);\n$cart->remove($item->getKey());\n$cart->clear();\n",[96,569,570,587,608],{"__ignoreMap":94},[99,571,572,574,576,578,581,583,585],{"class":101,"line":102},[99,573,206],{"class":113},[99,575,362],{"class":109},[99,577,365],{"class":113},[99,579,580],{"class":222},"remove",[99,582,371],{"class":113},[99,584,374],{"class":109},[99,586,388],{"class":113},[99,588,589,591,593,595,597,599,601,603,605],{"class":101,"line":133},[99,590,206],{"class":113},[99,592,362],{"class":109},[99,594,365],{"class":113},[99,596,580],{"class":222},[99,598,371],{"class":113},[99,600,537],{"class":109},[99,602,365],{"class":113},[99,604,464],{"class":222},[99,606,607],{"class":113},"());\n",[99,609,610,612,614,616,619],{"class":101,"line":155},[99,611,206],{"class":113},[99,613,362],{"class":109},[99,615,365],{"class":113},[99,617,618],{"class":222},"clear",[99,620,341],{"class":113},[82,622,623],{},"Passing a cart item ID removes that specific line. The lookup is scoped to the\ncart, so an item belonging to another cart is left untouched.",[390,625,627],{"id":626},"merging-carts","Merging carts",[82,629,396,630,633,634,636],{},[96,631,632],{},"merge()"," when a shopper has a guest cart and then signs in. The cart you\ncall ",[96,635,632],{}," on is the destination and survives. The source cart is copied\ninto the destination and deleted after the merge succeeds.",[89,638,640],{"className":91,"code":639,"language":93,"meta":94,"style":94},"use Larasell\\Larasell\\Carts\\Strategies\\CombineQuantities;\nuse Larasell\\Larasell\\Carts\\Strategies\\ReplaceDestination;\n\n$result = $accountCart->merge($guestCart);\n$result = $accountCart->merge($guestCart, new CombineQuantities());\n$result = $accountCart->merge($guestCart, new ReplaceDestination());\n\n$cart = $result->cart;\n$adjustedLines = $result->adjustedLines;\n$skippedLines = $result->skippedLines;\n",[96,641,642,669,694,698,724,754,783,787,806,826],{"__ignoreMap":94},[99,643,644,646,648,650,652,654,657,659,662,664,667],{"class":101,"line":102},[99,645,106],{"class":105},[99,647,110],{"class":109},[99,649,114],{"class":113},[99,651,117],{"class":109},[99,653,114],{"class":113},[99,655,656],{"class":109},"Carts",[99,658,114],{"class":113},[99,660,661],{"class":109},"Strategies",[99,663,114],{"class":113},[99,665,666],{"class":109},"CombineQuantities",[99,668,130],{"class":113},[99,670,671,673,675,677,679,681,683,685,687,689,692],{"class":101,"line":133},[99,672,106],{"class":105},[99,674,110],{"class":109},[99,676,114],{"class":113},[99,678,117],{"class":109},[99,680,114],{"class":113},[99,682,656],{"class":109},[99,684,114],{"class":113},[99,686,661],{"class":109},[99,688,114],{"class":113},[99,690,691],{"class":109},"ReplaceDestination",[99,693,130],{"class":113},[99,695,696],{"class":101,"line":155},[99,697,200],{"emptyLinePlaceholder":199},[99,699,700,702,705,707,709,712,714,717,719,722],{"class":101,"line":178},[99,701,206],{"class":113},[99,703,704],{"class":109},"result ",[99,706,212],{"class":113},[99,708,359],{"class":113},[99,710,711],{"class":109},"accountCart",[99,713,365],{"class":113},[99,715,716],{"class":222},"merge",[99,718,371],{"class":113},[99,720,721],{"class":109},"guestCart",[99,723,388],{"class":113},[99,725,726,728,730,732,734,736,738,740,742,744,746,749,752],{"class":101,"line":196},[99,727,206],{"class":113},[99,729,704],{"class":109},[99,731,212],{"class":113},[99,733,359],{"class":113},[99,735,711],{"class":109},[99,737,365],{"class":113},[99,739,716],{"class":222},[99,741,371],{"class":113},[99,743,721],{"class":109},[99,745,324],{"class":113},[99,747,748],{"class":105}," new",[99,750,751],{"class":215}," CombineQuantities",[99,753,607],{"class":113},[99,755,756,758,760,762,764,766,768,770,772,774,776,778,781],{"class":101,"line":203},[99,757,206],{"class":113},[99,759,704],{"class":109},[99,761,212],{"class":113},[99,763,359],{"class":113},[99,765,711],{"class":109},[99,767,365],{"class":113},[99,769,716],{"class":222},[99,771,371],{"class":113},[99,773,721],{"class":109},[99,775,324],{"class":113},[99,777,748],{"class":105},[99,779,780],{"class":215}," ReplaceDestination",[99,782,607],{"class":113},[99,784,785],{"class":101,"line":229},[99,786,200],{"emptyLinePlaceholder":199},[99,788,789,791,793,795,797,800,802,804],{"class":101,"line":256},[99,790,206],{"class":113},[99,792,209],{"class":109},[99,794,212],{"class":113},[99,796,359],{"class":113},[99,798,799],{"class":109},"result",[99,801,365],{"class":113},[99,803,362],{"class":109},[99,805,130],{"class":113},[99,807,808,810,813,815,817,819,821,824],{"class":101,"line":280},[99,809,206],{"class":113},[99,811,812],{"class":109},"adjustedLines ",[99,814,212],{"class":113},[99,816,359],{"class":113},[99,818,799],{"class":109},[99,820,365],{"class":113},[99,822,823],{"class":109},"adjustedLines",[99,825,130],{"class":113},[99,827,828,830,833,835,837,839,841,844],{"class":101,"line":286},[99,829,206],{"class":113},[99,831,832],{"class":109},"skippedLines ",[99,834,212],{"class":113},[99,836,359],{"class":113},[99,838,799],{"class":109},[99,840,365],{"class":113},[99,842,843],{"class":109},"skippedLines",[99,845,130],{"class":113},[82,847,848],{},"The default strategy combines matching lines by summing quantities. Lines match\nwhen they have the same product variant and the same normalized metadata.\nDifferent metadata stays as separate lines.",[82,850,851],{},"The merger also combines cart-level attributes. Promotion codes are unioned and\nrevalidated, metadata is shallow-merged with destination keys winning, and the\nselected shipping option is kept only if it is still available after the lines\nhave been merged.",[82,853,854],{},"Built-in strategies cover common storefront decisions:",[856,857,858,864,870,876,881,887],"ul",{},[859,860,861,863],"li",{},[96,862,666],{}," sums matching quantities and appends source-only lines.",[859,865,866,869],{},[96,867,868],{},"PreferDestination"," keeps destination quantities for matching lines and\nappends source-only lines.",[859,871,872,875],{},[96,873,874],{},"PreferSource"," replaces matching quantities with the source quantities and\nkeeps destination-only lines.",[859,877,878,880],{},[96,879,691],{}," clears the destination and copies the source cart.",[859,882,883,886],{},[96,884,885],{},"KeepDestination"," discards source lines after any cart-level attribute merge.",[859,888,889,892],{},[96,890,891],{},"FailOnConflict"," wraps another strategy and throws the existing cart quantity\nexceptions instead of clamping or skipping lines.",[82,894,895,896,899,900,903],{},"If a combined quantity exceeds stock or a maximum quantity, the default behavior\nis to clamp to the allowed quantity and record the change on\n",[96,897,898],{},"$result->adjustedLines",". If a line is no longer purchasable, it is skipped and\nrecorded on ",[96,901,902],{},"$result->skippedLines",".",[82,905,906],{},"You can also pass a custom strategy object or callback:",[89,908,910],{"className":91,"code":909,"language":93,"meta":94,"style":94},"use Larasell\\Larasell\\Carts\\CartMergeContext;\nuse Larasell\\Larasell\\Carts\\CartMergePlan;\n\n$accountCart->merge($guestCart, function (CartMergeContext $context): CartMergePlan {\n    \u002F\u002F Return a custom line and attribute plan.\n});\n",[96,911,912,933,954,958,997,1003],{"__ignoreMap":94},[99,913,914,916,918,920,922,924,926,928,931],{"class":101,"line":102},[99,915,106],{"class":105},[99,917,110],{"class":109},[99,919,114],{"class":113},[99,921,117],{"class":109},[99,923,114],{"class":113},[99,925,656],{"class":109},[99,927,114],{"class":113},[99,929,930],{"class":109},"CartMergeContext",[99,932,130],{"class":113},[99,934,935,937,939,941,943,945,947,949,952],{"class":101,"line":133},[99,936,106],{"class":105},[99,938,110],{"class":109},[99,940,114],{"class":113},[99,942,117],{"class":109},[99,944,114],{"class":113},[99,946,656],{"class":109},[99,948,114],{"class":113},[99,950,951],{"class":109},"CartMergePlan",[99,953,130],{"class":113},[99,955,956],{"class":101,"line":155},[99,957,200],{"emptyLinePlaceholder":199},[99,959,960,962,964,966,968,970,972,974,978,981,983,985,988,991,994],{"class":101,"line":178},[99,961,206],{"class":113},[99,963,711],{"class":109},[99,965,365],{"class":113},[99,967,716],{"class":222},[99,969,371],{"class":113},[99,971,721],{"class":109},[99,973,324],{"class":113},[99,975,977],{"class":976},"spNyl"," function",[99,979,980],{"class":113}," (",[99,982,930],{"class":215},[99,984,359],{"class":113},[99,986,987],{"class":109},"context",[99,989,990],{"class":113},"):",[99,992,993],{"class":215}," CartMergePlan",[99,995,996],{"class":113}," {\n",[99,998,999],{"class":101,"line":196},[99,1000,1002],{"class":1001},"sHwdD","    \u002F\u002F Return a custom line and attribute plan.\n",[99,1004,1005],{"class":101,"line":203},[99,1006,1007],{"class":113},"});\n",[1009,1010,1012],"h3",{"id":1011},"login-integration","Login integration",[82,1014,1015],{},"Larasell does not hook into authentication automatically. Your storefront owns\nwhen to merge and which cart should survive. A blank storefront typically keeps\nthe current cart ID in the session while browsing:",[89,1017,1019],{"className":91,"code":1018,"language":93,"meta":94,"style":94},"$cart = Cart::query()->find(session('cart_id'))\n    ?? Cart::query()->create(['currency' => Currency::EUR]);\n\nsession(['cart_id' => $cart->id]);\n$cart->add($product);\n",[96,1020,1021,1057,1092,1096,1121],{"__ignoreMap":94},[99,1022,1023,1025,1027,1029,1031,1033,1035,1037,1040,1042,1045,1047,1049,1052,1054],{"class":101,"line":102},[99,1024,206],{"class":113},[99,1026,209],{"class":109},[99,1028,212],{"class":113},[99,1030,216],{"class":215},[99,1032,219],{"class":113},[99,1034,306],{"class":222},[99,1036,271],{"class":113},[99,1038,1039],{"class":222},"find",[99,1041,314],{"class":113},[99,1043,1044],{"class":222},"session",[99,1046,314],{"class":113},[99,1048,239],{"class":113},[99,1050,1051],{"class":235},"cart_id",[99,1053,239],{"class":113},[99,1055,1056],{"class":113},"))\n",[99,1058,1059,1062,1064,1066,1068,1070,1072,1075,1077,1079,1081,1083,1085,1087,1090],{"class":101,"line":133},[99,1060,1061],{"class":113},"    ??",[99,1063,216],{"class":215},[99,1065,219],{"class":113},[99,1067,306],{"class":222},[99,1069,271],{"class":113},[99,1071,223],{"class":222},[99,1073,1074],{"class":113},"([",[99,1076,239],{"class":113},[99,1078,236],{"class":235},[99,1080,239],{"class":113},[99,1082,242],{"class":113},[99,1084,245],{"class":215},[99,1086,219],{"class":113},[99,1088,1089],{"class":109},"EUR",[99,1091,283],{"class":113},[99,1093,1094],{"class":101,"line":155},[99,1095,200],{"emptyLinePlaceholder":199},[99,1097,1098,1100,1102,1104,1106,1108,1110,1112,1114,1116,1119],{"class":101,"line":178},[99,1099,1044],{"class":222},[99,1101,1074],{"class":113},[99,1103,239],{"class":113},[99,1105,1051],{"class":235},[99,1107,239],{"class":113},[99,1109,242],{"class":113},[99,1111,359],{"class":113},[99,1113,362],{"class":109},[99,1115,365],{"class":113},[99,1117,1118],{"class":109},"id",[99,1120,283],{"class":113},[99,1122,1123,1125,1127,1129,1131,1133,1135],{"class":101,"line":196},[99,1124,206],{"class":113},[99,1126,362],{"class":109},[99,1128,365],{"class":113},[99,1130,368],{"class":222},[99,1132,371],{"class":113},[99,1134,374],{"class":109},[99,1136,388],{"class":113},[82,1138,1139],{},"After a successful login or registration, resolve the guest session cart and the\nsaved account cart, then claim or merge:",[89,1141,1143],{"className":91,"code":1142,"language":93,"meta":94,"style":94},"use Illuminate\\Http\\Request;\nuse Larasell\\Larasell\\Models\\Cart;\n\npublic function store(Request $request)\n{\n    $request->authenticate();\n    $request->session()->regenerate();\n\n    $user = $request->user();\n    $guest = Cart::query()->find($request->session()->get('cart_id'));\n    $saved = Cart::query()\n        ->where('user_id', $user->id)\n        ->latest('id')\n        ->first();\n\n    if ($guest !== null && $saved !== null && $guest->isNot($saved)) {\n        $cart = $saved->merge($guest)->cart;\n    } elseif ($guest !== null) {\n        $guest->forceFill(['user_id' => $user->id])->save();\n        $cart = $guest;\n    } else {\n        $cart = $saved;\n    }\n\n    if ($cart !== null) {\n        $request->session()->put('cart_id', $cart->id);\n    }\n\n    return redirect()->intended('\u002F');\n}\n",[96,1144,1145,1164,1184,1188,1210,1215,1229,1246,1250,1270,1313,1331,1359,1376,1386,1391,1442,1470,1490,1528,1543,1553,1568,1574,1579,1594,1630,1635,1640,1665],{"__ignoreMap":94},[99,1146,1147,1149,1152,1154,1157,1159,1162],{"class":101,"line":102},[99,1148,106],{"class":105},[99,1150,1151],{"class":109}," Illuminate",[99,1153,114],{"class":113},[99,1155,1156],{"class":109},"Http",[99,1158,114],{"class":113},[99,1160,1161],{"class":109},"Request",[99,1163,130],{"class":113},[99,1165,1166,1168,1170,1172,1174,1176,1178,1180,1182],{"class":101,"line":133},[99,1167,106],{"class":105},[99,1169,110],{"class":109},[99,1171,114],{"class":113},[99,1173,117],{"class":109},[99,1175,114],{"class":113},[99,1177,122],{"class":109},[99,1179,114],{"class":113},[99,1181,127],{"class":109},[99,1183,130],{"class":113},[99,1185,1186],{"class":101,"line":155},[99,1187,200],{"emptyLinePlaceholder":199},[99,1189,1190,1193,1195,1198,1200,1202,1204,1207],{"class":101,"line":178},[99,1191,1192],{"class":976},"public",[99,1194,977],{"class":976},[99,1196,1197],{"class":222}," store",[99,1199,314],{"class":113},[99,1201,1161],{"class":215},[99,1203,359],{"class":113},[99,1205,1206],{"class":109},"request",[99,1208,1209],{"class":113},")\n",[99,1211,1212],{"class":101,"line":196},[99,1213,1214],{"class":113},"{\n",[99,1216,1217,1220,1222,1224,1227],{"class":101,"line":203},[99,1218,1219],{"class":113},"    $",[99,1221,1206],{"class":109},[99,1223,365],{"class":113},[99,1225,1226],{"class":222},"authenticate",[99,1228,341],{"class":113},[99,1230,1231,1233,1235,1237,1239,1241,1244],{"class":101,"line":229},[99,1232,1219],{"class":113},[99,1234,1206],{"class":109},[99,1236,365],{"class":113},[99,1238,1044],{"class":222},[99,1240,271],{"class":113},[99,1242,1243],{"class":222},"regenerate",[99,1245,341],{"class":113},[99,1247,1248],{"class":101,"line":256},[99,1249,200],{"emptyLinePlaceholder":199},[99,1251,1252,1254,1257,1259,1261,1263,1265,1268],{"class":101,"line":280},[99,1253,1219],{"class":113},[99,1255,1256],{"class":109},"user ",[99,1258,212],{"class":113},[99,1260,359],{"class":113},[99,1262,1206],{"class":109},[99,1264,365],{"class":113},[99,1266,1267],{"class":222},"user",[99,1269,341],{"class":113},[99,1271,1272,1274,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1302,1304,1306,1308,1310],{"class":101,"line":286},[99,1273,1219],{"class":113},[99,1275,1276],{"class":109},"guest ",[99,1278,212],{"class":113},[99,1280,216],{"class":215},[99,1282,219],{"class":113},[99,1284,306],{"class":222},[99,1286,271],{"class":113},[99,1288,1039],{"class":222},[99,1290,371],{"class":113},[99,1292,1206],{"class":109},[99,1294,365],{"class":113},[99,1296,1044],{"class":222},[99,1298,271],{"class":113},[99,1300,1301],{"class":222},"get",[99,1303,314],{"class":113},[99,1305,239],{"class":113},[99,1307,1051],{"class":235},[99,1309,239],{"class":113},[99,1311,1312],{"class":113},"));\n",[99,1314,1315,1317,1320,1322,1324,1326,1328],{"class":101,"line":291},[99,1316,1219],{"class":113},[99,1318,1319],{"class":109},"saved ",[99,1321,212],{"class":113},[99,1323,216],{"class":215},[99,1325,219],{"class":113},[99,1327,306],{"class":222},[99,1329,1330],{"class":113},"()\n",[99,1332,1333,1336,1338,1340,1342,1345,1347,1349,1351,1353,1355,1357],{"class":101,"line":344},[99,1334,1335],{"class":113},"        ->",[99,1337,311],{"class":222},[99,1339,314],{"class":113},[99,1341,239],{"class":113},[99,1343,1344],{"class":235},"user_id",[99,1346,239],{"class":113},[99,1348,324],{"class":113},[99,1350,359],{"class":113},[99,1352,1267],{"class":109},[99,1354,365],{"class":113},[99,1356,1118],{"class":109},[99,1358,1209],{"class":113},[99,1360,1361,1363,1366,1368,1370,1372,1374],{"class":101,"line":349},[99,1362,1335],{"class":113},[99,1364,1365],{"class":222},"latest",[99,1367,314],{"class":113},[99,1369,239],{"class":113},[99,1371,1118],{"class":235},[99,1373,239],{"class":113},[99,1375,1209],{"class":113},[99,1377,1379,1381,1384],{"class":101,"line":1378},14,[99,1380,1335],{"class":113},[99,1382,1383],{"class":222},"first",[99,1385,341],{"class":113},[99,1387,1389],{"class":101,"line":1388},15,[99,1390,200],{"emptyLinePlaceholder":199},[99,1392,1394,1398,1401,1403,1406,1409,1412,1414,1416,1418,1420,1422,1424,1427,1429,1432,1434,1437,1440],{"class":101,"line":1393},16,[99,1395,1397],{"class":1396},"s7zQu","    if",[99,1399,1400],{"class":113}," ($",[99,1402,1276],{"class":109},[99,1404,1405],{"class":113},"!==",[99,1407,1408],{"class":113}," null",[99,1410,1411],{"class":113}," &&",[99,1413,359],{"class":113},[99,1415,1319],{"class":109},[99,1417,1405],{"class":113},[99,1419,1408],{"class":113},[99,1421,1411],{"class":113},[99,1423,359],{"class":113},[99,1425,1426],{"class":109},"guest",[99,1428,365],{"class":113},[99,1430,1431],{"class":222},"isNot",[99,1433,371],{"class":113},[99,1435,1436],{"class":109},"saved",[99,1438,1439],{"class":113},"))",[99,1441,996],{"class":113},[99,1443,1445,1448,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468],{"class":101,"line":1444},17,[99,1446,1447],{"class":113},"        $",[99,1449,209],{"class":109},[99,1451,212],{"class":113},[99,1453,359],{"class":113},[99,1455,1436],{"class":109},[99,1457,365],{"class":113},[99,1459,716],{"class":222},[99,1461,371],{"class":113},[99,1463,1426],{"class":109},[99,1465,335],{"class":113},[99,1467,362],{"class":109},[99,1469,130],{"class":113},[99,1471,1473,1476,1479,1481,1483,1485,1488],{"class":101,"line":1472},18,[99,1474,1475],{"class":113},"    }",[99,1477,1478],{"class":1396}," elseif",[99,1480,1400],{"class":113},[99,1482,1276],{"class":109},[99,1484,1405],{"class":113},[99,1486,1487],{"class":113}," null)",[99,1489,996],{"class":113},[99,1491,1493,1495,1497,1499,1502,1504,1506,1508,1510,1512,1514,1516,1518,1520,1523,1526],{"class":101,"line":1492},19,[99,1494,1447],{"class":113},[99,1496,1426],{"class":109},[99,1498,365],{"class":113},[99,1500,1501],{"class":222},"forceFill",[99,1503,1074],{"class":113},[99,1505,239],{"class":113},[99,1507,1344],{"class":235},[99,1509,239],{"class":113},[99,1511,242],{"class":113},[99,1513,359],{"class":113},[99,1515,1267],{"class":109},[99,1517,365],{"class":113},[99,1519,1118],{"class":109},[99,1521,1522],{"class":113},"])->",[99,1524,1525],{"class":222},"save",[99,1527,341],{"class":113},[99,1529,1531,1533,1535,1537,1539,1541],{"class":101,"line":1530},20,[99,1532,1447],{"class":113},[99,1534,209],{"class":109},[99,1536,212],{"class":113},[99,1538,359],{"class":113},[99,1540,1426],{"class":109},[99,1542,130],{"class":113},[99,1544,1546,1548,1551],{"class":101,"line":1545},21,[99,1547,1475],{"class":113},[99,1549,1550],{"class":1396}," else",[99,1552,996],{"class":113},[99,1554,1556,1558,1560,1562,1564,1566],{"class":101,"line":1555},22,[99,1557,1447],{"class":113},[99,1559,209],{"class":109},[99,1561,212],{"class":113},[99,1563,359],{"class":113},[99,1565,1436],{"class":109},[99,1567,130],{"class":113},[99,1569,1571],{"class":101,"line":1570},23,[99,1572,1573],{"class":113},"    }\n",[99,1575,1577],{"class":101,"line":1576},24,[99,1578,200],{"emptyLinePlaceholder":199},[99,1580,1582,1584,1586,1588,1590,1592],{"class":101,"line":1581},25,[99,1583,1397],{"class":1396},[99,1585,1400],{"class":113},[99,1587,209],{"class":109},[99,1589,1405],{"class":113},[99,1591,1487],{"class":113},[99,1593,996],{"class":113},[99,1595,1597,1599,1601,1603,1605,1607,1610,1612,1614,1616,1618,1620,1622,1624,1626,1628],{"class":101,"line":1596},26,[99,1598,1447],{"class":113},[99,1600,1206],{"class":109},[99,1602,365],{"class":113},[99,1604,1044],{"class":222},[99,1606,271],{"class":113},[99,1608,1609],{"class":222},"put",[99,1611,314],{"class":113},[99,1613,239],{"class":113},[99,1615,1051],{"class":235},[99,1617,239],{"class":113},[99,1619,324],{"class":113},[99,1621,359],{"class":113},[99,1623,362],{"class":109},[99,1625,365],{"class":113},[99,1627,1118],{"class":109},[99,1629,388],{"class":113},[99,1631,1633],{"class":101,"line":1632},27,[99,1634,1573],{"class":113},[99,1636,1638],{"class":101,"line":1637},28,[99,1639,200],{"emptyLinePlaceholder":199},[99,1641,1643,1646,1649,1651,1654,1656,1658,1661,1663],{"class":101,"line":1642},29,[99,1644,1645],{"class":1396},"    return",[99,1647,1648],{"class":222}," redirect",[99,1650,271],{"class":113},[99,1652,1653],{"class":222},"intended",[99,1655,314],{"class":113},[99,1657,239],{"class":113},[99,1659,1660],{"class":235},"\u002F",[99,1662,239],{"class":113},[99,1664,388],{"class":113},[99,1666,1668],{"class":101,"line":1667},30,[99,1669,1670],{"class":113},"}\n",[82,1672,1673],{},"Merging carts with different currencies throws an exception. Drop session carts\nthat are already owned by another user before merging them into the current\nshopper's account.",[390,1675,1677],{"id":1676},"reading-a-cart","Reading a cart",[82,1679,1680,1681,1684],{},"Load ",[96,1682,1683],{},"items.product"," to render a cart with product details.",[89,1686,1688],{"className":91,"code":1687,"language":93,"meta":94,"style":94},"$cart->load('items.product');\n\nforeach ($cart->items as $item) {\n    $item->product->name;\n    $item->quantity;\n    $item->total();\n}\n",[96,1689,1690,1711,1715,1741,1758,1771,1784],{"__ignoreMap":94},[99,1691,1692,1694,1696,1698,1701,1703,1705,1707,1709],{"class":101,"line":102},[99,1693,206],{"class":113},[99,1695,362],{"class":109},[99,1697,365],{"class":113},[99,1699,1700],{"class":222},"load",[99,1702,314],{"class":113},[99,1704,239],{"class":113},[99,1706,1683],{"class":235},[99,1708,239],{"class":113},[99,1710,388],{"class":113},[99,1712,1713],{"class":101,"line":133},[99,1714,200],{"emptyLinePlaceholder":199},[99,1716,1717,1720,1722,1724,1726,1729,1732,1734,1736,1739],{"class":101,"line":155},[99,1718,1719],{"class":1396},"foreach",[99,1721,1400],{"class":113},[99,1723,362],{"class":109},[99,1725,365],{"class":113},[99,1727,1728],{"class":109},"items ",[99,1730,1731],{"class":113},"as",[99,1733,359],{"class":113},[99,1735,537],{"class":109},[99,1737,1738],{"class":113},")",[99,1740,996],{"class":113},[99,1742,1743,1745,1747,1749,1751,1753,1756],{"class":101,"line":178},[99,1744,1219],{"class":113},[99,1746,537],{"class":109},[99,1748,365],{"class":113},[99,1750,374],{"class":109},[99,1752,365],{"class":113},[99,1754,1755],{"class":109},"name",[99,1757,130],{"class":113},[99,1759,1760,1762,1764,1766,1769],{"class":101,"line":196},[99,1761,1219],{"class":113},[99,1763,537],{"class":109},[99,1765,365],{"class":113},[99,1767,1768],{"class":109},"quantity",[99,1770,130],{"class":113},[99,1772,1773,1775,1777,1779,1782],{"class":101,"line":203},[99,1774,1219],{"class":113},[99,1776,537],{"class":109},[99,1778,365],{"class":113},[99,1780,1781],{"class":222},"total",[99,1783,341],{"class":113},[99,1785,1786],{"class":101,"line":229},[99,1787,1670],{"class":113},[82,1789,1790],{},"You can also get the total quantity and price for the cart.",[89,1792,1794],{"className":91,"code":1793,"language":93,"meta":94,"style":94},"$quantity = $cart->quantity();\n$total = $cart->total();\n$formattedTotal = $total === null ? null : Price::format($total, $cart->currency);\n",[96,1795,1796,1815,1834],{"__ignoreMap":94},[99,1797,1798,1800,1803,1805,1807,1809,1811,1813],{"class":101,"line":102},[99,1799,206],{"class":113},[99,1801,1802],{"class":109},"quantity ",[99,1804,212],{"class":113},[99,1806,359],{"class":113},[99,1808,362],{"class":109},[99,1810,365],{"class":113},[99,1812,1768],{"class":222},[99,1814,341],{"class":113},[99,1816,1817,1819,1822,1824,1826,1828,1830,1832],{"class":101,"line":133},[99,1818,206],{"class":113},[99,1820,1821],{"class":109},"total ",[99,1823,212],{"class":113},[99,1825,359],{"class":113},[99,1827,362],{"class":109},[99,1829,365],{"class":113},[99,1831,1781],{"class":222},[99,1833,341],{"class":113},[99,1835,1836,1838,1841,1843,1845,1847,1850,1852,1855,1857,1860,1863,1865,1868,1870,1872,1874,1876,1878,1880,1882],{"class":101,"line":155},[99,1837,206],{"class":113},[99,1839,1840],{"class":109},"formattedTotal ",[99,1842,212],{"class":113},[99,1844,359],{"class":113},[99,1846,1821],{"class":109},[99,1848,1849],{"class":113},"===",[99,1851,1408],{"class":113},[99,1853,1854],{"class":113}," ?",[99,1856,1408],{"class":113},[99,1858,1859],{"class":113}," :",[99,1861,1862],{"class":215}," Price",[99,1864,219],{"class":113},[99,1866,1867],{"class":222},"format",[99,1869,371],{"class":113},[99,1871,1781],{"class":109},[99,1873,324],{"class":113},[99,1875,359],{"class":113},[99,1877,362],{"class":109},[99,1879,365],{"class":113},[99,1881,236],{"class":109},[99,1883,388],{"class":113},[82,1885,1886,1887,1890,1891,903],{},"Empty carts return ",[96,1888,1889],{},"null"," from ",[96,1892,1893],{},"total()",[390,1895,1897],{"id":1896},"cart-metadata","Cart metadata",[82,1899,1900],{},"Use metadata for application-specific information that applies to the whole\ncart, such as delivery instructions or a table number.",[89,1902,1904],{"className":91,"code":1903,"language":93,"meta":94,"style":94},"$cart->metadata->put('delivery_instructions', 'Leave at reception');\n$cart->metadata->put('table_number', 12);\n\n$instructions = $cart->metadata->get('delivery_instructions');\n$fallback = $cart->metadata->get('missing_key', 'Not provided');\n\n$cart->metadata->forget('table_number');\n$cart->save();\n",[96,1905,1906,1941,1971,1975,2006,2047,2051,2076],{"__ignoreMap":94},[99,1907,1908,1910,1912,1914,1917,1919,1921,1923,1925,1928,1930,1932,1934,1937,1939],{"class":101,"line":102},[99,1909,206],{"class":113},[99,1911,362],{"class":109},[99,1913,365],{"class":113},[99,1915,1916],{"class":109},"metadata",[99,1918,365],{"class":113},[99,1920,1609],{"class":222},[99,1922,314],{"class":113},[99,1924,239],{"class":113},[99,1926,1927],{"class":235},"delivery_instructions",[99,1929,239],{"class":113},[99,1931,324],{"class":113},[99,1933,327],{"class":113},[99,1935,1936],{"class":235},"Leave at reception",[99,1938,239],{"class":113},[99,1940,388],{"class":113},[99,1942,1943,1945,1947,1949,1951,1953,1955,1957,1959,1962,1964,1966,1969],{"class":101,"line":133},[99,1944,206],{"class":113},[99,1946,362],{"class":109},[99,1948,365],{"class":113},[99,1950,1916],{"class":109},[99,1952,365],{"class":113},[99,1954,1609],{"class":222},[99,1956,314],{"class":113},[99,1958,239],{"class":113},[99,1960,1961],{"class":235},"table_number",[99,1963,239],{"class":113},[99,1965,324],{"class":113},[99,1967,1968],{"class":105}," 12",[99,1970,388],{"class":113},[99,1972,1973],{"class":101,"line":155},[99,1974,200],{"emptyLinePlaceholder":199},[99,1976,1977,1979,1982,1984,1986,1988,1990,1992,1994,1996,1998,2000,2002,2004],{"class":101,"line":178},[99,1978,206],{"class":113},[99,1980,1981],{"class":109},"instructions ",[99,1983,212],{"class":113},[99,1985,359],{"class":113},[99,1987,362],{"class":109},[99,1989,365],{"class":113},[99,1991,1916],{"class":109},[99,1993,365],{"class":113},[99,1995,1301],{"class":222},[99,1997,314],{"class":113},[99,1999,239],{"class":113},[99,2001,1927],{"class":235},[99,2003,239],{"class":113},[99,2005,388],{"class":113},[99,2007,2008,2010,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2034,2036,2038,2040,2043,2045],{"class":101,"line":196},[99,2009,206],{"class":113},[99,2011,2012],{"class":109},"fallback ",[99,2014,212],{"class":113},[99,2016,359],{"class":113},[99,2018,362],{"class":109},[99,2020,365],{"class":113},[99,2022,1916],{"class":109},[99,2024,365],{"class":113},[99,2026,1301],{"class":222},[99,2028,314],{"class":113},[99,2030,239],{"class":113},[99,2032,2033],{"class":235},"missing_key",[99,2035,239],{"class":113},[99,2037,324],{"class":113},[99,2039,327],{"class":113},[99,2041,2042],{"class":235},"Not provided",[99,2044,239],{"class":113},[99,2046,388],{"class":113},[99,2048,2049],{"class":101,"line":203},[99,2050,200],{"emptyLinePlaceholder":199},[99,2052,2053,2055,2057,2059,2061,2063,2066,2068,2070,2072,2074],{"class":101,"line":229},[99,2054,206],{"class":113},[99,2056,362],{"class":109},[99,2058,365],{"class":113},[99,2060,1916],{"class":109},[99,2062,365],{"class":113},[99,2064,2065],{"class":222},"forget",[99,2067,314],{"class":113},[99,2069,239],{"class":113},[99,2071,1961],{"class":235},[99,2073,239],{"class":113},[99,2075,388],{"class":113},[99,2077,2078,2080,2082,2084,2086],{"class":101,"line":256},[99,2079,206],{"class":113},[99,2081,362],{"class":109},[99,2083,365],{"class":113},[99,2085,1525],{"class":222},[99,2087,341],{"class":113},[82,2089,2090],{},"Metadata is a Laravel collection backed by a JSON column. Collection mutations\nare persisted when the cart is saved. You can also replace the complete value\nwhen creating or updating a cart. Metadata is copied to the order during\ncheckout.",[89,2092,2094],{"className":91,"code":2093,"language":93,"meta":94,"style":94},"$cart->update([\n    'metadata' => ['delivery_instructions' => 'Leave at reception'],\n]);\n",[96,2095,2096,2109,2139],{"__ignoreMap":94},[99,2097,2098,2100,2102,2104,2107],{"class":101,"line":102},[99,2099,206],{"class":113},[99,2101,362],{"class":109},[99,2103,365],{"class":113},[99,2105,2106],{"class":222},"update",[99,2108,226],{"class":113},[99,2110,2111,2113,2115,2117,2119,2122,2124,2126,2128,2130,2132,2134,2136],{"class":101,"line":133},[99,2112,232],{"class":113},[99,2114,1916],{"class":235},[99,2116,239],{"class":113},[99,2118,242],{"class":113},[99,2120,2121],{"class":113}," [",[99,2123,239],{"class":113},[99,2125,1927],{"class":235},[99,2127,239],{"class":113},[99,2129,242],{"class":113},[99,2131,327],{"class":113},[99,2133,1936],{"class":235},[99,2135,239],{"class":113},[99,2137,2138],{"class":113},"],\n",[99,2140,2141],{"class":101,"line":155},[99,2142,283],{"class":113},[82,2144,2145],{},"Metadata is informational. Prices, discounts, inventory, and other trusted\ncommerce data should be calculated by server-side APIs instead.",[390,2147,2149],{"id":2148},"cart-item-metadata","Cart item metadata",[82,2151,2152,2153,2155,2156,2158],{},"Pass metadata as the third argument to ",[96,2154,368],{},", or as the named ",[96,2157,1916],{},"\nargument, for application-specific information that belongs to one cart line:",[89,2160,2162],{"className":91,"code":2161,"language":93,"meta":94,"style":94},"$item = $cart->add($burger, quantity: 1, metadata: [\n    'belongs_to' => 'Alice',\n    'customizations' => [\n        'without' => ['onions'],\n        'extra' => ['cheese'],\n    ],\n]);\n",[96,2163,2164,2204,2224,2237,2260,2282,2287],{"__ignoreMap":94},[99,2165,2166,2168,2170,2172,2174,2176,2178,2180,2182,2185,2187,2189,2191,2194,2196,2199,2201],{"class":101,"line":102},[99,2167,206],{"class":113},[99,2169,354],{"class":109},[99,2171,212],{"class":113},[99,2173,359],{"class":113},[99,2175,362],{"class":109},[99,2177,365],{"class":113},[99,2179,368],{"class":222},[99,2181,371],{"class":113},[99,2183,2184],{"class":109},"burger",[99,2186,324],{"class":113},[99,2188,379],{"class":215},[99,2190,382],{"class":113},[99,2192,2193],{"class":105}," 1",[99,2195,324],{"class":113},[99,2197,2198],{"class":215}," metadata",[99,2200,382],{"class":113},[99,2202,2203],{"class":113}," [\n",[99,2205,2206,2208,2211,2213,2215,2217,2220,2222],{"class":101,"line":133},[99,2207,232],{"class":113},[99,2209,2210],{"class":235},"belongs_to",[99,2212,239],{"class":113},[99,2214,242],{"class":113},[99,2216,327],{"class":113},[99,2218,2219],{"class":235},"Alice",[99,2221,239],{"class":113},[99,2223,253],{"class":113},[99,2225,2226,2228,2231,2233,2235],{"class":101,"line":155},[99,2227,232],{"class":113},[99,2229,2230],{"class":235},"customizations",[99,2232,239],{"class":113},[99,2234,242],{"class":113},[99,2236,2203],{"class":113},[99,2238,2239,2242,2245,2247,2249,2251,2253,2256,2258],{"class":101,"line":178},[99,2240,2241],{"class":113},"        '",[99,2243,2244],{"class":235},"without",[99,2246,239],{"class":113},[99,2248,242],{"class":113},[99,2250,2121],{"class":113},[99,2252,239],{"class":113},[99,2254,2255],{"class":235},"onions",[99,2257,239],{"class":113},[99,2259,2138],{"class":113},[99,2261,2262,2264,2267,2269,2271,2273,2275,2278,2280],{"class":101,"line":196},[99,2263,2241],{"class":113},[99,2265,2266],{"class":235},"extra",[99,2268,239],{"class":113},[99,2270,242],{"class":113},[99,2272,2121],{"class":113},[99,2274,239],{"class":113},[99,2276,2277],{"class":235},"cheese",[99,2279,239],{"class":113},[99,2281,2138],{"class":113},[99,2283,2284],{"class":101,"line":203},[99,2285,2286],{"class":113},"    ],\n",[99,2288,2289],{"class":101,"line":229},[99,2290,283],{"class":113},[82,2292,2293,2294,2296,2297,2299],{},"Metadata is part of a cart line's identity. Adding the same variant with the\nsame metadata increases the existing line quantity. Different metadata creates\na separate line, so two people can order differently customized versions of\nthe same product. ",[96,2295,507],{}," and ",[96,2298,580],{}," accept the same optional metadata argument\nto address the matching line.",[82,2301,2302],{},"Cart item metadata is copied to the order item during checkout. Use it for\ndescriptive application data. A customization that changes price, inventory,\ntax, or purchasing rules should be modeled and validated by the application as\na product variant, add-on product, or another structured commerce concept.",[390,2304,2306],{"id":2305},"shipping-methods","Shipping methods",[82,2308,2309],{},"Shipping methods receive the cart and may register one or more options. Each\noption needs a unique handle, a customer-facing name, and a price.",[82,2311,396,2312,2315],{},[96,2313,2314],{},"purchasableItems()"," when rates depend on the selected combinations. It\nreturns cart items with their product, concrete variant, and variant attribute\nvalues loaded.",[89,2317,2319],{"className":91,"code":2318,"language":93,"meta":94,"style":94},"use Larasell\\Larasell\\Enums\\WeightUnit;\nuse Larasell\\Larasell\\Models\\Cart;\nuse Larasell\\Larasell\\Price;\nuse Larasell\\Larasell\\Shipping\\ShippingMethod;\nuse Larasell\\Larasell\\Weight;\n\nclass ParcelShipping extends ShippingMethod\n{\n    public function handle(Cart $cart): void\n    {\n        $items = $cart->purchasableItems();\n        $variants = $items->pluck('variant');\n\n        $this->register('standard', 'Standard shipping', Price::of(500));\n\n        if ($cart->quantity() \u003C 10) {\n            $this->register('express', 'Express shipping', Price::of(1200));\n        }\n\n        $weight = $cart->weight();\n\n        if ($weight !== null && $weight->greaterThan(Weight::of(2, WeightUnit::Kilogram))) {\n            $this->register('heavy', 'Heavy parcel', Price::of(1800));\n        }\n    }\n}\n",[96,2320,2321,2342,2362,2378,2400,2417,2421,2435,2439,2462,2467,2486,2516,2520,2562,2566,2592,2632,2637,2641,2661,2665,2716,2755,2759,2763],{"__ignoreMap":94},[99,2322,2323,2325,2327,2329,2331,2333,2335,2337,2340],{"class":101,"line":102},[99,2324,106],{"class":105},[99,2326,110],{"class":109},[99,2328,114],{"class":113},[99,2330,117],{"class":109},[99,2332,114],{"class":113},[99,2334,168],{"class":109},[99,2336,114],{"class":113},[99,2338,2339],{"class":109},"WeightUnit",[99,2341,130],{"class":113},[99,2343,2344,2346,2348,2350,2352,2354,2356,2358,2360],{"class":101,"line":133},[99,2345,106],{"class":105},[99,2347,110],{"class":109},[99,2349,114],{"class":113},[99,2351,117],{"class":109},[99,2353,114],{"class":113},[99,2355,122],{"class":109},[99,2357,114],{"class":113},[99,2359,127],{"class":109},[99,2361,130],{"class":113},[99,2363,2364,2366,2368,2370,2372,2374,2376],{"class":101,"line":155},[99,2365,106],{"class":105},[99,2367,110],{"class":109},[99,2369,114],{"class":113},[99,2371,117],{"class":109},[99,2373,114],{"class":113},[99,2375,191],{"class":109},[99,2377,130],{"class":113},[99,2379,2380,2382,2384,2386,2388,2390,2393,2395,2398],{"class":101,"line":178},[99,2381,106],{"class":105},[99,2383,110],{"class":109},[99,2385,114],{"class":113},[99,2387,117],{"class":109},[99,2389,114],{"class":113},[99,2391,2392],{"class":109},"Shipping",[99,2394,114],{"class":113},[99,2396,2397],{"class":109},"ShippingMethod",[99,2399,130],{"class":113},[99,2401,2402,2404,2406,2408,2410,2412,2415],{"class":101,"line":196},[99,2403,106],{"class":105},[99,2405,110],{"class":109},[99,2407,114],{"class":113},[99,2409,117],{"class":109},[99,2411,114],{"class":113},[99,2413,2414],{"class":109},"Weight",[99,2416,130],{"class":113},[99,2418,2419],{"class":101,"line":203},[99,2420,200],{"emptyLinePlaceholder":199},[99,2422,2423,2426,2429,2432],{"class":101,"line":229},[99,2424,2425],{"class":976},"class",[99,2427,2428],{"class":215}," ParcelShipping",[99,2430,2431],{"class":976}," extends",[99,2433,2434],{"class":215}," ShippingMethod\n",[99,2436,2437],{"class":101,"line":256},[99,2438,1214],{"class":113},[99,2440,2441,2444,2446,2449,2451,2453,2455,2457,2459],{"class":101,"line":280},[99,2442,2443],{"class":976},"    public",[99,2445,977],{"class":976},[99,2447,2448],{"class":222}," handle",[99,2450,314],{"class":113},[99,2452,127],{"class":215},[99,2454,359],{"class":113},[99,2456,362],{"class":109},[99,2458,990],{"class":113},[99,2460,2461],{"class":105}," void\n",[99,2463,2464],{"class":101,"line":286},[99,2465,2466],{"class":113},"    {\n",[99,2468,2469,2471,2473,2475,2477,2479,2481,2484],{"class":101,"line":291},[99,2470,1447],{"class":113},[99,2472,1728],{"class":109},[99,2474,212],{"class":113},[99,2476,359],{"class":113},[99,2478,362],{"class":109},[99,2480,365],{"class":113},[99,2482,2483],{"class":222},"purchasableItems",[99,2485,341],{"class":113},[99,2487,2488,2490,2493,2495,2497,2500,2502,2505,2507,2509,2512,2514],{"class":101,"line":344},[99,2489,1447],{"class":113},[99,2491,2492],{"class":109},"variants ",[99,2494,212],{"class":113},[99,2496,359],{"class":113},[99,2498,2499],{"class":109},"items",[99,2501,365],{"class":113},[99,2503,2504],{"class":222},"pluck",[99,2506,314],{"class":113},[99,2508,239],{"class":113},[99,2510,2511],{"class":235},"variant",[99,2513,239],{"class":113},[99,2515,388],{"class":113},[99,2517,2518],{"class":101,"line":349},[99,2519,200],{"emptyLinePlaceholder":199},[99,2521,2522,2525,2528,2530,2532,2535,2537,2539,2541,2544,2546,2548,2550,2552,2555,2557,2560],{"class":101,"line":1378},[99,2523,2524],{"class":113},"        $this->",[99,2526,2527],{"class":222},"register",[99,2529,314],{"class":113},[99,2531,239],{"class":113},[99,2533,2534],{"class":235},"standard",[99,2536,239],{"class":113},[99,2538,324],{"class":113},[99,2540,327],{"class":113},[99,2542,2543],{"class":235},"Standard shipping",[99,2545,239],{"class":113},[99,2547,324],{"class":113},[99,2549,1862],{"class":215},[99,2551,219],{"class":113},[99,2553,2554],{"class":222},"of",[99,2556,314],{"class":113},[99,2558,2559],{"class":105},"500",[99,2561,1312],{"class":113},[99,2563,2564],{"class":101,"line":1388},[99,2565,200],{"emptyLinePlaceholder":199},[99,2567,2568,2571,2573,2575,2577,2579,2582,2585,2588,2590],{"class":101,"line":1393},[99,2569,2570],{"class":1396},"        if",[99,2572,1400],{"class":113},[99,2574,362],{"class":109},[99,2576,365],{"class":113},[99,2578,1768],{"class":222},[99,2580,2581],{"class":113},"()",[99,2583,2584],{"class":113}," \u003C",[99,2586,2587],{"class":105}," 10",[99,2589,1738],{"class":113},[99,2591,996],{"class":113},[99,2593,2594,2597,2599,2601,2603,2606,2608,2610,2612,2615,2617,2619,2621,2623,2625,2627,2630],{"class":101,"line":1444},[99,2595,2596],{"class":113},"            $this->",[99,2598,2527],{"class":222},[99,2600,314],{"class":113},[99,2602,239],{"class":113},[99,2604,2605],{"class":235},"express",[99,2607,239],{"class":113},[99,2609,324],{"class":113},[99,2611,327],{"class":113},[99,2613,2614],{"class":235},"Express shipping",[99,2616,239],{"class":113},[99,2618,324],{"class":113},[99,2620,1862],{"class":215},[99,2622,219],{"class":113},[99,2624,2554],{"class":222},[99,2626,314],{"class":113},[99,2628,2629],{"class":105},"1200",[99,2631,1312],{"class":113},[99,2633,2634],{"class":101,"line":1472},[99,2635,2636],{"class":113},"        }\n",[99,2638,2639],{"class":101,"line":1492},[99,2640,200],{"emptyLinePlaceholder":199},[99,2642,2643,2645,2648,2650,2652,2654,2656,2659],{"class":101,"line":1530},[99,2644,1447],{"class":113},[99,2646,2647],{"class":109},"weight ",[99,2649,212],{"class":113},[99,2651,359],{"class":113},[99,2653,362],{"class":109},[99,2655,365],{"class":113},[99,2657,2658],{"class":222},"weight",[99,2660,341],{"class":113},[99,2662,2663],{"class":101,"line":1545},[99,2664,200],{"emptyLinePlaceholder":199},[99,2666,2667,2669,2671,2673,2675,2677,2679,2681,2683,2685,2688,2690,2692,2694,2696,2698,2701,2703,2706,2708,2711,2714],{"class":101,"line":1555},[99,2668,2570],{"class":1396},[99,2670,1400],{"class":113},[99,2672,2647],{"class":109},[99,2674,1405],{"class":113},[99,2676,1408],{"class":113},[99,2678,1411],{"class":113},[99,2680,359],{"class":113},[99,2682,2658],{"class":109},[99,2684,365],{"class":113},[99,2686,2687],{"class":222},"greaterThan",[99,2689,314],{"class":113},[99,2691,2414],{"class":215},[99,2693,219],{"class":113},[99,2695,2554],{"class":222},[99,2697,314],{"class":113},[99,2699,2700],{"class":105},"2",[99,2702,324],{"class":113},[99,2704,2705],{"class":215}," WeightUnit",[99,2707,219],{"class":113},[99,2709,2710],{"class":109},"Kilogram",[99,2712,2713],{"class":113},")))",[99,2715,996],{"class":113},[99,2717,2718,2720,2722,2724,2726,2729,2731,2733,2735,2738,2740,2742,2744,2746,2748,2750,2753],{"class":101,"line":1570},[99,2719,2596],{"class":113},[99,2721,2527],{"class":222},[99,2723,314],{"class":113},[99,2725,239],{"class":113},[99,2727,2728],{"class":235},"heavy",[99,2730,239],{"class":113},[99,2732,324],{"class":113},[99,2734,327],{"class":113},[99,2736,2737],{"class":235},"Heavy parcel",[99,2739,239],{"class":113},[99,2741,324],{"class":113},[99,2743,1862],{"class":215},[99,2745,219],{"class":113},[99,2747,2554],{"class":222},[99,2749,314],{"class":113},[99,2751,2752],{"class":105},"1800",[99,2754,1312],{"class":113},[99,2756,2757],{"class":101,"line":1576},[99,2758,2636],{"class":113},[99,2760,2761],{"class":101,"line":1581},[99,2762,1573],{"class":113},[99,2764,2765],{"class":101,"line":1596},[99,2766,1670],{"class":113},[82,2768,2769],{},"Register the method in your application's service provider:",[89,2771,2773],{"className":91,"code":2772,"language":93,"meta":94,"style":94},"use Larasell\\Larasell\\Shipping\\ShippingManager;\n\npublic function boot(ShippingManager $shipping): void\n{\n    $shipping->register(ParcelShipping::class);\n}\n",[96,2774,2775,2796,2800,2822,2826,2847],{"__ignoreMap":94},[99,2776,2777,2779,2781,2783,2785,2787,2789,2791,2794],{"class":101,"line":102},[99,2778,106],{"class":105},[99,2780,110],{"class":109},[99,2782,114],{"class":113},[99,2784,117],{"class":109},[99,2786,114],{"class":113},[99,2788,2392],{"class":109},[99,2790,114],{"class":113},[99,2792,2793],{"class":109},"ShippingManager",[99,2795,130],{"class":113},[99,2797,2798],{"class":101,"line":133},[99,2799,200],{"emptyLinePlaceholder":199},[99,2801,2802,2804,2806,2809,2811,2813,2815,2818,2820],{"class":101,"line":155},[99,2803,1192],{"class":976},[99,2805,977],{"class":976},[99,2807,2808],{"class":222}," boot",[99,2810,314],{"class":113},[99,2812,2793],{"class":215},[99,2814,359],{"class":113},[99,2816,2817],{"class":109},"shipping",[99,2819,990],{"class":113},[99,2821,2461],{"class":105},[99,2823,2824],{"class":101,"line":178},[99,2825,1214],{"class":113},[99,2827,2828,2830,2832,2834,2836,2838,2841,2843,2845],{"class":101,"line":196},[99,2829,1219],{"class":113},[99,2831,2817],{"class":109},[99,2833,365],{"class":113},[99,2835,2527],{"class":222},[99,2837,314],{"class":113},[99,2839,2840],{"class":215},"ParcelShipping",[99,2842,219],{"class":113},[99,2844,2425],{"class":105},[99,2846,388],{"class":113},[99,2848,2849],{"class":101,"line":203},[99,2850,1670],{"class":113},[82,2852,2853],{},"Read the available options and persist the customer's selection on the cart:",[89,2855,2857],{"className":91,"code":2856,"language":93,"meta":94,"style":94},"$options = $cart->shippingOptions();\n$cart->selectShippingOption('express');\n\n$cart->shippingOption(); \u002F\u002F The selected ShippingOption\n$cart->subtotal();       \u002F\u002F Products only\n$cart->weight();         \u002F\u002F Sum of line weights, or null when any line is missing one\n$cart->discountTotal();  \u002F\u002F Applied product and shipping discounts\n$cart->total();          \u002F\u002F Products + shipping - discounts\n",[96,2858,2859,2879,2900,2904,2921,2937,2952,2968],{"__ignoreMap":94},[99,2860,2861,2863,2866,2868,2870,2872,2874,2877],{"class":101,"line":102},[99,2862,206],{"class":113},[99,2864,2865],{"class":109},"options ",[99,2867,212],{"class":113},[99,2869,359],{"class":113},[99,2871,362],{"class":109},[99,2873,365],{"class":113},[99,2875,2876],{"class":222},"shippingOptions",[99,2878,341],{"class":113},[99,2880,2881,2883,2885,2887,2890,2892,2894,2896,2898],{"class":101,"line":133},[99,2882,206],{"class":113},[99,2884,362],{"class":109},[99,2886,365],{"class":113},[99,2888,2889],{"class":222},"selectShippingOption",[99,2891,314],{"class":113},[99,2893,239],{"class":113},[99,2895,2605],{"class":235},[99,2897,239],{"class":113},[99,2899,388],{"class":113},[99,2901,2902],{"class":101,"line":155},[99,2903,200],{"emptyLinePlaceholder":199},[99,2905,2906,2908,2910,2912,2915,2918],{"class":101,"line":178},[99,2907,206],{"class":113},[99,2909,362],{"class":109},[99,2911,365],{"class":113},[99,2913,2914],{"class":222},"shippingOption",[99,2916,2917],{"class":113},"();",[99,2919,2920],{"class":1001}," \u002F\u002F The selected ShippingOption\n",[99,2922,2923,2925,2927,2929,2932,2934],{"class":101,"line":196},[99,2924,206],{"class":113},[99,2926,362],{"class":109},[99,2928,365],{"class":113},[99,2930,2931],{"class":222},"subtotal",[99,2933,2917],{"class":113},[99,2935,2936],{"class":1001},"       \u002F\u002F Products only\n",[99,2938,2939,2941,2943,2945,2947,2949],{"class":101,"line":203},[99,2940,206],{"class":113},[99,2942,362],{"class":109},[99,2944,365],{"class":113},[99,2946,2658],{"class":222},[99,2948,2917],{"class":113},[99,2950,2951],{"class":1001},"         \u002F\u002F Sum of line weights, or null when any line is missing one\n",[99,2953,2954,2956,2958,2960,2963,2965],{"class":101,"line":229},[99,2955,206],{"class":113},[99,2957,362],{"class":109},[99,2959,365],{"class":113},[99,2961,2962],{"class":222},"discountTotal",[99,2964,2917],{"class":113},[99,2966,2967],{"class":1001},"  \u002F\u002F Applied product and shipping discounts\n",[99,2969,2970,2972,2974,2976,2978,2980],{"class":101,"line":256},[99,2971,206],{"class":113},[99,2973,362],{"class":109},[99,2975,365],{"class":113},[99,2977,1781],{"class":222},[99,2979,2917],{"class":113},[99,2981,2982],{"class":1001},"          \u002F\u002F Products + shipping - discounts\n",[82,2984,2985],{},"The selected option is resolved again whenever totals are calculated. Checkout\nstores a snapshot of its method, handle, name, and price on the order.",[82,2987,2988,2989,2992],{},"See the ",[2990,2991,34],"a",{"href":35}," for defining automatic discounts and\nreading their allocations.",[82,2994,2995,2996,2998],{},"See ",[2990,2997,38],{"href":39}," for classifying products, showing calculated or\nprovisional cart tax estimates, and handling unavailable totals.",[390,3000,3002],{"id":3001},"stock-and-backorders","Stock and backorders",[82,3004,3005,3006,3009,3010,3013,3014,3017,3018,3020,3021,3023],{},"Products allow backorders by default. When a product has\n",[96,3007,3008],{},"allow_backorders"," set to ",[96,3011,3012],{},"false",", the cart rejects quantities greater\nthan the product's available ",[96,3015,3016],{},"stock",". Products with ",[96,3019,3016],{}," set to\n",[96,3022,1889],{}," do not have inventory limits and may be added in any quantity.",[3025,3026,3027],"style",{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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}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 .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":94,"searchDepth":102,"depth":133,"links":3029},[3030,3031,3034,3035,3036,3037,3038],{"id":392,"depth":133,"text":393},{"id":626,"depth":133,"text":627,"children":3032},[3033],{"id":1011,"depth":155,"text":1012},{"id":1676,"depth":133,"text":1677},{"id":1896,"depth":133,"text":1897},{"id":2148,"depth":133,"text":2149},{"id":2305,"depth":133,"text":2306},{"id":3001,"depth":133,"text":3002},"Create carts, add products, update quantities, and calculate totals.","md",null,{},{"title":10,"description":3039},"RYpQgTBFhChAk4F5u_thlrBxelAeKakMIkddVhWugww",[3041,3046],{"title":14,"path":15,"stem":16,"description":3047,"children":-1},"Fetch sibling categories, child categories, descendants, and products from a category.",1789114878354]