[{"data":1,"prerenderedAt":1183},["ShallowReactive",2],{"page-\u002Futils\u002Fguides\u002Fformatting":3,"navigation":805},{"collection":4,"page":5},"docs_en",{"id":6,"title":7,"body":8,"description":797,"extension":798,"meta":799,"navigation":86,"path":800,"rawbody":801,"seo":802,"stem":803,"__hash__":804},"docs_en\u002Futils\u002F2.guides\u002F8.formatting.md","Formatting",{"type":9,"value":10,"toc":790},"minimark",[11,20,25,36,203,250,254,267,474,489,505,509,631,644,648,736,747,751,786],[12,13,14,15,19],"p",{},"These helpers turn stored values into text for screens, PDFs and tables. They are framework-free and are shared by the welldot.org editor and ",[16,17,18],"code",{},"@welldot\u002Fpdf",". Anything that needs translated words takes them as plain strings, so you keep your own message catalog.",[21,22,24],"h2",{"id":23},"numbers","Numbers",[12,26,27,28,31,32,35],{},"Floating-point arithmetic produces values like ",[16,29,30],{},"39.99998784",". ",[16,33,34],{},"formatNumber"," bounds the decimals so that noise never reaches the reader:",[37,38,43],"pre",{"className":39,"code":40,"language":41,"meta":42,"style":42},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { formatNumber } from '@welldot\u002Futils';\n\nformatNumber(39.99998784, { fractionDigits: 2, suffix: 'm' }); \u002F\u002F '40.00 m'\nformatNumber(1234.5, { locale: 'pt-BR', maximumFractionDigits: 1 }); \u002F\u002F '1.234,5'\nformatNumber(undefined); \u002F\u002F '—'\n","ts","",[16,44,45,81,88,141,186],{"__ignoreMap":42},[46,47,50,54,58,62,65,68,71,75,78],"span",{"class":48,"line":49},"line",1,[46,51,53],{"class":52},"s7zQu","import",[46,55,57],{"class":56},"sMK4o"," {",[46,59,61],{"class":60},"sTEyZ"," formatNumber",[46,63,64],{"class":56}," }",[46,66,67],{"class":52}," from",[46,69,70],{"class":56}," '",[46,72,74],{"class":73},"sfazB","@welldot\u002Futils",[46,76,77],{"class":56},"'",[46,79,80],{"class":56},";\n",[46,82,84],{"class":48,"line":83},2,[46,85,87],{"emptyLinePlaceholder":86},true,"\n",[46,89,91,94,97,100,103,105,109,112,115,117,120,122,124,127,129,131,134,137],{"class":48,"line":90},3,[46,92,34],{"class":93},"s2Zo4",[46,95,96],{"class":60},"(",[46,98,30],{"class":99},"sbssI",[46,101,102],{"class":56},",",[46,104,57],{"class":56},[46,106,108],{"class":107},"swJcz"," fractionDigits",[46,110,111],{"class":56},":",[46,113,114],{"class":99}," 2",[46,116,102],{"class":56},[46,118,119],{"class":107}," suffix",[46,121,111],{"class":56},[46,123,70],{"class":56},[46,125,126],{"class":73},"m",[46,128,77],{"class":56},[46,130,64],{"class":56},[46,132,133],{"class":60},")",[46,135,136],{"class":56},";",[46,138,140],{"class":139},"sHwdD"," \u002F\u002F '40.00 m'\n",[46,142,144,146,148,151,153,155,158,160,162,165,167,169,172,174,177,179,181,183],{"class":48,"line":143},4,[46,145,34],{"class":93},[46,147,96],{"class":60},[46,149,150],{"class":99},"1234.5",[46,152,102],{"class":56},[46,154,57],{"class":56},[46,156,157],{"class":107}," locale",[46,159,111],{"class":56},[46,161,70],{"class":56},[46,163,164],{"class":73},"pt-BR",[46,166,77],{"class":56},[46,168,102],{"class":56},[46,170,171],{"class":107}," maximumFractionDigits",[46,173,111],{"class":56},[46,175,176],{"class":99}," 1",[46,178,64],{"class":56},[46,180,133],{"class":60},[46,182,136],{"class":56},[46,184,185],{"class":139}," \u002F\u002F '1.234,5'\n",[46,187,189,191,193,196,198,200],{"class":48,"line":188},5,[46,190,34],{"class":93},[46,192,96],{"class":60},[46,194,195],{"class":56},"undefined",[46,197,133],{"class":60},[46,199,136],{"class":56},[46,201,202],{"class":139}," \u002F\u002F '—'\n",[12,204,205,206,209,210,213,214,213,217,213,220,223,224,227,228,231,232,235,236,213,239,241,242,245,246,249],{},"Options: ",[16,207,208],{},"fractionDigits"," (fixed), ",[16,211,212],{},"minimumFractionDigits",", ",[16,215,216],{},"maximumFractionDigits",[16,218,219],{},"suffix",[16,221,222],{},"locale"," (a BCP 47 tag, default ",[16,225,226],{},"en-US",") and ",[16,229,230],{},"fallback"," (default ",[16,233,234],{},"—",", shown for ",[16,237,238],{},"null",[16,240,195],{}," and ",[16,243,244],{},"NaN","). An absent value shows as a dash, never as ",[16,247,248],{},"0",", following the format's \"absent means unknown\" rule.",[21,251,253],{"id":252},"dates","Dates",[12,255,256,257,262,263,266],{},"The format has two kinds of temporal values (",[258,259,261],"a",{"href":260},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#datetime-conventions","datetime conventions","): calendar dates (",[16,264,265],{},"YYYY-MM-DD",", for construction and permits) and instants (RFC 3339 with an offset, for everything measured). Handle them differently:",[37,268,270],{"className":39,"code":269,"language":41,"meta":42,"style":42},"import {\n  formatCalendarDate,\n  formatDate,\n  fromCalendarDate,\n  toCalendarDate,\n} from '@welldot\u002Futils';\n\nformatCalendarDate('2025-03-01'); \u002F\u002F '01\u002F03\u002F2025', no time zone shift\nformatCalendarDate('2025-03-01', 'yyyy-MM-dd'); \u002F\u002F any date-fns pattern\n\nformatDate(new Date('2025-03-01T10:00:00Z')); \u002F\u002F 'dd\u002FMM\u002Fyyyy HH:mm' in the runtime's time zone\n\ntoCalendarDate(new Date(2025, 2, 1)); \u002F\u002F '2025-03-01', from a local Date, never through UTC\nfromCalendarDate('2025-03-01'); \u002F\u002F a local Date, or null when malformed\n",[16,271,272,279,287,294,301,308,324,329,351,380,385,416,421,453],{"__ignoreMap":42},[46,273,274,276],{"class":48,"line":49},[46,275,53],{"class":52},[46,277,278],{"class":56}," {\n",[46,280,281,284],{"class":48,"line":83},[46,282,283],{"class":60},"  formatCalendarDate",[46,285,286],{"class":56},",\n",[46,288,289,292],{"class":48,"line":90},[46,290,291],{"class":60},"  formatDate",[46,293,286],{"class":56},[46,295,296,299],{"class":48,"line":143},[46,297,298],{"class":60},"  fromCalendarDate",[46,300,286],{"class":56},[46,302,303,306],{"class":48,"line":188},[46,304,305],{"class":60},"  toCalendarDate",[46,307,286],{"class":56},[46,309,311,314,316,318,320,322],{"class":48,"line":310},6,[46,312,313],{"class":56},"}",[46,315,67],{"class":52},[46,317,70],{"class":56},[46,319,74],{"class":73},[46,321,77],{"class":56},[46,323,80],{"class":56},[46,325,327],{"class":48,"line":326},7,[46,328,87],{"emptyLinePlaceholder":86},[46,330,332,335,337,339,342,344,346,348],{"class":48,"line":331},8,[46,333,334],{"class":93},"formatCalendarDate",[46,336,96],{"class":60},[46,338,77],{"class":56},[46,340,341],{"class":73},"2025-03-01",[46,343,77],{"class":56},[46,345,133],{"class":60},[46,347,136],{"class":56},[46,349,350],{"class":139}," \u002F\u002F '01\u002F03\u002F2025', no time zone shift\n",[46,352,354,356,358,360,362,364,366,368,371,373,375,377],{"class":48,"line":353},9,[46,355,334],{"class":93},[46,357,96],{"class":60},[46,359,77],{"class":56},[46,361,341],{"class":73},[46,363,77],{"class":56},[46,365,102],{"class":56},[46,367,70],{"class":56},[46,369,370],{"class":73},"yyyy-MM-dd",[46,372,77],{"class":56},[46,374,133],{"class":60},[46,376,136],{"class":56},[46,378,379],{"class":139}," \u002F\u002F any date-fns pattern\n",[46,381,383],{"class":48,"line":382},10,[46,384,87],{"emptyLinePlaceholder":86},[46,386,388,391,393,396,399,401,403,406,408,411,413],{"class":48,"line":387},11,[46,389,390],{"class":93},"formatDate",[46,392,96],{"class":60},[46,394,395],{"class":56},"new",[46,397,398],{"class":93}," Date",[46,400,96],{"class":60},[46,402,77],{"class":56},[46,404,405],{"class":73},"2025-03-01T10:00:00Z",[46,407,77],{"class":56},[46,409,410],{"class":60},"))",[46,412,136],{"class":56},[46,414,415],{"class":139}," \u002F\u002F 'dd\u002FMM\u002Fyyyy HH:mm' in the runtime's time zone\n",[46,417,419],{"class":48,"line":418},12,[46,420,87],{"emptyLinePlaceholder":86},[46,422,424,427,429,431,433,435,438,440,442,444,446,448,450],{"class":48,"line":423},13,[46,425,426],{"class":93},"toCalendarDate",[46,428,96],{"class":60},[46,430,395],{"class":56},[46,432,398],{"class":93},[46,434,96],{"class":60},[46,436,437],{"class":99},"2025",[46,439,102],{"class":56},[46,441,114],{"class":99},[46,443,102],{"class":56},[46,445,176],{"class":99},[46,447,410],{"class":60},[46,449,136],{"class":56},[46,451,452],{"class":139}," \u002F\u002F '2025-03-01', from a local Date, never through UTC\n",[46,454,456,459,461,463,465,467,469,471],{"class":48,"line":455},14,[46,457,458],{"class":93},"fromCalendarDate",[46,460,96],{"class":60},[46,462,77],{"class":56},[46,464,341],{"class":73},[46,466,77],{"class":56},[46,468,133],{"class":60},[46,470,136],{"class":56},[46,472,473],{"class":139}," \u002F\u002F a local Date, or null when malformed\n",[475,476,477],"warning",{},[12,478,479,480,483,484,241,486,488],{},"Never pass a calendar date to ",[16,481,482],{},"new Date('2025-03-01')",": JavaScript reads it as UTC midnight, which is the previous day in the Americas. Use ",[16,485,458],{},[16,487,334],{},".",[12,490,491,492,495,496,499,500,504],{},"For the local date of an instant at the well site, use ",[16,493,494],{},"instantLocalDate(instant, timeZone)"," with the zone from ",[16,497,498],{},"getWellTimeZone(well)"," (",[258,501,503],{"href":502},"\u002Futils\u002Fguides\u002Fpermits","Permits",").",[21,506,508],{"id":507},"coordinates","Coordinates",[37,510,512],{"className":39,"code":511,"language":41,"meta":42,"style":42},"import { formatCoord, parseToDd } from '@welldot\u002Futils';\n\nformatCoord(-1.4558, 'DMS', true); \u002F\u002F `1°27'20.88\"S` (true = latitude)\nformatCoord(-1.4558, 'DD', true); \u002F\u002F '-1.455800'\nparseToDd(`1°27'20.88\"S`); \u002F\u002F -1.4558, from DD or DMS text; NaN when unreadable\n",[16,513,514,540,544,579,609],{"__ignoreMap":42},[46,515,516,518,520,523,525,528,530,532,534,536,538],{"class":48,"line":49},[46,517,53],{"class":52},[46,519,57],{"class":56},[46,521,522],{"class":60}," formatCoord",[46,524,102],{"class":56},[46,526,527],{"class":60}," parseToDd",[46,529,64],{"class":56},[46,531,67],{"class":52},[46,533,70],{"class":56},[46,535,74],{"class":73},[46,537,77],{"class":56},[46,539,80],{"class":56},[46,541,542],{"class":48,"line":83},[46,543,87],{"emptyLinePlaceholder":86},[46,545,546,549,551,554,557,559,561,564,566,568,572,574,576],{"class":48,"line":90},[46,547,548],{"class":93},"formatCoord",[46,550,96],{"class":60},[46,552,553],{"class":56},"-",[46,555,556],{"class":99},"1.4558",[46,558,102],{"class":56},[46,560,70],{"class":56},[46,562,563],{"class":73},"DMS",[46,565,77],{"class":56},[46,567,102],{"class":56},[46,569,571],{"class":570},"sfNiH"," true",[46,573,133],{"class":60},[46,575,136],{"class":56},[46,577,578],{"class":139}," \u002F\u002F `1°27'20.88\"S` (true = latitude)\n",[46,580,581,583,585,587,589,591,593,596,598,600,602,604,606],{"class":48,"line":143},[46,582,548],{"class":93},[46,584,96],{"class":60},[46,586,553],{"class":56},[46,588,556],{"class":99},[46,590,102],{"class":56},[46,592,70],{"class":56},[46,594,595],{"class":73},"DD",[46,597,77],{"class":56},[46,599,102],{"class":56},[46,601,571],{"class":570},[46,603,133],{"class":60},[46,605,136],{"class":56},[46,607,608],{"class":139}," \u002F\u002F '-1.455800'\n",[46,610,611,614,616,619,622,624,626,628],{"class":48,"line":188},[46,612,613],{"class":93},"parseToDd",[46,615,96],{"class":60},[46,617,618],{"class":56},"`",[46,620,621],{"class":73},"1°27'20.88\"S",[46,623,618],{"class":56},[46,625,133],{"class":60},[46,627,136],{"class":56},[46,629,630],{"class":139}," \u002F\u002F -1.4558, from DD or DMS text; NaN when unreadable\n",[12,632,633,241,636,639,640,504],{},[16,634,635],{},"clampLat",[16,637,638],{},"clampLng"," keep typed values in range. Projected coordinates are not handled here; the file stores latitude and longitude only (",[258,641,643],{"href":642},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#crs-scope","CRS scope",[21,645,647],{"id":646},"unit-labels","Unit labels",[649,650,651,664],"table",{},[652,653,654],"thead",{},[655,656,657,661],"tr",{},[658,659,660],"th",{},"Function",[658,662,663],{},"Returns",[665,666,667,694,715],"tbody",{},[655,668,669,675],{},[670,671,672],"td",{},[16,673,674],{},"resolveFlowUnitLabel(unit)",[670,676,677,213,680,213,683,686,687,213,690,213,692,488],{},[16,678,679],{},"m³\u002Fh",[16,681,682],{},"L\u002Fs",[16,684,685],{},"gpm"," for the storage tokens ",[16,688,689],{},"m3\u002Fh",[16,691,682],{},[16,693,685],{},[655,695,696,701],{},[670,697,698],{},[16,699,700],{},"resolveVolumeUnitLabel(unit)",[670,702,703,213,706,213,709,213,712,488],{},[16,704,705],{},"m³",[16,707,708],{},"L",[16,710,711],{},"ft³",[16,713,714],{},"gal",[655,716,717,722],{},[670,718,719],{},[16,720,721],{},"resolveDiameterUnitLabel(unit, locale)",[670,723,724,727,728,731,732,735],{},[16,725,726],{},"mm",", or ",[16,729,730],{},"\""," in Portuguese and ",[16,733,734],{},"in."," in English for inches.",[12,737,738,739,743,744,488],{},"Convert the values themselves with the ",[258,740,742],{"href":741},"\u002Fcore\u002Fguides\u002Funit-conversion","unit conversion"," helpers of ",[16,745,746],{},"@welldot\u002Fcore",[21,748,750],{"id":749},"records","Records",[752,753,754,764,770],"ul",{},[755,756,757,760,761,488],"li",{},[16,758,759],{},"formatMeterLabel(meter, { locale, untypedLabel, dateFormat? })",": ",[16,762,763],{},"Electromagnetic · S\u002FN 123 · 01\u002F02\u002F2024",[755,765,766,769],{},[16,767,768],{},"permitLabel(permit, fallback?)",": the authority and identifier of a permit.",[755,771,772,760,775,213,778,781,782,504],{},[16,773,774],{},"formatWaterQualityResult(result, labels)",[16,776,777],{},"\u003C 0.001",[16,779,780],{},"0.004 (est.)",", the not-detected, present or absent label, or the text (",[258,783,785],{"href":784},"\u002Futils\u002Fguides\u002Fwater-quality","Water quality",[787,788,789],"style",{},"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}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":42,"searchDepth":83,"depth":83,"links":791},[792,793,794,795,796],{"id":23,"depth":83,"text":24},{"id":252,"depth":83,"text":253},{"id":507,"depth":83,"text":508},{"id":646,"depth":83,"text":647},{"id":749,"depth":83,"text":750},"Display numbers, dates, calendar dates, coordinates and unit labels from .well data without floating-point noise or time zone shifts, using the display helpers of @welldot\u002Futils.","md",{},"\u002Futils\u002Fguides\u002Fformatting","---\ntitle: Formatting\ndescription: Display numbers, dates, calendar dates, coordinates and unit labels from .well data without floating-point noise or time zone shifts, using the display helpers of @welldot\u002Futils.\n---\n\nThese helpers turn stored values into text for screens, PDFs and tables. They are framework-free and are shared by the welldot.org editor and `@welldot\u002Fpdf`. Anything that needs translated words takes them as plain strings, so you keep your own message catalog.\n\n## Numbers\n\nFloating-point arithmetic produces values like `39.99998784`. `formatNumber` bounds the decimals so that noise never reaches the reader:\n\n```ts\nimport { formatNumber } from '@welldot\u002Futils';\n\nformatNumber(39.99998784, { fractionDigits: 2, suffix: 'm' }); \u002F\u002F '40.00 m'\nformatNumber(1234.5, { locale: 'pt-BR', maximumFractionDigits: 1 }); \u002F\u002F '1.234,5'\nformatNumber(undefined); \u002F\u002F '—'\n```\n\nOptions: `fractionDigits` (fixed), `minimumFractionDigits`, `maximumFractionDigits`, `suffix`, `locale` (a BCP 47 tag, default `en-US`) and `fallback` (default `—`, shown for `null`, `undefined` and `NaN`). An absent value shows as a dash, never as `0`, following the format's \"absent means unknown\" rule.\n\n## Dates\n\nThe format has two kinds of temporal values ([datetime conventions](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#datetime-conventions)): calendar dates (`YYYY-MM-DD`, for construction and permits) and instants (RFC 3339 with an offset, for everything measured). Handle them differently:\n\n```ts\nimport {\n  formatCalendarDate,\n  formatDate,\n  fromCalendarDate,\n  toCalendarDate,\n} from '@welldot\u002Futils';\n\nformatCalendarDate('2025-03-01'); \u002F\u002F '01\u002F03\u002F2025', no time zone shift\nformatCalendarDate('2025-03-01', 'yyyy-MM-dd'); \u002F\u002F any date-fns pattern\n\nformatDate(new Date('2025-03-01T10:00:00Z')); \u002F\u002F 'dd\u002FMM\u002Fyyyy HH:mm' in the runtime's time zone\n\ntoCalendarDate(new Date(2025, 2, 1)); \u002F\u002F '2025-03-01', from a local Date, never through UTC\nfromCalendarDate('2025-03-01'); \u002F\u002F a local Date, or null when malformed\n```\n\n::warning\nNever pass a calendar date to `new Date('2025-03-01')`: JavaScript reads it as UTC midnight, which is the previous day in the Americas. Use `fromCalendarDate` and `formatCalendarDate`.\n::\n\nFor the local date of an instant at the well site, use `instantLocalDate(instant, timeZone)` with the zone from `getWellTimeZone(well)` ([Permits](\u002Futils\u002Fguides\u002Fpermits)).\n\n## Coordinates\n\n```ts\nimport { formatCoord, parseToDd } from '@welldot\u002Futils';\n\nformatCoord(-1.4558, 'DMS', true); \u002F\u002F `1°27'20.88\"S` (true = latitude)\nformatCoord(-1.4558, 'DD', true); \u002F\u002F '-1.455800'\nparseToDd(`1°27'20.88\"S`); \u002F\u002F -1.4558, from DD or DMS text; NaN when unreadable\n```\n\n`clampLat` and `clampLng` keep typed values in range. Projected coordinates are not handled here; the file stores latitude and longitude only ([CRS scope](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#crs-scope)).\n\n## Unit labels\n\n| Function                                 | Returns                                                           |\n| ---------------------------------------- | ----------------------------------------------------------------- |\n| `resolveFlowUnitLabel(unit)`             | `m³\u002Fh`, `L\u002Fs`, `gpm` for the storage tokens `m3\u002Fh`, `L\u002Fs`, `gpm`. |\n| `resolveVolumeUnitLabel(unit)`           | `m³`, `L`, `ft³`, `gal`.                                          |\n| `resolveDiameterUnitLabel(unit, locale)` | `mm`, or `\"` in Portuguese and `in.` in English for inches.       |\n\nConvert the values themselves with the [unit conversion](\u002Fcore\u002Fguides\u002Funit-conversion) helpers of `@welldot\u002Fcore`.\n\n## Records\n\n- `formatMeterLabel(meter, { locale, untypedLabel, dateFormat? })`: `Electromagnetic · S\u002FN 123 · 01\u002F02\u002F2024`.\n- `permitLabel(permit, fallback?)`: the authority and identifier of a permit.\n- `formatWaterQualityResult(result, labels)`: `\u003C 0.001`, `0.004 (est.)`, the not-detected, present or absent label, or the text ([Water quality](\u002Futils\u002Fguides\u002Fwater-quality)).\n",{"title":7,"description":797},"utils\u002F2.guides\u002F8.formatting","sAppGHnnvOAhmLD87zCyFl7yRAQKjOmxP3JTEJIxvPA",{"docs_en":806,"spec":1116,"changelogs":1166},[807,827,846,901,1011,1065],{"title":808,"path":809,"stem":810,"children":811},"Ai","\u002Fai","ai",[812,815,819,823],{"title":813,"path":809,"stem":814},"Introduction","ai\u002Findex",{"title":816,"path":817,"stem":818},"Converting reports with an assistant","\u002Fai\u002Fconversion-skill","ai\u002Fconversion-skill",{"title":820,"path":821,"stem":822},"llms.txt and Markdown pages","\u002Fai\u002Fllms","ai\u002Fllms",{"title":824,"path":825,"stem":826},"MCP server","\u002Fai\u002Fmcp","ai\u002Fmcp",{"title":828,"path":829,"stem":830,"children":831},"Contributing","\u002Fcontributing","contributing",[832,834,838,842],{"title":813,"path":829,"stem":833},"contributing\u002Findex",{"title":835,"path":836,"stem":837},"Writing docs","\u002Fcontributing\u002Fwriting-docs","contributing\u002F1.writing-docs",{"title":839,"path":840,"stem":841},"Update rules","\u002Fcontributing\u002Fupdate-rules","contributing\u002F2.update-rules",{"title":843,"path":844,"stem":845},"Content components","\u002Fcontributing\u002Fcomponents","contributing\u002Fcomponents",{"title":847,"path":848,"stem":849,"children":850},"Core","\u002Fcore","core",[851,853,867,895],{"title":813,"path":848,"stem":852},"core\u002Findex",{"title":854,"path":855,"stem":856,"children":857,"page":866},"Getting Started","\u002Fcore\u002Fgetting-started","core\u002F1.getting-started",[858,862],{"title":859,"path":860,"stem":861},"Installation","\u002Fcore\u002Fgetting-started\u002Finstallation","core\u002F1.getting-started\u002F1.installation",{"title":863,"path":864,"stem":865},"First use","\u002Fcore\u002Fgetting-started\u002Ffirst-use","core\u002F1.getting-started\u002F2.first-use",false,{"title":868,"path":869,"stem":870,"children":871,"page":866},"Guides","\u002Fcore\u002Fguides","core\u002F2.guides",[872,876,880,883,887,891],{"title":873,"path":874,"stem":875},"Parsing and validating","\u002Fcore\u002Fguides\u002Fparsing-and-validating","core\u002F2.guides\u002F1.parsing-and-validating",{"title":877,"path":878,"stem":879},"Serializing and sharing","\u002Fcore\u002Fguides\u002Fserializing-and-sharing","core\u002F2.guides\u002F2.serializing-and-sharing",{"title":881,"path":741,"stem":882},"Unit conversion","core\u002F2.guides\u002F3.unit-conversion",{"title":884,"path":885,"stem":886},"Vocabularies and textures","\u002Fcore\u002Fguides\u002Fvocabularies-and-textures","core\u002F2.guides\u002F4.vocabularies-and-textures",{"title":888,"path":889,"stem":890},"Water quality vocabulary","\u002Fcore\u002Fguides\u002Fwater-quality-vocabulary","core\u002F2.guides\u002F5.water-quality-vocabulary",{"title":892,"path":893,"stem":894},"Versions and time zones","\u002Fcore\u002Fguides\u002Fversions-and-time-zones","core\u002F2.guides\u002F6.versions-and-time-zones",{"title":896,"path":897,"stem":898,"children":899},"API reference","\u002Fcore\u002Fapi","core\u002Fapi\u002Findex",[900],{"title":896,"path":897,"stem":898},{"title":902,"path":903,"stem":904,"children":905},"Format","\u002Fformat","format",[906,908,928,957,981,1001,1007],{"title":813,"path":903,"stem":907},"format\u002Findex",{"title":854,"path":909,"stem":910,"children":911,"page":866},"\u002Fformat\u002Fgetting-started","format\u002F1.getting-started",[912,916,920,924],{"title":913,"path":914,"stem":915},"What is .well?","\u002Fformat\u002Fgetting-started\u002Fwhat-is-well","format\u002F1.getting-started\u002F1.what-is-well",{"title":917,"path":918,"stem":919},"For geologists","\u002Fformat\u002Fgetting-started\u002Ffor-geologists","format\u002F1.getting-started\u002F2.for-geologists",{"title":921,"path":922,"stem":923},"For developers","\u002Fformat\u002Fgetting-started\u002Ffor-developers","format\u002F1.getting-started\u002F3.for-developers",{"title":925,"path":926,"stem":927},"Your first .well file","\u002Fformat\u002Fgetting-started\u002Ffirst-well-file","format\u002F1.getting-started\u002F4.first-well-file",{"title":929,"path":930,"stem":931,"children":932,"page":866},"Concepts","\u002Fformat\u002Fconcepts","format\u002F2.concepts",[933,937,941,945,949,953],{"title":934,"path":935,"stem":936},"Depths and intervals","\u002Fformat\u002Fconcepts\u002Fdepths-and-intervals","format\u002F2.concepts\u002F1.depths-and-intervals",{"title":938,"path":939,"stem":940},"Units and precision","\u002Fformat\u002Fconcepts\u002Funits-and-precision","format\u002F2.concepts\u002F2.units-and-precision",{"title":942,"path":943,"stem":944},"Vocabularies","\u002Fformat\u002Fconcepts\u002Fvocabularies","format\u002F2.concepts\u002F3.vocabularies",{"title":946,"path":947,"stem":948},"Profiles","\u002Fformat\u002Fconcepts\u002Fprofiles","format\u002F2.concepts\u002F4.profiles",{"title":950,"path":951,"stem":952},"Versions and deprecation","\u002Fformat\u002Fconcepts\u002Fversions-and-deprecation","format\u002F2.concepts\u002F5.versions-and-deprecation",{"title":954,"path":955,"stem":956},"Extensibility","\u002Fformat\u002Fconcepts\u002Fextensibility","format\u002F2.concepts\u002F6.extensibility",{"title":868,"path":958,"stem":959,"children":960,"page":866},"\u002Fformat\u002Fguides","format\u002F3.guides",[961,965,969,973,977],{"title":962,"path":963,"stem":964},"Writing a .well by hand","\u002Fformat\u002Fguides\u002Fwriting-by-hand","format\u002F3.guides\u002F1.writing-by-hand",{"title":966,"path":967,"stem":968},"Converting a report","\u002Fformat\u002Fguides\u002Fconverting-a-report","format\u002F3.guides\u002F2.converting-a-report",{"title":970,"path":971,"stem":972},"Validating","\u002Fformat\u002Fguides\u002Fvalidating","format\u002F3.guides\u002F3.validating",{"title":974,"path":975,"stem":976},"Extending for your own needs","\u002Fformat\u002Fguides\u002Fextending","format\u002F3.guides\u002F4.extending",{"title":978,"path":979,"stem":980},"Building an editor or database on .well","\u002Fformat\u002Fguides\u002Fbuilding-on-well","format\u002F3.guides\u002F5.building-on-well",{"title":982,"path":983,"stem":984,"children":985},"Overview","\u002Fformat\u002Freference","format\u002F4.reference\u002Findex",[986,987,991,995],{"title":982,"path":983,"stem":984},{"title":988,"path":989,"stem":990},"JSON Schema","\u002Fformat\u002Freference\u002Fjson-schema","format\u002F4.reference\u002F1.json-schema",{"title":992,"path":993,"stem":994},"Example wells","\u002Fformat\u002Freference\u002Fexamples","format\u002F4.reference\u002F2.examples",{"title":996,"path":997,"stem":998,"children":999},"Object reference","\u002Fformat\u002Freference\u002Fobjects","format\u002Freference\u002Fobjects\u002Findex",[1000],{"title":996,"path":997,"stem":998},{"title":1002,"path":1003,"stem":1004,"children":1005},"About the spec","\u002Fformat\u002Fspec","format\u002F5.spec\u002Findex",[1006],{"title":1002,"path":1003,"stem":1004},{"title":1008,"path":1009,"stem":1010},"Changelog","\u002Fformat\u002Fchangelog","format\u002F6.changelog",{"title":1012,"path":1013,"stem":1014,"children":1015},"Render","\u002Frender","render",[1016,1018,1028,1060],{"title":813,"path":1013,"stem":1017},"render\u002Findex",{"title":854,"path":1019,"stem":1020,"children":1021,"page":866},"\u002Frender\u002Fgetting-started","render\u002F1.getting-started",[1022,1025],{"title":859,"path":1023,"stem":1024},"\u002Frender\u002Fgetting-started\u002Finstallation","render\u002F1.getting-started\u002F1.installation",{"title":863,"path":1026,"stem":1027},"\u002Frender\u002Fgetting-started\u002Ffirst-use","render\u002F1.getting-started\u002F2.first-use",{"title":868,"path":1029,"stem":1030,"children":1031,"page":866},"\u002Frender\u002Fguides","render\u002F2.guides",[1032,1036,1040,1044,1048,1052,1056],{"title":1033,"path":1034,"stem":1035},"Panels and layout","\u002Frender\u002Fguides\u002Fpanels-and-layout","render\u002F2.guides\u002F1.panels-and-layout",{"title":1037,"path":1038,"stem":1039},"Layers and labels","\u002Frender\u002Fguides\u002Flayers-and-labels","render\u002F2.guides\u002F2.layers-and-labels",{"title":1041,"path":1042,"stem":1043},"Theming","\u002Frender\u002Fguides\u002Ftheming","render\u002F2.guides\u002F3.theming",{"title":1045,"path":1046,"stem":1047},"Locale and units","\u002Frender\u002Fguides\u002Flocale-and-units","render\u002F2.guides\u002F4.locale-and-units",{"title":1049,"path":1050,"stem":1051},"Legends","\u002Frender\u002Fguides\u002Flegends","render\u002F2.guides\u002F5.legends",{"title":1053,"path":1054,"stem":1055},"Zoom, pan and highlights","\u002Frender\u002Fguides\u002Finteraction","render\u002F2.guides\u002F6.interaction",{"title":1057,"path":1058,"stem":1059},"Using it in a framework","\u002Frender\u002Fguides\u002Fframeworks","render\u002F2.guides\u002F7.frameworks",{"title":896,"path":1061,"stem":1062,"children":1063},"\u002Frender\u002Fapi","render\u002Fapi\u002Findex",[1064],{"title":896,"path":1061,"stem":1062},{"title":1066,"path":1067,"stem":1068,"children":1069},"Utils","\u002Futils","utils",[1070,1072,1082,1111],{"title":813,"path":1067,"stem":1071},"utils\u002Findex",{"title":854,"path":1073,"stem":1074,"children":1075,"page":866},"\u002Futils\u002Fgetting-started","utils\u002F1.getting-started",[1076,1079],{"title":859,"path":1077,"stem":1078},"\u002Futils\u002Fgetting-started\u002Finstallation","utils\u002F1.getting-started\u002F1.installation",{"title":863,"path":1080,"stem":1081},"\u002Futils\u002Fgetting-started\u002Ffirst-use","utils\u002F1.getting-started\u002F2.first-use",{"title":868,"path":1083,"stem":1084,"children":1085,"page":866},"\u002Futils\u002Fguides","utils\u002F2.guides",[1086,1090,1094,1096,1100,1102,1106,1110],{"title":1087,"path":1088,"stem":1089},"Geometry and volumes","\u002Futils\u002Fguides\u002Fgeometry-and-volumes","utils\u002F2.guides\u002F1.geometry-and-volumes",{"title":1091,"path":1092,"stem":1093},"Water levels and pumping tests","\u002Futils\u002Fguides\u002Fpumping-tests","utils\u002F2.guides\u002F2.pumping-tests",{"title":503,"path":502,"stem":1095},"utils\u002F2.guides\u002F3.permits",{"title":1097,"path":1098,"stem":1099},"Operation and production","\u002Futils\u002Fguides\u002Foperation","utils\u002F2.guides\u002F4.operation",{"title":785,"path":784,"stem":1101},"utils\u002F2.guides\u002F5.water-quality",{"title":1103,"path":1104,"stem":1105},"Logger import","\u002Futils\u002Fguides\u002Flogger-import","utils\u002F2.guides\u002F6.logger-import",{"title":1107,"path":1108,"stem":1109},"SIAGAS import","\u002Futils\u002Fguides\u002Fsiagas-import","utils\u002F2.guides\u002F7.siagas-import",{"title":7,"path":800,"stem":803},{"title":896,"path":1112,"stem":1113,"children":1114},"\u002Futils\u002Fapi","utils\u002Fapi\u002Findex",[1115],{"title":896,"path":1112,"stem":1113},[1117],{"title":902,"path":903,"stem":904,"children":1118,"page":866},[1119],{"title":1120,"path":1003,"stem":1121,"children":1122,"page":866},"Spec","format\u002Fspec",[1123,1132,1141],{"title":1124,"path":1125,"stem":1126,"children":1127,"page":866},"Reference","\u002Fformat\u002Fspec\u002Freference","format\u002Fspec\u002Freference",[1128],{"title":1129,"path":1130,"stem":1131},"FGDC Texture Patterns Reference","\u002Fformat\u002Fspec\u002Freference\u002Ffgdc-textures","format\u002Fspec\u002Freference\u002Ffgdc-textures",{"title":1133,"path":1134,"stem":1135,"children":1136,"page":866},"V1","\u002Fformat\u002Fspec\u002Fv1","format\u002Fspec\u002Fv1",[1137],{"title":1138,"path":1139,"stem":1140},".well File Format Specification","\u002Fformat\u002Fspec\u002Fv1\u002Fwell-format","format\u002Fspec\u002Fv1\u002Fwell-format",{"title":1142,"path":1143,"stem":1144,"children":1145,"page":866},"V2","\u002Fformat\u002Fspec\u002Fv2","format\u002Fspec\u002Fv2",[1146,1150,1154,1158,1162],{"title":1147,"path":1148,"stem":1149},".well File Format Specification — Version 2.4: Format Reference","\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference","format\u002Fspec\u002Fv2\u002Fformat-reference",{"title":1151,"path":1152,"stem":1153},".well File Format Specification — Version 2.4: Interoperability","\u002Fformat\u002Fspec\u002Fv2\u002Finteroperability","format\u002Fspec\u002Fv2\u002Finteroperability",{"title":1155,"path":1156,"stem":1157},".well File Format Specification — Version 2.4: Object Schemas","\u002Fformat\u002Fspec\u002Fv2\u002Fobject-schemas","format\u002Fspec\u002Fv2\u002Fobject-schemas",{"title":1159,"path":1160,"stem":1161},".well File Format Specification — Version 2.4: Overview","\u002Fformat\u002Fspec\u002Fv2\u002Foverview","format\u002Fspec\u002Fv2\u002Foverview",{"title":1163,"path":1164,"stem":1165},".well File Format Specification — Version 2.4: Water Quality","\u002Fformat\u002Fspec\u002Fv2\u002Fwater-quality","format\u002Fspec\u002Fv2\u002Fwater-quality",[1167,1172,1178],{"title":847,"path":848,"stem":849,"children":1168,"page":866},[1169],{"title":746,"path":1170,"stem":1171},"\u002Fcore\u002Fchangelog","core\u002FCHANGELOG",{"title":1012,"path":1013,"stem":1014,"children":1173,"page":866},[1174],{"title":1175,"path":1176,"stem":1177},"@welldot\u002Frender","\u002Frender\u002Fchangelog","render\u002FCHANGELOG",{"title":1066,"path":1067,"stem":1068,"children":1179,"page":866},[1180],{"title":74,"path":1181,"stem":1182},"\u002Futils\u002Fchangelog","utils\u002FCHANGELOG",1793050495614]