[{"data":1,"prerenderedAt":1797},["ShallowReactive",2],{"navigation_docs":3,"-form-guide-composer-rich-text":82,"-form-guide-composer-rich-text-surround":1792},[4],{"title":5,"path":6,"stem":7,"children":8,"page":25},"Form","\u002Fform","1.getting-started",[9,26,58],{"title":10,"path":11,"stem":12,"children":13,"page":25},"Getting Started","\u002Fform\u002Fgetting-started","1.getting-started\u002F1.installation",[14,17,21],{"title":15,"path":16,"stem":12},"Installation","\u002Fform\u002Fgetting-started\u002Finstallation",{"title":18,"path":19,"stem":20},"Your first form","\u002Fform\u002Fgetting-started\u002Ffirst-form","1.getting-started\u002F2.first-form",{"title":22,"path":23,"stem":24},"Vue rendering","\u002Fform\u002Fgetting-started\u002Fvue-rendering","1.getting-started\u002F3.vue-rendering",false,{"title":27,"path":28,"stem":29,"children":30,"page":25},"Guide","\u002Fform\u002Fguide","2.guide\u002F1.forms-data-validation",[31,34,38,42,46,50,54],{"title":32,"path":33,"stem":29},"Forms, data, and validation","\u002Fform\u002Fguide\u002Fforms-data-validation",{"title":35,"path":36,"stem":37},"Fields and visibility","\u002Fform\u002Fguide\u002Ffields-visibility","2.guide\u002F2.fields-visibility",{"title":39,"path":40,"stem":41},"Renderers and composables","\u002Fform\u002Fguide\u002Frenderers-composables","2.guide\u002F3.renderers-composables",{"title":43,"path":44,"stem":45},"Collections and wizards","\u002Fform\u002Fguide\u002Fcollections-wizards","2.guide\u002F4.collections-wizards",{"title":47,"path":48,"stem":49},"Comboboxes","\u002Fform\u002Fguide\u002Fcomboboxes","2.guide\u002F5.comboboxes",{"title":51,"path":52,"stem":53},"Uploads","\u002Fform\u002Fguide\u002Fuploads","2.guide\u002F6.uploads",{"title":55,"path":56,"stem":57},"Composer and rich text","\u002Fform\u002Fguide\u002Fcomposer-rich-text","2.guide\u002F7.composer-rich-text",{"title":59,"path":60,"stem":61,"children":62,"page":25},"Reference","\u002Fform\u002Freference","3.reference\u002F1.fields",[63,66,70,74,78],{"title":64,"path":65,"stem":61},"Fields","\u002Fform\u002Freference\u002Ffields",{"title":67,"path":68,"stem":69},"PHP API","\u002Fform\u002Freference\u002Fphp-api","3.reference\u002F2.php-api",{"title":71,"path":72,"stem":73},"Vue API","\u002Fform\u002Freference\u002Fvue-api","3.reference\u002F3.vue-api",{"title":75,"path":76,"stem":77},"Configuration and commands","\u002Fform\u002Freference\u002Fconfiguration-commands","3.reference\u002F4.configuration-commands",{"title":79,"path":80,"stem":81},"Resource shape","\u002Fform\u002Freference\u002Fresource-shape","3.reference\u002F5.resource-shape",{"id":83,"title":55,"body":84,"description":1786,"extension":1787,"links":1788,"meta":1789,"navigation":230,"path":56,"seo":1790,"stem":57,"__hash__":1791},"docs\u002Fform\u002F2.guide\u002F7.composer-rich-text.md",{"type":85,"value":86,"toc":1780},"minimark",[87,100,160,173,178,185,354,386,756,786,790,810,976,1006,1013,1073,1076,1080,1091,1424,1449,1453,1456,1772,1776],[88,89,90,91,95,96,99],"p",{},"Neither ",[92,93,94],"code",{},"Composer"," nor ",[92,97,98],{},"RichText"," ships an editor. They define value and upload behavior; your application connects its preferred text area, message composer, or rich-text editor through the matching controller.",[101,102,103,116],"table",{},[104,105,106],"thead",{},[107,108,109,113],"tr",{},[110,111,112],"th",{},"Field",[110,114,115],{},"Submitted value",[117,118,119,136,148],"tbody",{},[107,120,121,127],{},[122,123,124,126],"td",{},[92,125,94],{}," without attachments",[122,128,129,132,133],{},[92,130,131],{},"string"," or ",[92,134,135],{},"null",[107,137,138,143],{},[122,139,140,142],{},[92,141,94],{}," with attachments",[122,144,145],{},[92,146,147],{},"{ text: string, attachments: array }",[107,149,150,154],{},[122,151,152],{},[92,153,98],{},[122,155,156,157,159],{},"HTML ",[92,158,131],{},"; optional images use a separate token array",[161,162,163,164,167,168,172],"note",{},"The managed attachment and image strategies below require the opt-in upload routes. Register ",[92,165,166],{},"Route::inertiaFormUploads()"," as shown in the ",[169,170,171],"a",{"href":52},"uploads guide",".",[174,175,177],"h2",{"id":176},"composer-attachments","Composer attachments",[88,179,180,181,184],{},"Enable attachments and configure them with the same upload options as a ",[92,182,183],{},"File"," field.",[186,187,192],"pre",{"className":188,"code":189,"language":190,"meta":191,"style":191},"language-php shiki shiki-themes material-theme-lighter catppuccin-mocha catppuccin-mocha","use Inertify\\Form\\Fields\\Composer;\n\nComposer::make('message')\n    ->maxLength(5_000)\n    ->allowAttachments()\n    ->acceptedFileTypes(['image\u002Fpng', 'application\u002Fpdf'])\n    ->maxFileSize(5 * 1024)\n    ->reorderable();\n","php","",[92,193,194,225,232,262,279,290,322,343],{"__ignoreMap":191},[195,196,199,203,207,211,213,215,217,219,222],"span",{"class":197,"line":198},"line",1,[195,200,202],{"class":201},"scOca","use",[195,204,206],{"class":205},"svMjs"," Inertify",[195,208,210],{"class":209},"sOG8g","\\",[195,212,5],{"class":205},[195,214,210],{"class":209},[195,216,64],{"class":205},[195,218,210],{"class":209},[195,220,94],{"class":221},"spKqO",[195,223,224],{"class":209},";\n",[195,226,228],{"class":197,"line":227},2,[195,229,231],{"emptyLinePlaceholder":230},true,"\n",[195,233,235,238,242,246,249,253,257,259],{"class":197,"line":234},3,[195,236,94],{"class":237},"s6-7G",[195,239,241],{"class":240},"sWTNM","::",[195,243,245],{"class":244},"sgeHj","make",[195,247,248],{"class":209},"(",[195,250,252],{"class":251},"sQGZM","'",[195,254,256],{"class":255},"s2lAL","message",[195,258,252],{"class":251},[195,260,261],{"class":209},")\n",[195,263,265,268,271,273,277],{"class":197,"line":264},4,[195,266,267],{"class":240},"    ->",[195,269,270],{"class":244},"maxLength",[195,272,248],{"class":209},[195,274,276],{"class":275},"sCOdc","5_000",[195,278,261],{"class":209},[195,280,282,284,287],{"class":197,"line":281},5,[195,283,267],{"class":240},[195,285,286],{"class":244},"allowAttachments",[195,288,289],{"class":209},"()\n",[195,291,293,295,298,301,303,306,308,311,314,317,319],{"class":197,"line":292},6,[195,294,267],{"class":240},[195,296,297],{"class":244},"acceptedFileTypes",[195,299,300],{"class":209},"([",[195,302,252],{"class":251},[195,304,305],{"class":255},"image\u002Fpng",[195,307,252],{"class":251},[195,309,310],{"class":209},",",[195,312,313],{"class":251}," '",[195,315,316],{"class":255},"application\u002Fpdf",[195,318,252],{"class":251},[195,320,321],{"class":209},"])\n",[195,323,325,327,330,332,335,338,341],{"class":197,"line":324},7,[195,326,267],{"class":240},[195,328,329],{"class":244},"maxFileSize",[195,331,248],{"class":209},[195,333,334],{"class":275},"5",[195,336,337],{"class":240}," *",[195,339,340],{"class":275}," 1024",[195,342,261],{"class":209},[195,344,346,348,351],{"class":197,"line":345},8,[195,347,267],{"class":240},[195,349,350],{"class":244},"reorderable",[195,352,353],{"class":209},"();\n",[88,355,356,359,360,363,364,363,367,363,370,363,373,363,376,363,379,382,383,172],{},[92,357,358],{},"useComposer(name, form)"," exposes ",[92,361,362],{},"text",", ",[92,365,366],{},"attachments",[92,368,369],{},"attachmentUploadState",[92,371,372],{},"setText()",[92,374,375],{},"setAttachments()",[92,377,378],{},"uploadAttachments()",[92,380,381],{},"removeAttachment()",", and ",[92,384,385],{},"reorderAttachment()",[186,387,392],{"className":388,"code":389,"filename":390,"language":391,"meta":191,"style":191},"language-vue shiki shiki-themes material-theme-lighter catppuccin-mocha catppuccin-mocha","\u003Cscript setup lang=\"ts\">\nimport { useComposer, type FormFieldSlotProps } from '@inertify\u002Fform-vue'\n\nconst props = defineProps\u003CFormFieldSlotProps>()\nconst composer = useComposer(props.name, props.form)\n\nfunction attach(event: Event) {\n  const input = event.currentTarget as HTMLInputElement\n\n  if (input.files) {\n    void composer.uploadAttachments(input.files)\n  }\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Ctextarea v-model=\"composer.text.value\" @blur=\"blur\" \u002F>\n  \u003Cinput v-if=\"composer.allowAttachments.value\" type=\"file\" multiple @change=\"attach\">\n\u003C\u002Ftemplate>\n","resources\u002Fjs\u002Fcomponents\u002Fform\u002FComposerField.vue","vue",[92,393,394,424,458,462,487,516,520,546,571,576,600,624,630,636,646,651,661,700,747],{"__ignoreMap":191},[195,395,396,399,403,407,410,413,416,419,421],{"class":197,"line":198},[195,397,398],{"class":240},"\u003C",[195,400,402],{"class":401},"sgRj0","script",[195,404,406],{"class":405},"sGkbZ"," setup",[195,408,409],{"class":405}," lang",[195,411,412],{"class":240},"=",[195,414,415],{"class":251},"\"",[195,417,418],{"class":255},"ts",[195,420,415],{"class":251},[195,422,423],{"class":240},">\n",[195,425,426,430,433,436,438,441,444,447,450,452,455],{"class":197,"line":227},[195,427,429],{"class":428},"su_vF","import",[195,431,432],{"class":209}," {",[195,434,435],{"class":205}," useComposer",[195,437,310],{"class":209},[195,439,440],{"class":428}," type",[195,442,443],{"class":205}," FormFieldSlotProps",[195,445,446],{"class":209}," }",[195,448,449],{"class":428}," from",[195,451,313],{"class":251},[195,453,454],{"class":255},"@inertify\u002Fform-vue",[195,456,457],{"class":251},"'\n",[195,459,460],{"class":197,"line":234},[195,461,231],{"emptyLinePlaceholder":230},[195,463,464,468,471,473,476,479,482,485],{"class":197,"line":264},[195,465,467],{"class":466},"sNFzF","const",[195,469,470],{"class":205}," props ",[195,472,412],{"class":240},[195,474,475],{"class":244}," defineProps",[195,477,398],{"class":478},"sdlML",[195,480,481],{"class":237},"FormFieldSlotProps",[195,483,484],{"class":478},">",[195,486,289],{"class":205},[195,488,489,491,494,496,498,501,503,506,508,511,513],{"class":197,"line":281},[195,490,467],{"class":466},[195,492,493],{"class":205}," composer ",[195,495,412],{"class":240},[195,497,435],{"class":244},[195,499,500],{"class":205},"(props",[195,502,172],{"class":240},[195,504,505],{"class":205},"name",[195,507,310],{"class":209},[195,509,510],{"class":205}," props",[195,512,172],{"class":240},[195,514,515],{"class":205},"form)\n",[195,517,518],{"class":197,"line":292},[195,519,231],{"emptyLinePlaceholder":230},[195,521,522,525,528,530,534,537,540,543],{"class":197,"line":324},[195,523,524],{"class":466},"function",[195,526,527],{"class":244}," attach",[195,529,248],{"class":209},[195,531,533],{"class":532},"s12WM","event",[195,535,536],{"class":240},":",[195,538,539],{"class":237}," Event",[195,541,542],{"class":209},")",[195,544,545],{"class":209}," {\n",[195,547,548,551,554,557,560,562,565,568],{"class":197,"line":345},[195,549,550],{"class":466},"  const",[195,552,553],{"class":205}," input",[195,555,556],{"class":240}," =",[195,558,559],{"class":205}," event",[195,561,172],{"class":240},[195,563,564],{"class":205},"currentTarget",[195,566,567],{"class":428}," as",[195,569,570],{"class":237}," HTMLInputElement\n",[195,572,574],{"class":197,"line":573},9,[195,575,231],{"emptyLinePlaceholder":230},[195,577,579,582,586,589,591,594,597],{"class":197,"line":578},10,[195,580,581],{"class":428},"  if",[195,583,585],{"class":584},"sHTG8"," (",[195,587,588],{"class":205},"input",[195,590,172],{"class":240},[195,592,593],{"class":205},"files",[195,595,596],{"class":584},") ",[195,598,599],{"class":209},"{\n",[195,601,603,606,609,611,614,616,618,620,622],{"class":197,"line":602},11,[195,604,605],{"class":240},"    void",[195,607,608],{"class":205}," composer",[195,610,172],{"class":240},[195,612,613],{"class":244},"uploadAttachments",[195,615,248],{"class":584},[195,617,588],{"class":205},[195,619,172],{"class":240},[195,621,593],{"class":205},[195,623,261],{"class":584},[195,625,627],{"class":197,"line":626},12,[195,628,629],{"class":209},"  }\n",[195,631,633],{"class":197,"line":632},13,[195,634,635],{"class":209},"}\n",[195,637,639,642,644],{"class":197,"line":638},14,[195,640,641],{"class":240},"\u003C\u002F",[195,643,402],{"class":401},[195,645,423],{"class":240},[195,647,649],{"class":197,"line":648},15,[195,650,231],{"emptyLinePlaceholder":230},[195,652,654,656,659],{"class":197,"line":653},16,[195,655,398],{"class":240},[195,657,658],{"class":401},"template",[195,660,423],{"class":240},[195,662,664,667,670,673,675,677,680,682,685,687,689,692,694,698],{"class":197,"line":663},17,[195,665,666],{"class":240},"  \u003C",[195,668,669],{"class":401},"textarea",[195,671,672],{"class":405}," v-model",[195,674,412],{"class":240},[195,676,415],{"class":251},[195,678,679],{"class":255},"composer.text.value",[195,681,415],{"class":251},[195,683,684],{"class":405}," @blur",[195,686,412],{"class":240},[195,688,415],{"class":251},[195,690,691],{"class":255},"blur",[195,693,415],{"class":251},[195,695,697],{"class":696},"sxSEj"," \u002F",[195,699,423],{"class":240},[195,701,703,705,707,710,712,714,717,719,721,723,725,728,730,733,736,738,740,743,745],{"class":197,"line":702},18,[195,704,666],{"class":240},[195,706,588],{"class":401},[195,708,709],{"class":405}," v-if",[195,711,412],{"class":240},[195,713,415],{"class":251},[195,715,716],{"class":255},"composer.allowAttachments.value",[195,718,415],{"class":251},[195,720,440],{"class":405},[195,722,412],{"class":240},[195,724,415],{"class":251},[195,726,727],{"class":255},"file",[195,729,415],{"class":251},[195,731,732],{"class":405}," multiple",[195,734,735],{"class":405}," @change",[195,737,412],{"class":240},[195,739,415],{"class":251},[195,741,742],{"class":255},"attach",[195,744,415],{"class":251},[195,746,423],{"class":240},[195,748,750,752,754],{"class":197,"line":749},19,[195,751,641],{"class":240},[195,753,658],{"class":401},[195,755,423],{"class":240},[88,757,758,759,762,763,766,767,770,771,773,774,777,778,781,782,785],{},"After server validation, ",[92,760,761],{},"validated(files: false)"," retains ",[92,764,765],{},"message.text"," and removes ",[92,768,769],{},"message.attachments"," for every upload strategy. Resolve token-based attachments using their qualified ",[92,772,769],{}," upload path. For native attachments configured with ",[92,775,776],{},"storeWithForm()",", use ",[92,779,780],{},"validated()"," with its default ",[92,783,784],{},"files: true"," value or read Laravel's request file bag.",[174,787,789],{"id":788},"rich-text-image-uploads","Rich-text image uploads",[88,791,792,794,795,798,799,802,803,806,807,172],{},[92,793,98],{}," always submits an HTML string. ",[92,796,797],{},"imageUploads()"," adds a companion array named ",[92,800,801],{},"\u003Cfield>_images","; for ",[92,804,805],{},"body",", the path is ",[92,808,809],{},"body_images",[186,811,813],{"className":188,"code":812,"language":190,"meta":191,"style":191},"use Inertify\\Form\\Fields\\RichText;\nuse Inertify\\Form\\Fields\\UploadConfig;\n\nRichText::make('body')\n    ->maxLength(50_000)\n    ->imageUploads(\n        fn (UploadConfig $images): UploadConfig => $images\n            ->maxSize(2 * 1024)\n            ->directToStorage('private'),\n    );\n",[92,814,815,835,856,860,878,891,901,933,952,971],{"__ignoreMap":191},[195,816,817,819,821,823,825,827,829,831,833],{"class":197,"line":198},[195,818,202],{"class":201},[195,820,206],{"class":205},[195,822,210],{"class":209},[195,824,5],{"class":205},[195,826,210],{"class":209},[195,828,64],{"class":205},[195,830,210],{"class":209},[195,832,98],{"class":221},[195,834,224],{"class":209},[195,836,837,839,841,843,845,847,849,851,854],{"class":197,"line":227},[195,838,202],{"class":201},[195,840,206],{"class":205},[195,842,210],{"class":209},[195,844,5],{"class":205},[195,846,210],{"class":209},[195,848,64],{"class":205},[195,850,210],{"class":209},[195,852,853],{"class":221},"UploadConfig",[195,855,224],{"class":209},[195,857,858],{"class":197,"line":234},[195,859,231],{"emptyLinePlaceholder":230},[195,861,862,864,866,868,870,872,874,876],{"class":197,"line":264},[195,863,98],{"class":237},[195,865,241],{"class":240},[195,867,245],{"class":244},[195,869,248],{"class":209},[195,871,252],{"class":251},[195,873,805],{"class":255},[195,875,252],{"class":251},[195,877,261],{"class":209},[195,879,880,882,884,886,889],{"class":197,"line":281},[195,881,267],{"class":240},[195,883,270],{"class":244},[195,885,248],{"class":209},[195,887,888],{"class":275},"50_000",[195,890,261],{"class":209},[195,892,893,895,898],{"class":197,"line":292},[195,894,267],{"class":240},[195,896,897],{"class":244},"imageUploads",[195,899,900],{"class":209},"(\n",[195,902,903,906,908,910,914,918,920,922,925,928,930],{"class":197,"line":324},[195,904,905],{"class":466},"        fn",[195,907,585],{"class":209},[195,909,853],{"class":237},[195,911,913],{"class":912},"sKlSU"," $",[195,915,917],{"class":916},"sVbGb","images",[195,919,542],{"class":209},[195,921,536],{"class":240},[195,923,924],{"class":237}," UploadConfig",[195,926,927],{"class":209}," =>",[195,929,913],{"class":696},[195,931,932],{"class":205},"images\n",[195,934,935,938,941,943,946,948,950],{"class":197,"line":345},[195,936,937],{"class":240},"            ->",[195,939,940],{"class":244},"maxSize",[195,942,248],{"class":209},[195,944,945],{"class":275},"2",[195,947,337],{"class":240},[195,949,340],{"class":275},[195,951,261],{"class":209},[195,953,954,956,959,961,963,966,968],{"class":197,"line":573},[195,955,937],{"class":240},[195,957,958],{"class":244},"directToStorage",[195,960,248],{"class":209},[195,962,252],{"class":251},[195,964,965],{"class":255},"private",[195,967,252],{"class":251},[195,969,970],{"class":209},"),\n",[195,972,973],{"class":197,"line":578},[195,974,975],{"class":209},"    );\n",[88,977,978,979,982,983,363,986,363,988,363,991,363,994,363,997,363,1000,382,1003,172],{},"Use ",[92,980,981],{},"useRichText(name, form)"," to access ",[92,984,985],{},"html",[92,987,917],{},[92,989,990],{},"imageUploadState",[92,992,993],{},"setHtml()",[92,995,996],{},"clearContent()",[92,998,999],{},"uploadImages()",[92,1001,1002],{},"removeImage()",[92,1004,1005],{},"reorderImage()",[88,1007,1008,1009,1012],{},"When the controller returns an uploaded file, insert an image into the editor with its token in ",[92,1010,1011],{},"data-inertia-forms-upload",". Keep the companion token list synchronized; the controller does this when uploading and removing images.",[186,1014,1017],{"className":1015,"code":1016,"language":985,"meta":191,"style":191},"language-html shiki shiki-themes material-theme-lighter catppuccin-mocha catppuccin-mocha","\u003Cimg\n  src=\"blob:https:\u002F\u002Fexample.test\u002Flocal-preview\"\n  alt=\"Diagram\"\n  data-inertia-forms-upload=\"encrypted-upload-token\"\n>\n",[92,1018,1019,1026,1041,1055,1069],{"__ignoreMap":191},[195,1020,1021,1023],{"class":197,"line":198},[195,1022,398],{"class":240},[195,1024,1025],{"class":401},"img\n",[195,1027,1028,1031,1033,1035,1038],{"class":197,"line":227},[195,1029,1030],{"class":405},"  src",[195,1032,412],{"class":240},[195,1034,415],{"class":251},[195,1036,1037],{"class":255},"blob:https:\u002F\u002Fexample.test\u002Flocal-preview",[195,1039,1040],{"class":251},"\"\n",[195,1042,1043,1046,1048,1050,1053],{"class":197,"line":234},[195,1044,1045],{"class":405},"  alt",[195,1047,412],{"class":240},[195,1049,415],{"class":251},[195,1051,1052],{"class":255},"Diagram",[195,1054,1040],{"class":251},[195,1056,1057,1060,1062,1064,1067],{"class":197,"line":264},[195,1058,1059],{"class":405},"  data-inertia-forms-upload",[195,1061,412],{"class":240},[195,1063,415],{"class":251},[195,1065,1066],{"class":255},"encrypted-upload-token",[195,1068,1040],{"class":251},[195,1070,1071],{"class":197,"line":281},[195,1072,423],{"class":240},[88,1074,1075],{},"The server compares unique token sets: every HTML marker token must appear in the companion array and vice versa. Ordering and duplicate entries are ignored.",[174,1077,1079],{"id":1078},"store-and-rewrite-images","Store and rewrite images",[88,1081,1082,1083,1086,1087,1090],{},"After form validation, store each submitted image and replace its temporary marker. Passing ",[92,1084,1085],{},"deleteTemporary: false"," lets ",[92,1088,1089],{},"RichTextUploads"," delete every token only after the complete rewrite succeeds.",[186,1092,1094],{"className":188,"code":1093,"language":190,"meta":191,"style":191},"use Inertify\\Form\\RichText\\RichTextImage;\nuse Inertify\\Form\\RichText\\RichTextUploads;\nuse Inertify\\Form\\Uploads\\SubmittedUpload;\n\n$data = $form->validated(files: false);\n$data['body'] = RichTextUploads::from(request(), 'body')\n    ->storeImagesUsing(function (\n        SubmittedUpload $upload,\n        RichTextImage $image,\n    ): RichTextImage {\n        $path = $upload->store(\n            'post-images',\n            'private',\n            deleteTemporary: false,\n        );\n\n        return $image->identifier($path, ['disk' => 'private']);\n    })\n    ->keepTokenized()\n    ->toHtml();\n",[92,1095,1096,1117,1137,1158,1162,1197,1242,1256,1269,1281,1293,1314,1326,1336,1347,1352,1356,1400,1405,1414],{"__ignoreMap":191},[195,1097,1098,1100,1102,1104,1106,1108,1110,1112,1115],{"class":197,"line":198},[195,1099,202],{"class":201},[195,1101,206],{"class":205},[195,1103,210],{"class":209},[195,1105,5],{"class":205},[195,1107,210],{"class":209},[195,1109,98],{"class":205},[195,1111,210],{"class":209},[195,1113,1114],{"class":221},"RichTextImage",[195,1116,224],{"class":209},[195,1118,1119,1121,1123,1125,1127,1129,1131,1133,1135],{"class":197,"line":227},[195,1120,202],{"class":201},[195,1122,206],{"class":205},[195,1124,210],{"class":209},[195,1126,5],{"class":205},[195,1128,210],{"class":209},[195,1130,98],{"class":205},[195,1132,210],{"class":209},[195,1134,1089],{"class":221},[195,1136,224],{"class":209},[195,1138,1139,1141,1143,1145,1147,1149,1151,1153,1156],{"class":197,"line":234},[195,1140,202],{"class":201},[195,1142,206],{"class":205},[195,1144,210],{"class":209},[195,1146,5],{"class":205},[195,1148,210],{"class":209},[195,1150,51],{"class":205},[195,1152,210],{"class":209},[195,1154,1155],{"class":221},"SubmittedUpload",[195,1157,224],{"class":209},[195,1159,1160],{"class":197,"line":264},[195,1161,231],{"emptyLinePlaceholder":230},[195,1163,1164,1167,1170,1172,1174,1177,1180,1183,1185,1188,1190,1194],{"class":197,"line":281},[195,1165,1166],{"class":696},"$",[195,1168,1169],{"class":205},"data ",[195,1171,412],{"class":240},[195,1173,913],{"class":696},[195,1175,1176],{"class":205},"form",[195,1178,1179],{"class":240},"->",[195,1181,1182],{"class":244},"validated",[195,1184,248],{"class":209},[195,1186,593],{"class":1187},"sRLcR",[195,1189,536],{"class":209},[195,1191,1193],{"class":1192},"s27pR"," false",[195,1195,1196],{"class":209},");\n",[195,1198,1199,1201,1204,1207,1209,1211,1213,1216,1218,1221,1223,1226,1228,1231,1234,1236,1238,1240],{"class":197,"line":292},[195,1200,1166],{"class":696},[195,1202,1203],{"class":205},"data",[195,1205,1206],{"class":209},"[",[195,1208,252],{"class":251},[195,1210,805],{"class":255},[195,1212,252],{"class":251},[195,1214,1215],{"class":209},"]",[195,1217,556],{"class":240},[195,1219,1220],{"class":237}," RichTextUploads",[195,1222,241],{"class":240},[195,1224,1225],{"class":244},"from",[195,1227,248],{"class":209},[195,1229,1230],{"class":244},"request",[195,1232,1233],{"class":209},"(),",[195,1235,313],{"class":251},[195,1237,805],{"class":255},[195,1239,252],{"class":251},[195,1241,261],{"class":209},[195,1243,1244,1246,1249,1251,1253],{"class":197,"line":324},[195,1245,267],{"class":240},[195,1247,1248],{"class":244},"storeImagesUsing",[195,1250,248],{"class":209},[195,1252,524],{"class":466},[195,1254,1255],{"class":209}," (\n",[195,1257,1258,1261,1263,1266],{"class":197,"line":345},[195,1259,1260],{"class":237},"        SubmittedUpload",[195,1262,913],{"class":912},[195,1264,1265],{"class":916},"upload",[195,1267,1268],{"class":209},",\n",[195,1270,1271,1274,1276,1279],{"class":197,"line":573},[195,1272,1273],{"class":237},"        RichTextImage",[195,1275,913],{"class":912},[195,1277,1278],{"class":916},"image",[195,1280,1268],{"class":209},[195,1282,1283,1286,1288,1291],{"class":197,"line":578},[195,1284,1285],{"class":209},"    )",[195,1287,536],{"class":240},[195,1289,1290],{"class":237}," RichTextImage",[195,1292,545],{"class":209},[195,1294,1295,1298,1301,1303,1305,1307,1309,1312],{"class":197,"line":602},[195,1296,1297],{"class":696},"        $",[195,1299,1300],{"class":205},"path ",[195,1302,412],{"class":240},[195,1304,913],{"class":696},[195,1306,1265],{"class":205},[195,1308,1179],{"class":240},[195,1310,1311],{"class":244},"store",[195,1313,900],{"class":209},[195,1315,1316,1319,1322,1324],{"class":197,"line":626},[195,1317,1318],{"class":251},"            '",[195,1320,1321],{"class":255},"post-images",[195,1323,252],{"class":251},[195,1325,1268],{"class":209},[195,1327,1328,1330,1332,1334],{"class":197,"line":632},[195,1329,1318],{"class":251},[195,1331,965],{"class":255},[195,1333,252],{"class":251},[195,1335,1268],{"class":209},[195,1337,1338,1341,1343,1345],{"class":197,"line":638},[195,1339,1340],{"class":1187},"            deleteTemporary",[195,1342,536],{"class":209},[195,1344,1193],{"class":1192},[195,1346,1268],{"class":209},[195,1348,1349],{"class":197,"line":648},[195,1350,1351],{"class":209},"        );\n",[195,1353,1354],{"class":197,"line":653},[195,1355,231],{"emptyLinePlaceholder":230},[195,1357,1358,1361,1363,1365,1367,1370,1372,1374,1377,1379,1382,1384,1387,1389,1391,1393,1395,1397],{"class":197,"line":663},[195,1359,1360],{"class":428},"        return",[195,1362,913],{"class":696},[195,1364,1278],{"class":205},[195,1366,1179],{"class":240},[195,1368,1369],{"class":244},"identifier",[195,1371,248],{"class":209},[195,1373,1166],{"class":696},[195,1375,1376],{"class":205},"path",[195,1378,310],{"class":209},[195,1380,1381],{"class":209}," [",[195,1383,252],{"class":251},[195,1385,1386],{"class":255},"disk",[195,1388,252],{"class":251},[195,1390,927],{"class":240},[195,1392,313],{"class":251},[195,1394,965],{"class":255},[195,1396,252],{"class":251},[195,1398,1399],{"class":209},"]);\n",[195,1401,1402],{"class":197,"line":702},[195,1403,1404],{"class":209},"    })\n",[195,1406,1407,1409,1412],{"class":197,"line":749},[195,1408,267],{"class":240},[195,1410,1411],{"class":244},"keepTokenized",[195,1413,289],{"class":209},[195,1415,1417,1419,1422],{"class":197,"line":1416},20,[195,1418,267],{"class":240},[195,1420,1421],{"class":244},"toHtml",[195,1423,353],{"class":209},[88,1425,1426,1429,1430,1433,1434,1437,1438,1441,1442,1444,1445,1448],{},[92,1427,1428],{},"keepTokenized()"," removes the temporary ",[92,1431,1432],{},"src"," and stores a versioned ",[92,1435,1436],{},"data-inertia-forms-image"," marker containing your identifier and metadata. If public URLs are stable, return ",[92,1439,1440],{},"$image->src($url)"," and omit ",[92,1443,1428],{}," instead. ",[92,1446,1447],{},"storeImagesInMediaLibrary()"," is the optional Media Library shortcut.",[174,1450,1452],{"id":1451},"resolve-stored-images","Resolve stored images",[88,1454,1455],{},"For tokenized HTML, replace stored markers with fresh URLs before sending content to the browser:",[186,1457,1459],{"className":188,"code":1458,"language":190,"meta":191,"style":191},"use Illuminate\\Support\\Facades\\Storage;\nuse Inertify\\Form\\RichText\\RichTextContent;\nuse Inertify\\Form\\RichText\\RichTextImage;\nuse Inertify\\Form\\RichText\\RichTextStoredImage;\n\n$body = RichTextContent::from($post->body)\n    ->replaceImagesUsing(function (\n        RichTextStoredImage $stored,\n        RichTextImage $image,\n    ): RichTextImage {\n        $disk = (string) $stored->meta('disk', 'private');\n        $url = Storage::disk($disk)->temporaryUrl(\n            $stored->identifier(),\n            now()->addMinutes(5),\n        );\n\n        return $image->src($url);\n    })\n    ->toHtml();\n",[92,1460,1461,1485,1506,1526,1547,1551,1580,1593,1605,1615,1625,1667,1698,1712,1731,1735,1739,1760,1764],{"__ignoreMap":191},[195,1462,1463,1465,1468,1470,1473,1475,1478,1480,1483],{"class":197,"line":198},[195,1464,202],{"class":201},[195,1466,1467],{"class":205}," Illuminate",[195,1469,210],{"class":209},[195,1471,1472],{"class":205},"Support",[195,1474,210],{"class":209},[195,1476,1477],{"class":205},"Facades",[195,1479,210],{"class":209},[195,1481,1482],{"class":221},"Storage",[195,1484,224],{"class":209},[195,1486,1487,1489,1491,1493,1495,1497,1499,1501,1504],{"class":197,"line":227},[195,1488,202],{"class":201},[195,1490,206],{"class":205},[195,1492,210],{"class":209},[195,1494,5],{"class":205},[195,1496,210],{"class":209},[195,1498,98],{"class":205},[195,1500,210],{"class":209},[195,1502,1503],{"class":221},"RichTextContent",[195,1505,224],{"class":209},[195,1507,1508,1510,1512,1514,1516,1518,1520,1522,1524],{"class":197,"line":234},[195,1509,202],{"class":201},[195,1511,206],{"class":205},[195,1513,210],{"class":209},[195,1515,5],{"class":205},[195,1517,210],{"class":209},[195,1519,98],{"class":205},[195,1521,210],{"class":209},[195,1523,1114],{"class":221},[195,1525,224],{"class":209},[195,1527,1528,1530,1532,1534,1536,1538,1540,1542,1545],{"class":197,"line":264},[195,1529,202],{"class":201},[195,1531,206],{"class":205},[195,1533,210],{"class":209},[195,1535,5],{"class":205},[195,1537,210],{"class":209},[195,1539,98],{"class":205},[195,1541,210],{"class":209},[195,1543,1544],{"class":221},"RichTextStoredImage",[195,1546,224],{"class":209},[195,1548,1549],{"class":197,"line":281},[195,1550,231],{"emptyLinePlaceholder":230},[195,1552,1553,1555,1558,1560,1563,1565,1567,1569,1571,1574,1576,1578],{"class":197,"line":292},[195,1554,1166],{"class":696},[195,1556,1557],{"class":205},"body ",[195,1559,412],{"class":240},[195,1561,1562],{"class":237}," RichTextContent",[195,1564,241],{"class":240},[195,1566,1225],{"class":244},[195,1568,248],{"class":209},[195,1570,1166],{"class":696},[195,1572,1573],{"class":205},"post",[195,1575,1179],{"class":240},[195,1577,805],{"class":205},[195,1579,261],{"class":209},[195,1581,1582,1584,1587,1589,1591],{"class":197,"line":324},[195,1583,267],{"class":240},[195,1585,1586],{"class":244},"replaceImagesUsing",[195,1588,248],{"class":209},[195,1590,524],{"class":466},[195,1592,1255],{"class":209},[195,1594,1595,1598,1600,1603],{"class":197,"line":345},[195,1596,1597],{"class":237},"        RichTextStoredImage",[195,1599,913],{"class":912},[195,1601,1602],{"class":916},"stored",[195,1604,1268],{"class":209},[195,1606,1607,1609,1611,1613],{"class":197,"line":573},[195,1608,1273],{"class":237},[195,1610,913],{"class":912},[195,1612,1278],{"class":916},[195,1614,1268],{"class":209},[195,1616,1617,1619,1621,1623],{"class":197,"line":578},[195,1618,1285],{"class":209},[195,1620,536],{"class":240},[195,1622,1290],{"class":237},[195,1624,545],{"class":209},[195,1626,1627,1629,1632,1634,1636,1638,1640,1642,1644,1646,1649,1651,1653,1655,1657,1659,1661,1663,1665],{"class":197,"line":602},[195,1628,1297],{"class":696},[195,1630,1631],{"class":205},"disk ",[195,1633,412],{"class":240},[195,1635,585],{"class":209},[195,1637,131],{"class":466},[195,1639,542],{"class":209},[195,1641,913],{"class":696},[195,1643,1602],{"class":205},[195,1645,1179],{"class":240},[195,1647,1648],{"class":244},"meta",[195,1650,248],{"class":209},[195,1652,252],{"class":251},[195,1654,1386],{"class":255},[195,1656,252],{"class":251},[195,1658,310],{"class":209},[195,1660,313],{"class":251},[195,1662,965],{"class":255},[195,1664,252],{"class":251},[195,1666,1196],{"class":209},[195,1668,1669,1671,1674,1676,1679,1681,1683,1685,1687,1689,1691,1693,1696],{"class":197,"line":626},[195,1670,1297],{"class":696},[195,1672,1673],{"class":205},"url ",[195,1675,412],{"class":240},[195,1677,1678],{"class":237}," Storage",[195,1680,241],{"class":240},[195,1682,1386],{"class":244},[195,1684,248],{"class":209},[195,1686,1166],{"class":696},[195,1688,1386],{"class":205},[195,1690,542],{"class":209},[195,1692,1179],{"class":240},[195,1694,1695],{"class":244},"temporaryUrl",[195,1697,900],{"class":209},[195,1699,1700,1703,1705,1707,1709],{"class":197,"line":632},[195,1701,1702],{"class":696},"            $",[195,1704,1602],{"class":205},[195,1706,1179],{"class":240},[195,1708,1369],{"class":244},[195,1710,1711],{"class":209},"(),\n",[195,1713,1714,1717,1720,1722,1725,1727,1729],{"class":197,"line":638},[195,1715,1716],{"class":244},"            now",[195,1718,1719],{"class":209},"()",[195,1721,1179],{"class":240},[195,1723,1724],{"class":244},"addMinutes",[195,1726,248],{"class":209},[195,1728,334],{"class":275},[195,1730,970],{"class":209},[195,1732,1733],{"class":197,"line":648},[195,1734,1351],{"class":209},[195,1736,1737],{"class":197,"line":653},[195,1738,231],{"emptyLinePlaceholder":230},[195,1740,1741,1743,1745,1747,1749,1751,1753,1755,1758],{"class":197,"line":663},[195,1742,1360],{"class":428},[195,1744,913],{"class":696},[195,1746,1278],{"class":205},[195,1748,1179],{"class":240},[195,1750,1432],{"class":244},[195,1752,248],{"class":209},[195,1754,1166],{"class":696},[195,1756,1757],{"class":205},"url",[195,1759,1196],{"class":209},[195,1761,1762],{"class":197,"line":702},[195,1763,1404],{"class":209},[195,1765,1766,1768,1770],{"class":197,"line":749},[195,1767,267],{"class":240},[195,1769,1421],{"class":244},[195,1771,353],{"class":209},[1773,1774,1775],"warning",{},"Rich-text helpers verify upload markers and rewrite image attributes, but they do not sanitize HTML. Apply your application's HTML allowlist before rendering untrusted content.",[1777,1778,1779],"style",{},"html pre.shiki code .scOca, html code.shiki .scOca{--shiki-light:#F76D47;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}html pre.shiki code .svMjs, html code.shiki .svMjs{--shiki-light:#90A4AE;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .sOG8g, html code.shiki .sOG8g{--shiki-light:#39ADB5;--shiki-default:#9399B2;--shiki-dark:#9399B2}html pre.shiki code .spKqO, html code.shiki .spKqO{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#F9E2AF;--shiki-default-font-style:italic;--shiki-dark:#F9E2AF;--shiki-dark-font-style:italic}html pre.shiki code .s6-7G, html code.shiki .s6-7G{--shiki-light:#E2931D;--shiki-light-font-style:inherit;--shiki-default:#F9E2AF;--shiki-default-font-style:italic;--shiki-dark:#F9E2AF;--shiki-dark-font-style:italic}html pre.shiki code .sWTNM, html code.shiki .sWTNM{--shiki-light:#39ADB5;--shiki-default:#94E2D5;--shiki-dark:#94E2D5}html pre.shiki code .sgeHj, html code.shiki .sgeHj{--shiki-light:#6182B8;--shiki-light-font-style:inherit;--shiki-default:#89B4FA;--shiki-default-font-style:italic;--shiki-dark:#89B4FA;--shiki-dark-font-style:italic}html pre.shiki code .sQGZM, html code.shiki .sQGZM{--shiki-light:#39ADB5;--shiki-default:#A6E3A1;--shiki-dark:#A6E3A1}html pre.shiki code .s2lAL, html code.shiki .s2lAL{--shiki-light:#91B859;--shiki-default:#A6E3A1;--shiki-dark:#A6E3A1}html pre.shiki code .sCOdc, html code.shiki .sCOdc{--shiki-light:#F76D47;--shiki-default:#FAB387;--shiki-dark:#FAB387}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 .sgRj0, html code.shiki .sgRj0{--shiki-light:#E53935;--shiki-default:#89B4FA;--shiki-dark:#89B4FA}html pre.shiki code .sGkbZ, html code.shiki .sGkbZ{--shiki-light:#9C3EDA;--shiki-default:#F9E2AF;--shiki-dark:#F9E2AF}html pre.shiki code .su_vF, html code.shiki .su_vF{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#CBA6F7;--shiki-default-font-style:inherit;--shiki-dark:#CBA6F7;--shiki-dark-font-style:inherit}html pre.shiki code .sNFzF, html code.shiki .sNFzF{--shiki-light:#9C3EDA;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}html pre.shiki code .sdlML, html code.shiki .sdlML{--shiki-light:#39ADB5;--shiki-default:#89DCEB;--shiki-dark:#89DCEB}html pre.shiki code .s12WM, html code.shiki .s12WM{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EBA0AC;--shiki-default-font-style:italic;--shiki-dark:#EBA0AC;--shiki-dark-font-style:italic}html pre.shiki code .sHTG8, html code.shiki .sHTG8{--shiki-light:#E53935;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .sxSEj, html code.shiki .sxSEj{--shiki-light:#39ADB5;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .sKlSU, html code.shiki .sKlSU{--shiki-light:#39ADB5;--shiki-default:#EBA0AC;--shiki-dark:#EBA0AC}html pre.shiki code .sVbGb, html code.shiki .sVbGb{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#EBA0AC;--shiki-default-font-style:italic;--shiki-dark:#EBA0AC;--shiki-dark-font-style:italic}html pre.shiki code .sRLcR, html code.shiki .sRLcR{--shiki-light:#E2931D;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .s27pR, html code.shiki .s27pR{--shiki-light:#39ADB5;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}",{"title":191,"searchDepth":227,"depth":227,"links":1781},[1782,1783,1784,1785],{"id":176,"depth":227,"text":177},{"id":788,"depth":227,"text":789},{"id":1078,"depth":227,"text":1079},{"id":1451,"depth":227,"text":1452},"Connect application-owned editors to structured attachments and tokenized rich-text images.","md",null,{},{"title":55,"description":1786},"whjInnrYuPrAD-4aEfIewuNYtoaEqYxzAPFk-b949VE",[1793,1795],{"title":51,"path":52,"stem":53,"description":1794,"children":-1},"Configure native, temporary, chunked, and direct uploads without surrendering control of the UI.",{"title":64,"path":65,"stem":61,"description":1796,"children":-1},"Public field classes, shared fluent methods, value shapes, conditions, and extension points.",1786995560669]