[{"data":1,"prerenderedAt":1224},["ShallowReactive",2],{"navigation_docs_id":3,"-id-how-to-use-react":173,"-id-how-to-use-react-surround":1219},[4,30,109,153],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fid\u002Fgetting-started","id\u002F01.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Pengenalan","\u002Fid\u002Fgetting-started\u002Fintroduction","id\u002F01.getting-started\u002F1.introduction","i-ph-rocket",{"title":15,"path":16,"stem":17,"icon":18},"Instalasi","\u002Fid\u002Fgetting-started\u002Finstallation","id\u002F01.getting-started\u002F2.installation","i-ph-download",{"title":20,"path":21,"stem":22,"icon":23},"Panduan Cepat","\u002Fid\u002Fgetting-started\u002Fquick-start","id\u002F01.getting-started\u002F3.quick-start","i-ph-play",{"title":25,"path":26,"stem":27,"icon":28},"Demo Langsung","\u002Fid\u002Fgetting-started\u002Flive-demo","id\u002F01.getting-started\u002F4.live-demo","i-ph-sparkle",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"How To","\u002Fid\u002Fhow-to","id\u002F02.how-to",[35,40,45,50,55,60,65,70,75,79,84,89,94,99,104],{"title":36,"path":37,"stem":38,"icon":39},"Menggunakan Rust","\u002Fid\u002Fhow-to\u002Fuse-rust","id\u002F02.how-to\u002F00.use-rust","simple-icons-rust",{"title":41,"path":42,"stem":43,"icon":44},"Menggunakan .NET \u002F C#","\u002Fid\u002Fhow-to\u002Fuse-csharp","id\u002F02.how-to\u002F01.use-csharp","simple-icons-dotnet",{"title":46,"path":47,"stem":48,"icon":49},"Menggunakan React Native","\u002Fid\u002Fhow-to\u002Fuse-react-native","id\u002F02.how-to\u002F02.use-react-native","simple-icons-react",{"title":51,"path":52,"stem":53,"icon":54},"Menggunakan iOS (Swift)","\u002Fid\u002Fhow-to\u002Fuse-ios-swift","id\u002F02.how-to\u002F03.use-ios-swift","simple-icons-apple",{"title":56,"path":57,"stem":58,"icon":59},"Menggunakan Android (Kotlin)","\u002Fid\u002Fhow-to\u002Fuse-android-kotlin","id\u002F02.how-to\u002F04.use-android-kotlin","simple-icons-android",{"title":61,"path":62,"stem":63,"icon":64},"Menggunakan C FFI","\u002Fid\u002Fhow-to\u002Fuse-c-ffi","id\u002F02.how-to\u002F05.use-c-ffi","simple-icons-c",{"title":66,"path":67,"stem":68,"icon":69},"Menggunakan CLI","\u002Fid\u002Fhow-to\u002Fuse-cli","id\u002F02.how-to\u002F06.use-cli","simple-icons-gnubash",{"title":71,"path":72,"stem":73,"icon":74},"Menggunakan Web","\u002Fid\u002Fhow-to\u002Fuse-web","id\u002F02.how-to\u002F07.use-web","simple-icons-javascript",{"title":76,"path":77,"stem":78,"icon":49},"Menggunakan React","\u002Fid\u002Fhow-to\u002Fuse-react","id\u002F02.how-to\u002F08.use-react",{"title":80,"path":81,"stem":82,"icon":83},"Menggunakan Node.js","\u002Fid\u002Fhow-to\u002Fuse-node","id\u002F02.how-to\u002F09.use-node","simple-icons-nodedotjs",{"title":85,"path":86,"stem":87,"icon":88},"Menggunakan Python","\u002Fid\u002Fhow-to\u002Fuse-python","id\u002F02.how-to\u002F10.use-python","simple-icons-python",{"title":90,"path":91,"stem":92,"icon":93},"Menggunakan Golang","\u002Fid\u002Fhow-to\u002Fuse-golang","id\u002F02.how-to\u002F11.use-golang","simple-icons-go",{"title":95,"path":96,"stem":97,"icon":98},"Menggunakan Java & JVM","\u002Fid\u002Fhow-to\u002Fuse-java","id\u002F02.how-to\u002F12.use-java","simple-icons-openjdk",{"title":100,"path":101,"stem":102,"icon":103},"Menggunakan Flutter & Dart","\u002Fid\u002Fhow-to\u002Fuse-flutter","id\u002F02.how-to\u002F13.use-flutter","simple-icons-flutter",{"title":105,"path":106,"stem":107,"icon":108},"Menggunakan Input RGB Terdekode","\u002Fid\u002Fhow-to\u002Fuse-decoded-rgb","id\u002F02.how-to\u002F14.use-decoded-rgb","lucide-image",{"title":110,"path":111,"stem":112,"children":113,"page":29},"Advance Guide","\u002Fid\u002Fadvance-guide","id\u002F03.advance-guide",[114,119,124,129,134,139,144,149],{"title":115,"path":116,"stem":117,"icon":118},"Model & Tingkatan (Tiers)","\u002Fid\u002Fadvance-guide\u002Fmodels-and-tiers","id\u002F03.advance-guide\u002F01.models-and-tiers","i-ph-cube",{"title":120,"path":121,"stem":122,"icon":123},"OCR Multibahasa","\u002Fid\u002Fadvance-guide\u002Fmultilingual-ocr","id\u002F03.advance-guide\u002F02.multilingual-ocr","i-ph-translate",{"title":125,"path":126,"stem":127,"icon":128},"Rekonstruksi Tata Letak Spasial","\u002Fid\u002Fadvance-guide\u002Fspatial-layout-reconstruction","id\u002F03.advance-guide\u002F03.spatial-layout-reconstruction","i-ph-layout",{"title":130,"path":131,"stem":132,"icon":133},"Pra-pemrosesan & Tuning Gambar","\u002Fid\u002Fadvance-guide\u002Fimage-preprocessing-and-tuning","id\u002F03.advance-guide\u002F04.image-preprocessing-and-tuning","i-ph-sliders",{"title":135,"path":136,"stem":137,"icon":138},"Klasifikasi & Orientasi","\u002Fid\u002Fadvance-guide\u002Fclassification-and-orientation","id\u002F03.advance-guide\u002F05.classification-and-orientation","i-ph-arrows-clockwise",{"title":140,"path":141,"stem":142,"icon":143},"Performa & Tolok Ukur (Benchmarks)","\u002Fid\u002Fadvance-guide\u002Fperformance-and-benchmarks","id\u002F03.advance-guide\u002F06.performance-and-benchmarks","i-ph-chart-line-up",{"title":145,"path":146,"stem":147,"icon":148},"Pemecahan Masalah (Troubleshooting)","\u002Fid\u002Fadvance-guide\u002Ftroubleshooting","id\u002F03.advance-guide\u002F07.troubleshooting","i-ph-wrench",{"title":150,"path":151,"stem":152,"icon":138},"v0.2 ke v0.3","\u002Fid\u002Fadvance-guide\u002Fmigration-guide","id\u002F03.advance-guide\u002F08.migration-guide",{"title":154,"path":155,"stem":156,"children":157,"page":29},"Api Reference","\u002Fid\u002Fapi-reference","id\u002F04.api-reference",[158,163,168],{"title":159,"path":160,"stem":161,"icon":162},"InitializeConfig","\u002Fid\u002Fapi-reference\u002Finitialize-config","id\u002F04.api-reference\u002F01.initialize-config","i-ph-code-block",{"title":164,"path":165,"stem":166,"icon":167},"OcrRunOptions","\u002Fid\u002Fapi-reference\u002Focr-run-options","id\u002F04.api-reference\u002F02.ocr-run-options","i-ph-faders",{"title":169,"path":170,"stem":171,"icon":172},"TextResult & Mode Keluaran","\u002Fid\u002Fapi-reference\u002Ftext-result-and-output","id\u002F04.api-reference\u002F03.text-result-and-output","i-ph-textbox",{"id":174,"title":76,"body":175,"description":1211,"extension":1212,"links":1213,"meta":1214,"navigation":1215,"path":77,"seo":1216,"stem":78,"__hash__":1218},"docs_id\u002Fid\u002F02.how-to\u002F08.use-react.md",{"type":176,"value":177,"toc":1204},"minimark",[178,182,206,210,282,286,298,652,662,1122,1126,1132,1164,1200],[179,180,76],"h1",{"id":181},"menggunakan-react",[183,184,185,186,190,191,194,195,194,198,201,202,205],"p",{},"Paket ",[187,188,189],"code",{},"@rustors\u002Freact"," menyediakan komponen deklaratif untuk React: ",[187,192,193],{},"\u003CRustoProvider \u002F>",", ",[187,196,197],{},"useOcr()",[187,199,200],{},"\u003COcrOverlay \u002F>",", dan ",[187,203,204],{},"\u003COcrDropzone \u002F>",".",[207,208,15],"h2",{"id":209},"instalasi",[211,212,217],"pre",{"className":213,"code":214,"language":215,"meta":216,"style":216},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark monokai","npm install @rustors\u002Freact @rustors\u002Fweb @rustors\u002Fmodel-ppocrv6-tiny\n# atau\nyarn add @rustors\u002Freact @rustors\u002Fweb @rustors\u002Fmodel-ppocrv6-tiny\n# atau\npnpm add @rustors\u002Freact @rustors\u002Fweb @rustors\u002Fmodel-ppocrv6-tiny\n","bash","",[187,218,219,241,248,263,268],{"__ignoreMap":216},[220,221,224,228,232,235,238],"span",{"class":222,"line":223},"line",1,[220,225,227],{"class":226},"sR7ES","npm",[220,229,231],{"class":230},"sLACW"," install",[220,233,234],{"class":230}," @rustors\u002Freact",[220,236,237],{"class":230}," @rustors\u002Fweb",[220,239,240],{"class":230}," @rustors\u002Fmodel-ppocrv6-tiny\n",[220,242,244],{"class":222,"line":243},2,[220,245,247],{"class":246},"ss7Ak","# atau\n",[220,249,251,254,257,259,261],{"class":222,"line":250},3,[220,252,253],{"class":226},"yarn",[220,255,256],{"class":230}," add",[220,258,234],{"class":230},[220,260,237],{"class":230},[220,262,240],{"class":230},[220,264,266],{"class":222,"line":265},4,[220,267,247],{"class":246},[220,269,271,274,276,278,280],{"class":222,"line":270},5,[220,272,273],{"class":226},"pnpm",[220,275,256],{"class":230},[220,277,234],{"class":230},[220,279,237],{"class":230},[220,281,240],{"class":230},[207,283,285],{"id":284},"konfigurasi-provider","Konfigurasi Provider",[183,287,288,289,292,293,297],{},"Bungkus aplikasi Anda dengan ",[187,290,291],{},"RustoProvider"," untuk mengelola daur hidup engine dan konfigurasi model. Anda dapat memuat model dari aset lokal publik atau langsung dari ",[294,295,296],"strong",{},"CDN jsDelivr",":",[211,299,303],{"className":300,"code":301,"language":302,"meta":216,"style":216},"language-tsx shiki shiki-themes material-theme-lighter github-light github-dark monokai","import React from 'react';\nimport { RustoProvider } from '@rustors\u002Freact';\nimport { getModelUrls } from '@rustors\u002Fmodel-ppocrv6-tiny';\n\n\u002F\u002F Opsi A: Aset lokal di folder public\u002F\n\u002F\u002F const modelUrls = getModelUrls('\u002Fmodels\u002Fppocrv6-tiny');\n\n\u002F\u002F Opsi B: Dihosting langsung via CDN jsDelivr (tanpa perlu bundling aset lokal)\nconst modelUrls = getModelUrls('https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@rustors\u002Fmodel-ppocrv6-tiny');\n\nexport function App() {\n  return (\n    \u003CRustoProvider\n      config={{\n        preset: 'ppv6',\n        wasmUrl: 'https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@rustors\u002Fweb\u002Fdist\u002Fwasm\u002Frusto_rten_wasm_bg.wasm',\n        models: {\n          detection: modelUrls.detection,\n          recognition: modelUrls.recognition,\n          dictionary: modelUrls.dictionary,\n        },\n      }}\n    >\n      \u003COcrScanner \u002F>\n    \u003C\u002FRustoProvider>\n  );\n}\n","tsx",[187,304,305,332,356,378,384,389,395,400,406,439,444,462,472,482,499,517,534,544,561,578,595,601,610,616,628,639,647],{"__ignoreMap":216},[220,306,307,311,315,318,322,325,328],{"class":222,"line":223},[220,308,310],{"class":309},"sRxSC","import",[220,312,314],{"class":313},"ss--_"," React ",[220,316,317],{"class":309},"from",[220,319,321],{"class":320},"siCPE"," '",[220,323,324],{"class":230},"react",[220,326,327],{"class":320},"'",[220,329,331],{"class":330},"swvn1",";\n",[220,333,334,336,339,342,345,348,350,352,354],{"class":222,"line":243},[220,335,310],{"class":309},[220,337,338],{"class":330}," {",[220,340,341],{"class":313}," RustoProvider",[220,343,344],{"class":330}," }",[220,346,347],{"class":309}," from",[220,349,321],{"class":320},[220,351,189],{"class":230},[220,353,327],{"class":320},[220,355,331],{"class":330},[220,357,358,360,362,365,367,369,371,374,376],{"class":222,"line":250},[220,359,310],{"class":309},[220,361,338],{"class":330},[220,363,364],{"class":313}," getModelUrls",[220,366,344],{"class":330},[220,368,347],{"class":309},[220,370,321],{"class":320},[220,372,373],{"class":230},"@rustors\u002Fmodel-ppocrv6-tiny",[220,375,327],{"class":320},[220,377,331],{"class":330},[220,379,380],{"class":222,"line":265},[220,381,383],{"emptyLinePlaceholder":382},true,"\n",[220,385,386],{"class":222,"line":270},[220,387,388],{"class":246},"\u002F\u002F Opsi A: Aset lokal di folder public\u002F\n",[220,390,392],{"class":222,"line":391},6,[220,393,394],{"class":246},"\u002F\u002F const modelUrls = getModelUrls('\u002Fmodels\u002Fppocrv6-tiny');\n",[220,396,398],{"class":222,"line":397},7,[220,399,383],{"emptyLinePlaceholder":382},[220,401,403],{"class":222,"line":402},8,[220,404,405],{"class":246},"\u002F\u002F Opsi B: Dihosting langsung via CDN jsDelivr (tanpa perlu bundling aset lokal)\n",[220,407,409,413,417,421,424,427,429,432,434,437],{"class":222,"line":408},9,[220,410,412],{"class":411},"srJo8","const",[220,414,416],{"class":415},"s91G_"," modelUrls",[220,418,420],{"class":419},"sGXK2"," =",[220,422,364],{"class":423},"sD0ED",[220,425,426],{"class":313},"(",[220,428,327],{"class":320},[220,430,431],{"class":230},"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@rustors\u002Fmodel-ppocrv6-tiny",[220,433,327],{"class":320},[220,435,436],{"class":313},")",[220,438,331],{"class":330},[220,440,442],{"class":222,"line":441},10,[220,443,383],{"emptyLinePlaceholder":382},[220,445,447,450,453,456,459],{"class":222,"line":446},11,[220,448,449],{"class":309},"export",[220,451,452],{"class":411}," function",[220,454,455],{"class":423}," App",[220,457,458],{"class":330},"()",[220,460,461],{"class":330}," {\n",[220,463,465,468],{"class":222,"line":464},12,[220,466,467],{"class":309},"  return",[220,469,471],{"class":470},"squCx"," (\n",[220,473,475,478],{"class":222,"line":474},13,[220,476,477],{"class":330},"    \u003C",[220,479,481],{"class":480},"s_MOj","RustoProvider\n",[220,483,485,489,492,496],{"class":222,"line":484},14,[220,486,488],{"class":487},"s_lYk","      config",[220,490,491],{"class":419},"=",[220,493,495],{"class":494},"sW3yT","{",[220,497,498],{"class":330},"{\n",[220,500,502,505,507,509,512,514],{"class":222,"line":501},15,[220,503,504],{"class":470},"        preset",[220,506,297],{"class":330},[220,508,321],{"class":320},[220,510,511],{"class":230},"ppv6",[220,513,327],{"class":320},[220,515,516],{"class":330},",\n",[220,518,520,523,525,527,530,532],{"class":222,"line":519},16,[220,521,522],{"class":470},"        wasmUrl",[220,524,297],{"class":330},[220,526,321],{"class":320},[220,528,529],{"class":230},"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002F@rustors\u002Fweb\u002Fdist\u002Fwasm\u002Frusto_rten_wasm_bg.wasm",[220,531,327],{"class":320},[220,533,516],{"class":330},[220,535,537,540,542],{"class":222,"line":536},17,[220,538,539],{"class":470},"        models",[220,541,297],{"class":330},[220,543,461],{"class":330},[220,545,547,550,552,554,556,559],{"class":222,"line":546},18,[220,548,549],{"class":470},"          detection",[220,551,297],{"class":330},[220,553,416],{"class":313},[220,555,205],{"class":330},[220,557,558],{"class":313},"detection",[220,560,516],{"class":330},[220,562,564,567,569,571,573,576],{"class":222,"line":563},19,[220,565,566],{"class":470},"          recognition",[220,568,297],{"class":330},[220,570,416],{"class":313},[220,572,205],{"class":330},[220,574,575],{"class":313},"recognition",[220,577,516],{"class":330},[220,579,581,584,586,588,590,593],{"class":222,"line":580},20,[220,582,583],{"class":470},"          dictionary",[220,585,297],{"class":330},[220,587,416],{"class":313},[220,589,205],{"class":330},[220,591,592],{"class":313},"dictionary",[220,594,516],{"class":330},[220,596,598],{"class":222,"line":597},21,[220,599,600],{"class":330},"        },\n",[220,602,604,607],{"class":222,"line":603},22,[220,605,606],{"class":330},"      }",[220,608,609],{"class":494},"}\n",[220,611,613],{"class":222,"line":612},23,[220,614,615],{"class":330},"    >\n",[220,617,619,622,625],{"class":222,"line":618},24,[220,620,621],{"class":330},"      \u003C",[220,623,624],{"class":480},"OcrScanner",[220,626,627],{"class":330}," \u002F>\n",[220,629,631,634,636],{"class":222,"line":630},25,[220,632,633],{"class":330},"    \u003C\u002F",[220,635,291],{"class":480},[220,637,638],{"class":330},">\n",[220,640,642,645],{"class":222,"line":641},26,[220,643,644],{"class":470},"  )",[220,646,331],{"class":330},[220,648,650],{"class":222,"line":649},27,[220,651,609],{"class":330},[207,653,655,656,659,660],{"id":654},"memindai-dengan-useocr-dan-ocroverlay","Memindai dengan ",[187,657,658],{},"useOcr"," dan ",[187,661,200],{},[211,663,665],{"className":300,"code":664,"language":302,"meta":216,"style":216},"import React, { useState } from 'react';\nimport { useOcr, OcrOverlay, OcrDropzone } from '@rustors\u002Freact';\n\nexport function OcrScanner() {\n  const [imageSrc, setImageSrc] = useState\u003Cstring | null>(null);\n  const { detect, results, isProcessing } = useOcr();\n\n  const handleFileSelect = async (file: File) => {\n    setImageSrc(URL.createObjectURL(file));\n    await detect(file);\n  };\n\n  return (\n    \u003Cdiv>\n      \u003COcrDropzone onFileSelect={handleFileSelect} \u002F>\n\n      {isProcessing && \u003Cp>Memindai dokumen...\u003C\u002Fp>}\n\n      {imageSrc && results.length > 0 && (\n        \u003COcrOverlay\n          imageSrc={imageSrc}\n          results={results}\n          onItemClick={(item) => console.log('Kotak diklik:', item.text)}\n        \u002F>\n      )}\n    \u003C\u002Fdiv>\n  );\n}\n",[187,666,667,694,725,729,742,790,819,823,857,881,896,901,905,911,921,943,947,977,981,1009,1017,1030,1044,1091,1096,1103,1111,1117],{"__ignoreMap":216},[220,668,669,671,674,677,679,682,684,686,688,690,692],{"class":222,"line":223},[220,670,310],{"class":309},[220,672,673],{"class":313}," React",[220,675,676],{"class":330},",",[220,678,338],{"class":330},[220,680,681],{"class":313}," useState",[220,683,344],{"class":330},[220,685,347],{"class":309},[220,687,321],{"class":320},[220,689,324],{"class":230},[220,691,327],{"class":320},[220,693,331],{"class":330},[220,695,696,698,700,703,705,708,710,713,715,717,719,721,723],{"class":222,"line":243},[220,697,310],{"class":309},[220,699,338],{"class":330},[220,701,702],{"class":313}," useOcr",[220,704,676],{"class":330},[220,706,707],{"class":313}," OcrOverlay",[220,709,676],{"class":330},[220,711,712],{"class":313}," OcrDropzone",[220,714,344],{"class":330},[220,716,347],{"class":309},[220,718,321],{"class":320},[220,720,189],{"class":230},[220,722,327],{"class":320},[220,724,331],{"class":330},[220,726,727],{"class":222,"line":250},[220,728,383],{"emptyLinePlaceholder":382},[220,730,731,733,735,738,740],{"class":222,"line":265},[220,732,449],{"class":309},[220,734,452],{"class":411},[220,736,737],{"class":423}," OcrScanner",[220,739,458],{"class":330},[220,741,461],{"class":330},[220,743,744,747,750,753,755,758,761,763,765,768,771,774,777,780,782,786,788],{"class":222,"line":270},[220,745,746],{"class":411},"  const",[220,748,749],{"class":330}," [",[220,751,752],{"class":415},"imageSrc",[220,754,676],{"class":330},[220,756,757],{"class":415}," setImageSrc",[220,759,760],{"class":330},"]",[220,762,420],{"class":419},[220,764,681],{"class":423},[220,766,767],{"class":330},"\u003C",[220,769,770],{"class":480},"string",[220,772,773],{"class":419}," |",[220,775,776],{"class":480}," null",[220,778,779],{"class":330},">",[220,781,426],{"class":470},[220,783,785],{"class":784},"sMTiH","null",[220,787,436],{"class":470},[220,789,331],{"class":330},[220,791,792,794,796,799,801,804,806,809,811,813,815,817],{"class":222,"line":391},[220,793,746],{"class":411},[220,795,338],{"class":330},[220,797,798],{"class":415}," detect",[220,800,676],{"class":330},[220,802,803],{"class":415}," results",[220,805,676],{"class":330},[220,807,808],{"class":415}," isProcessing",[220,810,344],{"class":330},[220,812,420],{"class":419},[220,814,702],{"class":423},[220,816,458],{"class":470},[220,818,331],{"class":330},[220,820,821],{"class":222,"line":397},[220,822,383],{"emptyLinePlaceholder":382},[220,824,825,827,831,833,837,840,844,846,850,852,855],{"class":222,"line":402},[220,826,746],{"class":411},[220,828,830],{"class":829},"sh7YU"," handleFileSelect",[220,832,420],{"class":419},[220,834,836],{"class":835},"sTNss"," async",[220,838,839],{"class":330}," (",[220,841,843],{"class":842},"sQgqH","file",[220,845,297],{"class":419},[220,847,849],{"class":848},"sKvfc"," File",[220,851,436],{"class":330},[220,853,854],{"class":411}," =>",[220,856,461],{"class":330},[220,858,859,862,864,867,869,872,874,876,879],{"class":222,"line":408},[220,860,861],{"class":423},"    setImageSrc",[220,863,426],{"class":470},[220,865,866],{"class":415},"URL",[220,868,205],{"class":330},[220,870,871],{"class":423},"createObjectURL",[220,873,426],{"class":470},[220,875,843],{"class":313},[220,877,878],{"class":470},"))",[220,880,331],{"class":330},[220,882,883,886,888,890,892,894],{"class":222,"line":441},[220,884,885],{"class":309},"    await",[220,887,798],{"class":423},[220,889,426],{"class":470},[220,891,843],{"class":313},[220,893,436],{"class":470},[220,895,331],{"class":330},[220,897,898],{"class":222,"line":446},[220,899,900],{"class":330},"  };\n",[220,902,903],{"class":222,"line":464},[220,904,383],{"emptyLinePlaceholder":382},[220,906,907,909],{"class":222,"line":474},[220,908,467],{"class":309},[220,910,471],{"class":470},[220,912,913,915,919],{"class":222,"line":484},[220,914,477],{"class":330},[220,916,918],{"class":917},"sHsBP","div",[220,920,638],{"class":330},[220,922,923,925,928,931,933,935,938,941],{"class":222,"line":501},[220,924,621],{"class":330},[220,926,927],{"class":480},"OcrDropzone",[220,929,930],{"class":487}," onFileSelect",[220,932,491],{"class":419},[220,934,495],{"class":494},[220,936,937],{"class":313},"handleFileSelect",[220,939,940],{"class":494},"}",[220,942,627],{"class":330},[220,944,945],{"class":222,"line":519},[220,946,383],{"emptyLinePlaceholder":382},[220,948,949,952,955,958,961,963,965,968,971,973,975],{"class":222,"line":536},[220,950,951],{"class":494},"      {",[220,953,954],{"class":313},"isProcessing ",[220,956,957],{"class":419},"&&",[220,959,960],{"class":330}," \u003C",[220,962,183],{"class":917},[220,964,779],{"class":330},[220,966,967],{"class":313},"Memindai dokumen...",[220,969,970],{"class":330},"\u003C\u002F",[220,972,183],{"class":917},[220,974,779],{"class":330},[220,976,609],{"class":494},[220,978,979],{"class":222,"line":546},[220,980,383],{"emptyLinePlaceholder":382},[220,982,983,985,988,990,992,994,997,1000,1004,1007],{"class":222,"line":563},[220,984,951],{"class":494},[220,986,987],{"class":313},"imageSrc ",[220,989,957],{"class":419},[220,991,803],{"class":313},[220,993,205],{"class":330},[220,995,996],{"class":415},"length",[220,998,999],{"class":419}," >",[220,1001,1003],{"class":1002},"sYThS"," 0",[220,1005,1006],{"class":419}," &&",[220,1008,471],{"class":313},[220,1010,1011,1014],{"class":222,"line":580},[220,1012,1013],{"class":330},"        \u003C",[220,1015,1016],{"class":480},"OcrOverlay\n",[220,1018,1019,1022,1024,1026,1028],{"class":222,"line":597},[220,1020,1021],{"class":487},"          imageSrc",[220,1023,491],{"class":419},[220,1025,495],{"class":494},[220,1027,752],{"class":313},[220,1029,609],{"class":494},[220,1031,1032,1035,1037,1039,1042],{"class":222,"line":603},[220,1033,1034],{"class":487},"          results",[220,1036,491],{"class":419},[220,1038,495],{"class":494},[220,1040,1041],{"class":313},"results",[220,1043,609],{"class":494},[220,1045,1046,1049,1051,1053,1055,1058,1060,1062,1065,1067,1070,1072,1074,1077,1079,1081,1084,1086,1089],{"class":222,"line":612},[220,1047,1048],{"class":487},"          onItemClick",[220,1050,491],{"class":419},[220,1052,495],{"class":494},[220,1054,426],{"class":330},[220,1056,1057],{"class":842},"item",[220,1059,436],{"class":330},[220,1061,854],{"class":411},[220,1063,1064],{"class":313}," console",[220,1066,205],{"class":330},[220,1068,1069],{"class":423},"log",[220,1071,426],{"class":313},[220,1073,327],{"class":320},[220,1075,1076],{"class":230},"Kotak diklik:",[220,1078,327],{"class":320},[220,1080,676],{"class":330},[220,1082,1083],{"class":313}," item",[220,1085,205],{"class":330},[220,1087,1088],{"class":313},"text)",[220,1090,609],{"class":494},[220,1092,1093],{"class":222,"line":618},[220,1094,1095],{"class":330},"        \u002F>\n",[220,1097,1098,1101],{"class":222,"line":630},[220,1099,1100],{"class":313},"      )",[220,1102,609],{"class":494},[220,1104,1105,1107,1109],{"class":222,"line":641},[220,1106,633],{"class":330},[220,1108,918],{"class":917},[220,1110,638],{"class":330},[220,1112,1113,1115],{"class":222,"line":649},[220,1114,644],{"class":470},[220,1116,331],{"class":330},[220,1118,1120],{"class":222,"line":1119},28,[220,1121,609],{"class":330},[207,1123,1125],{"id":1124},"pemecahan-masalah-kebijakan-keamanan-konten-csp","Pemecahan Masalah Kebijakan Keamanan Konten (CSP)",[183,1127,1128,1129,1131],{},"Saat mengintegrasikan ",[187,1130,189],{}," pada aplikasi React, Vite, Next.js, atau Remix dengan aturan CSP yang ketat:",[211,1133,1137],{"className":1134,"code":1135,"language":1136,"meta":216,"style":216},"language-http shiki shiki-themes material-theme-lighter github-light github-dark monokai","Content-Security-Policy:\n  script-src 'self' 'wasm-unsafe-eval' https:\u002F\u002Fcdn.jsdelivr.net;\n  connect-src 'self' https:\u002F\u002Fcdn.jsdelivr.net blob:;\n  worker-src 'self' blob:;\n  img-src 'self' data: blob:;\n","http",[187,1138,1139,1144,1149,1154,1159],{"__ignoreMap":216},[220,1140,1141],{"class":222,"line":223},[220,1142,1143],{},"Content-Security-Policy:\n",[220,1145,1146],{"class":222,"line":243},[220,1147,1148],{},"  script-src 'self' 'wasm-unsafe-eval' https:\u002F\u002Fcdn.jsdelivr.net;\n",[220,1150,1151],{"class":222,"line":250},[220,1152,1153],{},"  connect-src 'self' https:\u002F\u002Fcdn.jsdelivr.net blob:;\n",[220,1155,1156],{"class":222,"line":265},[220,1157,1158],{},"  worker-src 'self' blob:;\n",[220,1160,1161],{"class":222,"line":270},[220,1162,1163],{},"  img-src 'self' data: blob:;\n",[1165,1166,1167,1182,1191],"ul",{},[1168,1169,1170,1171,1174,1175,1178,1179,205],"li",{},"Jika muncul ",[187,1172,1173],{},"EvalError: Refused to compile or instantiate WebAssembly module",", tambahkan ",[187,1176,1177],{},"'wasm-unsafe-eval'"," pada ",[187,1180,1181],{},"script-src",[1168,1183,1184,1185,1178,1188,205],{},"Jika berkas model gagal diunduh dari jsDelivr, tambahkan ",[187,1186,1187],{},"https:\u002F\u002Fcdn.jsdelivr.net",[187,1189,1190],{},"connect-src",[1168,1192,1193,1194,1174,1197,205],{},"Jika pembuatan Web Worker gagal dengan ",[187,1195,1196],{},"SecurityError",[187,1198,1199],{},"worker-src 'self' blob:",[1201,1202,1203],"style",{},"html pre.shiki code .sR7ES, html code.shiki .sR7ES{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .sLACW, html code.shiki .sLACW{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .ss7Ak, html code.shiki .ss7Ak{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit;--shiki-sepia:#88846F;--shiki-sepia-font-style:inherit}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 .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html pre.shiki code .sRxSC, html code.shiki .sRxSC{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#F92672;--shiki-sepia-font-style:inherit}html pre.shiki code .ss--_, html code.shiki .ss--_{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .siCPE, html code.shiki .siCPE{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .swvn1, html code.shiki .swvn1{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .srJo8, html code.shiki .srJo8{--shiki-light:#9C3EDA;--shiki-light-font-style:inherit;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .s91G_, html code.shiki .s91G_{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#F8F8F2}html pre.shiki code .sGXK2, html code.shiki .sGXK2{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sD0ED, html code.shiki .sD0ED{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .squCx, html code.shiki .squCx{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .s_MOj, html code.shiki .s_MOj{--shiki-light:#E2931D;--shiki-light-font-style:inherit;--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .s_lYk, html code.shiki .s_lYk{--shiki-light:#9C3EDA;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .sW3yT, html code.shiki .sW3yT{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F92672}html pre.shiki code .sMTiH, html code.shiki .sMTiH{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}html pre.shiki code .sh7YU, html code.shiki .sh7YU{--shiki-light:#90A4AE;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .sTNss, html code.shiki .sTNss{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sQgqH, html code.shiki .sQgqH{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit;--shiki-sepia:#FD971F;--shiki-sepia-font-style:italic}html pre.shiki code .sKvfc, html code.shiki .sKvfc{--shiki-light:#E2931D;--shiki-light-text-decoration:inherit;--shiki-default:#6F42C1;--shiki-default-text-decoration:inherit;--shiki-dark:#B392F0;--shiki-dark-text-decoration:inherit;--shiki-sepia:#A6E22E;--shiki-sepia-text-decoration:underline}html pre.shiki code .sHsBP, html code.shiki .sHsBP{--shiki-light:#E53935;--shiki-default:#22863A;--shiki-dark:#85E89D;--shiki-sepia:#F92672}html pre.shiki code .sYThS, html code.shiki .sYThS{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}",{"title":216,"searchDepth":243,"depth":243,"links":1205},[1206,1207,1208,1210],{"id":209,"depth":243,"text":15},{"id":284,"depth":243,"text":285},{"id":654,"depth":243,"text":1209},"Memindai dengan useOcr dan \u003COcrOverlay \u002F>",{"id":1124,"depth":243,"text":1125},"Integrasi @rustors\u002Freact hooks, provider, dan komponen overlay.","md",null,{},{"icon":49},{"title":1217,"description":1211},"Menggunakan React - RustO!","bJTlY65TaWLuhghSvAOw_kg5M9mTZmh5KsVmnZc4YNY",[1220,1222],{"title":71,"path":72,"stem":73,"description":1221,"icon":74,"children":-1},"Integrasi @rustors\u002Fweb pada aplikasi peramban web sisi klien.",{"title":80,"path":81,"stem":82,"description":1223,"icon":83,"children":-1},"Menggunakan native addon N-API RustO! pada aplikasi server dan desktop Node.js.",1792905890314]