@protobase/ui 0.66.2 → 0.66.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/account/blocks/personal-mail-block.js +1 -0
- package/dist/account/sign-in-providers-section.js +5 -4
- package/dist/locale/en.js +1 -0
- package/dist/locale/nl.js +1 -0
- package/dist/package.js +1 -1
- package/dist/shell/assets/{app-Di5fsJE6.js → app-wLUA_tPR.js} +7 -7
- package/dist/shell/assets/{calls-CmQQdr69.js → calls-Dr-DRqHd.js} +2 -2
- package/dist/shell/assets/export-worker-BKuC4P2E.js +15 -0
- package/dist/shell/assets/{index-BjnuzjAP.js → index-DRGgkOjf.js} +2 -2
- package/dist/shell/assets/{maplibre-sUHB6Qig.js → maplibre-lc2A-_P4.js} +2 -2
- package/dist/shell/assets/parse-worker-BzLD2jKf.js +35 -0
- package/dist/shell/assets/preload-helper-DedkISGJ.js +2 -0
- package/dist/shell/assets/{record-map-CZ__Yamf.js → record-map-CupIwJyD.js} +2 -2
- package/dist/shell/assets/{records-map-Bx-rz5tZ.js → records-map-DAJkSlba.js} +2 -2
- package/dist/shell/assets/{shared-protobase-ui-vHJPrkkU.js → shared-protobase-ui-DIN4Js5c.js} +2 -2
- package/dist/shell/index.html +4 -4
- package/dist/shell/protobase.shell.json +2 -2
- package/dist/shell/protobase.sw.js +2 -2
- package/dist/shell-source-maps/assets/app-wLUA_tPR.js.map +1 -0
- package/dist/shell-source-maps/assets/{calls-CmQQdr69.js.map → calls-Dr-DRqHd.js.map} +1 -1
- package/dist/shell-source-maps/assets/export-worker-BKuC4P2E.js.map +1 -0
- package/dist/shell-source-maps/assets/{index-BjnuzjAP.js.map → index-DRGgkOjf.js.map} +1 -1
- package/dist/shell-source-maps/assets/{maplibre-sUHB6Qig.js.map → maplibre-lc2A-_P4.js.map} +1 -1
- package/dist/shell-source-maps/assets/parse-worker-BzLD2jKf.js.map +1 -0
- package/dist/shell-source-maps/assets/preload-helper-DedkISGJ.js.map +1 -0
- package/dist/shell-source-maps/assets/{record-map-CZ__Yamf.js.map → record-map-CupIwJyD.js.map} +1 -1
- package/dist/shell-source-maps/assets/{records-map-Bx-rz5tZ.js.map → records-map-DAJkSlba.js.map} +1 -1
- package/dist/shell-source-maps/assets/{shared-protobase-ui-vHJPrkkU.js.map → shared-protobase-ui-DIN4Js5c.js.map} +1 -1
- package/package.json +4 -4
- package/dist/shell/assets/export-worker-Bux-6dp9.js +0 -15
- package/dist/shell/assets/parse-worker-CbZA-uNr.js +0 -35
- package/dist/shell/assets/preload-helper-BRlYOzPJ.js +0 -2
- package/dist/shell-source-maps/assets/app-Di5fsJE6.js.map +0 -1
- package/dist/shell-source-maps/assets/export-worker-Bux-6dp9.js.map +0 -1
- package/dist/shell-source-maps/assets/parse-worker-CbZA-uNr.js.map +0 -1
- package/dist/shell-source-maps/assets/preload-helper-BRlYOzPJ.js.map +0 -1
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
(function(){var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);let t=(e,t)=>t?.[e]??e,n=`en`,r=()=>n,i=e=>{n=e},a={en:`en-GB`,nl:`nl-NL`},o=()=>a[r()],s=/* @__PURE__ */ new Map,c=(e,t)=>{let n=o(),r=`${n}|${e}`;return s.has(r)||s.set(r,t(n)),s.get(r)};function l(e,t){let n=t&&t.cache?t.cache:y,r=t&&t.serializer?t.serializer:_;return(t&&t.strategy?t.strategy:m)(e,{cache:n,serializer:r})}function u(e){return e==null||typeof e==`number`||typeof e==`boolean`}function d(e,t,n,r){let i=u(r)?r:n(r),a=t.get(i);return a===void 0&&(a=e.call(this,r),t.set(i,a)),a}function f(e,t,n){let r=Array.prototype.slice.call(arguments,3),i=n(r),a=t.get(i);return a===void 0&&(a=e.apply(this,r),t.set(i,a)),a}function p(e,t,n,r,i){return n.bind(t,e,r,i)}function m(e,t){let n=e.length===1?d:f;return p(e,this,n,t.cache.create(),t.serializer)}function h(e,t){return p(e,this,f,t.cache.create(),t.serializer)}function g(e,t){return p(e,this,d,t.cache.create(),t.serializer)}let _=function(){return JSON.stringify(arguments)};var v=class{constructor(){this.cache=Object.create(null)}get(e){return this.cache[e]}set(e,t){this.cache[e]=t}};let y={create:function(){return new v}},b={variadic:h,monadic:g},x=/(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;function S(e){let t={};return e.replace(x,e=>{let n=e.length;switch(e[0]){case`G`:t.era=n===4?`long`:n===5?`narrow`:`short`;break;case`y`:t.year=n===2?`2-digit`:`numeric`;break;case`Y`:case`u`:case`U`:case`r`:throw RangeError("`Y/u/U/r` (year) patterns are not supported, use `y` instead");case`q`:case`Q`:throw RangeError("`q/Q` (quarter) patterns are not supported");case`M`:case`L`:t.month=[`numeric`,`2-digit`,`short`,`long`,`narrow`][n-1];break;case`w`:case`W`:throw RangeError("`w/W` (week) patterns are not supported");case`d`:t.day=[`numeric`,`2-digit`][n-1];break;case`D`:case`F`:case`g`:throw RangeError("`D/F/g` (day) patterns are not supported, use `d` instead");case`E`:t.weekday=n===4?`long`:n===5?`narrow`:`short`;break;case`e`:if(n<4)throw RangeError("`e..eee` (weekday) patterns are not supported");t.weekday=[`short`,`long`,`narrow`,`short`][n-3];break;case`c`:if(n<4)throw RangeError("`c..ccc` (weekday) patterns are not supported");t.weekday=[`short`,`long`,`narrow`,`short`][n-3];break;case`a`:t.hour12=!0;break;case`b`:case`B`:throw RangeError("`b/B` (period) patterns are not supported, use `a` instead");case`h`:t.hourCycle=`h12`,t.hour=[`numeric`,`2-digit`][n-1];break;case`H`:t.hourCycle=`h23`,t.hour=[`numeric`,`2-digit`][n-1];break;case`K`:t.hourCycle=`h11`,t.hour=[`numeric`,`2-digit`][n-1];break;case`k`:t.hourCycle=`h24`,t.hour=[`numeric`,`2-digit`][n-1];break;case`j`:case`J`:case`C`:throw RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead");case`m`:t.minute=[`numeric`,`2-digit`][n-1];break;case`s`:t.second=[`numeric`,`2-digit`][n-1];break;case`S`:case`A`:throw RangeError("`S/A` (second) patterns are not supported, use `s` instead");case`z`:t.timeZoneName=n<4?`short`:`long`;break;case`Z`:case`O`:case`v`:case`V`:case`X`:case`x`:throw RangeError("`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead")}return``}),t}let C=/[\t-\r \x85\u200E\u200F\u2028\u2029]/i;function w(e){if(e.length===0)throw Error(`Number skeleton cannot be empty`);let t=e.split(C).filter(e=>e.length>0),n=[];for(let e of t){let t=e.split(`/`);if(t.length===0)throw Error(`Invalid number skeleton`);let[r,...i]=t;for(let e of i)if(e.length===0)throw Error(`Invalid number skeleton`);n.push({stem:r,options:i})}return n}function T(e){return e.replace(/^(.*?)-/,``)}let E=/^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g,D=/^(@+)?(\+|#+)?[rs]?$/g,O=/(\*)(0+)|(#+)(0+)|(0+)/g,k=/^(0+)$/;function A(e){let t={};return e[e.length-1]===`r`?t.roundingPriority=`morePrecision`:e[e.length-1]===`s`&&(t.roundingPriority=`lessPrecision`),e.replace(D,function(e,n,r){return typeof r==`string`?r===`+`?t.minimumSignificantDigits=n.length:n[0]===`#`?t.maximumSignificantDigits=n.length:(t.minimumSignificantDigits=n.length,t.maximumSignificantDigits=n.length+(typeof r==`string`?r.length:0)):(t.minimumSignificantDigits=n.length,t.maximumSignificantDigits=n.length),``}),t}function j(e){switch(e){case`sign-auto`:return{signDisplay:`auto`};case`sign-accounting`:case`()`:return{currencySign:`accounting`};case`sign-always`:case`+!`:return{signDisplay:`always`};case`sign-accounting-always`:case`()!`:return{signDisplay:`always`,currencySign:`accounting`};case`sign-except-zero`:case`+?`:return{signDisplay:`exceptZero`};case`sign-accounting-except-zero`:case`()?`:return{signDisplay:`exceptZero`,currencySign:`accounting`};case`sign-never`:case`+_`:return{signDisplay:`never`}}}function M(e){let t;if(e[0]===`E`&&e[1]===`E`?(t={notation:`engineering`},e=e.slice(2)):e[0]===`E`&&(t={notation:`scientific`},e=e.slice(1)),t){let n=e.slice(0,2);if(n===`+!`?(t.signDisplay=`always`,e=e.slice(2)):n===`+?`&&(t.signDisplay=`exceptZero`,e=e.slice(2)),!k.test(e))throw Error(`Malformed concise eng/scientific notation`);t.minimumIntegerDigits=e.length}return t}function N(e){return j(e)||{}}function P(e){let t={};for(let n of e){switch(n.stem){case`percent`:case`%`:t.style=`percent`;continue;case`%x100`:t.style=`percent`,t.scale=100;continue;case`currency`:t.style=`currency`,t.currency=n.options[0];continue;case`group-off`:case`,_`:t.useGrouping=!1;continue;case`precision-integer`:case`.`:t.maximumFractionDigits=0;continue;case`measure-unit`:case`unit`:t.style=`unit`,t.unit=T(n.options[0]);continue;case`compact-short`:case`K`:t.notation=`compact`,t.compactDisplay=`short`;continue;case`compact-long`:case`KK`:t.notation=`compact`,t.compactDisplay=`long`;continue;case`scientific`:t={...t,notation:`scientific`,...n.options.reduce((e,t)=>({...e,...N(t)}),{})};continue;case`engineering`:t={...t,notation:`engineering`,...n.options.reduce((e,t)=>({...e,...N(t)}),{})};continue;case`notation-simple`:t.notation=`standard`;continue;case`unit-width-narrow`:t.currencyDisplay=`narrowSymbol`,t.unitDisplay=`narrow`;continue;case`unit-width-short`:t.currencyDisplay=`code`,t.unitDisplay=`short`;continue;case`unit-width-full-name`:t.currencyDisplay=`name`,t.unitDisplay=`long`;continue;case`unit-width-iso-code`:t.currencyDisplay=`symbol`;continue;case`scale`:t.scale=parseFloat(n.options[0]);continue;case`rounding-mode-floor`:t.roundingMode=`floor`;continue;case`rounding-mode-ceiling`:t.roundingMode=`ceil`;continue;case`rounding-mode-down`:t.roundingMode=`trunc`;continue;case`rounding-mode-up`:t.roundingMode=`expand`;continue;case`rounding-mode-half-even`:t.roundingMode=`halfEven`;continue;case`rounding-mode-half-down`:t.roundingMode=`halfTrunc`;continue;case`rounding-mode-half-up`:t.roundingMode=`halfExpand`;continue;case`integer-width`:if(n.options.length>1)throw RangeError(`integer-width stems only accept a single optional option`);n.options[0].replace(O,function(e,n,r,i,a,o){if(n)t.minimumIntegerDigits=r.length;else if(i&&a)throw Error(`We currently do not support maximum integer digits`);else if(o)throw Error(`We currently do not support exact integer digits`);return``});continue}if(k.test(n.stem)){t.minimumIntegerDigits=n.stem.length;continue}if(E.test(n.stem)){if(n.options.length>1)throw RangeError(`Fraction-precision stems only accept a single optional option`);n.stem.replace(E,function(e,n,r,i,a,o){return r===`*`?t.minimumFractionDigits=n.length:i&&i[0]===`#`?t.maximumFractionDigits=i.length:a&&o?(t.minimumFractionDigits=a.length,t.maximumFractionDigits=a.length+o.length):(t.minimumFractionDigits=n.length,t.maximumFractionDigits=n.length),``});let e=n.options[0];e===`w`?t={...t,trailingZeroDisplay:`stripIfInteger`}:e&&(t={...t,...A(e)});continue}if(D.test(n.stem)){t={...t,...A(n.stem)};continue}let e=j(n.stem);e&&(t={...t,...e});let r=M(n.stem);r&&(t={...t,...r})}return t}let F=/* @__PURE__ */ function(e){return e[e.EXPECT_ARGUMENT_CLOSING_BRACE=1]=`EXPECT_ARGUMENT_CLOSING_BRACE`,e[e.EMPTY_ARGUMENT=2]=`EMPTY_ARGUMENT`,e[e.MALFORMED_ARGUMENT=3]=`MALFORMED_ARGUMENT`,e[e.EXPECT_ARGUMENT_TYPE=4]=`EXPECT_ARGUMENT_TYPE`,e[e.INVALID_ARGUMENT_TYPE=5]=`INVALID_ARGUMENT_TYPE`,e[e.EXPECT_ARGUMENT_STYLE=6]=`EXPECT_ARGUMENT_STYLE`,e[e.INVALID_NUMBER_SKELETON=7]=`INVALID_NUMBER_SKELETON`,e[e.INVALID_DATE_TIME_SKELETON=8]=`INVALID_DATE_TIME_SKELETON`,e[e.EXPECT_NUMBER_SKELETON=9]=`EXPECT_NUMBER_SKELETON`,e[e.EXPECT_DATE_TIME_SKELETON=10]=`EXPECT_DATE_TIME_SKELETON`,e[e.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE=11]=`UNCLOSED_QUOTE_IN_ARGUMENT_STYLE`,e[e.EXPECT_SELECT_ARGUMENT_OPTIONS=12]=`EXPECT_SELECT_ARGUMENT_OPTIONS`,e[e.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE=13]=`EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE`,e[e.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE=14]=`INVALID_PLURAL_ARGUMENT_OFFSET_VALUE`,e[e.EXPECT_SELECT_ARGUMENT_SELECTOR=15]=`EXPECT_SELECT_ARGUMENT_SELECTOR`,e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR=16]=`EXPECT_PLURAL_ARGUMENT_SELECTOR`,e[e.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT=17]=`EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT`,e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT=18]=`EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT`,e[e.INVALID_PLURAL_ARGUMENT_SELECTOR=19]=`INVALID_PLURAL_ARGUMENT_SELECTOR`,e[e.DUPLICATE_PLURAL_ARGUMENT_SELECTOR=20]=`DUPLICATE_PLURAL_ARGUMENT_SELECTOR`,e[e.DUPLICATE_SELECT_ARGUMENT_SELECTOR=21]=`DUPLICATE_SELECT_ARGUMENT_SELECTOR`,e[e.MISSING_OTHER_CLAUSE=22]=`MISSING_OTHER_CLAUSE`,e[e.INVALID_TAG=23]=`INVALID_TAG`,e[e.INVALID_TAG_NAME=25]=`INVALID_TAG_NAME`,e[e.UNMATCHED_CLOSING_TAG=26]=`UNMATCHED_CLOSING_TAG`,e[e.UNCLOSED_TAG=27]=`UNCLOSED_TAG`,e}({});function ee(e){return e.type===0}function I(e){return e.type===1}function L(e){return e.type===2}function R(e){return e.type===3}function z(e){return e.type===4}function B(e){return e.type===5}function V(e){return e.type===6}function te(e){return e.type===7}function ne(e){return e.type===8}function re(e){return!!(e&&typeof e==`object`&&e.type===0)}function H(e){return!!(e&&typeof e==`object`&&e.type===1)}let ie=/[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/,ae=/([^\t-\r -\/:-@\[-\^`\{-~\x85\xA0-\xA7\xA9\xAB\xAC\xAE\xB0\xB1\xB6\xBB\xBF\xD7\xF7\u1680\u2000-\u200A\u2010-\u2029\u202F-\u203E\u2041-\u2053\u2055-\u205F\u2190-\u245F\u2500-\u2775\u2794-\u2BFF\u2E00-\u2E7F\u3000-\u3003\u3008-\u3020\u3030\uFD3E\uFD3F\uFE45\uFE46]*)/g,U={"001":[`H`,`h`],419:[`h`,`H`,`hB`,`hb`],AC:[`H`,`h`,`hb`,`hB`],AD:[`H`,`hB`],AE:[`h`,`hB`,`hb`,`H`],AF:[`H`,`hb`,`hB`,`h`],AG:[`h`,`hb`,`H`,`hB`],AI:[`H`,`h`,`hb`,`hB`],AL:[`h`,`H`,`hB`],AM:[`H`,`hB`],AO:[`H`,`hB`],AR:[`h`,`H`,`hB`,`hb`],AS:[`h`,`H`],AT:[`H`,`hB`],AU:[`h`,`hb`,`H`,`hB`],AW:[`H`,`hB`],AX:[`H`],AZ:[`H`,`hB`,`h`],BA:[`H`,`hB`,`h`],BB:[`h`,`hb`,`H`,`hB`],BD:[`h`,`hB`,`H`],BE:[`H`,`hB`],BF:[`H`,`hB`],BG:[`H`,`hB`,`h`],BH:[`h`,`hB`,`hb`,`H`],BI:[`H`,`h`],BJ:[`H`,`hB`],BL:[`H`,`hB`],BM:[`h`,`hb`,`H`,`hB`],BN:[`hb`,`hB`,`h`,`H`],BO:[`h`,`H`,`hB`,`hb`],BQ:[`H`],BR:[`H`,`hB`],BS:[`h`,`hb`,`H`,`hB`],BT:[`h`,`H`],BW:[`H`,`h`,`hb`,`hB`],BY:[`H`,`h`],BZ:[`H`,`h`,`hb`,`hB`],CA:[`h`,`hb`,`H`,`hB`],CC:[`H`,`h`,`hb`,`hB`],CD:[`hB`,`H`],CF:[`H`,`h`,`hB`],CG:[`H`,`hB`],CH:[`H`,`hB`,`h`],CI:[`H`,`hB`],CK:[`H`,`h`,`hb`,`hB`],CL:[`h`,`H`,`hB`,`hb`],CM:[`H`,`h`,`hB`],CN:[`H`,`hB`,`hb`,`h`],CO:[`h`,`H`,`hB`,`hb`],CP:[`H`],CR:[`h`,`H`,`hB`,`hb`],CU:[`h`,`H`,`hB`,`hb`],CV:[`H`,`hB`],CW:[`H`,`hB`],CX:[`H`,`h`,`hb`,`hB`],CY:[`h`,`H`,`hb`,`hB`],CZ:[`H`],DE:[`H`,`hB`],DG:[`H`,`h`,`hb`,`hB`],DJ:[`h`,`H`],DK:[`H`],DM:[`h`,`hb`,`H`,`hB`],DO:[`h`,`H`,`hB`,`hb`],DZ:[`h`,`hB`,`hb`,`H`],EA:[`H`,`h`,`hB`,`hb`],EC:[`h`,`H`,`hB`,`hb`],EE:[`H`,`hB`],EG:[`h`,`hB`,`hb`,`H`],EH:[`h`,`hB`,`hb`,`H`],ER:[`h`,`H`],ES:[`H`,`hB`,`h`,`hb`],ET:[`hB`,`hb`,`h`,`H`],FI:[`H`],FJ:[`h`,`hb`,`H`,`hB`],FK:[`H`,`h`,`hb`,`hB`],FM:[`h`,`hb`,`H`,`hB`],FO:[`H`,`h`],FR:[`H`,`hB`],GA:[`H`,`hB`],GB:[`H`,`h`,`hb`,`hB`],GD:[`h`,`hb`,`H`,`hB`],GE:[`H`,`hB`,`h`],GF:[`H`,`hB`],GG:[`H`,`h`,`hb`,`hB`],GH:[`h`,`H`],GI:[`H`,`h`,`hb`,`hB`],GL:[`H`,`h`],GM:[`h`,`hb`,`H`,`hB`],GN:[`H`,`hB`],GP:[`H`,`hB`],GQ:[`H`,`hB`,`h`,`hb`],GR:[`h`,`H`,`hb`,`hB`],GS:[`H`,`h`,`hb`,`hB`],GT:[`h`,`H`,`hB`,`hb`],GU:[`h`,`hb`,`H`,`hB`],GW:[`H`,`hB`],GY:[`h`,`hb`,`H`,`hB`],HK:[`h`,`hB`,`hb`,`H`],HN:[`h`,`H`,`hB`,`hb`],HR:[`H`,`hB`],HU:[`H`,`h`],IC:[`H`,`h`,`hB`,`hb`],ID:[`H`],IE:[`H`,`h`,`hb`,`hB`],IL:[`H`,`hB`],IM:[`H`,`h`,`hb`,`hB`],IN:[`h`,`H`],IO:[`H`,`h`,`hb`,`hB`],IQ:[`h`,`hB`,`hb`,`H`],IR:[`hB`,`H`],IS:[`H`],IT:[`H`,`hB`],JE:[`H`,`h`,`hb`,`hB`],JM:[`h`,`hb`,`H`,`hB`],JO:[`h`,`hB`,`hb`,`H`],JP:[`H`,`K`,`h`],KE:[`hB`,`hb`,`H`,`h`],KG:[`H`,`h`,`hB`,`hb`],KH:[`hB`,`h`,`H`,`hb`],KI:[`h`,`hb`,`H`,`hB`],KM:[`H`,`h`,`hB`,`hb`],KN:[`h`,`hb`,`H`,`hB`],KP:[`h`,`H`,`hB`,`hb`],KR:[`h`,`H`,`hB`,`hb`],KW:[`h`,`hB`,`hb`,`H`],KY:[`h`,`hb`,`H`,`hB`],KZ:[`H`,`hB`],LA:[`H`,`hb`,`hB`,`h`],LB:[`h`,`hB`,`hb`,`H`],LC:[`h`,`hb`,`H`,`hB`],LI:[`H`,`hB`,`h`],LK:[`H`,`h`,`hB`,`hb`],LR:[`h`,`hb`,`H`,`hB`],LS:[`h`,`H`],LT:[`H`,`h`,`hb`,`hB`],LU:[`H`,`h`,`hB`],LV:[`H`,`hB`,`hb`,`h`],LY:[`h`,`hB`,`hb`,`H`],MA:[`H`,`h`,`hB`,`hb`],MC:[`H`,`hB`],MD:[`H`,`hB`],ME:[`H`,`hB`,`h`],MF:[`H`,`hB`],MG:[`H`,`h`],MH:[`h`,`hb`,`H`,`hB`],MK:[`H`,`h`,`hb`,`hB`],ML:[`H`],MM:[`hB`,`hb`,`H`,`h`],MN:[`H`,`h`,`hb`,`hB`],MO:[`h`,`hB`,`hb`,`H`],MP:[`h`,`hb`,`H`,`hB`],MQ:[`H`,`hB`],MR:[`h`,`hB`,`hb`,`H`],MS:[`H`,`h`,`hb`,`hB`],MT:[`H`,`h`],MU:[`H`,`h`],MV:[`H`,`h`],MW:[`h`,`hb`,`H`,`hB`],MX:[`h`,`H`,`hB`,`hb`],MY:[`hb`,`hB`,`h`,`H`],MZ:[`H`,`hB`],NA:[`h`,`H`,`hB`,`hb`],NC:[`H`,`hB`],NE:[`H`],NF:[`H`,`h`,`hb`,`hB`],NG:[`H`,`h`,`hb`,`hB`],NI:[`h`,`H`,`hB`,`hb`],NL:[`H`,`hB`],NO:[`H`,`h`],NP:[`H`,`h`,`hB`],NR:[`H`,`h`,`hb`,`hB`],NU:[`H`,`h`,`hb`,`hB`],NZ:[`h`,`hb`,`H`,`hB`],OM:[`h`,`hB`,`hb`,`H`],PA:[`h`,`H`,`hB`,`hb`],PE:[`h`,`H`,`hB`,`hb`],PF:[`H`,`h`,`hB`],PG:[`h`,`H`],PH:[`h`,`hB`,`hb`,`H`],PK:[`h`,`hB`,`H`],PL:[`H`,`h`],PM:[`H`,`hB`],PN:[`H`,`h`,`hb`,`hB`],PR:[`h`,`H`,`hB`,`hb`],PS:[`h`,`hB`,`hb`,`H`],PT:[`H`,`hB`],PW:[`h`,`H`],PY:[`h`,`H`,`hB`,`hb`],QA:[`h`,`hB`,`hb`,`H`],RE:[`H`,`hB`],RO:[`H`,`hB`],RS:[`H`,`hB`,`h`],RU:[`H`],RW:[`H`,`h`],SA:[`h`,`hB`,`hb`,`H`],SB:[`h`,`hb`,`H`,`hB`],SC:[`H`,`h`,`hB`],SD:[`h`,`hB`,`hb`,`H`],SE:[`H`],SG:[`h`,`hb`,`H`,`hB`],SH:[`H`,`h`,`hb`,`hB`],SI:[`H`,`hB`],SJ:[`H`],SK:[`H`],SL:[`h`,`hb`,`H`,`hB`],SM:[`H`,`h`,`hB`],SN:[`H`,`h`,`hB`],SO:[`h`,`H`],SR:[`H`,`hB`],SS:[`h`,`hb`,`H`,`hB`],ST:[`H`,`hB`],SV:[`h`,`H`,`hB`,`hb`],SX:[`H`,`h`,`hb`,`hB`],SY:[`h`,`hB`,`hb`,`H`],SZ:[`h`,`hb`,`H`,`hB`],TA:[`H`,`h`,`hb`,`hB`],TC:[`h`,`hb`,`H`,`hB`],TD:[`h`,`H`,`hB`],TF:[`H`,`h`,`hB`],TG:[`H`,`hB`],TH:[`H`,`h`],TJ:[`H`,`h`],TL:[`H`,`hB`,`hb`,`h`],TM:[`H`,`h`],TN:[`h`,`hB`,`hb`,`H`],TO:[`h`,`H`],TR:[`H`,`hB`],TT:[`h`,`hb`,`H`,`hB`],TW:[`hB`,`hb`,`h`,`H`],TZ:[`hB`,`hb`,`H`,`h`],UA:[`H`,`hB`,`h`],UG:[`hB`,`hb`,`H`,`h`],UM:[`h`,`hb`,`H`,`hB`],US:[`h`,`hb`,`H`,`hB`],UY:[`h`,`H`,`hB`,`hb`],UZ:[`H`,`hB`,`h`],VA:[`H`,`h`,`hB`],VC:[`h`,`hb`,`H`,`hB`],VE:[`h`,`H`,`hB`,`hb`],VG:[`h`,`hb`,`H`,`hB`],VI:[`h`,`hb`,`H`,`hB`],VN:[`H`,`h`],VU:[`h`,`H`],WF:[`H`,`hB`],WS:[`h`,`H`],XK:[`H`,`hB`,`h`],YE:[`h`,`hB`,`hb`,`H`],YT:[`H`,`hB`],ZA:[`H`,`h`,`hb`,`hB`],ZM:[`h`,`hb`,`H`,`hB`],ZW:[`H`,`h`],"af-ZA":[`H`,`h`,`hB`,`hb`],"ar-001":[`h`,`hB`,`hb`,`H`],"ca-ES":[`H`,`h`,`hB`],"en-001":[`h`,`hb`,`H`,`hB`],"en-HK":[`h`,`hb`,`H`,`hB`],"en-IL":[`H`,`h`,`hb`,`hB`],"en-MY":[`h`,`hb`,`H`,`hB`],"es-BR":[`H`,`h`,`hB`,`hb`],"es-ES":[`H`,`h`,`hB`,`hb`],"es-GQ":[`H`,`h`,`hB`,`hb`],"fr-CA":[`H`,`h`,`hB`],"gl-ES":[`H`,`h`,`hB`],"gu-IN":[`hB`,`hb`,`h`,`H`],"hi-IN":[`hB`,`h`,`H`],"it-CH":[`H`,`h`,`hB`],"it-IT":[`H`,`h`,`hB`],"kn-IN":[`hB`,`h`,`H`],"ku-SY":[`H`,`hB`],"ml-IN":[`hB`,`h`,`H`],"mr-IN":[`hB`,`hb`,`h`,`H`],"pa-IN":[`hB`,`hb`,`h`,`H`],"ta-IN":[`hB`,`h`,`hb`,`H`],"te-IN":[`hB`,`h`,`H`],"zu-ZA":[`H`,`hB`,`hb`,`h`]};function oe(e,t){let n=``;for(let r=0;r<e.length;r++){let i=e.charAt(r);if(i===`j`){let a=0;for(;r+1<e.length&&e.charAt(r+1)===i;)a++,r++;let o=1+(a&1),s=a<2?1:3+(a>>1),c=se(t);for((c==`H`||c==`k`)&&(s=0);s-->0;)n+=`a`;for(;o-->0;)n=c+n}else n+=i===`J`?`H`:i}return n}function se(e){let t=e.hourCycle;if(t===void 0){let n=e;t=n.getHourCycles?.()[0]??n.hourCycles?.[0]}if(t)switch(t){case`h24`:return`k`;case`h23`:return`H`;case`h12`:return`h`;case`h11`:return`K`;default:throw Error(`Invalid hourCycle`)}let n=e.language,r;return n!==`root`&&(r=e.maximize().region),(U[`${n}-${r}`]||U[r||``]||U[n||``]||U[`${n}-001`]||U[`001`])[0].charAt(0)}let ce=RegExp(`^${ie.source}*`),le=RegExp(`${ie.source}*$`);function W(e,t){return{start:e,end:t}}let ue=!!Object.fromEntries,de=!!String.prototype.trimStart,fe=!!String.prototype.trimEnd,pe=ue?Object.fromEntries:function(e){let t={};for(let[n,r]of e)t[n]=r;return t},me=de?function(e){return e.trimStart()}:function(e){return e.replace(ce,``)},he=fe?function(e){return e.trimEnd()}:function(e){return e.replace(le,``)},ge=_e();function _e(){try{let e=/* @__PURE__ */ RegExp(`([^\\p{White_Space}\\p{Pattern_Syntax}]*)`,`yu`);if(e.exec(`a `)?.[1]===`a`)return e}catch{}return ae}function ve(e,t){return ge.lastIndex=t,ge.exec(e)[1]??``}function ye(e){if(e.length===0)return null;let t=1,n=1;for(let r=0;r<e.length;){let i=e.charCodeAt(r);switch(i){case 35:case 39:case 60:case 123:case 125:return null}if(i===10)t++,n=1,r++;else if(n++,i>=55296&&i<=56319&&r+1<e.length){let t=e.charCodeAt(r+1);r+=t>=56320&&t<=57343?2:1}else r++}return{offset:e.length,line:t,column:n}}var be=class{constructor(e,t={}){this.message=e,this.position={offset:0,line:1,column:1},this.ignoreTag=!!t.ignoreTag,this.locale=t.locale,this.requiresOtherClause=!!t.requiresOtherClause,this.shouldParseSkeletons=!!t.shouldParseSkeletons}parse(){if(this.offset()!==0)throw Error(`parser can only be used once`);if(this.message.length>0){let e=this.message.charCodeAt(0);if(e!==35&&e!==39&&e!==60&&e!==123&&e!==125){let e=ye(this.message);if(e){let t=this.clonePosition();return this.position=e,{val:[{type:0,value:this.message,location:W(t,this.clonePosition())}],err:null}}}}return this.parseMessage(0,``,!1)}parseMessage(e,t,n){let r=[];for(;!this.isEOF();){let i=this.char();if(i===123){let t=this.parseArgument(e,n);if(t.err)return t;r.push(t.val)}else if(i===125&&e>0)break;else if(i===35&&(t===`plural`||t===`selectordinal`)){let e=this.clonePosition();this.bump(),r.push({type:7,location:W(e,this.clonePosition())})}else if(i===60&&!this.ignoreTag&&this.peek()===47){if(n)break;return this.error(26,W(this.clonePosition(),this.clonePosition()))}else if(i===60&&!this.ignoreTag&&xe(this.peek()||0)){let n=this.parseTag(e,t);if(n.err)return n;r.push(n.val)}else{let n=this.parseLiteral(e,t);if(n.err)return n;r.push(n.val)}}return{val:r,err:null}}parseTag(e,t){let n=this.clonePosition();this.bump();let r=this.parseTagName();if(this.bumpSpace(),this.bumpIf(`/>`))return{val:{type:0,value:`<${r}/>`,location:W(n,this.clonePosition())},err:null};if(this.bumpIf(`>`)){let i=this.parseMessage(e+1,t,!0);if(i.err)return i;let a=i.val,o=this.clonePosition();if(this.bumpIf(`</`)){if(this.isEOF()||!xe(this.char()))return this.error(23,W(o,this.clonePosition()));let e=this.clonePosition();return r===this.parseTagName()?(this.bumpSpace(),this.bumpIf(`>`)?{val:{type:8,value:r,children:a,location:W(n,this.clonePosition())},err:null}:this.error(23,W(o,this.clonePosition()))):this.error(26,W(e,this.clonePosition()))}return this.error(27,W(n,this.clonePosition()))}return this.error(23,W(n,this.clonePosition()))}parseTagName(){let e=this.offset();for(this.bump();!this.isEOF()&&Ce(this.char());)this.bump();return this.message.slice(e,this.offset())}parseLiteral(e,t){let n=this.clonePosition(),r=``;for(;;){let n=this.tryParseQuote(t);if(n){r+=n;continue}let i=this.tryParseUnquoted(e,t);if(i){r+=i;continue}let a=this.tryParseLeftAngleBracket();if(a){r+=a;continue}break}let i=W(n,this.clonePosition());return{val:{type:0,value:r,location:i},err:null}}tryParseLeftAngleBracket(){return!this.isEOF()&&this.char()===60&&(this.ignoreTag||!Se(this.peek()||0))?(this.bump(),`<`):null}tryParseQuote(e){if(this.isEOF()||this.char()!==39)return null;switch(this.peek()){case 39:return this.bump(),this.bump(),`'`;case 123:case 60:case 62:case 125:break;case 35:if(e===`plural`||e===`selectordinal`)break;return null;default:return null}this.bump();let t=[this.char()];for(this.bump();!this.isEOF();){let e=this.char();if(e===39){if(this.peek()===39)t.push(39),this.bump();else{this.bump();break}}else t.push(e);this.bump()}return String.fromCodePoint(...t)}tryParseUnquoted(e,t){if(this.isEOF())return null;let n=this.char();return n===60||n===123||n===35&&(t===`plural`||t===`selectordinal`)||n===125&&e>0?null:(this.bump(),String.fromCodePoint(n))}parseArgument(e,t){let n=this.clonePosition();if(this.bump(),this.bumpSpace(),this.isEOF())return this.error(1,W(n,this.clonePosition()));if(this.char()===125)return this.bump(),this.error(2,W(n,this.clonePosition()));let r=this.parseIdentifierIfPossible().value;if(!r)return this.error(3,W(n,this.clonePosition()));if(this.bumpSpace(),this.isEOF())return this.error(1,W(n,this.clonePosition()));switch(this.char()){case 125:return this.bump(),{val:{type:1,value:r,location:W(n,this.clonePosition())},err:null};case 44:return this.bump(),this.bumpSpace(),this.isEOF()?this.error(1,W(n,this.clonePosition())):this.parseArgumentOptions(e,t,r,n);default:return this.error(3,W(n,this.clonePosition()))}}parseIdentifierIfPossible(){let e=this.clonePosition(),t=this.offset(),n=ve(this.message,t),r=t+n.length;return this.bumpTo(r),{value:n,location:W(e,this.clonePosition())}}parseArgumentOptions(e,t,n,r){let i=this.clonePosition(),a=this.parseIdentifierIfPossible().value,o=this.clonePosition();switch(a){case``:return this.error(4,W(i,o));case`number`:case`date`:case`time`:{this.bumpSpace();let e=null;if(this.bumpIf(`,`)){this.bumpSpace();let t=this.clonePosition(),n=this.parseSimpleArgStyleIfPossible();if(n.err)return n;let r=he(n.val);if(r.length===0)return this.error(6,W(this.clonePosition(),this.clonePosition()));e={style:r,styleLocation:W(t,this.clonePosition())}}let t=this.tryParseArgumentClose(r);if(t.err)return t;let i=W(r,this.clonePosition());if(e&&e.style.startsWith(`::`)){let t=me(e.style.slice(2));if(a===`number`){let r=this.parseNumberSkeletonFromString(t,e.styleLocation);return r.err?r:{val:{type:2,value:n,location:i,style:r.val},err:null}}{if(t.length===0)return this.error(10,i);let r=t;this.locale&&(r=oe(t,this.locale));let o={type:1,pattern:r,location:e.styleLocation,parsedOptions:this.shouldParseSkeletons?S(r):{}};return{val:{type:a===`date`?3:4,value:n,location:i,style:o},err:null}}}return{val:{type:a===`number`?2:a===`date`?3:4,value:n,location:i,style:e?.style??null},err:null}}case`plural`:case`selectordinal`:case`select`:{let i=this.clonePosition();if(this.bumpSpace(),!this.bumpIf(`,`))return this.error(12,W(i,{...i}));this.bumpSpace();let o=this.parseIdentifierIfPossible(),s=0;if(a!==`select`&&o.value===`offset`){if(!this.bumpIf(`:`))return this.error(13,W(this.clonePosition(),this.clonePosition()));this.bumpSpace();let e=this.tryParseDecimalInteger(13,14);if(e.err)return e;this.bumpSpace(),o=this.parseIdentifierIfPossible(),s=e.val}let c=this.tryParsePluralOrSelectOptions(e,a,t,o);if(c.err)return c;let l=this.tryParseArgumentClose(r);if(l.err)return l;let u=W(r,this.clonePosition());return a===`select`?{val:{type:5,value:n,options:pe(c.val),location:u},err:null}:{val:{type:6,value:n,options:pe(c.val),offset:s,pluralType:a===`plural`?`cardinal`:`ordinal`,location:u},err:null}}default:return this.error(5,W(i,o))}}tryParseArgumentClose(e){return this.isEOF()||this.char()!==125?this.error(1,W(e,this.clonePosition())):(this.bump(),{val:!0,err:null})}parseSimpleArgStyleIfPossible(){let e=0,t=this.clonePosition();for(;!this.isEOF();)switch(this.char()){case 39:{this.bump();let e=this.clonePosition();if(!this.bumpUntil(`'`))return this.error(11,W(e,this.clonePosition()));this.bump();break}case 123:e+=1,this.bump();break;case 125:if(e>0)--e;else return{val:this.message.slice(t.offset,this.offset()),err:null};break;default:this.bump()}return{val:this.message.slice(t.offset,this.offset()),err:null}}parseNumberSkeletonFromString(e,t){let n=[];try{n=w(e)}catch{return this.error(7,t)}return{val:{type:0,tokens:n,location:t,parsedOptions:this.shouldParseSkeletons?P(n):{}},err:null}}tryParsePluralOrSelectOptions(e,t,n,r){let i=!1,a=[],o=/* @__PURE__ */ new Set,{value:s,location:c}=r;for(;;){if(s.length===0){let e=this.clonePosition();if(t!==`select`&&this.bumpIf(`=`)){let t=this.tryParseDecimalInteger(16,19);if(t.err)return t;c=W(e,this.clonePosition()),s=this.message.slice(e.offset,this.offset())}else break}if(o.has(s))return this.error(t===`select`?21:20,c);s===`other`&&(i=!0),this.bumpSpace();let r=this.clonePosition();if(!this.bumpIf(`{`))return this.error(t===`select`?17:18,W(this.clonePosition(),this.clonePosition()));let l=this.parseMessage(e+1,t,n);if(l.err)return l;let u=this.tryParseArgumentClose(r);if(u.err)return u;a.push([s,{value:l.val,location:W(r,this.clonePosition())}]),o.add(s),this.bumpSpace(),{value:s,location:c}=this.parseIdentifierIfPossible()}return a.length===0?this.error(t===`select`?15:16,W(this.clonePosition(),this.clonePosition())):this.requiresOtherClause&&!i?this.error(22,W(this.clonePosition(),this.clonePosition())):{val:a,err:null}}tryParseDecimalInteger(e,t){let n=1,r=this.clonePosition();this.bumpIf(`+`)||this.bumpIf(`-`)&&(n=-1);let i=!1,a=0;for(;!this.isEOF();){let e=this.char();if(e>=48&&e<=57)i=!0,a=a*10+(e-48),this.bump();else break}let o=W(r,this.clonePosition());return i?(a*=n,Number.isSafeInteger(a)?{val:a,err:null}:this.error(t,o)):this.error(e,o)}offset(){return this.position.offset}isEOF(){return this.offset()===this.message.length}clonePosition(){return{offset:this.position.offset,line:this.position.line,column:this.position.column}}char(){let e=this.position.offset;if(e>=this.message.length)throw Error(`out of bound`);let t=this.message.codePointAt(e);if(t===void 0)throw Error(`Offset ${e} is at invalid UTF-16 code unit boundary`);return t}error(e,t){return{val:null,err:{kind:e,message:this.message,location:t}}}bump(){if(this.isEOF())return;let e=this.char();e===10?(this.position.line+=1,this.position.column=1,this.position.offset+=1):(this.position.column+=1,this.position.offset+=e<65536?1:2)}bumpIf(e){let t=this.offset();if(this.message.slice(t,t+e.length)===e){for(let t=0;t<e.length;t++)this.bump();return!0}return!1}bumpUntil(e){let t=this.offset(),n=this.message.indexOf(e,t);return n>=0?(this.bumpTo(n),!0):(this.bumpTo(this.message.length),!1)}bumpTo(e){if(this.offset()>e)throw Error(`targetOffset ${e} must be greater than or equal to the current offset ${this.offset()}`);for(e=Math.min(e,this.message.length);;){let t=this.offset();if(t===e)break;if(t>e)throw Error(`targetOffset ${e} is at invalid UTF-16 code unit boundary`);if(this.bump(),this.isEOF())break}}bumpSpace(){for(;!this.isEOF()&&we(this.char());)this.bump()}peek(){if(this.isEOF())return null;let e=this.char(),t=this.offset();return this.message.charCodeAt(t+(e>=65536?2:1))??null}};function xe(e){return e>=97&&e<=122||e>=65&&e<=90}function Se(e){return xe(e)||e===47}function Ce(e){return e===45||e===46||e>=48&&e<=57||e===95||e>=97&&e<=122||e>=65&&e<=90||e==183||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8255&&e<=8256||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function we(e){return e>=9&&e<=13||e===32||e===133||e>=8206&&e<=8207||e===8232||e===8233}function Te(e){e.forEach(e=>{if(delete e.location,B(e)||V(e))for(let t in e.options)delete e.options[t].location,Te(e.options[t].value);else L(e)&&re(e.style)||(R(e)||z(e))&&H(e.style)?delete e.style.location:ne(e)&&Te(e.children)})}function Ee(e,t={}){t={shouldParseSkeletons:!0,requiresOtherClause:!0,...t};let n=new be(e,t).parse();if(n.err){let e=SyntaxError(F[n.err.kind]);throw e.location=n.err.location,e.originalMessage=n.err.message,e}return t?.captureLocation||Te(n.val),n.val}var De=class extends Error{constructor(e,t,n){super(e),this.code=t,this.originalMessage=n}toString(){return`[formatjs Error: ${this.code}] ${this.message}`}},Oe=class extends De{constructor(e,t,n,r){super(`Invalid values for "${e}": "${t}". Options are "${Object.keys(n).join(`", "`)}"`,`INVALID_VALUE`,r)}},ke=class extends De{constructor(e,t,n){super(`Value for "${e}" must be of type ${t}`,`INVALID_VALUE`,n)}},Ae=class extends De{constructor(e,t){super(`The intl string context variable "${e}" was not provided to the string "${t}"`,`MISSING_VALUE`,t)}};function je(e){return e.length<2?e:e.reduce((e,t)=>{let n=e[e.length-1];return!n||n.type!==0||t.type!==0?e.push(t):n.value+=t.value,e},[])}function Me(e){return typeof e==`function`}function Ne(e,t,n,r,i,a,o){if(e.length===1&&ee(e[0]))return[{type:0,value:e[0].value}];let s=[];for(let c of e){if(ee(c)){s.push({type:0,value:c.value});continue}if(te(c)){typeof a==`number`&&s.push({type:0,value:n.getNumberFormat(t).format(a)});continue}let{value:e}=c;if(!(i&&e in i))throw new Ae(e,o);let l=i[e];if(I(c)){(!l||typeof l==`string`||typeof l==`number`||typeof l==`bigint`)&&(l=typeof l==`string`||typeof l==`number`||typeof l==`bigint`?String(l):``),s.push({type:typeof l==`string`?0:1,value:l});continue}if(R(c)){let e=typeof c.style==`string`?r.date[c.style]:H(c.style)?c.style.parsedOptions:void 0;s.push({type:0,value:n.getDateTimeFormat(t,e).format(l)});continue}if(z(c)){let e=typeof c.style==`string`?r.time[c.style]:H(c.style)?c.style.parsedOptions:r.time.medium;s.push({type:0,value:n.getDateTimeFormat(t,e).format(l)});continue}if(L(c)){let e=typeof c.style==`string`?r.number[c.style]:re(c.style)?c.style.parsedOptions:void 0;if(e&&e.scale){let t=e.scale||1;if(typeof l==`bigint`){if(!Number.isInteger(t))throw TypeError(`Cannot apply fractional scale ${t} to bigint value. Scale must be an integer when formatting bigint.`);l*=BigInt(t)}else l*=t}s.push({type:0,value:n.getNumberFormat(t,e).format(l)});continue}if(ne(c)){let{children:e,value:l}=c,u=i[l];if(!Me(u))throw new ke(l,`function`,o);let d=u(Ne(e,t,n,r,i,a).map(e=>e.value));Array.isArray(d)||(d=[d]),s.push(...d.map(e=>({type:typeof e==`string`?0:1,value:e})))}if(B(c)){let e=l,a=(Object.prototype.hasOwnProperty.call(c.options,e)?c.options[e]:void 0)||c.options.other;if(!a)throw new Oe(c.value,l,Object.keys(c.options),o);s.push(...Ne(a.value,t,n,r,i));continue}if(V(c)){let e=`=${l}`,a=Object.prototype.hasOwnProperty.call(c.options,e)?c.options[e]:void 0;if(!a){if(!Intl.PluralRules)throw new De(`Intl.PluralRules is not available in this environment.
|
|
2
|
-
Try polyfilling it using "@formatjs/intl-pluralrules"
|
|
3
|
-
`,`MISSING_INTL_API`,o);let e=typeof l==`bigint`?Number(l):l,r=n.getPluralRules(t,{type:c.pluralType}).select(e-(c.offset||0));a=(Object.prototype.hasOwnProperty.call(c.options,r)?c.options[r]:void 0)||c.options.other}if(!a)throw new Oe(c.value,l,Object.keys(c.options),o);let u=typeof l==`bigint`?Number(l):l;s.push(...Ne(a.value,t,n,r,i,u-(c.offset||0)));continue}}return je(s)}function Pe(e,t){return t?{...e,...t,...Object.keys(e).reduce((n,r)=>(n[r]={...e[r],...t[r]},n),{})}:e}function Fe(e,t){return t?Object.keys(e).reduce((n,r)=>(n[r]=Pe(e[r],t[r]),n),{...e}):e}function Ie(e){return{create(){return{get(t){return e[t]},set(t,n){e[t]=n}}}}}function Le(e={number:{},dateTime:{},pluralRules:{}}){return{getNumberFormat:l((...e)=>new Intl.NumberFormat(...e),{cache:Ie(e.number),strategy:b.variadic}),getDateTimeFormat:l((...e)=>new Intl.DateTimeFormat(...e),{cache:Ie(e.dateTime),strategy:b.variadic}),getPluralRules:l((...e)=>new Intl.PluralRules(...e),{cache:Ie(e.pluralRules),strategy:b.variadic})}}var Re=class e{constructor(t,n=e.defaultLocale,r,i){if(this.formatterCache={number:{},dateTime:{},pluralRules:{}},this.format=(e=>{let t=this.formatToParts(e);if(t.length===1)return t[0].value;let n=t.reduce((e,t)=>(!e.length||t.type!==0||typeof e[e.length-1]!=`string`?e.push(t.value):e[e.length-1]+=t.value,e),[]);return n.length<=1?n[0]||``:n}),this.formatToParts=(e=>Ne(this.ast,this.locales,this.formatters,this.formats,e,void 0,this.message)),this.resolvedOptions=()=>({locale:this.resolvedLocale?.toString()||Intl.NumberFormat.supportedLocalesOf(this.locales)[0]}),this.getAst=()=>this.ast,this.locales=n,this.resolvedLocale=e.resolveLocale(n),typeof t==`string`){if(this.message=t,!e.__parse)throw TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`");let{...n}=i||{};this.ast=e.__parse(t,{...n,locale:this.resolvedLocale})}else this.ast=t;if(!Array.isArray(this.ast))throw TypeError(`A message must be provided as a String or AST.`);this.formats=Fe(e.formats,r),this.formatters=i&&i.formatters||Le(this.formatterCache)}static{this.memoizedDefaultLocale=null}static get defaultLocale(){return e.memoizedDefaultLocale||=new Intl.NumberFormat().resolvedOptions().locale,e.memoizedDefaultLocale}static{this.resolveLocale=e=>{if(Intl.Locale===void 0)return;let t=Intl.NumberFormat.supportedLocalesOf(e);return t.length>0?new Intl.Locale(t[0]):new Intl.Locale(typeof e==`string`?e:e[0])}}static{this.__parse=Ee}static{this.formats={number:{integer:{maximumFractionDigits:0},currency:{style:`currency`},percent:{style:`percent`}},date:{short:{month:`numeric`,day:`numeric`,year:`2-digit`},medium:{month:`short`,day:`numeric`,year:`numeric`},long:{month:`long`,day:`numeric`,year:`numeric`},full:{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`}},time:{short:{hour:`numeric`,minute:`numeric`},medium:{hour:`numeric`,minute:`numeric`,second:`numeric`},long:{hour:`numeric`,minute:`numeric`,second:`numeric`,timeZoneName:`short`},full:{hour:`numeric`,minute:`numeric`,second:`numeric`,timeZoneName:`short`}}}}},ze=/* @__PURE__ */ e((e=>{
|
|
4
|
-
/**
|
|
5
|
-
* @license React
|
|
6
|
-
* react.production.js
|
|
7
|
-
*
|
|
8
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
9
|
-
*
|
|
10
|
-
* This source code is licensed under the MIT license found in the
|
|
11
|
-
* LICENSE file in the root directory of this source tree.
|
|
12
|
-
*/
|
|
13
|
-
var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`),r={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},i=Object.assign,a={};function o(e,t,n){this.props=e,this.context=t,this.refs=a,this.updater=n||r}o.prototype.isReactComponent={},o.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},o.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function s(){}s.prototype=o.prototype;function c(e,t,n){this.props=e,this.context=t,this.refs=a,this.updater=n||r}var l=c.prototype=new s;l.constructor=c,i(l,o.prototype),l.isPureReactComponent=!0,Array.isArray;var u=Object.prototype.hasOwnProperty;function d(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}e.Fragment=n,e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)u.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return d(e,a,i)}})),Be=(/* @__PURE__ */ e(((e,t)=>{t.exports=ze()})))();let Ve={en:{account:/* @__PURE__ */ JSON.parse(`{"account":"Account","noAccount":"No account page","noAccountDescription":"This app has no account page for you.","signInPolicy":"Sign-in policy","couldNotReadMethods":"Could not read your sign-in methods","couldNotReadProfile":"Could not read your profile","profile":"Profile","profileDescription":"Your name as others see it in this app, and the address you sign in with.","email":"Email","changeName":"Change name","changeNameDescription":"The name others see on your comments, changes and invitations.","changeEmail":"Change email","changeEmailDescription":"We email a code to the new address. Once you enter it here, you sign in with that address.","newEmail":"New email","sendCode":"Send code","codeSentTo":"Enter the 6-digit code we emailed to {email}. It works for 5 minutes. No code comes when another account has the address.","code":"Code","otherAddress":"Use another address","theProvider":"the provider","loading":"Loading","backupCodes":"Backup codes","copied":"Copied","copy":"Copy","download":"Download","cancel":"Cancel","save":"Save","name":"Name","yourPassword":"Your password","passwordIsSet":"Sign in with your email address and this password. Changing it asks for the current one.","passwordNotSet":"You sign in without a password now. Set one to sign in with your email address and a password too; you stay signed in everywhere.","passwordForbidden":"Your admin turned passwords off for this app, so they cannot be used to sign in.","passwordStaff":"Staff signed in as someone cannot change their password.","passwordSaved":"Your password is saved.","changePassword":"Change password","setPassword":"Set a password","currentPassword":"Current password","newPassword":"New password","repeatPassword":"Repeat new password","atLeast":"At least {length} characters.","useAtLeast":"Use at least {length} characters.","passwordTooLong":"That password is too long.","passwordsDiffer":"The passwords are not the same.","continue":"Continue","on":"On","off":"Off","optional":"Optional","required":"Required","passkeys":"Passkeys","passkey":"Passkey","passkeysAllowed":"Sign in with Face ID, Touch ID, Windows Hello, your phone or a security key instead of a password.","passkeysRequired":"This app requires a passkey for every account. Sign in with Face ID, Touch ID, Windows Hello, your phone or a security key.","passkeysForbidden":"Your admin turned passkeys off for this app, so they cannot be used to sign in.","addedOn":"Added {date}","addedEarlier":"Added earlier","synced":"Synced across your devices","oneDevice":"On one device","rename":"Rename","remove":"Remove","keepLastPasskey":"Passkeys are required: add another one before removing this one.","addPasskey":"Add a passkey","renamePasskey":"Rename passkey","renamePasskeyDescription":"A name that tells you where this passkey lives, such as the device or password manager.","removePasskey":"Remove passkey?","removePasskeyDescription":"{name} will no longer sign you in here. It stays on the device until you delete it there.","thisPasskey":"This passkey","connectedAccounts":"Connected accounts","connectedAccountsDescription":"Sign in with these instead of your password. Connecting one asks you to sign in there; its address may differ from yours here.","connected":"Connected","connect":"Connect {name}","mailbox":"Mailbox","mailboxDescription":"Mail this app sends for you goes out from your own mailbox. Connecting one asks you to sign in there and allow sending mail; it cannot read your mail.","stopped":"Stopped {time}","ended":"Ended {time}","signedInUntil":"Signed in until {time}","devices":"Devices","devicesDescription":"The browsers and apps signed in to your account. To sign out this one, use Sign out in the menu.","couldNotReadDevices":"Could not read your devices","noDevices":"No device is signed in.","thisDevice":"This device","browserOn":"{browser} on {system}","aBrowserOn":"A browser on {system}","unknownDevice":"Unknown device","staffOf":"{operator} staff","staff":"Staff","signedInFromUntil":"Signed in {from}, until {until}","signOut":"Sign out","signOutDevice":"Sign out {name}?","signOutDeviceDescription":"It has to sign in again to use your account.","signOutOthers":"Sign out of all other devices","signOutOthersTitle":"Sign out of all other devices?","signOutOthersDescription":"Every other browser and app signed in to your account has to sign in again. This device stays signed in.","staffSignIns":"Staff sign-ins","staffSignInsDescription":"Each time staff of {operator} signed in as someone here, newest first.","noStaffSignIns":"No staff has signed in as anyone yet.","as":"as","qrCode":"QR code for your authenticator app","twoFactor":"Two-factor authentication","twoFactorAllowed":"Ask for a second step after your password or an emailed sign-in code: a code from an authenticator app, or one emailed to you. A passkey needs no second step.","twoFactorRequired":"This app requires two-factor authentication for every account. Turn it on to keep using the app.","twoFactorForbidden":"Your admin turned two-factor authentication off for this app.","twoFactorOnWithApp":"Signing in with a password or an emailed sign-in code also asks for a code from your authenticator app. Backup codes work when you do not have the app.","twoFactorOnWithAppOrMail":"Signing in with a password or an emailed sign-in code also asks for a code from your authenticator app, or one emailed to you. Backup codes work when you do not have the app.","twoFactorOnWithMail":"Signing in with a password or an emailed sign-in code also asks for a code emailed to you.","turnOn":"Turn on","turnOff":"Turn off","addAuthenticator":"Add an authenticator app","newBackupCodes":"New backup codes","twoFactorIsRequired":"This app requires two-factor authentication.","turnOffTitle":"Turn off two-factor authentication?","turnOffDescription":"Signing in then needs only your password or an emailed code. Your backup codes stop working.","newCodesTitle":"Make new backup codes?","newCodesDescription":"Your current backup codes stop working, and you get ten new ones.","makeNewCodes":"Make new codes","yourNewCodes":"Your new backup codes","keepCodesSafe":"Keep them somewhere safe: each one signs you in once if you lose your phone. They are not shown again.","savedCodes":"I saved my backup codes","authenticatorApp":"Authenticator app","authenticatorAppDescription":"A code from an app such as Google Authenticator, Microsoft Authenticator or 1Password. Comes with backup codes.","emailedCode":"Emailed code","emailedCodeDescription":"A code mailed to your address each time you sign in with a password or an emailed sign-in code.","twoFactorIsOn":"Two-factor authentication is on. Keep these backup codes somewhere safe: each one signs you in once if you lose your phone. They are not shown again.","scanCode":"Scan this code with your authenticator app, then enter the 6-digit code it shows.","cannotScan":"Can't scan it? Enter this key in the app:","codeFromApp":"Code from the app","secondStep":"Second step","password":"Password","passwordDescription":"Sign in with the email address and a password.","emailedSignInCode":"Emailed sign-in code","emailedSignInCodeDescription":"Sign in with a one-time code mailed to the account's address.","passkeysPolicyDescription":"Sign in with Face ID, Touch ID, Windows Hello, a phone or a security key. Required: everyone adds one after signing in.","twoFactorPolicyDescription":"A code from an authenticator app, or an emailed one, after a password or an emailed sign-in code. Required: everyone turns it on after signing in.","staffAccess":"Staff sign-in as a person","staffAccessDescription":"The team that runs this app signs in as someone to help them, with a reason, for a short session. Each time is in the log below; with \\"Email the person\\" they are told too.","emailThePerson":"Email the person","platformSignIn":"Sign-in through the platform","platformSignInDescription":"The sign-in provider the platform that runs this app adds, for people who have an account here already. It never creates accounts.","platformSignInWith":"Sign in with {provider} through the platform","codeNeedsMail":"Needs mail settings (PROTOBASE_SMTP_URL and PROTOBASE_MAIL_FROM): off until they are set.","passwordStaysOn":"Without mail settings, password sign-in stays on so nobody is locked out.","staffNeedsMail":"Needs mail settings (PROTOBASE_SMTP_URL and PROTOBASE_MAIL_FROM): staff cannot sign in until they are set.","platformOff":"Off while passkeys or two-factor authentication are required: it skips the second step.","appliesAs":"Applies as {rule} for now.","lastSaved":"Last saved on {time}.","lastSavedBy":"Last saved by {name} on {time}.","neverChanged":"Never changed: this is the app's default.","reset":"Reset","couldNotReadStaffSignIns":"Could not read the staff sign-ins","couldNotReadPolicy":"Could not read the sign-in policy","policySaved":"Saved. It applies to every sign-in from now on.","policySubtitle":"How people sign in to this app. Signed-in people keep their session, and are asked for what is newly required within 15 minutes.","mcpAddress":"MCP address","mcpAddressDescription":"Add this address to an AI assistant or code editor that speaks MCP, as a custom connector or remote MCP server. It opens this app in your browser, where you sign in and allow it; it then works with your access.","copyMcpAddress":"Copy the MCP address","addToClaude":"Add to Claude","deleteAccount":"Delete account","deleteAccountDescription":"Delete your account and sign out everywhere. You can no longer sign in with it, and this cannot be undone.","deleteAccountStaff":"Staff signed in as someone cannot delete their account.","deleteAccountQuestion":"Delete your account?","deleteAccountWarning":"Your account, its sign-in methods and every device signed in to it are deleted. This cannot be undone.","deleteAccountPassword":"Enter your password to confirm.","deleteAccountConfirm":"Delete my account","deleteAccountLastAdmin":"You are the last admin of this app. Make someone else an admin first.","deleteAccountLocked":"This account is locked, so it cannot be deleted."}`),"action-card":{cancel:`Cancel`},"activity-chart":{day:`Day`,week:`Week`},app:{notFound:`Not found`,noResource:`There is no resource called {name}.`,somethingWentWrong:`Something went wrong`,signInPolicy:`Sign-in policy`,adminsOnly:`Admins only`,onlyAdminPolicy:`Only an admin can change how people sign in.`,ownersOnly:`Owners and admins only`,onlyOwners:`Only the organization's owners and admins manage its members.`,chooseResource:`Choose a resource`,pickFromSidebar:`Pick one from the sidebar.`,nothingHere:`There is nothing at this address.`,noPage:`There is no page called {page}.`,assistant:`Assistant`,operationFailed:`Operation {index} ({label}) failed: {message} Nothing was saved.`,nothingSaved:`{message} Nothing was saved.`,admin:`Admin`,new:`New`,loadingRecord:`Loading record`,noComponent:`No component is registered as {component}. Export it from protobase.ui.tsx, or load the plugin that provides it.`,choose:`Choose...`,fileMissing:`The file is missing from storage`,chooseFileFor:`Choose a file for {label}`,notUploaded:`Not uploaded`,uploadingLabel:`Uploading {label}`,uploading:`Uploading… {percent}%`,replace:`Replace`,remove:`Remove`,dropFile:`Drop a file here or`,chooseFile:`Choose a file`,average:`Average <lower>{label}</lower>`,pages:`Pages`,account:`Account`,sales:`Sales`,crm:`CRM`,catalog:`Catalog`,inventory:`Inventory`,hr:`HR`,cannotReach:`Cannot reach {label}`,searchPlural:`Search {plural}`,couldNotLoadOptions:`Could not load the options`,noMatches:`No matches`,loading:`Loading`,leaveTitle:`Leave without saving?`,leaveDescription:`You have unsaved changes on this page. They stay in this browser, and come back when you open the record again.`,leaveInputLost:`You have unsaved changes on this page. They are lost when you leave.`,stay:`Stay`,leave:`Leave`,reloadTitle:`Reload without saving?`,reloadDraftKept:`You have unsaved changes on this page. They stay in this browser, and come back after the page reloads.`,reloadInputLost:`You have unsaved changes on this page. They are lost when the page reloads.`,keepEditing:`Keep editing`,reload:`Reload`,show:`Show {label}`,hide:`Hide {label}`,couldNotShow:`Could not show the {label}`,setNewValue:`Set a new value`,noAnswer:`It did not answer.`,signInRefused:`It did not accept your sign-in: {message}`,loadingFrom:`Loading from {label}`,restWorks:`The rest of the app works as before.`,tryAgain:`Try again`,staffSession:`Staff session`,staffSignedIn:`{staff} is signed in as {user} until {until}. Reason: {reason}`,stopStaffSession:`Stop staff session`,open:`Open`,openLabel:`Open {label}`},"app-shell":{navigation:`Navigation`,resources:`Resources`,breadcrumb:`Breadcrumb`,tabs:`Tabs`,more:`More`,openNavigation:`Open navigation`,backTo:`Back to {label}`,search:`Search`,closeSearch:`Close search`,clearSearch:`Clear search`,globalSearch:`Global search`,searchResults:`Search results`,searching:`Searching`,noMatches:`No matches for “{query}”`,profileMenu:`Profile menu`,organizations:`Organizations`,roles:`Roles`,signIn:`Sign in`,signOut:`Sign out`,theme:`Theme`,light:`Light`,dark:`Dark`,system:`System`,recent:`Recent {plural}`,loading:`Loading...`,couldNotLoad:`Could not load`,viewAll:`View all`,couldNotSearch:`Could not search <lower>{label}</lower>`},"app/change-confirm":{title:`Change {label}?`,change:`Change`,cancel:`Cancel`},"app/charts":{notSet:`Not set`,yes:`Yes`,no:`No`,nothingYet:`Nothing to chart yet.`,couldNotLoad:`Could not load the chart.`,weekOf:`Week of {day}`,other:`Other`,records:`{count} records`},"app/comments":{couldNotPost:`Could not post the comment`,comment:`Comment`,placeholder:`Write a comment, @ to mention someone`,couldNotLoad:`Could not load the comments`,showEarlier:`Show earlier comments`,noComments:`No comments yet.`},"app/confirm-sign-in":{confirmTitle:`Confirm it's you`,confirmWhy:`Showing this needs a passkey or your authenticator app in the last {minutes} minutes.`,usePasskey:`Use a passkey`,authenticatorCode:`Code from your authenticator app`,confirm:`Confirm`,nothingToConfirmWith:`Add a passkey or an authenticator app on your account page first.`},"app/create":{title:`New <lower>{noun}</lower>`,subject:`New <lower>{noun}</lower>`,submit:`Create <lower>{noun}</lower>`,notCreated:`Not created`,notSaved:`Not saved`,cancel:`Cancel`,setByDatabase:`Set by the database`,details:`Details`,otherFields:`Other fields`,notAllowed:`Not allowed`,cannotCreate:`You cannot create {plural}.`},"app/delete":{confirmTitle:`Delete {title}?`,confirmDescription:`This <lower>{noun}</lower> will be removed. This cannot be undone.`,cancel:`Cancel`,delete:`Delete`,changedTitle:`{title} was changed since you opened it`,changedDescription:`Someone saved this record in the meantime. Review what changed before you delete it.`,reviewChanges:`Review changes`,deleteAnyway:`Delete anyway`,noVisibleChanges:`No visible fields differ; the record was saved again with the same values.`,bulkConfirmTitle:`Delete {count, plural, one {# <lower>{noun}</lower>} other {# <lower>{plural}</lower>}}?`,bulkConfirmDescription:`This cannot be undone. Each record is deleted only if it has not changed since the list loaded; anything that changed is reported and kept.`,deleteCount:`Delete {count}`,deleting:`Deleting`,progress:`{done} of {total} done`,working:`Working`,deleted:`Deleted {count}`,deletedOf:`Deleted {count} of {total}`,kept:`{count} could not be deleted and were kept.`,done:`Done`,deletedToast:`{title} deleted`,undo:`Undo`,restored:`{title} restored`,alreadyBack:`{title} is already back`,couldNotRestore:`Could not restore {title}`,couldNotDelete:`Could not delete {title}`,changedSinceLoaded:`Changed since the list loaded, so it was kept.`,stillPointAt:`{plural} still point at this <lower>{noun}</lower>.`,show:`Show <lower>{plural}</lower>`},"app/displays":{table:`Table`,display:`Display`,sort:`Sort`,ascending:`ascending`,descending:`descending`,movedTo:`Moved to {column}`,orderChanged:`Order changed`,stayedIn:`Saved, still in {column}`,undo:`Undo`,couldNotUndo:`Could not undo`,couldNotLoadRows:`Could not load rows`,noPlural:`No {plural}`,noValue:`No <lower>{label}</lower>`,somethingWrong:`Something went wrong`,showMore:`Show more`,noDrop:`No board drop is registered as {drop}. Give it in boardDrops in protobase.ui.tsx, or load the plugin that provides it.`,noComponent:`No component is registered as {component}. Export it from protobase.ui.tsx, or load the plugin that provides it.`,pickedUp:`Picked up {title}.`,isOver:`{title} is over {over}.`,putBack:`{title} was put back.`,wasMovedTo:`{title} was moved to {to}.`,cancelled:`Moving {title} was cancelled.`,startsOn:`{title} starts on {day}.`,noColumn:`no column`,noDay:`no day`,placeOf:`{column}, place {place} of {count}`,place:`{column}, place {place}`,boardAcross:`To move a card to another column, press Space, move it with the left and right arrow keys, and press Space again to drop it there. Escape puts it back.`,boardAnywhere:`To move a card, press Space, move it with the up and down arrow keys within its column and the left and right arrow keys to another column, and press Space again to drop it there. Escape puts it back.`,boardWithin:`To move a card, press Space, move it with the up and down arrow keys within its column, and press Space again to drop it there. Escape puts it back.`,calendarInstructions:`To move an event to another day, press Space, move it a day with the left and right arrow keys or a week with the up and down arrow keys, and press Space again to drop it there. Escape puts it back.`,timelineInstructions:`To move a bar to other days, press Space, move it a day with the left and right arrow keys, and press Space again to drop it there. Escape puts it back.`,week:`Week`,month:`Month`,quarter:`Quarter`,calendarScale:`Calendar scale`,timelineScale:`Timeline scale`,previousPeriod:`Previous {unit}`,nextPeriod:`Next {unit}`,today:`Today`,capped:`Showing the first {limit} records of this {unit}. Narrow the filter to see the rest.`,nothingIn:`Nothing in this {unit}.`,noneMatch:`No {plural} match.`,list:`List`,showOneApproximate:`Show the {singular}, at an approximate position`,showOne:`Show the {singular}`,showMany:`Show {count} {plural}`,showManyApproximate:`Show {count} {plural}, at approximate positions`,showManySomeApproximate:`Show {count} {plural}, {near} at approximate positions`,zoomIn:`Zoom in on {count} {noun}`,needsStyle:`The map display needs a map style: set PROTOBASE_MAP_STYLE_URL.`,noneHere:`No {plural} in this part of the map.`,showAll:`Show all`,chosen:`Chosen {singular}`,approximatePosition:`Approximate position`,previous:`Previous`,next:`Next`,close:`Close`,features:`Features`,couldNotReorder:`Could not change the order`,couldNotMoveTo:`Could not move it to {to}`,moreHidden:`+{count} more`},"app/embedded-list":{firstOf:`The first {shown} of {total}.`,firstOfAbout:`The first {shown} of about {total}.`,open:`Open {singular}`,edit:`Edit {singular}`,viewAll:`View all`,couldNotLoad:`Could not load`,nothingYet:`Nothing here yet.`},"app/export":{excel:`Excel (.xlsx)`,csv:`CSV`,asShown:`As shown`,rawValues:`Raw values`,shownHint:`Labels, dates and numbers as the list shows them.`,rawHint:`Values as they are stored, such as keys and codes.`,counting:`Counting rows…`,moreThan:`more than 10,000 rows`,columns:`Columns`,moveUp:`Move {label} up`,moveDown:`Move {label} down`,selectedRows:`{count} selected {rows, plural, one {row} other {rows}}`,rowsInList:`Rows in the list`,selected:`Selected ({count})`,exportPlural:`Export <lower>{plural}</lower>`,cancel:`Cancel`,export:`Export`,format:`Format`,rows:`Rows`,listHint:`With the list’s filters, search and sort.`,values:`Values`,exports:`Exports {rows}.`,overLimit:` A file holds at most {limit} rows; the rest are left out.`,exporting:`Exporting <lower>{plural}</lower>`,rowsExported:`Rows exported`,doneOf:`{done} of {total} rows`,done:`{done} rows`,exported:`Exported {count} <lower>{plural}</lower>`,truncated:`{name}: the first {count} rows, as many as a file holds.`,couldNotExport:`Could not export <lower>{plural}</lower>`,cancelled:`The export was cancelled`,couldNotBuild:`The export could not be built: {message}`,workbook:`Excel workbook`,csvFile:`CSV file`},"app/field":{atLeastCharacters:`{label} needs at least {count} {n, plural, one {character} other {characters}}`,atMostCharacters:`{label} can have at most {count} {n, plural, one {character} other {characters}}`,wholeNumberAtLeast:`Enter a whole number of at least {min}`,wholeNumberAtMost:`Enter a whole number of at most {max}`,wholeNumber:`Enter a whole number`,number:`Enter a number`,wholeNumberBelow:`Enter a whole number below {below}`,decimalsBelow:`Enter a number with at most {scale, plural, one {# decimal} other {# decimals}}, below {below}`,date:`Enter a date`,timestamp:`Enter a date and time`,country:`Enter a two-letter country code, such as NL`,currency:`Enter a three-letter currency code, such as EUR`,uuid:`Enter a valid ID`,enum:`Choose one of the options`,relation:`Choose a record`,json:`Enter valid JSON`,required:`{label} is required`,checkField:`Check the marked field.`,checkFields:`Check {count} fields.`},"app/field-types":{fieldType:`The field type {name}`},"app/field-types/members":{needsOrganizations:`Choosing members needs organizations: turn them on in the auth config.`,couldNotLoadMembers:`Could not load the members.`,unknownMember:`Unknown member`,searchMembers:`Search members`},"app/gallery":{couldNotLoad:`Could not load the photos`,showAll:`Show all {count} photos`,showPhoto:`Show photo {index} of {count}`,details:`Details`,holderDetails:`{singular} details`,close:`Close`,previousPhoto:`Previous photo`,nextPhoto:`Next photo`,couldNotLoadOne:`Could not load the {singular}`,open:`Open {singular}`},"app/hand-order":{done:`Done`,reorder:`Reorder`,couldNotLoad:`Could not load`,nothingYet:`Nothing here yet.`,couldNotChange:`Could not change the order`,orderChanged:`Order changed`,undo:`Undo`,couldNotUndo:`Could not undo`,movedToPlace:`Moved to place {place}`,notMoved:`Left in its place`,noRule:`No drop rule is registered as {rule}. Give it in dropRules in protobase.ui.tsx, or load the plugin that provides it.`},"app/history":{create:`created this`,update:`changed`,delete:`deleted this`,undelete:`restored this`,database:`Database`,databaseRole:`Database ({role})`,changed:`changed`,changedThis:`changed this`,couldNotLoad:`Could not load the history`,noChanges:`No changes kept yet.`,showMore:`Show more`},"app/import":{import:`Import`,importPlural:`Import <lower>{plural}</lower>`,couldNotReadFile:`Could not read the file`,couldNotCheck:`Could not check the rows`,cancel:`Cancel`,next:`Next`,checkRows:`Check rows`,back:`Back`,checking:`Checking`,importRows:`Import {count} {rows, plural, one {row} other {rows}}`,cancelImport:`Cancel import`,done:`Done`,file:`File`,fileHint:`An Excel workbook (.xlsx) or a CSV file saved as UTF-8. Its first row names the columns.`,reading:`Reading {name}…`,theFile:`the file`,sheet:`Sheet`,create:`Create`,update:`Update`,upsert:`Create or update`,createHint:`Each row creates a record.`,updateHint:`Each row updates the record its value finds; a row that finds none is not imported.`,upsertHint:`Each row updates the record its value finds, or creates one when it finds none.`,doNotImport:`Do not import`,rows:`Rows`,whatEachRowDoes:`What each row does`,findBy:`Find records by`,chooseField:`Choose a field`,findByHint:`A field no two records share, such as the key or an email.`,foundInColumn:`Found in column`,chooseColumn:`Choose a column`,numbers:`Numbers`,dates:`Dates`,dayFirst:`Day first (31/12/2026)`,monthFirst:`Month first (12/31/2026)`,datesHint:`Dates written as 2026-12-31 read the same either way. Times without a zone are your own time.`,requiredMarked:`New records need the fields marked *.`,columns:`Columns`,emptyInFirstRows:`Empty in the first rows`,field:`Field`,fieldFor:`Field for {name}`,foundBy:`Found by`,pluralFoundBy:`{plural} found by`,noColumnFills:`No column fills {fields}, which new records need.`,rowsNotImported:`Rows not imported`,rowProblems:`Row {line}:`,andMore:`And {count} more rows, all in the file.`,checkingRows:`Checking rows… {count} read`,check:`Check`,toCreate:`To create`,toUpdate:`To update`,withProblems:`With problems`,firstRows:`First rows`,row:`Row`,problemRows:`Rows with problems, which are skipped`,download:`Download`,batches:`Rows are saved in batches of {size}. Cancelling, or an error, keeps the batches already saved; a row the server refuses is listed and the others are saved.`,stopping:`Stopping after this batch…`,saving:`Saving rows…`,rowsSaved:`Rows saved`,stopped:`The import stopped. The rows counted below were saved.`,cancelled:`Cancelled. The rows counted below were saved.`,summary:`Import summary`,created:`Created`,updated:`Updated`,skipped:`Skipped`,failed:`Failed`,notWrittenHint:`Skipped rows had problems in the file; the server refused the failed ones. The file holds each with the reason, to fix and import again.`,notImportedFile:`{name} - not imported.csv`,line:`Line`,problems:`Problems`,notNumber:`{cell} is not a number`,notWholeNumber:`{cell} is not a whole number`,tooLarge:`{cell} is too large`,notBoolean:`{cell} is not true or false (true, false, yes, no, 1 or 0)`,notDate:`{cell} is not a date (2026-04-03 or {dayFirst, select, true {day/month/year} other {month/day/year}})`,hasTime:`{cell} has a time of day; the field holds a date`,severalValues:`{cell} matches more than one value: {values}`,notOneOf:`{cell} is not one of {values}`,notText:`{cell} is true or false, not text`,emptyRequired:`is empty, and it is required`,noneHas:`no <lower>{singular}</lower> has {named}`,severalHave:`{count} <lower>{plural}</lower> have {named}`,notOneRecord:`Not one record: {found}`,nothingToUpdate:`Nothing to update: {found}`,fileNotUtf8:`The file is not UTF-8 text. Save it as "CSV UTF-8" and choose it again.`,noSheets:`The workbook has no sheets`,missingSheetPart:`The workbook names a sheet it does not hold`,notZip:`The file is not an Excel workbook (.xlsx): it is no ZIP archive`,zip64:`The workbook is too large to read: it is a ZIP64 archive`,compression:`The workbook's part {part} is compressed in a way that cannot be read (method {method})`,notWorkbook:`The file is not an Excel workbook (.xlsx): it has no {part}`,noSheetCalled:`The workbook has no sheet called {name}`,unreadable:`The file could not be read`,column:`Column {letters}`},"app/list":{noList:`There is no list called {name}.`,searchPlural:`Search <lower>{plural}</lower>`,search:`Search`,sort:`Sort`,filters:`Filters`,filtersCount:`Filters ({count})`,newRecord:`New <lower>{singular}</lower>`,export:`Export`,openRecord:`Open <lower>{singular}</lower>`,delete:`Delete`,exportCount:`Export {count}`,deleteCount:`Delete {count}`,actionCount:`{label} ({count})`,dragToSort:`Drag a row by its handle to move it. Every move is saved as you drop it.`,unreadableFilter:`The filter in the address could not be read`,couldNotLoadRows:`Could not load rows`,created:`{plural} created`,noMatchSearch:`No <lower>{plural}</lower> match “{search}”.`,noMatchFilters:`No <lower>{plural}</lower> match these filters.`,noMatch:`No <lower>{plural}</lower> match.`,noneYet:`No <lower>{plural}</lower> yet.`,clearSearch:`Clear search`,clearFilters:`Clear filters`},"app/list-edit":{changedBySomeoneElse:`Changed by someone else`,couldNotSave:`Could not save`},"app/live-update":{holdTitle:`Updating the app`,holdLine:`The new version is downloading. The app opens it in a moment.`},"app/map":{mapLayer:`Map layer`,map:`Map`},"app/meta-gate":{loading:`Loading`,cannotReach:`Cannot reach the API`,noAnswer:`The server did not answer. Is it running?`},"app/new-version":{title:`This app has been updated`,description:`Reload the page to use the new version, when it suits you.`,reload:`Reload`,reloadPage:`Reload page`,reloadPageHint:`Reload page to use the new version`,bannerTitle:`{app} updated`,bannerLine:`Save your work, then click here to reload. You may see errors until you do.`},"app/pages":{notFound:`Not found`,noPage:`There is no page called {page}.`,tabs:`Tabs`,noTab:`This page has no tab called {name}.`,cancel:`Cancel`,couldNotDraw:`{name} could not be drawn.`,noComponent:`No component is registered as {component}. Export it from protobase.ui.tsx, or load the plugin that provides it.`,unknownBlock:`{type} is not a block this version of the app knows.`,somethingWrong:`Something went wrong`,needsRecord:`Needs a record`,cannotChange:`You cannot change this record`,cannotDelete:`You cannot delete this record`,doesNotApply:`Does not apply to this record`,noHandler:`The app has no handler for "{name}"`,noInputComponent:`The app has no component "{component}" for input "{input}"`,done:`{label}: done`,doneOn:`{label}: done on {done}{skipped, plural, =0 {} other {, skipped # it does not apply to}}{failed, plural, =0 {} other {, failed on #}}`,failed:`{label} failed`,noAction:`No action "{name}"`,couldNotLoad:`Could not load`,nothingYet:`Nothing here yet.`,saved:`{label}: saved`,create:`Create`,save:`Save`,notSaved:`Not saved`,settings:`Settings`,couldNotCount:`Could not count`,required:`Required`,wholeNumber:`A whole number`,number:`A number`,dateFormat:`A date as YYYY-MM-DD`,atMost:`At most {max} characters`},"app/rank-after":{dependsOn:`{record} depends on {other}.`},"app/record":{details:`Details`,history:`History`,comments:`Comments`,summary:`Summary`,loading:`Loading`,fetching:`Fetching the record.`,noRecord:`This record does not exist, or you cannot see it.`,openingElsewhere:`Opening the record in its organization.`,couldNotLoad:`Could not load the record`,someoneElse:`Someone else`,justNow:`just now`,saved:`Saved`,save:`Save`,cancel:`Cancel`,unsavedChanges:`Unsaved changes`,notSaved:`Not saved`,linesChanged:`The lines were changed by someone else`,linesReloaded:`The lines were reloaded. Your new order is kept: Save again to apply it.`,unsavedKept:`You have unsaved changes to this record.`,continueEditing:`Continue editing`,discard:`Discard`,unsavedRestored:`Your unsaved changes were restored.`,keep:`Keep`,savingSubject:`Saving {subject}...`,subjectSaved:`{subject} saved`,changedBySomeoneElse:`Changed by someone else`,couldNotSave:`Could not save`,recordActions:`Record actions`,edit:`Edit`,delete:`Delete`,nothingYet:`Nothing here yet.`,couldNotLoadRelated:`Could not load`,relatedRecords:`Related records`,lineNumber:`Line {place}`,lineField:`{label}, line {place}`,tooManyLines:`This record has more than {limit} lines, so they show here read-only.`},"app/record-chart":{range:`Range`,hour:`Hour`,day:`Day`,week:`Week`,measure:`Per bucket`,average:`Average`,maximum:`Maximum`,noSamples:`No samples in this range.`,couldNotLoad:`Could not load the chart.`},"app/record-row":{couldNotLoad:`Could not load`,noneMatch:`No {plural} match.`,viewAll:`View all`,new:`New`,previous:`Previous {label}`,next:`Next {label}`,couldNotLoadYour:`Could not load your {plural}`,noneYet:`No {plural} yet.`},"app/related-cards":{showMore:`Show more`,showLess:`Show less`,couldNotLoad:`Could not load`,nothingYet:`Nothing here yet.`},"app/related-dots":{none:`No {plural}`},"app/runtime":{immediate:`Updates as soon as a release is out`,weekly:`Updates at a set time every week`,scheduled:`Updates at the time set for this release`,manual:`Updates only when asked to`,job:`Preparing the update`,build:`Building`,updatingNow:`Updating now`,started:`{stage}, started {ago}`,nextOn:`{policy}: next on {when}`,succeeded:`Updated to {version} on {when}`,unchanged:`The update to {version} on {when} changed nothing`,failed:`The update to {version} failed on {when}`,alreadyLatest:`Already on the latest version, or an update is running.`,onlyAdmin:`Only an admin can update the runtime.`,couldNotStart:`The update could not be started. Try again later.`,runtimeUpdate:`Runtime update`,close:`Close`,updating:`Updating…`,updateNow:`Update now`,currentVersion:`Current version`,latestVersion:`Latest version`,checkFailed:`The status could not be checked again; this is the last one read.`,updateAvailable:`Update available`,update:`Update`},"app/saved":{favorite:`Favorite`,couldNotLoadYour:`Could not load your {plural}`,noneYet:`No {plural} yet.`,somethingWrong:`Something went wrong`,couldNotTakeOff:`Could not take it off`,couldNotSave:`Could not save it`},"app/search":{search:`Search`,searchOne:`Search {name}`,searchTwo:`Search {first} and {second}`,searchMore:`Search {first}, {second} and more`,goTo:`Go to`,create:`Create`},"app/searches":{saveSearch:`Save search`,saveAsNew:`Save as new {noun}`,updateName:`Update {name}`,updateNameQuestion:`Update {name}?`,updateNounQuestion:`Update this {noun}?`,couldNotLoadYour:`Could not load your {plural}`,noneYet:`No {plural} yet.`,somethingWrong:`Something went wrong`,couldNotRename:`Could not rename the search`,renameTitle:`Rename {title}`,deleteTitle:`Delete {title}`,unreadableFilter:`A filter that cannot be read`,notFound:`Not found`,noResource:`There is no resource called {resource}.`,noSavedYet:`No {plural} yet. Filter the {list} and save the search.`,on:`On`,off:`Off`,saved:`{title} saved`,couldNotChange:`Could not change the search`,asMany:`As many {plural}`,more:`{count} more {noun}`,fewer:`{count} fewer {noun}`,cancel:`Cancel`,save:`Save`,optional:`Optional`,added:`Added`,removed:`Removed`,changed:`Changed`,filterChanges:`Filter changes`,firstOf:`The first {limit} of {total}.`,noPlural:`No {plural}.`,update:`Update`,addedRemoved:`{added} added, {removed} removed`,searchSaved:`Search saved`,openPlural:`Open <lower>{plural}</lower>`,couldNotSave:`Could not save the search`,couldNotTakeOff:`Could not take the search off`,searchUpdated:`Search updated`,couldNotUpdate:`Could not update the search`,noneMatch:`No {plural} match.`,noNew:`No new {plural} since you last looked.`,viewAll:`View all results`,filters:`Filters`},"assistant-dock":{askQuestion:`Ask a question...`,assistant:`Assistant`,reconnecting:`Reconnecting...`,empty:`Ask a question about this app or its data.`,noAnswer:`The assistant did not answer`,backendNoAnswer:`The assistant backend did not answer`,couldNotDraw:`It could not be drawn.`,cannotShowLive:`This version of the app cannot show it live.`},auth:{loading:`Loading`,cannotReach:`Cannot reach the server: {message}`,tryAgain:`Try again`,passwordChanged:`Your password is changed. Sign in with the new one.`,noAnswer:`The server did not answer`,code:`Code`,backupCode:`Backup code`,email:`Email`,password:`Password`,passwordOptional:`Password (optional)`,signIn:`Sign in`,signOut:`Sign out`,continue:`Continue`,backToSignIn:`Back to sign in`,useAnotherAddress:`Use another address`,checkEmail:`Check your email`,newCodeSent:`A new code is on its way. Only the newest one works.`,sendNewCode:`Send a new code`,sendNewCodeIn:`Send a new code in {seconds}s`,signInCodeDescription:`Enter the code we sent to sign in.`,signInCodeSent:`If {email} has an account, a 6-digit code is on its way. It works for 5 minutes, once.`,signUpCodeDescription:`Enter the code we sent to create your account.`,signUpCodeSent:`A 6-digit code is on its way to {email}. It works for 5 minutes, once. If the address has an account already, the email says so instead.`,noAdminTitle:`No admin yet`,noAdminDescription:`This Protobase has no users to sign in with.`,noAdminExplanation:`Run this in the terminal where Protobase runs, then reload. The first admin is created on the server, not in the browser, so nobody else can claim a fresh URL.`,copyCommand:`Copy command`,firstAdminExplanation:`The first user is added in the Protobase Cloud console, not in the browser, so nobody else can claim a fresh URL. Add yourself there, then reload.`,firstAdminLink:`Add your first user in the Protobase Cloud console`,reload:`Reload`,tooManyRequests:`Too many requests. Wait a minute and try again.`,tooManyAttempts:`Too many attempts. Wait a minute and try again.`,resetTitle:`Reset your password`,resetDescription:`We email you a link to choose a new one.`,sendResetLink:`Send reset link`,resetSent:`If {email} has an account, an email with a link to choose a new password is on its way. The link works once, for a limited time.`,linkExpiredTitle:`This link no longer works`,linkExpiredExplanation:`A reset link works once, for a limited time. Ask for a new one to choose your password.`,sendNewLink:`Send a new link`,passwordsDiffer:`The passwords are not the same.`,choosePassword:`Choose a new password`,atLeast:`At least {length} characters.`,useAtLeast:`Use at least {length} characters.`,passwordTooLong:`That password is too long.`,newPassword:`New password`,repeatPassword:`Repeat new password`,setPassword:`Set new password`,signingInWith:`Signing in with {name}`,takingYouTo:`Taking you to {name}…`,providerNotOffered:`Signing in with {name} is not offered here. Sign in another way.`,turnOnTwoFactor:`Turn on two-factor authentication`,addPasskey:`Add a passkey`,requiredForEveryAccount:`This app requires it for every account.`,passkeyExplanation:`A passkey signs you in with Face ID, Touch ID, Windows Hello, your phone or a security key. Your browser asks which one to use.`,couldNotReadAccount:`Could not read your account`,signInTitle:`Sign in to Protobase`,continueWith:`Continue with {name}`,signInWithPasskey:`Sign in with a passkey`,passkeyFor:`Use a passkey made for {domain}`,or:`or`,emailSignInCode:`Email me a sign-in code`,usePassword:`Use a password`,forgotPassword:`Forgot password?`,newHere:`New here?`,haveAccount:`Have an account?`,createAnAccount:`Create an account`,browse:`Continue without signing in`,notNow:`Not now`,detailsTitle:`Your details`,detailsDescription:`One last step to create your account.`,yourName:`Your name`,codeWasRight:`The code was right: the account is for {email}.`,withoutPassword:` Without one, you sign in with a code we email you.`,createAccount:`Create account`,codeToConfirm:`We email you a code to make sure the address is yours.`,emailCode:`Email me a code`,browseWithoutAccount:`Continue without an account`,staffTitle:`Staff sign-in`,staffUnavailable:`Staff of the team that runs this app cannot sign in as people here.`,signInAsPerson:`Sign in as a person`,forStaffOf:`For staff of {operator}, to help someone with this app.`,theirEmail:`Their email`,reason:`Reason`,reasonExample:`Ticket 4211: the invoice totals look wrong`,staffExplanation:`You sign in at {operator} with a passkey or a second step. The session is short, shows a banner, and cannot change their sign-in. The app's admins see who signed in as whom, and why.`,totpInstruction:`Enter the 6-digit code from your authenticator app.`,otpInstruction:`Enter the 6-digit code we emailed you. It works for 5 minutes.`,backupInstruction:`Enter one of the backup codes you saved when you set up the authenticator app. Each works once.`,twoFactorTitle:`Two-factor authentication`,twoFactorDescription:`One more step to sign in.`,codeToFinish:`We email you a code to finish signing in.`,trustBrowser:`Trust this browser`,trustBrowserFor:`Don't ask again in this browser for 30 days`,verify:`Verify`,useAuthenticator:`Use the authenticator app`,emailCodeInstead:`Email me a code instead`,useBackupCode:`Use a backup code`,admin:`Admin`},"auth/errors":{tooManyRequests:`Too many attempts. Wait a minute and try again.`,passkeyClosed:`The passkey prompt closed before it finished. Try again.`,wrongEmailOrPassword:`The email or password is not right.`,wrongPassword:`The password is not right.`,wrongCode:`The code is not right.`,wrongOrExpiredCode:`The code is not right, or has expired. Ask for a new one.`,codeExpired:`The code has expired. Ask for a new one.`,tooManyCodes:`Too many wrong codes. Ask for a new one.`,wrongBackupCode:`The backup code is not right, or was used before.`,tooManyCodesSignIn:`Too many wrong codes. Sign in again.`,locked:`Too many wrong codes. Wait 15 minutes and try again.`,tooSlow:`This sign-in took too long. Sign in again.`,passkeyNotFound:`This passkey is not registered for an account here.`,passkeyFailed:`The passkey could not be checked. Try again.`,passkeyAdded:`This passkey is added already.`,notFresh:`For this change, sign out and sign in again first.`,staffPermissionMissing:`Your staff account has no permission to sign in as people here.`,staffNotStrong:`Sign in to your staff account with a passkey or a second step, then try again.`,staffStale:`Your staff sign-in is too old. Sign in to your staff account again.`,staffExpired:`This staff sign-in took too long or was used already. Start again.`,staffProviderFailed:`The staff sign-in did not go through at the provider. Try again.`,staffUserUnavailable:`There is no account with this address, or it is disabled.`,staffReasonRequired:`Say why you sign in as this person, in at least 10 characters.`,staffForbidden:`Staff sign-in is turned off for this app.`,untrustedCallback:`This page is not on an address the server trusts.`,staffFailed:`The staff sign-in did not go through. Try again.`,passwordLeaked:`This password appears in a known data breach. Choose a different one.`,signupDisabled:`No account here belongs to this {name} account. Ask an admin to add you, or sign in another way.`,notLinked:`Your {name} account is not linked to your account here. Sign in another way, then connect {name} on your account page.`,linkedToOther:`This {name} account is linked to someone else here already.`,couldNotLink:`Your {name} account could not be linked. Try again.`,accessDenied:`{name} did not let you in, or you cancelled.`,domainNotAllowed:`{name} signed you in with an address this app does not accept from it. Sign in another way.`,providerFailed:`Signing in with {name} did not go through. Try again.`},calls:{accept:`Accept`,decline:`Decline`,startCall:`Start call`,join:`Join`,inProgress:`Call in progress`,people:`{count, plural, one {# person} other {# people}}`,joinCall:`Join call`,leave:`Leave`,microphone:`Microphone`,camera:`Camera`,shareScreen:`Share screen`,stopSharing:`Stop sharing`,muted:`Muted`,you:`You`,alone:`You are the only one here`,connecting:`Joining…`,reconnecting:`Reconnecting…`,full:`This call is full`,removed:`You were removed from this call`,ended:`The call ended`,refused:`You cannot join this call`,unavailable:`The call cannot be reached now. Try again in a moment.`,callAgain:`Join again`,noMicrophone:`Your microphone is blocked: allow it in the browser to be heard.`,noCamera:`Your camera is blocked: allow it in the browser to be seen.`,noDevices:`No camera or microphone was found.`,cannotConnect:`Cannot connect to {name}`,poorConnection:`Poor connection`,goodConnection:`Good connection`,sharing:`{name} is sharing their screen`,youAreSharing:`You are sharing your screen`,speaking:`Speaking`,preview:`Your camera before you join`,guestName:`{name} (guest)`,denied:`Nobody in the call let you in`,waiting:`Waiting for someone in the call to let you in…`,askToJoin:`Ask to join`,someone:`Someone in the call`,guests:`Guests`,waitingGuest:`{name} is waiting to join`,admit:`Let in`,deny:`Turn away`,remove:`Remove`,revoke:`Revoke`,newLink:`Create guest link`,copyLink:`Copy link`,copied:`Copied`,guestLinks:`Guest links`,noLinks:`No guest link yet. Anyone with a link waits here until someone in the call lets them in.`,inLobby:`Waiting to join`,guestsInCall:`Guests in the call`,guestsMaySend:`Guests may send`,sendAll:`Everything`,sendCamera:`Camera and mic`,sendMicrophone:`Mic only`,linkUntil:`Until {until}`,linkUntilEnd:`Until the call ends`,linkLasts:`The link works`,forAnHour:`For an hour`,addressesVisible:`In a call between browsers, a guest and the people in the call can see each other’s network addresses.`,guestRefused:`This could not be done: the guest or link is gone, the call is full, or guest links are off.`,close:`Close`,yourName:`Your name`,guestIntro:`You are invited to a call. Give your name, check your microphone and camera, and someone in the call lets you in.`,continue:`Continue`,youLeft:`You left the call`},carousel:{photoOf:`Photo {index} of {count}`,previousPhoto:`Previous photo`,nextPhoto:`Next photo`},chat:{message:`Message`,send:`Send`,today:`Today`,yesterday:`Yesterday`,newMessages:`New messages`,loadEarlier:`Load earlier messages`},"compact-table":{table:`Table`,noRows:`No rows.`,rows:`{count, plural, one {# row} other {# rows}}`,cutOff:`, cut off at the limit`},"data-grid":{unsortable:`This column can't be sorted`,columnMenu:`{header} column menu`,unpin:`Unpin`,pinToLeft:`Pin to left`,resizeColumn:`Resize {header} column`,selected:`{count} selected`,no:`No`,shownIn:`Shown in {zone}`,new:`New`,clearSelection:`Clear selection`,noRowsSelected:`No rows selected`,selectRow:`Select row {row}`,rowActions:`Row actions`,row:`row`,move:`Move {label}`,reorderInstructions:`To move a row, press Space on its handle, move it with the up and down arrow keys, and press Space again to drop it there. Escape puts it back.`,pickedUp:`Picked up {name}, row {row} of {rows}.`,isOver:`{name} is over row {row} of {rows}.`,droppedAt:`{name} was dropped at row {row} of {rows}.`,putBack:`{name} was put back.`,cancelled:`Moving {name} was cancelled. It is back at row {row}.`},"filter-panel":{today:`Today`,yesterday:`Yesterday`,"24h":`Last 24 hours`,"7d":`Last 7 days`,"30d":`Last 30 days`,"90d":`Last 90 days`,month:`This month`,quarter:`This quarter`,year:`This year`,unknownPreset:`The server offers the preset "{id}", which this UI does not know`,unsupported:`{id} (unsupported)`,remove:`Remove {label}`,clearAll:`Clear all`,searchIn:`Search <lower>{label}</lower>`,noMatches:`No matches`,moreFilters:`More filters`,filters:`Filters`,date:`Date`,showOnly:`Show only`,minimum:`{label} minimum`,maximum:`{label} maximum`},format:{rows:`{count} {n, plural, one {row} other {rows}}`,aboutRows:`about {count} rows`,secondsAgo:`{count} s ago`,minutesAgo:`{count} min ago`,hoursAgo:`{count} h ago`,daysAgo:`{count} d ago`,justNow:`just now`},forms:{loading:`Loading`,notFound:`Not found`,noForm:`There is no form at this address.`,setByDatabase:`Set by the database`,notSent:`Not sent`,send:`Send`,checkTooLong:`The check that you are not a bot took too long; send the form again`},"inline-child-table":{instructions:`To pick up a line, press space or enter on its drag handle. Use the up and down arrow keys to move it, space or enter to drop it, and escape to cancel. The row menu also has Move up and Move down.`,line:`line`,pickedUp:`Picked up {name}, line {place} of {count}.`,over:`{name} is over line {place} of {count}.`,dropped:`{name} was dropped at line {place} of {count}.`,droppedAtStart:`{name} was dropped where it started.`,cancelled:`Moving {name} was cancelled. It is back at line {place}.`,addLine:`Add line`,noLines:`No lines yet.`,moveUp:`Move up`,moveDown:`Move down`,removeLine:`Remove line`,dragToReorder:`Drag to reorder {name}`,actionsFor:`Actions for {name}`},invitations:{email:`Email`,invite:`Invite`,expired:`Expired`,until:`Until {date}`,sendAgain:`Send again`,revoke:`Revoke`,passLinkOn:`This app cannot send email, so pass this link on yourself. It works once, until the invitation expires: {link}`},lists:{showMore:`Show more`},live:{yes:`Yes`,no:`No`,shownIn:`Shown in {zone}`,fileMissing:`File missing`},markdown:{write:`Write`,preview:`Preview`,nothingToPreview:`Nothing to preview`},mentions:{peopleToMention:`People to mention`,noOneFound:`No one found`,couldNotSearch:`Could not search for people`},"notifications/bell":{notifications:`Notifications`,notificationsUnread:`Notifications, {count} unread`,notificationsManyUnread:`Notifications, more than 99 unread`,markAllRead:`Mark all as read`,empty:`No notifications yet`,showMore:`Show more`,loadFailed:`Your notifications could not be loaded.`,tryAgain:`Try again`,unread:`Unread`,pushOff:`Get notifications on this device, even when the app is closed.`,turnOn:`Turn on`,pushOn:`Notifications are on for this device.`,turnOff:`Turn off`,pushBlocked:`Notifications are blocked on this device. To get them, allow notifications for this site in your browser or device settings.`},organizations:{organizations:`Organizations`,manageOrganizations:`Manage organizations`,organization:`Organization`,members:`Members`,invitations:`Invitations`,owner:`Owner`,admin:`Admin`,member:`Member`,loading:`Loading`,name:`Name`,slug:`Slug`,save:`Save`,cancel:`Cancel`,delete:`Delete`,remove:`Remove`,create:`Create`,current:`Current`,open:`Open`,allOrganizations:`All organizations`,allOrganizationsDescription:`Every organization in the app. Your global roles let you work in any of them, with what those roles allow there. Opening one you are not a member of is written to the audit log.`,findOrganization:`Find an organization`,nameOrSlug:`Name or slug`,cannotChangeRole:`You cannot give or take away this role`,makeAccountToJoin:`Make your account for {email} to join.`,makeAccount:`Make your account for {email}.`,yourName:`Your name`,password:`Password`,passwordOptional:`Password (optional, {length}+ characters)`,passwordRequired:`Password ({length}+ characters)`,createAndJoin:`Create account and join`,createYourAccount:`Create your account`,invalidLink:`This invitation link is not valid`,invitation:`Invitation`,goToApp:`Go to the app`,invitesToApp:`{inviter} invites you to join {app}.`,invitesTo:`{inviter} invites you to {organization} as {role}.`,invitesToWith:`{inviter} invites you to {organization} as {role}, with {roles}.`,join:`Join {name}`,hasAccount:`{email} has an account already: sign in with it.`,signOut:`Sign out`,signInAs:`Sign in as {email}`,signInAsToJoin:`Sign in as {email} to join`,otherAddress:`This invitation is for {invited}, and you are signed in as {signedIn}.`,signOutToAccept:`Sign out to accept it`,inviteSomeone:`Invite someone`,inviteDescription:`They get an email with a link to join, or to make an account first. You can give the app roles you hold, and those your roles grant.`,organizationRole:`Organization role`,peopleInvited:`People invited to {organization}.`,notAcceptedYet:`Not accepted yet`,sendingAgain:`Sending again gives a new link, which replaces the earlier one.`,nobodyWaiting:`Nobody is waiting.`,roleOf:`Organization role of {name}`,couldNotReadMembers:`Could not read the members`,whoWorks:`Who works in {organization}, and with which roles.`,membersDescription:`Owners and admins manage the organization; app roles decide what each member sees and does in the app.`,details:`Details`,detailsEditable:`The name people see, and the slug that names it in links.`,detailsReadOnly:`Owners and admins can change these.`,guestLinks:`Guest links to calls`,guestLinksDescription:`Someone in a call can share a link that lets a person from outside wait in its lobby and join that one call once let in. Turning guest links off revokes every link and takes every guest out at once. Owners and admins can change this.`,guestLinksAllowed:`Allow guest links`,handOver:`Hand over`,handOverDescription:`Make another member the owner. You stay as an admin.`,newOwner:`New owner`,chooseMember:`Choose a member`,deleteOrganization:`Delete organization`,deleteDescription:`Takes the organization and its members and invitations away. Its records must be deleted first.`,deleteTitle:`Delete {name}?`,deleteConfirm:`Type its name to confirm. This cannot be undone.`,organizationName:`Organization name`,leave:`Leave`,leaveOwner:`An organization keeps an owner: hand it over before you leave, unless it has another owner.`,leaveMember:`You stop being a member, and lose your roles here.`,leaveName:`Leave {name}`,noOrganization:`You do not work in an organization now. Choose one under Organizations.`,youAre:`You are {role} here.`,throughGlobalRoles:`You work here through your global roles, without being a member.`,newOrganization:`New organization`,newOrganizationDescription:`You become its owner, with every role, and work in it once it is made.`,invitationsForYou:`Invitations for you`,invitationsForYouDescription:`Accept one to become a member and work there.`,accept:`Accept`,anOrganization:`An organization`,noAppRoles:`no app roles`,until:`Until {date}`,organizationsSubtitle:`You work in one organization at a time; what you see follows from your roles there.`,yourOrganizations:`Your organizations`,memberOf:`The organizations you are a member of.`,notMember:`You are not a member of an organization yet.`,couldNotReadOrganizations:`Could not read your organizations`},plugins:{loading:`Loading`,pluginsOff:`Plugins off`,pluginOff:`The plugin {plugin} is off: {reason}.`,dismiss:`Dismiss`,answered:`its plugin.json answered {status}`,couldNotLoad:`it could not be loaded: {reason}`,notObject:`its plugin.json is not an object`,noName:`its plugin.json names no plugin`,noApi:`its plugin.json names no plugin API`,noVersions:`its plugin.json names no Protobase versions`,noModule:`its plugin.json names no module`,badStylesheet:`its plugin.json names a stylesheet that is no URL`,badVersion:`its plugin.json has a version that is no text`},primitives:{close:`Close`,loading:`Loading`,remove:`Remove {label}`},"record-view":{savedDifferent:`{name} saved a different value`,example:`Example:`,savedThis:`saved this {ago}:`,keepMine:`Keep mine`,useTheirs:`Use theirs`,actions:`Actions`,saving:`Saving...`,savedAgo:`Saved {ago}`,notSavedRetrying:`Not saved, retrying`,lastEditedBy:`Last edited by`,lastUpdated:`Last updated {ago}`,viewing:`{count} viewing`,tabs:`Tabs`},roles:{couldNotReadRoles:`Could not read your roles`,couldNotSwitch:`Could not switch the role`},"side-panel":{close:`Close`},status:{setStatus:`Set a status`,editStatus:`Edit status`,availability:`Availability`,automatic:`Automatic`,busy:`Busy`,doNotDisturb:`Do not disturb`,doNotDisturbHint:`You get no push notifications; they wait in the bell.`,statusText:`Status`,statusPlaceholder:`Having lunch`,clearsAfter:`Clear after`,never:`Never`,thirtyMinutes:`30 minutes`,oneHour:`1 hour`,fourHours:`4 hours`,today:`Today`,thisWeek:`This week`,custom:`Choose a date and time`,clearsAt:`Clears at`,pickTime:`Choose a date and time still to come`,save:`Save`,cancel:`Cancel`,clear:`Clear status`,couldNotSave:`Could not save your status`,until:`Until {time}`,online:`Online`,away:`Away`},toasts:{dismiss:`Dismiss`},users:{inviteSomeone:`Invite someone`,inviteDescription:`They get an email with a link to make their account, with the roles you tick.`,notAcceptedYet:`Not accepted yet`,sendingAgain:`Sending again gives a new link, which replaces the earlier one.`,nobodyWaiting:`Nobody is waiting.`,addAnAccount:`Add an account`,addDescription:`Makes the account at once, with the address counted as verified. Without a password, the person signs in another way this app allows, such as an emailed code.`,email:`Email`,name:`Name`,password:`Password`,passwordOptional:`Password (optional, {length}+ characters)`,addAccount:`Add account`,couldNotReadRoles:`Could not read the roles`,people:`People`,peopleDescription:`Everyone with an account. Roles decide what each sees and does; someone blocked cannot sign in, and is signed out at once.`,findSomeone:`Find someone`,emailAddress:`Email address`,keepOneRole:`Keep at least one role.`,blocked:`Blocked`,unblock:`Unblock`,block:`Block`}},nl:{account:/* @__PURE__ */ JSON.parse(`{"account":"Account","noAccount":"Geen accountpagina","noAccountDescription":"Deze app heeft geen accountpagina voor je.","signInPolicy":"Inlogbeleid","couldNotReadMethods":"Kon je inlogmethoden niet lezen","couldNotReadProfile":"Kon je profiel niet lezen","profile":"Profiel","profileDescription":"Je naam zoals anderen die in deze app zien, en het adres waarmee je inlogt.","email":"E-mail","changeName":"Naam wijzigen","changeNameDescription":"De naam die anderen zien bij je opmerkingen, wijzigingen en uitnodigingen.","changeEmail":"E-mailadres wijzigen","changeEmailDescription":"We mailen een code naar het nieuwe adres. Zodra je die hier invult, log je in met dat adres.","newEmail":"Nieuw e-mailadres","sendCode":"Code versturen","codeSentTo":"Vul de code van 6 cijfers in die we naar {email} mailden. Die werkt 5 minuten. Heeft een ander account het adres, dan komt er geen code.","code":"Code","otherAddress":"Ander adres gebruiken","theProvider":"de provider","loading":"Laden","backupCodes":"Back-upcodes","copied":"Gekopieerd","copy":"Kopiëren","download":"Downloaden","cancel":"Annuleren","save":"Bewaren","name":"Naam","yourPassword":"Je wachtwoord","passwordIsSet":"Log in met je e-mailadres en dit wachtwoord. Wijzigen vraagt het huidige.","passwordNotSet":"Je logt nu in zonder wachtwoord. Stel er een in om ook met je e-mailadres en een wachtwoord in te loggen; je blijft overal ingelogd.","passwordForbidden":"Je beheerder heeft wachtwoorden uitgezet voor deze app, dus je kunt er niet mee inloggen.","passwordStaff":"Een medewerker die als iemand anders is ingelogd, kan diens wachtwoord niet wijzigen.","passwordSaved":"Je wachtwoord is bewaard.","changePassword":"Wachtwoord wijzigen","setPassword":"Wachtwoord instellen","currentPassword":"Huidig wachtwoord","newPassword":"Nieuw wachtwoord","repeatPassword":"Nieuw wachtwoord herhalen","atLeast":"Minstens {length} tekens.","useAtLeast":"Gebruik minstens {length} tekens.","passwordTooLong":"Dat wachtwoord is te lang.","passwordsDiffer":"De wachtwoorden zijn niet hetzelfde.","continue":"Doorgaan","on":"Aan","off":"Uit","optional":"Optioneel","required":"Verplicht","passkeys":"Passkeys","passkey":"Passkey","passkeysAllowed":"Log in met Face ID, Touch ID, Windows Hello, je telefoon of een beveiligingssleutel in plaats van een wachtwoord.","passkeysRequired":"Deze app vraagt een passkey voor elk account. Log in met Face ID, Touch ID, Windows Hello, je telefoon of een beveiligingssleutel.","passkeysForbidden":"Je beheerder heeft passkeys uitgezet voor deze app, dus je kunt er niet mee inloggen.","addedOn":"Toegevoegd {date}","addedEarlier":"Eerder toegevoegd","synced":"Gesynchroniseerd op je apparaten","oneDevice":"Op één apparaat","rename":"Naam wijzigen","remove":"Verwijderen","keepLastPasskey":"Passkeys zijn verplicht: voeg er nog een toe voordat je deze verwijdert.","addPasskey":"Passkey toevoegen","renamePasskey":"Naam van passkey wijzigen","renamePasskeyDescription":"Een naam die zegt waar deze passkey staat, zoals het apparaat of de wachtwoordbeheerder.","removePasskey":"Passkey verwijderen?","removePasskeyDescription":"Met {name} log je hier niet meer in. Die blijft op het apparaat tot je die daar verwijdert.","thisPasskey":"deze passkey","connectedAccounts":"Gekoppelde accounts","connectedAccountsDescription":"Log hiermee in in plaats van met je wachtwoord. Koppelen vraagt je daar in te loggen; het adres daar kan anders zijn dan hier.","connected":"Gekoppeld","connect":"{name} koppelen","mailbox":"Mailbox","mailboxDescription":"Mail die deze app voor je verstuurt, gaat uit vanuit je eigen mailbox. Koppelen vraagt je daar in te loggen en het versturen van mail toe te staan; je mail lezen kan de app niet.","stopped":"Gestopt {time}","ended":"Afgelopen {time}","signedInUntil":"Ingelogd tot {time}","devices":"Apparaten","devicesDescription":"De browsers en apps die op je account zijn ingelogd. Log hier uit met Uitloggen in het menu.","couldNotReadDevices":"Kon je apparaten niet lezen","noDevices":"Er is geen apparaat ingelogd.","thisDevice":"Dit apparaat","browserOn":"{browser} op {system}","aBrowserOn":"Een browser op {system}","unknownDevice":"Onbekend apparaat","staffOf":"Medewerker van {operator}","staff":"Medewerker","signedInFromUntil":"Ingelogd {from}, tot {until}","signOut":"Uitloggen","signOutDevice":"{name} uitloggen?","signOutDeviceDescription":"Dat moet opnieuw inloggen om je account te gebruiken.","signOutOthers":"Uitloggen op alle andere apparaten","signOutOthersTitle":"Uitloggen op alle andere apparaten?","signOutOthersDescription":"Elke andere browser en app die op je account is ingelogd, moet opnieuw inloggen. Dit apparaat blijft ingelogd.","staffSignIns":"Inlogs van medewerkers","staffSignInsDescription":"Elke keer dat een medewerker van {operator} hier als iemand anders inlogde, nieuwste eerst.","noStaffSignIns":"Nog geen medewerker heeft als iemand anders ingelogd.","as":"als","qrCode":"QR-code voor je authenticator-app","twoFactor":"Tweestapsverificatie","twoFactorAllowed":"Vraag een tweede stap na je wachtwoord of een gemailde inlogcode: een code uit een authenticator-app, of een die je gemaild krijgt. Een passkey heeft geen tweede stap nodig.","twoFactorRequired":"Deze app vraagt tweestapsverificatie voor elk account. Zet het aan om de app te blijven gebruiken.","twoFactorForbidden":"Je beheerder heeft tweestapsverificatie uitgezet voor deze app.","twoFactorOnWithApp":"Inloggen met een wachtwoord of een gemailde inlogcode vraagt ook een code uit je authenticator-app. Back-upcodes werken als je de app niet bij de hand hebt.","twoFactorOnWithAppOrMail":"Inloggen met een wachtwoord of een gemailde inlogcode vraagt ook een code uit je authenticator-app, of een die je gemaild krijgt. Back-upcodes werken als je de app niet bij de hand hebt.","twoFactorOnWithMail":"Inloggen met een wachtwoord of een gemailde inlogcode vraagt ook een code die je gemaild krijgt.","turnOn":"Aanzetten","turnOff":"Uitzetten","addAuthenticator":"Authenticator-app toevoegen","newBackupCodes":"Nieuwe back-upcodes","twoFactorIsRequired":"Deze app vraagt tweestapsverificatie.","turnOffTitle":"Tweestapsverificatie uitzetten?","turnOffDescription":"Inloggen vraagt dan alleen je wachtwoord of een gemailde code. Je back-upcodes werken niet meer.","newCodesTitle":"Nieuwe back-upcodes maken?","newCodesDescription":"Je huidige back-upcodes werken niet meer, en je krijgt tien nieuwe.","makeNewCodes":"Nieuwe codes maken","yourNewCodes":"Je nieuwe back-upcodes","keepCodesSafe":"Bewaar ze op een veilige plek: met elke code log je één keer in als je je telefoon kwijt bent. Ze worden niet opnieuw getoond.","savedCodes":"Ik heb mijn back-upcodes bewaard","authenticatorApp":"Authenticator-app","authenticatorAppDescription":"Een code uit een app zoals Google Authenticator, Microsoft Authenticator of 1Password. Met back-upcodes.","emailedCode":"Gemailde code","emailedCodeDescription":"Een code naar je adres, elke keer dat je inlogt met een wachtwoord of een gemailde inlogcode.","twoFactorIsOn":"Tweestapsverificatie staat aan. Bewaar deze back-upcodes op een veilige plek: met elke code log je één keer in als je je telefoon kwijt bent. Ze worden niet opnieuw getoond.","scanCode":"Scan deze code met je authenticator-app en vul daarna de code van 6 cijfers in die de app toont.","cannotScan":"Lukt scannen niet? Vul deze sleutel in de app in:","codeFromApp":"Code uit de app","secondStep":"Tweede stap","password":"Wachtwoord","passwordDescription":"Inloggen met het e-mailadres en een wachtwoord.","emailedSignInCode":"Gemailde inlogcode","emailedSignInCodeDescription":"Inloggen met een eenmalige code naar het adres van het account.","passkeysPolicyDescription":"Inloggen met Face ID, Touch ID, Windows Hello, een telefoon of een beveiligingssleutel. Verplicht: iedereen voegt er een toe na het inloggen.","twoFactorPolicyDescription":"Een code uit een authenticator-app, of een gemailde, na een wachtwoord of een gemailde inlogcode. Verplicht: iedereen zet het aan na het inloggen.","staffAccess":"Medewerker logt in als iemand anders","staffAccessDescription":"Het team dat deze app beheert, logt in als iemand om die te helpen, met een reden, voor een korte sessie. Elke keer staat in het logboek hieronder; met \\"De persoon mailen\\" krijgt die het ook te horen.","emailThePerson":"De persoon mailen","platformSignIn":"Inloggen via het platform","platformSignInDescription":"De inlogprovider die het platform van deze app toevoegt, voor mensen die hier al een account hebben. Die maakt nooit accounts.","platformSignInWith":"Inloggen met {provider} via het platform","codeNeedsMail":"Vraagt mailinstellingen (PROTOBASE_SMTP_URL en PROTOBASE_MAIL_FROM): uit tot die zijn ingesteld.","passwordStaysOn":"Zonder mailinstellingen blijft inloggen met een wachtwoord aan, zodat niemand wordt buitengesloten.","staffNeedsMail":"Vraagt mailinstellingen (PROTOBASE_SMTP_URL en PROTOBASE_MAIL_FROM): medewerkers kunnen niet inloggen tot die zijn ingesteld.","platformOff":"Uit zolang passkeys of tweestapsverificatie verplicht zijn: het slaat de tweede stap over.","appliesAs":"Geldt voorlopig als {rule}.","lastSaved":"Laatst bewaard op {time}.","lastSavedBy":"Laatst bewaard door {name} op {time}.","neverChanged":"Nooit gewijzigd: dit is de standaard van de app.","reset":"Terugzetten","couldNotReadStaffSignIns":"Kon de inlogs van medewerkers niet lezen","couldNotReadPolicy":"Kon het inlogbeleid niet lezen","policySaved":"Bewaard. Het geldt vanaf nu voor elke inlog.","policySubtitle":"Hoe mensen inloggen bij deze app. Wie is ingelogd, houdt de sessie en krijgt binnen 15 minuten de vraag naar wat nieuw verplicht is.","mcpAddress":"MCP-adres","mcpAddressDescription":"Voeg dit adres toe aan een AI-assistent of code-editor die MCP spreekt, als aangepaste connector of externe MCP-server. Die opent deze app in je browser, waar je inlogt en hem toestaat; daarna werkt hij met jouw toegang.","copyMcpAddress":"Het MCP-adres kopiëren","addToClaude":"Toevoegen aan Claude","deleteAccount":"Account verwijderen","deleteAccountDescription":"Verwijder je account en log overal uit. Je kunt er daarna niet meer mee inloggen, en dit kan niet ongedaan worden gemaakt.","deleteAccountStaff":"Een medewerker die als iemand anders is ingelogd, kan diens account niet verwijderen.","deleteAccountQuestion":"Je account verwijderen?","deleteAccountWarning":"Je account, je inlogmethoden en elk apparaat dat ermee is ingelogd worden verwijderd. Dit kan niet ongedaan worden gemaakt.","deleteAccountPassword":"Vul je wachtwoord in om te bevestigen.","deleteAccountConfirm":"Mijn account verwijderen","deleteAccountLastAdmin":"Je bent de laatste beheerder van deze app. Maak eerst iemand anders beheerder.","deleteAccountLocked":"Dit account is vergrendeld en kan dus niet worden verwijderd."}`),"action-card":{cancel:`Annuleren`},"activity-chart":{day:`Dag`,week:`Week`},app:{notFound:`Niet gevonden`,noResource:`Er is geen onderdeel met de naam {name}.`,somethingWentWrong:`Er ging iets mis`,signInPolicy:`Inlogbeleid`,adminsOnly:`Alleen beheerders`,onlyAdminPolicy:`Alleen een beheerder kan wijzigen hoe mensen inloggen.`,ownersOnly:`Alleen eigenaren en beheerders`,onlyOwners:`Alleen de eigenaren en beheerders van de organisatie beheren de leden.`,chooseResource:`Kies een onderdeel`,pickFromSidebar:`Kies er een in de zijbalk.`,nothingHere:`Er is niets op dit adres.`,noPage:`Er is geen pagina met de naam {page}.`,assistant:`Assistent`,operationFailed:`Bewerking {index} ({label}) mislukte: {message} Er is niets bewaard.`,nothingSaved:`{message} Er is niets bewaard.`,admin:`Beheer`,new:`Nieuw`,loadingRecord:`Record laden`,noComponent:`Er is geen component geregistreerd als {component}. Exporteer die uit protobase.ui.tsx, of laad de plug-in die haar levert.`,choose:`Kiezen...`,fileMissing:`Het bestand ontbreekt in de opslag`,chooseFileFor:`Kies een bestand voor {label}`,notUploaded:`Niet geüpload`,uploadingLabel:`{label} uploaden`,uploading:`Uploaden… {percent}%`,replace:`Vervangen`,remove:`Verwijderen`,dropFile:`Zet hier een bestand neer of`,chooseFile:`Kies een bestand`,average:`{label}, gemiddeld`,pages:`Pagina's`,account:`Account`,sales:`Verkoop`,crm:`CRM`,catalog:`Catalogus`,inventory:`Voorraad`,hr:`HR`,cannotReach:`Kan {label} niet bereiken`,searchPlural:`{plural} zoeken`,couldNotLoadOptions:`Kon de keuzes niet laden`,noMatches:`Niets gevonden`,loading:`Laden`,leaveTitle:`Weggaan zonder te bewaren?`,leaveDescription:`Je hebt niet-bewaarde wijzigingen op deze pagina. Ze blijven in deze browser, en komen terug als je het record weer opent.`,leaveInputLost:`Je hebt niet-bewaarde wijzigingen op deze pagina. Ze gaan verloren als je weggaat.`,stay:`Blijven`,leave:`Weggaan`,reloadTitle:`Opnieuw laden zonder op te slaan?`,reloadDraftKept:`Er zijn niet-opgeslagen wijzigingen op deze pagina. Ze blijven bewaard in deze browser en komen terug zodra de pagina opnieuw is geladen.`,reloadInputLost:`Er zijn niet-opgeslagen wijzigingen op deze pagina. Ze gaan verloren als de pagina opnieuw wordt geladen.`,keepEditing:`Verder bewerken`,reload:`Opnieuw laden`,show:`{label} tonen`,hide:`{label} verbergen`,couldNotShow:`Kon {label} niet tonen`,setNewValue:`Nieuwe waarde instellen`,noAnswer:`Het antwoordde niet.`,signInRefused:`Het accepteerde je inlog niet: {message}`,loadingFrom:`Laden van {label}`,restWorks:`De rest van de app werkt zoals eerst.`,tryAgain:`Opnieuw proberen`,staffSession:`Sessie van een medewerker`,staffSignedIn:`{staff} is ingelogd als {user} tot {until}. Reden: {reason}`,stopStaffSession:`Sessie van medewerker stoppen`,open:`Openen`,openLabel:`{label} openen`},"app-shell":{navigation:`Navigatie`,resources:`Onderdelen`,breadcrumb:`Kruimelpad`,tabs:`Tabbladen`,more:`Meer`,openNavigation:`Navigatie openen`,backTo:`Terug naar {label}`,search:`Zoeken`,closeSearch:`Zoeken sluiten`,clearSearch:`Zoekopdracht wissen`,globalSearch:`Overal zoeken`,searchResults:`Zoekresultaten`,searching:`Zoeken`,noMatches:`Niets gevonden voor “{query}”`,profileMenu:`Profielmenu`,organizations:`Organisaties`,roles:`Rollen`,signIn:`Inloggen`,signOut:`Uitloggen`,theme:`Thema`,light:`Licht`,dark:`Donker`,system:`Systeem`,recent:`Recente {plural}`,loading:`Laden...`,couldNotLoad:`Kon niet laden`,viewAll:`Alles bekijken`,couldNotSearch:`Kon niet zoeken in <lower>{label}</lower>`},"app/change-confirm":{title:`{label} wijzigen?`,change:`Wijzigen`,cancel:`Annuleren`},"app/charts":{notSet:`Niet ingevuld`,yes:`Ja`,no:`Nee`,nothingYet:`Nog niets om in een grafiek te zetten.`,couldNotLoad:`Kon de grafiek niet laden.`,weekOf:`Week van {day}`,other:`Overig`,records:`{count} records`},"app/comments":{couldNotPost:`Kon de opmerking niet plaatsen`,comment:`Opmerking`,placeholder:`Schrijf een opmerking, @ om iemand te noemen`,couldNotLoad:`Kon de opmerkingen niet laden`,showEarlier:`Eerdere opmerkingen tonen`,noComments:`Nog geen opmerkingen.`},"app/confirm-sign-in":{confirmTitle:`Bevestig dat jij het bent`,confirmWhy:`Dit tonen vraagt in de laatste {minutes} minuten een passkey of je authenticator-app.`,usePasskey:`Passkey gebruiken`,authenticatorCode:`Code uit je authenticator-app`,confirm:`Bevestigen`,nothingToConfirmWith:`Voeg eerst een passkey of een authenticator-app toe op je accountpagina.`},"app/create":{title:`{noun} toevoegen`,subject:`{noun}`,submit:`{noun} aanmaken`,notCreated:`Niet aangemaakt`,notSaved:`Niet bewaard`,cancel:`Annuleren`,setByDatabase:`Ingevuld door de database`,details:`Details`,otherFields:`Overige velden`,notAllowed:`Niet toegestaan`,cannotCreate:`Je mag geen {plural} aanmaken.`},"app/delete":{confirmTitle:`{title} verwijderen?`,confirmDescription:`{title} wordt verwijderd. Dit kan niet ongedaan worden gemaakt.`,cancel:`Annuleren`,delete:`Verwijderen`,changedTitle:`{title} is gewijzigd sinds je het opende`,changedDescription:`Iemand heeft dit record intussen bewaard. Bekijk wat er veranderde voordat je het verwijdert.`,reviewChanges:`Wijzigingen bekijken`,deleteAnyway:`Toch verwijderen`,noVisibleChanges:`Geen zichtbaar veld verschilt; het record is opnieuw bewaard met dezelfde waarden.`,bulkConfirmTitle:`{count, plural, one {Eén record verwijderen?} other {# <lower>{plural}</lower> verwijderen?}}`,bulkConfirmDescription:`Dit kan niet ongedaan worden gemaakt. Elk record wordt alleen verwijderd als het niet is gewijzigd sinds de lijst laadde; wat wel is gewijzigd, wordt gemeld en behouden.`,deleteCount:`{count} verwijderen`,deleting:`Verwijderen`,progress:`{done} van {total} klaar`,working:`Bezig`,deleted:`{count} verwijderd`,deletedOf:`{count} van {total} verwijderd`,kept:`{count, plural, one {# kon niet worden verwijderd en is behouden.} other {# konden niet worden verwijderd en zijn behouden.}}`,done:`Klaar`,deletedToast:`{title} verwijderd`,undo:`Ongedaan maken`,restored:`{title} teruggezet`,alreadyBack:`{title} is al terug`,couldNotRestore:`Kon {title} niet terugzetten`,couldNotDelete:`Kon {title} niet verwijderen`,changedSinceLoaded:`Gewijzigd sinds de lijst laadde, dus behouden.`,stillPointAt:`{plural} verwijzen hier nog naar.`,show:`{plural} tonen`},"app/displays":{table:`Tabel`,display:`Weergave`,sort:`Sorteren`,ascending:`oplopend`,descending:`aflopend`,movedTo:`Verplaatst naar {column}`,orderChanged:`Volgorde gewijzigd`,stayedIn:`Opgeslagen, nog in {column}`,undo:`Ongedaan maken`,couldNotUndo:`Kon niet ongedaan maken`,couldNotLoadRows:`Kon de rijen niet laden`,noPlural:`Geen {plural}`,noValue:`Geen <lower>{label}</lower>`,somethingWrong:`Er ging iets mis`,showMore:`Meer tonen`,noDrop:`Er is geen bordactie geregistreerd als {drop}. Geef die in boardDrops in protobase.ui.tsx, of laad de plug-in die haar levert.`,noComponent:`Er is geen component geregistreerd als {component}. Exporteer die uit protobase.ui.tsx, of laad de plug-in die haar levert.`,pickedUp:`{title} opgepakt.`,isOver:`{title} is boven {over}.`,putBack:`{title} is teruggezet.`,wasMovedTo:`{title} is verplaatst naar {to}.`,cancelled:`Verplaatsen van {title} is geannuleerd.`,startsOn:`{title} begint op {day}.`,noColumn:`geen kolom`,noDay:`geen dag`,placeOf:`{column}, plaats {place} van {count}`,place:`{column}, plaats {place}`,boardAcross:`Druk op Spatie om een kaart naar een andere kolom te verplaatsen, verplaats haar met de pijltjestoetsen links en rechts, en druk nogmaals op Spatie om haar daar neer te zetten. Escape zet haar terug.`,boardAnywhere:`Druk op Spatie om een kaart te verplaatsen, verplaats haar met de pijltjestoetsen omhoog en omlaag binnen haar kolom en met links en rechts naar een andere kolom, en druk nogmaals op Spatie om haar daar neer te zetten. Escape zet haar terug.`,boardWithin:`Druk op Spatie om een kaart te verplaatsen, verplaats haar met de pijltjestoetsen omhoog en omlaag binnen haar kolom, en druk nogmaals op Spatie om haar daar neer te zetten. Escape zet haar terug.`,calendarInstructions:`Druk op Spatie om een gebeurtenis naar een andere dag te verplaatsen, verplaats haar een dag met de pijltjestoetsen links en rechts of een week met omhoog en omlaag, en druk nogmaals op Spatie om haar daar neer te zetten. Escape zet haar terug.`,timelineInstructions:`Druk op Spatie om een balk naar andere dagen te verplaatsen, verplaats hem een dag met de pijltjestoetsen links en rechts, en druk nogmaals op Spatie om hem daar neer te zetten. Escape zet hem terug.`,week:`Week`,month:`Maand`,quarter:`Kwartaal`,calendarScale:`Schaal van de kalender`,timelineScale:`Schaal van de tijdlijn`,previousPeriod:`{unit, select, week {Vorige week} month {Vorige maand} quarter {Vorig kwartaal} other {Vorige {unit}}}`,nextPeriod:`{unit, select, week {Volgende week} month {Volgende maand} quarter {Volgend kwartaal} other {Volgende {unit}}}`,today:`Vandaag`,capped:`De eerste {limit} records van {unit, select, week {deze week} month {deze maand} quarter {dit kwartaal} other {deze {unit}}} worden getoond. Verfijn het filter om de rest te zien.`,nothingIn:`Niets in {unit, select, week {deze week} month {deze maand} quarter {dit kwartaal} other {deze {unit}}}.`,noneMatch:`Geen {plural} gevonden.`,list:`Lijst`,showOneApproximate:`{singular} tonen, op een geschatte plek`,showOne:`{singular} tonen`,showMany:`{count} {plural} tonen`,showManyApproximate:`{count} {plural} tonen, op geschatte plekken`,showManySomeApproximate:`{count} {plural} tonen, {near} op geschatte plekken`,zoomIn:`Inzoomen op {count} {noun}`,needsStyle:`De kaartweergave heeft een kaartstijl nodig: stel PROTOBASE_MAP_STYLE_URL in.`,noneHere:`Geen {plural} in dit deel van de kaart.`,showAll:`Alles tonen`,chosen:`Gekozen {singular}`,approximatePosition:`Geschatte plek`,previous:`Vorige`,next:`Volgende`,close:`Sluiten`,features:`Kenmerken`,couldNotReorder:`Kon de volgorde niet wijzigen`,couldNotMoveTo:`Kon het niet naar {to} verplaatsen`,moreHidden:`+{count} meer`},"app/embedded-list":{firstOf:`De eerste {shown} van {total}.`,firstOfAbout:`De eerste {shown} van ongeveer {total}.`,open:`{singular} openen`,edit:`{singular} bewerken`,viewAll:`Alles bekijken`,couldNotLoad:`Kon niet laden`,nothingYet:`Hier staat nog niets.`},"app/export":{excel:`Excel (.xlsx)`,csv:`CSV`,asShown:`Zoals getoond`,rawValues:`Ruwe waarden`,shownHint:`Labels, datums en getallen zoals de lijst ze toont.`,rawHint:`Waarden zoals ze zijn opgeslagen, zoals sleutels en codes.`,counting:`Rijen tellen…`,moreThan:`meer dan 10.000 rijen`,columns:`Kolommen`,moveUp:`{label} omhoog`,moveDown:`{label} omlaag`,selectedRows:`{count} geselecteerde {rows, plural, one {rij} other {rijen}}`,rowsInList:`Rijen in de lijst`,selected:`Geselecteerd ({count})`,exportPlural:`{plural} exporteren`,cancel:`Annuleren`,export:`Exporteren`,format:`Formaat`,rows:`Rijen`,listHint:`Met de filters, zoekopdracht en sortering van de lijst.`,values:`Waarden`,exports:`Exporteert {rows}.`,overLimit:` Een bestand bevat hoogstens {limit} rijen; de rest blijft weg.`,exporting:`{plural} exporteren`,rowsExported:`Geëxporteerde rijen`,doneOf:`{done} van {total} rijen`,done:`{done} rijen`,exported:`{count} <lower>{plural}</lower> geëxporteerd`,truncated:`{name}: de eerste {count} rijen, zoveel als een bestand bevat.`,couldNotExport:`Kon <lower>{plural}</lower> niet exporteren`,cancelled:`De export is geannuleerd`,couldNotBuild:`De export kon niet worden gemaakt: {message}`,workbook:`Excel-werkmap`,csvFile:`CSV-bestand`},"app/field":{atLeastCharacters:`{label} moet minstens {count} {n, plural, one {teken} other {tekens}} hebben`,atMostCharacters:`{label} mag hoogstens {count} {n, plural, one {teken} other {tekens}} hebben`,wholeNumberAtLeast:`Vul een geheel getal in van minstens {min}`,wholeNumberAtMost:`Vul een geheel getal in van hoogstens {max}`,wholeNumber:`Vul een geheel getal in`,number:`Vul een getal in`,wholeNumberBelow:`Vul een geheel getal in onder {below}`,decimalsBelow:`Vul een getal in met hoogstens {scale, plural, one {# decimaal} other {# decimalen}}, onder {below}`,date:`Vul een datum in`,timestamp:`Vul een datum en tijd in`,country:`Vul een landcode van twee letters in, zoals NL`,currency:`Vul een valutacode van drie letters in, zoals EUR`,uuid:`Vul een geldig ID in`,enum:`Kies een van de opties`,relation:`Kies een record`,json:`Vul geldige JSON in`,required:`{label} is verplicht`,checkField:`Controleer het gemarkeerde veld.`,checkFields:`Controleer {count} velden.`},"app/field-types":{fieldType:`Het veldtype {name}`},"app/field-types/members":{needsOrganizations:`Leden kiezen vraagt om organisaties: zet ze aan in de auth-configuratie.`,couldNotLoadMembers:`De leden konden niet worden geladen.`,unknownMember:`Onbekend lid`,searchMembers:`Leden zoeken`},"app/gallery":{couldNotLoad:`Kon de foto’s niet laden`,showAll:`Alle {count} foto’s tonen`,showPhoto:`Foto {index} van {count} tonen`,details:`Gegevens`,holderDetails:`Gegevens van <lower>{singular}</lower>`,close:`Sluiten`,previousPhoto:`Vorige foto`,nextPhoto:`Volgende foto`,couldNotLoadOne:`Kon {singular} niet laden`,open:`{singular} openen`},"app/hand-order":{done:`Klaar`,reorder:`Volgorde wijzigen`,couldNotLoad:`Kon niet laden`,nothingYet:`Hier staat nog niets.`,couldNotChange:`Kon de volgorde niet wijzigen`,orderChanged:`Volgorde gewijzigd`,undo:`Ongedaan maken`,couldNotUndo:`Kon niet ongedaan maken`,movedToPlace:`Verplaatst naar plaats {place}`,notMoved:`Op zijn plaats gelaten`,noRule:`Er is geen sleepregel geregistreerd als {rule}. Geef die in dropRules in protobase.ui.tsx, of laad de plug-in die haar levert.`},"app/history":{create:`maakte dit`,update:`wijzigde`,delete:`verwijderde dit`,undelete:`zette dit terug`,database:`Database`,databaseRole:`Database ({role})`,changed:`gewijzigd`,changedThis:`wijzigde dit`,couldNotLoad:`Kon de geschiedenis niet laden`,noChanges:`Nog geen wijzigingen bewaard.`,showMore:`Meer tonen`},"app/import":{import:`Importeren`,importPlural:`{plural} importeren`,couldNotReadFile:`Kon het bestand niet lezen`,couldNotCheck:`Kon de rijen niet controleren`,cancel:`Annuleren`,next:`Volgende`,checkRows:`Rijen controleren`,back:`Terug`,checking:`Controleren`,importRows:`{count} {rows, plural, one {rij} other {rijen}} importeren`,cancelImport:`Import annuleren`,done:`Klaar`,file:`Bestand`,fileHint:`Een Excel-werkmap (.xlsx) of een CSV-bestand bewaard als UTF-8. De eerste rij noemt de kolommen.`,reading:`{name} lezen…`,theFile:`het bestand`,sheet:`Werkblad`,create:`Maken`,update:`Bijwerken`,upsert:`Maken of bijwerken`,createHint:`Elke rij maakt een record.`,updateHint:`Elke rij werkt het record bij dat haar waarde vindt; een rij die er geen vindt, wordt niet geïmporteerd.`,upsertHint:`Elke rij werkt het record bij dat haar waarde vindt, of maakt er een als ze er geen vindt.`,doNotImport:`Niet importeren`,rows:`Rijen`,whatEachRowDoes:`Wat elke rij doet`,findBy:`Records vinden op`,chooseField:`Kies een veld`,findByHint:`Een veld dat geen twee records delen, zoals de sleutel of een e-mailadres.`,foundInColumn:`Gevonden in kolom`,chooseColumn:`Kies een kolom`,numbers:`Getallen`,dates:`Datums`,dayFirst:`Dag eerst (31/12/2026)`,monthFirst:`Maand eerst (12/31/2026)`,datesHint:`Datums geschreven als 2026-12-31 lezen hoe dan ook hetzelfde. Tijden zonder zone zijn in je eigen tijd.`,requiredMarked:`Nieuwe records hebben de velden met * nodig.`,columns:`Kolommen`,emptyInFirstRows:`Leeg in de eerste rijen`,field:`Veld`,fieldFor:`Veld voor {name}`,foundBy:`Gevonden op`,pluralFoundBy:`{plural} gevonden op`,noColumnFills:`Geen kolom vult {fields}, wat nieuwe records nodig hebben.`,rowsNotImported:`Niet geïmporteerde rijen`,rowProblems:`Rij {line}:`,andMore:`En nog {count} rijen, allemaal in het bestand.`,checkingRows:`Rijen controleren… {count} gelezen`,check:`Controle`,toCreate:`Te maken`,toUpdate:`Bij te werken`,withProblems:`Met problemen`,firstRows:`Eerste rijen`,row:`Rij`,problemRows:`Rijen met problemen, die worden overgeslagen`,download:`Downloaden`,batches:`Rijen worden bewaard in groepen van {size}. Annuleren, of een fout, houdt de groepen die al bewaard zijn; een rij die de server weigert, wordt vermeld en de andere worden bewaard.`,stopping:`Stoppen na deze groep…`,saving:`Rijen bewaren…`,rowsSaved:`Bewaarde rijen`,stopped:`De import is gestopt. De rijen die hieronder zijn geteld, zijn bewaard.`,cancelled:`Geannuleerd. De rijen die hieronder zijn geteld, zijn bewaard.`,summary:`Samenvatting van de import`,created:`Gemaakt`,updated:`Bijgewerkt`,skipped:`Overgeslagen`,failed:`Mislukt`,notWrittenHint:`Overgeslagen rijen hadden problemen in het bestand; de mislukte weigerde de server. Het bestand bevat elke rij met de reden, om te verbeteren en opnieuw te importeren.`,notImportedFile:`{name} - niet geïmporteerd.csv`,line:`Regel`,problems:`Problemen`,notNumber:`{cell} is geen getal`,notWholeNumber:`{cell} is geen geheel getal`,tooLarge:`{cell} is te groot`,notBoolean:`{cell} is niet waar of onwaar (true, false, yes, no, 1 of 0)`,notDate:`{cell} is geen datum (2026-04-03 of {dayFirst, select, true {dag/maand/jaar} other {maand/dag/jaar}})`,hasTime:`{cell} heeft een tijd van de dag; het veld bevat een datum`,severalValues:`{cell} past bij meer dan één waarde: {values}`,notOneOf:`{cell} is niet een van {values}`,notText:`{cell} is waar of onwaar, geen tekst`,emptyRequired:`is leeg, en is verplicht`,noneHas:`geen <lower>{singular}</lower> heeft {named}`,severalHave:`{count} <lower>{plural}</lower> hebben {named}`,notOneRecord:`Niet één record: {found}`,nothingToUpdate:`Niets om bij te werken: {found}`,fileNotUtf8:`Het bestand is geen UTF-8-tekst. Bewaar het als "CSV UTF-8" en kies het opnieuw.`,noSheets:`De werkmap heeft geen werkbladen`,missingSheetPart:`De werkmap noemt een werkblad dat er niet in zit`,notZip:`Het bestand is geen Excel-werkmap (.xlsx): het is geen ZIP-archief`,zip64:`De werkmap is te groot om te lezen: het is een ZIP64-archief`,compression:`Het deel {part} van de werkmap is gecomprimeerd op een manier die niet kan worden gelezen (methode {method})`,notWorkbook:`Het bestand is geen Excel-werkmap (.xlsx): het heeft geen {part}`,noSheetCalled:`De werkmap heeft geen werkblad met de naam {name}`,unreadable:`Het bestand kon niet worden gelezen`,column:`Kolom {letters}`},"app/list":{noList:`Er is geen lijst met de naam {name}.`,searchPlural:`Zoeken in <lower>{plural}</lower>`,search:`Zoeken`,sort:`Sorteren`,filters:`Filters`,filtersCount:`Filters ({count})`,newRecord:`{singular} toevoegen`,export:`Exporteren`,openRecord:`{singular} openen`,delete:`Verwijderen`,exportCount:`{count} exporteren`,deleteCount:`{count} verwijderen`,actionCount:`{label} ({count})`,dragToSort:`Sleep een rij aan de greep om hem te verplaatsen. Elke verplaatsing wordt bewaard zodra je loslaat.`,unreadableFilter:`Het filter in het adres kon niet worden gelezen`,couldNotLoadRows:`Kon de rijen niet laden`,created:`{plural} aangemaakt`,noMatchSearch:`Geen <lower>{plural}</lower> gevonden voor “{search}”.`,noMatchFilters:`Geen <lower>{plural}</lower> gevonden met deze filters.`,noMatch:`Geen <lower>{plural}</lower> gevonden.`,noneYet:`Nog geen <lower>{plural}</lower>.`,clearSearch:`Zoekopdracht wissen`,clearFilters:`Filters wissen`},"app/list-edit":{changedBySomeoneElse:`Gewijzigd door iemand anders`,couldNotSave:`Kon niet bewaren`},"app/live-update":{holdTitle:`De app wordt bijgewerkt`,holdLine:`De nieuwe versie wordt gedownload. De app opent die zo.`},"app/map":{mapLayer:`Kaartlaag`,map:`Kaart`},"app/meta-gate":{loading:`Laden`,cannotReach:`De API is niet bereikbaar`,noAnswer:`De server gaf geen antwoord. Draait hij?`},"app/new-version":{title:`Deze app is bijgewerkt`,description:`Laad de pagina opnieuw voor de nieuwe versie, wanneer het uitkomt.`,reload:`Opnieuw laden`,reloadPage:`Opnieuw laden`,reloadPageHint:`Opnieuw laden om de nieuwe versie te gebruiken`,bannerTitle:`{app} bijgewerkt`,bannerLine:`Sla je werk op en klik hier om te herladen. Tot dan kunnen er fouten optreden.`},"app/pages":{notFound:`Niet gevonden`,noPage:`Er is geen pagina met de naam {page}.`,tabs:`Tabbladen`,noTab:`Deze pagina heeft geen tabblad met de naam {name}.`,cancel:`Annuleren`,couldNotDraw:`{name} kon niet worden getekend.`,noComponent:`Er is geen component geregistreerd als {component}. Exporteer die uit protobase.ui.tsx, of laad de plug-in die haar levert.`,unknownBlock:`{type} is geen blok dat deze versie van de app kent.`,somethingWrong:`Er ging iets mis`,needsRecord:`Vraagt een record`,cannotChange:`Je kunt dit record niet wijzigen`,cannotDelete:`Je kunt dit record niet verwijderen`,doesNotApply:`Geldt niet voor dit record`,noHandler:`De app heeft geen handler voor "{name}"`,noInputComponent:`De app heeft geen component "{component}" voor invoer "{input}"`,done:`{label}: klaar`,doneOn:`{label}: klaar voor {done}{skipped, plural, =0 {} other {, # overgeslagen waarvoor het niet geldt}}{failed, plural, =0 {} other {, mislukt voor #}}`,failed:`{label} mislukt`,noAction:`Geen actie "{name}"`,couldNotLoad:`Kon niet laden`,nothingYet:`Hier staat nog niets.`,saved:`{label}: bewaard`,create:`Maken`,save:`Bewaren`,notSaved:`Niet bewaard`,settings:`Instellingen`,couldNotCount:`Kon niet tellen`,required:`Verplicht`,wholeNumber:`Een geheel getal`,number:`Een getal`,dateFormat:`Een datum als JJJJ-MM-DD`,atMost:`Hoogstens {max} tekens`},"app/rank-after":{dependsOn:`{record} hangt af van {other}.`},"app/record":{details:`Details`,history:`Geschiedenis`,comments:`Opmerkingen`,summary:`Overzicht`,loading:`Laden`,fetching:`Het record wordt opgehaald.`,noRecord:`Dit record bestaat niet, of je mag het niet zien.`,openingElsewhere:`Het record wordt in zijn organisatie geopend.`,couldNotLoad:`Kon het record niet laden`,someoneElse:`Iemand anders`,justNow:`zojuist`,saved:`Bewaard`,save:`Bewaren`,cancel:`Annuleren`,unsavedChanges:`Niet bewaarde wijzigingen`,notSaved:`Niet bewaard`,linesChanged:`De regels zijn door iemand anders gewijzigd`,linesReloaded:`De regels zijn opnieuw geladen. Je nieuwe volgorde is behouden: bewaar opnieuw om hem toe te passen.`,unsavedKept:`Je hebt niet bewaarde wijzigingen in dit record.`,continueEditing:`Verder bewerken`,discard:`Weggooien`,unsavedRestored:`Je niet bewaarde wijzigingen zijn teruggezet.`,keep:`Houden`,savingSubject:`{subject} bewaren...`,subjectSaved:`{subject} bewaard`,changedBySomeoneElse:`Gewijzigd door iemand anders`,couldNotSave:`Kon niet bewaren`,recordActions:`Recordacties`,edit:`Bewerken`,delete:`Verwijderen`,nothingYet:`Hier staat nog niets.`,couldNotLoadRelated:`Kon niet laden`,relatedRecords:`Gerelateerde records`,lineNumber:`Regel {place}`,lineField:`{label}, regel {place}`,tooManyLines:`Dit record heeft meer dan {limit} regels, dus ze staan hier alleen ter inzage.`},"app/record-chart":{range:`Periode`,hour:`Uur`,day:`Dag`,week:`Week`,measure:`Per interval`,average:`Gemiddelde`,maximum:`Maximum`,noSamples:`Geen metingen in deze periode.`,couldNotLoad:`Kon de grafiek niet laden.`},"app/record-row":{couldNotLoad:`Kon niet laden`,noneMatch:`Geen {plural} gevonden.`,viewAll:`Alles bekijken`,new:`Nieuw`,previous:`Terug in {label}`,next:`Verder in {label}`,couldNotLoadYour:`Kon je {plural} niet laden`,noneYet:`Nog geen {plural}.`},"app/related-cards":{showMore:`Meer tonen`,showLess:`Minder tonen`,couldNotLoad:`Kon niet laden`,nothingYet:`Hier staat nog niets.`},"app/related-dots":{none:`Geen {plural}`},"app/runtime":{immediate:`Werkt bij zodra er een release is`,weekly:`Werkt elke week op een vast moment bij`,scheduled:`Werkt bij op het moment dat voor deze release is ingesteld`,manual:`Werkt alleen bij als erom wordt gevraagd`,job:`De update voorbereiden`,build:`Bouwen`,updatingNow:`Nu aan het bijwerken`,started:`{stage}, begonnen {ago}`,nextOn:`{policy}: volgende op {when}`,succeeded:`Bijgewerkt naar {version} op {when}`,unchanged:`De update naar {version} op {when} veranderde niets`,failed:`De update naar {version} mislukte op {when}`,alreadyLatest:`Al op de nieuwste versie, of er loopt een update.`,onlyAdmin:`Alleen een beheerder kan de runtime bijwerken.`,couldNotStart:`De update kon niet worden gestart. Probeer het later opnieuw.`,runtimeUpdate:`Runtime-update`,close:`Sluiten`,updating:`Bijwerken…`,updateNow:`Nu bijwerken`,currentVersion:`Huidige versie`,latestVersion:`Nieuwste versie`,checkFailed:`De status kon niet opnieuw worden gecontroleerd; dit is de laatst gelezen.`,updateAvailable:`Update beschikbaar`,update:`Bijwerken`},"app/saved":{favorite:`Favoriet`,couldNotLoadYour:`Kon je {plural} niet laden`,noneYet:`Nog geen {plural}.`,somethingWrong:`Er ging iets mis`,couldNotTakeOff:`Kon het niet weghalen`,couldNotSave:`Kon het niet bewaren`},"app/search":{search:`Zoeken`,searchOne:`Zoek in {name}`,searchTwo:`Zoek in {first} en {second}`,searchMore:`Zoek in {first}, {second} en meer`,goTo:`Ga naar`,create:`Maken`},"app/searches":{saveSearch:`Zoekopdracht bewaren`,saveAsNew:`Als extra {noun} bewaren`,updateName:`{name} bijwerken`,updateNameQuestion:`{name} bijwerken?`,updateNounQuestion:`{noun} bijwerken?`,couldNotLoadYour:`Kon je {plural} niet laden`,noneYet:`Nog geen {plural}.`,somethingWrong:`Er ging iets mis`,couldNotRename:`Kon de zoekopdracht niet hernoemen`,renameTitle:`{title} hernoemen`,deleteTitle:`{title} verwijderen`,unreadableFilter:`Een filter dat niet kan worden gelezen`,notFound:`Niet gevonden`,noResource:`Er is geen onderdeel met de naam {resource}.`,noSavedYet:`Nog geen {plural}. Filter de {list} en bewaar de zoekopdracht.`,on:`Aan`,off:`Uit`,saved:`{title} bewaard`,couldNotChange:`Kon de zoekopdracht niet wijzigen`,asMany:`Evenveel {plural}`,more:`{count} {noun} meer`,fewer:`{count} {noun} minder`,cancel:`Annuleren`,save:`Bewaren`,optional:`Optioneel`,added:`Erbij`,removed:`Eraf`,changed:`Gewijzigd`,filterChanges:`Wijzigingen in het filter`,firstOf:`De eerste {limit} van {total}.`,noPlural:`Geen {plural}.`,update:`Bijwerken`,addedRemoved:`{added} erbij, {removed} eraf`,searchSaved:`Zoekopdracht bewaard`,openPlural:`{plural} openen`,couldNotSave:`Kon de zoekopdracht niet bewaren`,couldNotTakeOff:`Kon de zoekopdracht niet weghalen`,searchUpdated:`Zoekopdracht bijgewerkt`,couldNotUpdate:`Kon de zoekopdracht niet bijwerken`,noneMatch:`Geen {plural} gevonden.`,noNew:`Geen nieuwe {plural} sinds je laatst keek.`,viewAll:`Alle resultaten bekijken`,filters:`Filters`},"assistant-dock":{askQuestion:`Stel een vraag...`,assistant:`Assistent`,reconnecting:`Opnieuw verbinden...`,empty:`Stel een vraag over deze app of de gegevens ervan.`,noAnswer:`De assistent antwoordde niet`,backendNoAnswer:`De backend van de assistent antwoordde niet`,couldNotDraw:`Dit kon niet worden getekend.`,cannotShowLive:`Deze versie van de app kan dit niet live tonen.`},auth:{loading:`Laden`,cannotReach:`Kan de server niet bereiken: {message}`,tryAgain:`Opnieuw proberen`,passwordChanged:`Je wachtwoord is gewijzigd. Log in met het nieuwe.`,noAnswer:`De server antwoordde niet`,code:`Code`,backupCode:`Back-upcode`,email:`E-mailadres`,password:`Wachtwoord`,passwordOptional:`Wachtwoord (optioneel)`,signIn:`Inloggen`,signOut:`Uitloggen`,continue:`Doorgaan`,backToSignIn:`Terug naar inloggen`,useAnotherAddress:`Een ander adres gebruiken`,checkEmail:`Kijk in je e-mail`,newCodeSent:`Er is een nieuwe code onderweg. Alleen de nieuwste werkt.`,sendNewCode:`Nieuwe code sturen`,sendNewCodeIn:`Nieuwe code sturen over {seconds}s`,signInCodeDescription:`Vul de code in die we stuurden om in te loggen.`,signInCodeSent:`Als {email} een account heeft, is er een code van 6 cijfers onderweg. Die werkt 5 minuten, één keer.`,signUpCodeDescription:`Vul de code in die we stuurden om je account te maken.`,signUpCodeSent:`Er is een code van 6 cijfers onderweg naar {email}. Die werkt 5 minuten, één keer. Heeft het adres al een account, dan staat dat in de e-mail.`,noAdminTitle:`Nog geen beheerder`,noAdminDescription:`Deze Protobase heeft geen gebruikers om mee in te loggen.`,noAdminExplanation:`Voer dit uit in de terminal waar Protobase draait en laad de pagina daarna opnieuw. De eerste beheerder wordt op de server gemaakt, niet in de browser, zodat niemand anders een nieuwe URL kan opeisen.`,copyCommand:`Opdracht kopiëren`,firstAdminExplanation:`De eerste gebruiker wordt in de Protobase Cloud-console toegevoegd, niet in de browser, zodat niemand anders een nieuwe URL kan opeisen. Voeg jezelf daar toe en laad de pagina daarna opnieuw.`,firstAdminLink:`Voeg je eerste gebruiker toe in de Protobase Cloud-console`,reload:`Opnieuw laden`,tooManyRequests:`Te veel verzoeken. Wacht een minuut en probeer het opnieuw.`,tooManyAttempts:`Te veel pogingen. Wacht een minuut en probeer het opnieuw.`,resetTitle:`Je wachtwoord herstellen`,resetDescription:`We mailen je een link om een nieuw te kiezen.`,sendResetLink:`Herstellink sturen`,resetSent:`Als {email} een account heeft, is er een e-mail onderweg met een link om een nieuw wachtwoord te kiezen. De link werkt één keer, een beperkte tijd.`,linkExpiredTitle:`Deze link werkt niet meer`,linkExpiredExplanation:`Een herstellink werkt één keer, een beperkte tijd. Vraag een nieuwe aan om je wachtwoord te kiezen.`,sendNewLink:`Nieuwe link sturen`,passwordsDiffer:`De wachtwoorden zijn niet hetzelfde.`,choosePassword:`Kies een nieuw wachtwoord`,atLeast:`Minstens {length} tekens.`,useAtLeast:`Gebruik minstens {length} tekens.`,passwordTooLong:`Dat wachtwoord is te lang.`,newPassword:`Nieuw wachtwoord`,repeatPassword:`Nieuw wachtwoord herhalen`,setPassword:`Nieuw wachtwoord instellen`,signingInWith:`Inloggen met {name}`,takingYouTo:`Je gaat naar {name}…`,providerNotOffered:`Inloggen met {name} kan hier niet. Log op een andere manier in.`,turnOnTwoFactor:`Tweestapsverificatie aanzetten`,addPasskey:`Passkey toevoegen`,requiredForEveryAccount:`Deze app vraagt het voor elk account.`,passkeyExplanation:`Met een passkey log je in met Face ID, Touch ID, Windows Hello, je telefoon of een beveiligingssleutel. Je browser vraagt welke je gebruikt.`,couldNotReadAccount:`Kon je account niet lezen`,signInTitle:`Inloggen bij Protobase`,continueWith:`Doorgaan met {name}`,signInWithPasskey:`Inloggen met een passkey`,passkeyFor:`Een passkey voor {domain} gebruiken`,or:`of`,emailSignInCode:`Mail me een inlogcode`,usePassword:`Een wachtwoord gebruiken`,forgotPassword:`Wachtwoord vergeten?`,newHere:`Nieuw hier?`,haveAccount:`Heb je een account?`,createAnAccount:`Account maken`,browse:`Doorgaan zonder in te loggen`,notNow:`Niet nu`,detailsTitle:`Je gegevens`,detailsDescription:`Nog één stap om je account te maken.`,yourName:`Je naam`,codeWasRight:`De code klopte: het account is voor {email}.`,withoutPassword:` Zonder wachtwoord log je in met een code die we je mailen.`,createAccount:`Account maken`,codeToConfirm:`We mailen je een code om te controleren dat het adres van jou is.`,emailCode:`Mail me een code`,browseWithoutAccount:`Doorgaan zonder account`,staffTitle:`Inloggen als medewerker`,staffUnavailable:`Medewerkers van het team dat deze app beheert, kunnen hier niet als iemand anders inloggen.`,signInAsPerson:`Inloggen als iemand anders`,forStaffOf:`Voor medewerkers van {operator}, om iemand met deze app te helpen.`,theirEmail:`Hun e-mailadres`,reason:`Reden`,reasonExample:`Ticket 4211: de factuurtotalen kloppen niet`,staffExplanation:`Je logt in bij {operator} met een passkey of een tweede stap. De sessie is kort, toont een balk en kan hun inlog niet wijzigen. De beheerders van de app zien wie als wie inlogde, en waarom.`,totpInstruction:`Vul de code van 6 cijfers uit je authenticator-app in.`,otpInstruction:`Vul de code van 6 cijfers in die we je mailden. Die werkt 5 minuten.`,backupInstruction:`Vul een van de back-upcodes in die je bewaarde toen je de authenticator-app instelde. Elke code werkt één keer.`,twoFactorTitle:`Tweestapsverificatie`,twoFactorDescription:`Nog één stap om in te loggen.`,codeToFinish:`We mailen je een code om het inloggen af te ronden.`,trustBrowser:`Deze browser vertrouwen`,trustBrowserFor:`Niet meer vragen in deze browser, 30 dagen lang`,verify:`Controleren`,useAuthenticator:`De authenticator-app gebruiken`,emailCodeInstead:`Mail me liever een code`,useBackupCode:`Een back-upcode gebruiken`,admin:`Beheerder`},"auth/errors":{tooManyRequests:`Te veel pogingen. Wacht een minuut en probeer het opnieuw.`,passkeyClosed:`De passkey-vraag sloot voordat die klaar was. Probeer het opnieuw.`,wrongEmailOrPassword:`Het e-mailadres of wachtwoord klopt niet.`,wrongPassword:`Het wachtwoord klopt niet.`,wrongCode:`De code klopt niet.`,wrongOrExpiredCode:`De code klopt niet, of is verlopen. Vraag een nieuwe aan.`,codeExpired:`De code is verlopen. Vraag een nieuwe aan.`,tooManyCodes:`Te veel verkeerde codes. Vraag een nieuwe aan.`,wrongBackupCode:`De back-upcode klopt niet, of is al eerder gebruikt.`,tooManyCodesSignIn:`Te veel verkeerde codes. Log opnieuw in.`,locked:`Te veel verkeerde codes. Wacht 15 minuten en probeer het opnieuw.`,tooSlow:`Deze inlogpoging duurde te lang. Log opnieuw in.`,passkeyNotFound:`Deze passkey hoort hier bij geen enkel account.`,passkeyFailed:`De passkey kon niet worden gecontroleerd. Probeer het opnieuw.`,passkeyAdded:`Deze passkey is al toegevoegd.`,notFresh:`Log voor deze wijziging eerst uit en opnieuw in.`,staffPermissionMissing:`Je medewerkersaccount mag hier niet als iemand anders inloggen.`,staffNotStrong:`Log in op je medewerkersaccount met een passkey of een tweede stap, en probeer het dan opnieuw.`,staffStale:`Je inlog als medewerker is te oud. Log opnieuw in op je medewerkersaccount.`,staffExpired:`Deze inlog als medewerker duurde te lang of is al gebruikt. Begin opnieuw.`,staffProviderFailed:`De inlog als medewerker lukte niet bij de provider. Probeer het opnieuw.`,staffUserUnavailable:`Er is geen account met dit adres, of het is uitgeschakeld.`,staffReasonRequired:`Zeg in minstens 10 tekens waarom je als deze persoon inlogt.`,staffForbidden:`Inloggen als medewerker staat uit voor deze app.`,untrustedCallback:`Deze pagina staat niet op een adres dat de server vertrouwt.`,staffFailed:`De inlog als medewerker lukte niet. Probeer het opnieuw.`,passwordLeaked:`Dit wachtwoord komt voor in een bekend datalek. Kies een ander wachtwoord.`,signupDisabled:`Geen account hier hoort bij dit {name}-account. Vraag een beheerder om je toe te voegen, of log op een andere manier in.`,notLinked:`Je {name}-account is niet gekoppeld aan je account hier. Log op een andere manier in en koppel {name} dan op je accountpagina.`,linkedToOther:`Dit {name}-account is hier al aan iemand anders gekoppeld.`,couldNotLink:`Je {name}-account kon niet worden gekoppeld. Probeer het opnieuw.`,accessDenied:`{name} liet je niet binnen, of je hebt geannuleerd.`,domainNotAllowed:`{name} logde je in met een adres dat deze app daarvan niet accepteert. Log op een andere manier in.`,providerFailed:`Inloggen met {name} lukte niet. Probeer het opnieuw.`},calls:{accept:`Opnemen`,decline:`Weigeren`,startCall:`Gesprek starten`,join:`Deelnemen`,inProgress:`Gesprek bezig`,people:`{count, plural, one {# persoon} other {# personen}}`,joinCall:`Deelnemen aan gesprek`,leave:`Verlaten`,microphone:`Microfoon`,camera:`Camera`,shareScreen:`Scherm delen`,stopSharing:`Stoppen met delen`,muted:`Gedempt`,you:`Jij`,alone:`Je bent de enige hier`,connecting:`Deelnemen…`,reconnecting:`Opnieuw verbinden…`,full:`Dit gesprek is vol`,removed:`Je bent uit dit gesprek gehaald`,ended:`Het gesprek is afgelopen`,refused:`Je kunt niet aan dit gesprek deelnemen`,unavailable:`Het gesprek is nu niet bereikbaar. Probeer het zo opnieuw.`,callAgain:`Opnieuw deelnemen`,noMicrophone:`Je microfoon is geblokkeerd: sta hem toe in de browser om gehoord te worden.`,noCamera:`Je camera is geblokkeerd: sta hem toe in de browser om gezien te worden.`,noDevices:`Er is geen camera of microfoon gevonden.`,cannotConnect:`Kan geen verbinding maken met {name}`,poorConnection:`Slechte verbinding`,goodConnection:`Goede verbinding`,sharing:`{name} deelt het scherm`,youAreSharing:`Je deelt je scherm`,speaking:`Spreekt`,preview:`Je camera voordat je deelneemt`,guestName:`{name} (gast)`,denied:`Niemand in het gesprek heeft je binnengelaten`,waiting:`Wachten tot iemand in het gesprek je binnenlaat…`,askToJoin:`Vragen om deel te nemen`,someone:`Iemand in het gesprek`,guests:`Gasten`,waitingGuest:`{name} wacht om deel te nemen`,admit:`Binnenlaten`,deny:`Weigeren`,remove:`Verwijderen`,revoke:`Intrekken`,newLink:`Gastlink maken`,copyLink:`Link kopiëren`,copied:`Gekopieerd`,guestLinks:`Gastlinks`,noLinks:`Nog geen gastlink. Wie een link heeft, wacht hier tot iemand in het gesprek hem binnenlaat.`,inLobby:`Wacht om deel te nemen`,guestsInCall:`Gasten in het gesprek`,guestsMaySend:`Gasten mogen sturen`,sendAll:`Alles`,sendCamera:`Camera en microfoon`,sendMicrophone:`Alleen geluid`,linkUntil:`Tot {until}`,linkUntilEnd:`Tot het gesprek afloopt`,linkLasts:`De link werkt`,forAnHour:`Een uur lang`,addressesVisible:`In een gesprek tussen browsers zien een gast en de mensen in het gesprek elkaars netwerkadressen.`,guestRefused:`Dit lukte niet: de gast of link is weg, het gesprek is vol, of gastlinks staan uit.`,close:`Sluiten`,yourName:`Je naam`,guestIntro:`Je bent uitgenodigd voor een gesprek. Geef je naam, controleer je microfoon en camera, en iemand in het gesprek laat je binnen.`,continue:`Verder`,youLeft:`Je hebt het gesprek verlaten`},carousel:{photoOf:`Foto {index} van {count}`,previousPhoto:`Vorige foto`,nextPhoto:`Volgende foto`},chat:{message:`Bericht`,send:`Versturen`,today:`Vandaag`,yesterday:`Gisteren`,newMessages:`Nieuwe berichten`,loadEarlier:`Eerdere berichten laden`},"compact-table":{table:`Tabel`,noRows:`Geen rijen.`,rows:`{count, plural, one {# rij} other {# rijen}}`,cutOff:`, afgekapt bij de limiet`},"data-grid":{unsortable:`Op deze kolom kan niet worden gesorteerd`,columnMenu:`Kolommenu {header}`,unpin:`Losmaken`,pinToLeft:`Links vastzetten`,resizeColumn:`Breedte kolom {header}`,selected:`{count} geselecteerd`,no:`Nee`,shownIn:`Getoond in {zone}`,new:`Nieuw`,clearSelection:`Selectie wissen`,noRowsSelected:`Geen rijen geselecteerd`,selectRow:`Rij {row} selecteren`,rowActions:`Rijacties`,row:`rij`,move:`{label} verplaatsen`,reorderInstructions:`Om een rij te verplaatsen, druk op Spatie op de greep, verplaats hem met de pijltjestoetsen omhoog en omlaag, en druk nogmaals op Spatie om hem daar neer te zetten. Escape zet hem terug.`,pickedUp:`{name} opgepakt, rij {row} van {rows}.`,isOver:`{name} is boven rij {row} van {rows}.`,droppedAt:`{name} is neergezet op rij {row} van {rows}.`,putBack:`{name} is teruggezet.`,cancelled:`Verplaatsen van {name} is geannuleerd. Hij staat weer op rij {row}.`},"filter-panel":{today:`Vandaag`,yesterday:`Gisteren`,"24h":`Afgelopen 24 uur`,"7d":`Afgelopen 7 dagen`,"30d":`Afgelopen 30 dagen`,"90d":`Afgelopen 90 dagen`,month:`Deze maand`,quarter:`Dit kwartaal`,year:`Dit jaar`,unknownPreset:`De server biedt de periode "{id}", die deze UI niet kent`,unsupported:`{id} (niet ondersteund)`,remove:`{label} verwijderen`,clearAll:`Alles wissen`,searchIn:`Zoeken in <lower>{label}</lower>`,noMatches:`Niets gevonden`,moreFilters:`Meer filters`,filters:`Filters`,date:`Datum`,showOnly:`Alleen tonen`,minimum:`{label} minimum`,maximum:`{label} maximum`},format:{rows:`{count} {n, plural, one {rij} other {rijen}}`,aboutRows:`ongeveer {count} rijen`,secondsAgo:`{count} s geleden`,minutesAgo:`{count} min geleden`,hoursAgo:`{count} u geleden`,daysAgo:`{count} d geleden`,justNow:`zojuist`},forms:{loading:`Laden`,notFound:`Niet gevonden`,noForm:`Er is geen formulier op dit adres.`,setByDatabase:`Ingevuld door de database`,notSent:`Niet verzonden`,send:`Verzenden`,checkTooLong:`De controle of je geen bot bent duurde te lang; verzend het formulier opnieuw`},"inline-child-table":{instructions:`Druk op spatie of enter op de sleepgreep om een regel op te pakken. Verplaats hem met de pijltjestoetsen omhoog en omlaag, zet hem neer met spatie of enter, en annuleer met escape. Het regelmenu heeft ook Omhoog en Omlaag.`,line:`regel`,pickedUp:`{name} opgepakt, regel {place} van {count}.`,over:`{name} is boven regel {place} van {count}.`,dropped:`{name} is neergezet op regel {place} van {count}.`,droppedAtStart:`{name} is neergezet waar hij begon.`,cancelled:`Verplaatsen van {name} is geannuleerd. Hij staat weer op regel {place}.`,addLine:`Regel toevoegen`,noLines:`Nog geen regels.`,moveUp:`Omhoog`,moveDown:`Omlaag`,removeLine:`Regel verwijderen`,dragToReorder:`Sleep om {name} te verplaatsen`,actionsFor:`Acties voor {name}`},invitations:{email:`E-mailadres`,invite:`Uitnodigen`,expired:`Verlopen`,until:`Tot {date}`,sendAgain:`Opnieuw sturen`,revoke:`Intrekken`,passLinkOn:`Deze app kan geen e-mail sturen, dus geef deze link zelf door. Die werkt één keer, tot de uitnodiging verloopt: {link}`},lists:{showMore:`Meer tonen`},live:{yes:`Ja`,no:`Nee`,shownIn:`Getoond in {zone}`,fileMissing:`Bestand ontbreekt`},markdown:{write:`Schrijven`,preview:`Voorbeeld`,nothingToPreview:`Niets om te tonen`},mentions:{peopleToMention:`Mensen om te noemen`,noOneFound:`Niemand gevonden`,couldNotSearch:`Kon niet naar mensen zoeken`},"notifications/bell":{notifications:`Meldingen`,notificationsUnread:`Meldingen, {count} ongelezen`,notificationsManyUnread:`Meldingen, meer dan 99 ongelezen`,markAllRead:`Alles als gelezen markeren`,empty:`Nog geen meldingen`,showMore:`Meer tonen`,loadFailed:`Je meldingen konden niet worden geladen.`,tryAgain:`Opnieuw proberen`,unread:`Ongelezen`,pushOff:`Ontvang meldingen op dit apparaat, ook als de app gesloten is.`,turnOn:`Inschakelen`,pushOn:`Meldingen staan op dit apparaat aan.`,turnOff:`Uitschakelen`,pushBlocked:`Meldingen zijn op dit apparaat geblokkeerd. Je kunt ze voor deze site toestaan in de instellingen van je browser of apparaat.`},organizations:{organizations:`Organisaties`,manageOrganizations:`Organisaties beheren`,organization:`Organisatie`,members:`Leden`,invitations:`Uitnodigingen`,owner:`Eigenaar`,admin:`Beheerder`,member:`Lid`,loading:`Laden`,name:`Naam`,slug:`Slug`,save:`Bewaren`,cancel:`Annuleren`,delete:`Verwijderen`,remove:`Verwijderen`,create:`Maken`,current:`Huidige`,open:`Openen`,allOrganizations:`Alle organisaties`,allOrganizationsDescription:`Elke organisatie in de app. Met je globale rollen kun je in elk ervan werken, met wat die rollen daar toestaan. Wie er een opent waar die geen lid van is, komt in het auditlogboek.`,findOrganization:`Een organisatie zoeken`,nameOrSlug:`Naam of slug`,cannotChangeRole:`Je kunt deze rol niet geven of afnemen`,makeAccountToJoin:`Maak je account voor {email} om lid te worden.`,makeAccount:`Maak je account voor {email}.`,yourName:`Je naam`,password:`Wachtwoord`,passwordOptional:`Wachtwoord (optioneel, {length}+ tekens)`,passwordRequired:`Wachtwoord ({length}+ tekens)`,createAndJoin:`Account maken en lid worden`,createYourAccount:`Je account maken`,invalidLink:`Deze uitnodigingslink is niet geldig`,invitation:`Uitnodiging`,goToApp:`Naar de app`,invitesToApp:`{inviter} nodigt je uit voor {app}.`,invitesTo:`{inviter} nodigt je uit voor {organization} als {role}.`,invitesToWith:`{inviter} nodigt je uit voor {organization} als {role}, met {roles}.`,join:`Lid worden van {name}`,hasAccount:`{email} heeft al een account: log daarmee in.`,signOut:`Uitloggen`,signInAs:`Inloggen als {email}`,signInAsToJoin:`Inloggen als {email} om lid te worden`,otherAddress:`Deze uitnodiging is voor {invited}, en je bent ingelogd als {signedIn}.`,signOutToAccept:`Uitloggen om die te accepteren`,inviteSomeone:`Iemand uitnodigen`,inviteDescription:`Die krijgt een e-mail met een link om lid te worden, of om eerst een account te maken. Je kunt de app-rollen geven die je zelf hebt, en die je rollen toekennen.`,organizationRole:`Rol in de organisatie`,peopleInvited:`Mensen uitgenodigd voor {organization}.`,notAcceptedYet:`Nog niet geaccepteerd`,sendingAgain:`Opnieuw sturen geeft een nieuwe link, die de vorige vervangt.`,nobodyWaiting:`Er wacht niemand.`,roleOf:`Rol in de organisatie van {name}`,couldNotReadMembers:`Kon de leden niet lezen`,whoWorks:`Wie in {organization} werkt, en met welke rollen.`,membersDescription:`Eigenaren en beheerders beheren de organisatie; app-rollen bepalen wat elk lid in de app ziet en doet.`,details:`Gegevens`,detailsEditable:`De naam die mensen zien, en de slug die haar in links noemt.`,detailsReadOnly:`Eigenaren en beheerders kunnen dit wijzigen.`,guestLinks:`Gastlinks voor gesprekken`,guestLinksDescription:`Iemand in een gesprek kan een link delen waarmee iemand van buiten in de wachtruimte wacht en, eenmaal binnengelaten, aan dat ene gesprek deelneemt. Gastlinks uitzetten trekt elke link in en haalt elke gast meteen uit het gesprek. Eigenaren en beheerders kunnen dit wijzigen.`,guestLinksAllowed:`Gastlinks toestaan`,handOver:`Overdragen`,handOverDescription:`Maak een ander lid eigenaar. Jij blijft beheerder.`,newOwner:`Nieuwe eigenaar`,chooseMember:`Kies een lid`,deleteOrganization:`Organisatie verwijderen`,deleteDescription:`Verwijdert de organisatie met haar leden en uitnodigingen. Haar records moeten eerst worden verwijderd.`,deleteTitle:`{name} verwijderen?`,deleteConfirm:`Typ de naam om te bevestigen. Dit kan niet ongedaan worden gemaakt.`,organizationName:`Naam van de organisatie`,leave:`Verlaten`,leaveOwner:`Een organisatie houdt een eigenaar: draag die rol over voordat je vertrekt, tenzij er nog een eigenaar is.`,leaveMember:`Je bent dan geen lid meer, en verliest je rollen hier.`,leaveName:`{name} verlaten`,noOrganization:`Je werkt nu niet in een organisatie. Kies er een onder Organisaties.`,youAre:`Je bent hier {role}.`,throughGlobalRoles:`Je werkt hier via je globale rollen, zonder lid te zijn.`,newOrganization:`Nieuwe organisatie`,newOrganizationDescription:`Je wordt de eigenaar, met elke rol, en werkt erin zodra die is gemaakt.`,invitationsForYou:`Uitnodigingen voor jou`,invitationsForYouDescription:`Accepteer er een om lid te worden en daar te werken.`,accept:`Accepteren`,anOrganization:`Een organisatie`,noAppRoles:`geen app-rollen`,until:`Tot {date}`,organizationsSubtitle:`Je werkt in één organisatie tegelijk; wat je ziet volgt uit je rollen daar.`,yourOrganizations:`Je organisaties`,memberOf:`De organisaties waar je lid van bent.`,notMember:`Je bent nog geen lid van een organisatie.`,couldNotReadOrganizations:`Kon je organisaties niet lezen`},plugins:{loading:`Laden`,pluginsOff:`Plug-ins uit`,pluginOff:`De plug-in {plugin} staat uit: {reason}.`,dismiss:`Sluiten`,answered:`de plugin.json antwoordde {status}`,couldNotLoad:`hij kon niet worden geladen: {reason}`,notObject:`de plugin.json is geen object`,noName:`de plugin.json noemt geen plug-in`,noApi:`de plugin.json noemt geen plug-in-API`,noVersions:`de plugin.json noemt geen Protobase-versies`,noModule:`de plugin.json noemt geen module`,badStylesheet:`de plugin.json noemt een stylesheet die geen URL is`,badVersion:`de plugin.json heeft een versie die geen tekst is`},primitives:{close:`Sluiten`,loading:`Laden`,remove:`{label} verwijderen`},"record-view":{savedDifferent:`{name} bewaarde een andere waarde`,example:`Voorbeeld:`,savedThis:`bewaarde dit {ago}:`,keepMine:`Mijn waarde houden`,useTheirs:`Hun waarde gebruiken`,actions:`Acties`,saving:`Bewaren...`,savedAgo:`Bewaard {ago}`,notSavedRetrying:`Niet bewaard, opnieuw proberen`,lastEditedBy:`Laatst bewerkt door`,lastUpdated:`Laatst bijgewerkt {ago}`,viewing:`{count} kijken mee`,tabs:`Tabbladen`},roles:{couldNotReadRoles:`Kon je rollen niet lezen`,couldNotSwitch:`Kon niet van rol wisselen`},"side-panel":{close:`Sluiten`},status:{setStatus:`Status instellen`,editStatus:`Status wijzigen`,availability:`Beschikbaarheid`,automatic:`Automatisch`,busy:`Bezet`,doNotDisturb:`Niet storen`,doNotDisturbHint:`Je krijgt geen pushmeldingen; ze wachten bij de bel.`,statusText:`Status`,statusPlaceholder:`Aan het lunchen`,clearsAfter:`Wissen na`,never:`Nooit`,thirtyMinutes:`30 minuten`,oneHour:`1 uur`,fourHours:`4 uur`,today:`Vandaag`,thisWeek:`Deze week`,custom:`Kies een datum en tijd`,clearsAt:`Wist om`,pickTime:`Kies een datum en tijd die nog moet komen`,save:`Opslaan`,cancel:`Annuleren`,clear:`Status wissen`,couldNotSave:`Je status kon niet worden opgeslagen`,until:`Tot {time}`,online:`Online`,away:`Afwezig`},toasts:{dismiss:`Sluiten`},users:{inviteSomeone:`Iemand uitnodigen`,inviteDescription:`Die krijgt een e-mail met een link om een account te maken, met de rollen die je aanvinkt.`,notAcceptedYet:`Nog niet geaccepteerd`,sendingAgain:`Opnieuw sturen geeft een nieuwe link, die de vorige vervangt.`,nobodyWaiting:`Er wacht niemand.`,addAnAccount:`Een account toevoegen`,addDescription:`Maakt het account meteen, met het adres als gecontroleerd. Zonder wachtwoord logt de persoon in op een andere manier die deze app toestaat, zoals een gemailde code.`,email:`E-mailadres`,name:`Naam`,password:`Wachtwoord`,passwordOptional:`Wachtwoord (optioneel, {length}+ tekens)`,addAccount:`Account toevoegen`,couldNotReadRoles:`Kon de rollen niet lezen`,people:`Mensen`,peopleDescription:`Iedereen met een account. Rollen bepalen wat ieder ziet en doet; wie geblokkeerd is, kan niet inloggen en wordt meteen uitgelogd.`,findSomeone:`Iemand zoeken`,emailAddress:`E-mailadres`,keepOneRole:`Houd minstens één rol.`,blocked:`Geblokkeerd`,unblock:`Deblokkeren`,block:`Blokkeren`}}},He={lower:e=>e.join(``).toLowerCase()},Ue=/* @__PURE__ */ new Map,We=(e,t)=>{let n=r(),i=`${n}\0${e}\0${t}`,a=Ue.get(i);if(a)return a;let s=Ve[n][e][t];if(s===void 0)throw Error(`No text ${e}.${t} in ${n}`);let c=new Re(s,o());return Ue.set(i,c),c},Ge=e=>{let t=(t,n)=>We(e,t).format({...n,...He});return t.rich=(t,n)=>{let r=We(e,t).format({...n,...He});return Array.isArray(r)?(0,Be.createElement)(Be.Fragment,null,...r):r},t},Ke=Ge(`format`),qe=()=>Intl.DateTimeFormat().resolvedOptions().timeZone,Je=/* @__PURE__ */ new Map,Ye=e=>{let t=Je.get(e);if(t)return t;let n=new Intl.DateTimeFormat(`en-US`,{timeZone:e,hourCycle:`h23`,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`});return Je.set(e,n),n},Xe=(e,t)=>{let n=Object.fromEntries(Ye(t).formatToParts(e).map(e=>[e.type,e.value]));return{year:Number(n.year),month:Number(n.month),day:Number(n.day),hour:Number(n.hour),minute:Number(n.minute),second:Number(n.second)}},Ze=(e,t)=>{let n=Xe(e,t);return Date.UTC(n.year,n.month-1,n.day,n.hour,n.minute,n.second)-Math.floor(e/1e3)*1e3},Qe=((e,t)=>()=>c(`date:${e}`,e=>new Intl.DateTimeFormat(e,{...t,timeZone:`UTC`})))(`day`,{day:`numeric`,month:`short`,year:`numeric`}),$e=e=>Qe().format(e),et=e=>c(`zoned:${e}`,t=>({day:new Intl.DateTimeFormat(t,{day:`numeric`,month:`short`,year:`numeric`,timeZone:e}),time:new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`,hour12:!1,timeZone:e})})),tt=(e,t=qe())=>{let n=et(t);return`${n.day.format(e)}, ${n.time.format(e)}`},nt=()=>c(`relative`,e=>new Intl.RelativeTimeFormat(e,{numeric:`auto`})),rt=[[`year`,31536e3],[`month`,2592e3],[`day`,86400],[`hour`,3600],[`minute`,60]],it=e=>{let t=Math.abs(e),[n,r]=rt.find(([,e])=>t>=e)??[`second`,1];return n===`second`&&t<45?Ke(`justNow`):nt().format(-Math.sign(e)*Math.floor(t/r),n)},at=Ge(`live`),ot=e=>typeof e==`object`&&!!e&&typeof e.uri==`string`,st=e=>typeof e==`object`&&!!e&&typeof e.uploaded?.value==`string`,ct=e=>{if(st(e))return{...e.uploaded.file,...e.preview&&{url:e.preview},corrected:e.uploaded.corrected};if(ot(e))return`missing`in e?{name:at(`fileMissing`),type:``,missing:!0}:e},lt=(e,t)=>`${t.prefix??``}${e}${t.suffix??``}`,ut=(e,n,r={},i=qe(),a=Date.now())=>{if(n==null||n===``)return`—`;switch(e.type){case`boolean`:return at(n?`yes`:`no`);case`file`:return ct(n)?.name??`—`;case`enum`:return t(String(n),r.valueLabels);case`timestamp`:{let e=Date.parse(String(n));return r.format===`relative`?it(Math.round((a-e)/1e3)):tt(e,i)}case`date`:return $e(Date.parse(String(n)));case`decimal`:{let e=r.decimals===void 0?String(n):Number(n).toFixed(r.decimals);return r.format===`percent`?`${Number(n)}%`:lt(Number(e).toLocaleString(o(),{minimumFractionDigits:r.decimals??0,maximumFractionDigits:r.decimals??20}),r)}case`integer`:case`bigint`:return lt(String(n),r);default:return typeof n==`object`?JSON.stringify(n):String(n)}},dt={kind:`empty`},ft=e=>({kind:`text`,value:e}),pt=e=>e==null||e===``,mt=(e,t,n)=>n[e.name]?.[String(t)]??String(t),ht=(e,t)=>ot(e)?t===`raw`?e.uri:ct(e)?.name??e.uri:String(e),gt=(e,t,n,r)=>{if(pt(t))return``;let{field:i,hints:a}=e;return i.type===`file`?ht(t,r):i.type===`relation`?r===`shown`?mt(e,t,n):String(t):r===`shown`?ut(i,t,{...a,format:void 0}):typeof t==`object`?JSON.stringify(t):String(t)},_t=e=>e/864e5+25569,vt={shown:{date:`d mmm yyyy`,timestamp:`d mmm yyyy, hh:mm`},raw:{date:`yyyy-mm-dd`,timestamp:`yyyy-mm-dd hh:mm:ss`}},yt=e=>[...e??``].map(e=>`\\${e}`).join(``),bt=e=>{if(e.format===`percent`)return`General\\%`;let t=e.decimals===void 0?`General`:e.decimals>0?`#,##0.${`0`.repeat(e.decimals)}`:`#,##0`,n=`${yt(e.prefix)}${t}${yt(e.suffix)}`;return n===`General`?void 0:n},xt=(e,t,n)=>{let r=Number(t);if(!Number.isFinite(r)||e.field.type===`bigint`&&!Number.isSafeInteger(r))return ft(String(t));let i=n===`shown`?bt(e.hints):void 0;return i?{kind:`number`,value:r,format:i}:{kind:`number`,value:r}},St=(e,t,n,r)=>{let i=Date.parse(String(t));if(Number.isNaN(i))return ft(String(t));let a=e===`timestamp`&&n===`shown`?i+Ze(i,r):i;return{kind:`number`,value:_t(a),format:vt[n][e]}},Ct=(e,t,n,r,i=qe())=>{if(pt(t))return dt;let{field:a}=e;switch(a.type){case`boolean`:return{kind:`boolean`,value:!!t};case`integer`:case`bigint`:case`decimal`:return xt(e,t,r);case`date`:case`timestamp`:return St(a.type,t,r,i);case`relation`:return r===`shown`?ft(mt(e,t,n)):typeof t==`number`?{kind:`number`,value:t}:ft(String(t));default:return ft(gt(e,t,n,r))}},wt=new Uint8Array([239,187,191]),Tt=/[",\r\n]/,Et=/^[=+\-@\t\r]/,Dt=e=>Tt.test(e)?`"${e.replaceAll(`"`,`""`)}"`:e,Ot=e=>Dt(Et.test(e)?`'${e}`:e),kt=e=>`${e.join(`,`)}\r\n`;var G=Uint8Array,K=Uint16Array,At=Int32Array,jt=new G([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Mt=new G([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Nt=new G([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Pt=function(e,t){for(var n=new K(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var i=new At(n[30]),r=1;r<30;++r)for(var a=n[r];a<n[r+1];++a)i[a]=a-n[r]<<5|r;return{b:n,r:i}},Ft=Pt(jt,2),It=Ft.b,Lt=Ft.r;It[28]=258,Lt[258]=28;var Rt=Pt(Mt,0);Rt.b;for(var zt=Rt.r,Bt=new K(32768),q=0;q<32768;++q){var J=(q&43690)>>1|(q&21845)<<1;J=(J&52428)>>2|(J&13107)<<2,J=(J&61680)>>4|(J&3855)<<4,Bt[q]=((J&65280)>>8|(J&255)<<8)>>1}for(var Vt=(function(e,t,n){for(var r=e.length,i=0,a=new K(t);i<r;++i)e[i]&&++a[e[i]-1];var o=new K(t);for(i=1;i<t;++i)o[i]=o[i-1]+a[i-1]<<1;var s;if(n){s=new K(1<<t);var c=15-t;for(i=0;i<r;++i)if(e[i])for(var l=i<<4|e[i],u=t-e[i],d=o[e[i]-1]++<<u,f=d|(1<<u)-1;d<=f;++d)s[Bt[d]>>c]=l}else for(s=new K(r),i=0;i<r;++i)e[i]&&(s[i]=Bt[o[e[i]-1]++]>>15-e[i]);return s}),Y=new G(288),q=0;q<144;++q)Y[q]=8;for(var q=144;q<256;++q)Y[q]=9;for(var q=256;q<280;++q)Y[q]=7;for(var q=280;q<288;++q)Y[q]=8;for(var Ht=new G(32),q=0;q<32;++q)Ht[q]=5;var Ut=/*#__PURE__*/ Vt(Y,9,0),Wt=/*#__PURE__*/ Vt(Ht,5,0),Gt=function(e){return(e+7)/8|0},Kt=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new G(e.subarray(t,n))},qt=[`unexpected EOF`,`invalid block type`,`invalid length/literal`,`invalid distance`,`stream finished`,`no stream handler`,,`no callback`,`invalid UTF-8 data`,`extra field too long`,`date not in range 1980-2099`,`filename too long`,`stream finishing`,`invalid zip data`],X=function(e,t,n){var r=Error(t||qt[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,X),!n)throw r;return r},Z=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},Jt=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},Yt=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var i=n.length,a=n.slice();if(!i)return{t:nn,l:0};if(i==1){var o=new G(n[0].s+1);return o[n[0].s]=1,{t:o,l:1}}n.sort(function(e,t){return e.f-t.f}),n.push({s:-1,f:25001});var s=n[0],c=n[1],l=0,u=1,d=2;for(n[0]={s:-1,f:s.f+c.f,l:s,r:c};u!=i-1;)s=n[n[l].f<n[d].f?l++:d++],c=n[l!=u&&n[l].f<n[d].f?l++:d++],n[u++]={s:-1,f:s.f+c.f,l:s,r:c};for(var f=a[0].s,r=1;r<i;++r)a[r].s>f&&(f=a[r].s);var p=new K(f+1),m=Xt(n[u-1],p,0);if(m>t){var r=0,h=0,g=m-t,_=1<<g;for(a.sort(function(e,t){return p[t.s]-p[e.s]||e.f-t.f});r<i;++r){var v=a[r].s;if(p[v]>t)h+=_-(1<<m-p[v]),p[v]=t;else break}for(h>>=g;h>0;){var y=a[r].s;p[y]<t?h-=1<<t-p[y]++-1:++r}for(;r>=0&&h;--r){var b=a[r].s;p[b]==t&&(--p[b],++h)}m=t}return{t:new G(p),l:m}},Xt=function(e,t,n){return e.s==-1?Math.max(Xt(e.l,t,n+1),Xt(e.r,t,n+1)):t[e.s]=n},Zt=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new K(++t),r=0,i=e[0],a=1,o=function(e){n[r++]=e},s=1;s<=t;++s)if(e[s]==i&&s!=t)++a;else{if(!i&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(i),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(i);a=1,i=e[s]}return{c:n.subarray(0,r),n:t}},Qt=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},$t=function(e,t,n){var r=n.length,i=Gt(t+2);e[i]=r&255,e[i+1]=r>>8,e[i+2]=e[i]^255,e[i+3]=e[i+1]^255;for(var a=0;a<r;++a)e[i+a+4]=n[a];return(i+4+r)*8},en=function(e,t,n,r,i,a,o,s,c,l,u){Z(t,u++,n),++i[256];for(var d=Yt(i,15),f=d.t,p=d.l,m=Yt(a,15),h=m.t,g=m.l,_=Zt(f),v=_.c,y=_.n,b=Zt(h),x=b.c,S=b.n,C=new K(19),w=0;w<v.length;++w)++C[v[w]&31];for(var w=0;w<x.length;++w)++C[x[w]&31];for(var T=Yt(C,7),E=T.t,D=T.l,O=19;O>4&&!E[Nt[O-1]];--O);var k=l+5<<3,A=Qt(i,Y)+Qt(a,Ht)+o,j=Qt(i,f)+Qt(a,h)+o+14+3*O+Qt(C,E)+2*C[16]+3*C[17]+7*C[18];if(c>=0&&k<=A&&k<=j)return $t(t,u,e.subarray(c,c+l));var M,N,P,F;if(Z(t,u,1+(j<A)),u+=2,j<A){M=Vt(f,p,0),N=f,P=Vt(h,g,0),F=h;var ee=Vt(E,D,0);Z(t,u,y-257),Z(t,u+5,S-1),Z(t,u+10,O-4),u+=14;for(var w=0;w<O;++w)Z(t,u+3*w,E[Nt[w]]);u+=3*O;for(var I=[v,x],L=0;L<2;++L)for(var R=I[L],w=0;w<R.length;++w){var z=R[w]&31;Z(t,u,ee[z]),u+=E[z],z>15&&(Z(t,u,R[w]>>5&127),u+=R[w]>>12)}}else M=Ut,N=Y,P=Wt,F=Ht;for(var w=0;w<s;++w){var B=r[w];if(B>255){var z=B>>18&31;Jt(t,u,M[z+257]),u+=N[z+257],z>7&&(Z(t,u,B>>23&31),u+=jt[z]);var V=B&31;Jt(t,u,P[V]),u+=F[V],V>3&&(Jt(t,u,B>>5&8191),u+=Mt[V])}else Jt(t,u,M[B]),u+=N[B]}return Jt(t,u,M[256]),u+N[256]},tn=/*#__PURE__*/ new At([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),nn=/*#__PURE__*/ new G(0),rn=function(e,t,n,r,i,a){var o=a.z||e.length,s=new G(r+o+5*(1+Math.ceil(o/7e3))+i),c=s.subarray(r,s.length-i),l=a.l,u=(a.r||0)&7;if(t){u&&(c[0]=a.r>>3);for(var d=tn[t-1],f=d>>13,p=d&8191,m=(1<<n)-1,h=a.p||new K(32768),g=a.h||new K(m+1),_=Math.ceil(n/3),v=2*_,y=function(t){return(e[t]^e[t+1]<<_^e[t+2]<<v)&m},b=new At(25e3),x=new K(288),S=new K(32),C=0,w=0,T=a.i||0,E=0,D=a.w||0,O=0;T+2<o;++T){var k=y(T),A=T&32767,j=g[k];if(h[A]=j,g[k]=A,D<=T){var M=o-T;if((C>7e3||E>24576)&&(M>423||!l)){u=en(e,c,0,b,x,S,w,E,O,T-O,u),E=C=w=0,O=T;for(var N=0;N<286;++N)x[N]=0;for(var N=0;N<30;++N)S[N]=0}var P=2,F=0,ee=p,I=A-j&32767;if(M>2&&k==y(T-I))for(var L=Math.min(f,M)-1,R=Math.min(32767,T),z=Math.min(258,M);I<=R&&--ee&&A!=j;){if(e[T+P]==e[T+P-I]){for(var B=0;B<z&&e[T+B]==e[T+B-I];++B);if(B>P){if(P=B,F=I,B>L)break;for(var V=Math.min(I,B-2),te=0,N=0;N<V;++N){var ne=T-I+N&32767,re=ne-h[ne]&32767;re>te&&(te=re,j=ne)}}}A=j,j=h[A],I+=A-j&32767}if(F){b[E++]=268435456|Lt[P]<<18|zt[F];var H=Lt[P]&31,ie=zt[F]&31;w+=jt[H]+Mt[ie],++x[257+H],++S[ie],D=T+P,++C}else b[E++]=e[T],++x[e[T]]}}for(T=Math.max(T,D);T<o;++T)b[E++]=e[T],++x[e[T]];u=en(e,c,l,b,x,S,w,E,O,T-O,u),l||(a.r=u&7|c[u/8|0]<<3,u-=7,a.h=g,a.p=h,a.i=T,a.w=D)}else{for(var T=a.w||0;T<o+l;T+=65535){var ae=T+65535;ae>=o&&(c[u/8|0]=l,ae=o),u=$t(c,u+1,e.subarray(T,ae))}a.i=o}return Kt(s,0,r+Gt(u)+i)},an=/*#__PURE__*/ (function(){for(var e=/* @__PURE__ */ new Int32Array(256),t=0;t<256;++t){for(var n=t,r=9;--r;)n=(n&1&&-306674912)^n>>>1;e[t]=n}return e})(),on=function(){var e=-1;return{p:function(t){for(var n=e,r=0;r<t.length;++r)n=an[n&255^t[r]]^n>>>8;e=n},d:function(){return~e}}},sn=function(e,t,n,r,i){if(!i&&(i={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),o=new G(a.length+e.length);o.set(a),o.set(e,a.length),e=o,i.w=a.length}return rn(e,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,i)},cn=function(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n},Q=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8},ln=/* @__PURE__ */ function(){function e(e,t){if(typeof e==`function`&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new G(98304),this.o.dictionary){var n=this.o.dictionary.subarray(-32768);this.b.set(n,32768-n.length),this.s.i=32768-n.length}}return e.prototype.p=function(e,t){this.ondata(sn(e,this.o,0,0,this.s),t)},e.prototype.push=function(e,t){this.ondata||X(5),this.s.l&&X(4);var n=e.length+this.s.z;if(n>this.b.length){if(n>2*this.b.length-32768){var r=new G(n&-32768);r.set(this.b.subarray(0,this.s.z)),this.b=r}var i=this.b.length-this.s.z;this.b.set(e.subarray(0,i),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(i),32768),this.s.z=e.length-i+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=t&1,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2),t&&(this.s=this.o={},this.b=nn)},e.prototype.flush=function(e){if(this.ondata||X(5),this.s.l&&X(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2,e){var t=new G(6);t[0]=this.s.r>>3;var n=$t(t,this.s.r,nn);this.s.r=0,this.ondata(t.subarray(0,n>>3),!1)}},e}(),un=typeof TextEncoder<`u`&&/*#__PURE__*/ new TextEncoder,dn=typeof TextDecoder<`u`&&/*#__PURE__*/ new TextDecoder;try{dn.decode(nn,{stream:!0})}catch{}function fn(e,t){if(t){for(var n=new G(e.length),r=0;r<e.length;++r)n[r]=e.charCodeAt(r);return n}if(un)return un.encode(e);for(var i=e.length,a=new G(e.length+(e.length>>1)),o=0,s=function(e){a[o++]=e},r=0;r<i;++r){if(o+5>a.length){var c=new G(o+8+(i-r<<1));c.set(a),a=c}var l=e.charCodeAt(r);l<128||t?s(l):l<2048?(s(192|l>>6),s(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|e.charCodeAt(++r)&1023,s(240|l>>18),s(128|l>>12&63),s(128|l>>6&63),s(128|l&63)):(s(224|l>>12),s(128|l>>6&63),s(128|l&63))}return Kt(a,0,o)}var pn=function(e){return e==1?3:e<6?2:+(e==9)},mn=function(e){var t=0;if(e)for(var n in e){var r=e[n].length;r>65535&&X(9),t+=r+4}return t},hn=function(e,t,n,r,i,a,o,s){var c=r.length,l=n.extra,u=s&&s.length,d=mn(l);Q(e,t,o==null?67324752:33639248),t+=4,o!=null&&(e[t++]=20,e[t++]=n.os),e[t]=20,t+=2,e[t++]=n.flag<<1|(a<0&&8),e[t++]=i&&8,e[t++]=n.compression&255,e[t++]=n.compression>>8;var f=new Date(n.mtime==null?Date.now():n.mtime),p=f.getFullYear()-1980;if((p<0||p>119)&&X(10),Q(e,t,p<<25|f.getMonth()+1<<21|f.getDate()<<16|f.getHours()<<11|f.getMinutes()<<5|f.getSeconds()>>1),t+=4,a!=-1&&(Q(e,t,n.crc),Q(e,t+4,a<0?-a-2:a),Q(e,t+8,n.size)),Q(e,t+12,c),Q(e,t+14,d),t+=16,o!=null&&(Q(e,t,u),Q(e,t+6,n.attrs),Q(e,t+10,o),t+=14),e.set(r,t),t+=c,d)for(var m in l){var h=l[m],g=h.length;Q(e,t,+m),Q(e,t+2,g),e.set(h,t+4),t+=4+g}return u&&(e.set(s,t),t+=u),t},gn=function(e,t,n,r,i){Q(e,t,101010256),Q(e,t+8,n),Q(e,t+10,n),Q(e,t+12,r),Q(e,t+16,i)},_n=/* @__PURE__ */ function(){function e(e){this.filename=e,this.c=on(),this.size=0,this.compression=0}return e.prototype.process=function(e,t){this.ondata(null,e,t)},e.prototype.push=function(e,t){this.ondata||X(5),this.c.p(e),this.size+=e.length,t&&(this.crc=this.c.d()),this.process(e,t||!1)},e}(),vn=/* @__PURE__ */ function(){function e(e,t){var n=this;t||={},_n.call(this,e),this.d=new ln(t,function(e,t){n.ondata(null,e,t)}),this.compression=8,this.flag=pn(t.level)}return e.prototype.process=function(e,t){try{this.d.push(e,t)}catch(e){this.ondata(e,null,t)}},e.prototype.push=function(e,t){_n.prototype.push.call(this,e,t)},e}(),yn=/* @__PURE__ */ function(){function e(e){this.ondata=e,this.u=[],this.d=1}return e.prototype.add=function(e){var t=this;if(this.ondata||X(5),this.d&2)this.ondata(X(4+(this.d&1)*8,0,1),null,!1);else{var n=fn(e.filename),r=n.length,i=e.comment,a=i&&fn(i),o=r!=e.filename.length||a&&i.length!=a.length,s=r+mn(e.extra)+30;r>65535&&this.ondata(X(11,0,1),null,!1);var c=new G(s);hn(c,0,e,n,o,-1);var l=[c],u=function(){for(var e=0,n=l;e<n.length;e++){var r=n[e];t.ondata(null,r,!1)}l=[]},d=this.d;this.d=0;var f=this.u.length,p=cn(e,{f:n,u:o,o:a,t:function(){e.terminate&&e.terminate()},r:function(){if(u(),d){var e=t.u[f+1];e?e.r():t.d=1}d=1}}),m=0;e.ondata=function(n,r,i){if(n)t.ondata(n,r,i),t.terminate();else if(m+=r.length,l.push(r),i){var a=new G(16);Q(a,0,134695760),Q(a,4,e.crc),Q(a,8,m),Q(a,12,e.size),l.push(a),p.c=m,p.b=s+m+16,p.crc=e.crc,p.size=e.size,d&&p.r(),d=1}else d&&u()},this.u.push(p)}},e.prototype.end=function(){var e=this;if(this.d&2){this.ondata(X(4+(this.d&1)*8,0,1),null,!0);return}this.d?this.e():this.u.push({r:function(){e.d&1&&(e.u.splice(-1,1),e.e())},t:function(){}}),this.d=3},e.prototype.e=function(){for(var e=0,t=0,n=0,r=0,i=this.u;r<i.length;r++){var a=i[r];n+=46+a.f.length+mn(a.extra)+(a.o?a.o.length:0)}for(var o=new G(n+22),s=0,c=this.u;s<c.length;s++){var a=c[s];hn(o,e,a,a.f,a.u,-a.c-2,t,a.o),e+=46+a.f.length+mn(a.extra)+(a.o?a.o.length:0),t+=a.b}gn(o,e,this.u.length,n,t),this.ondata(null,o,!0),this.d=2},e.prototype.terminate=function(){for(var e=0,t=this.u;e<t.length;e++)t[e].t();this.d=2},e}();let bn=/[\u0000-\u0008\u000b\u000c\u000e-\u001f]/g,xn=e=>e.replace(bn,``).replaceAll(`&`,`&`).replaceAll(`<`,`<`).replaceAll(`>`,`>`).replaceAll(`"`,`"`),Sn=e=>{let t=String.fromCharCode(65+e%26);return e<26?t:Sn(Math.floor(e/26)-1)+t},Cn=(e,t,n=``)=>`<c r="${e}"${n} t="inlineStr"><is><t xml:space="preserve">${xn(t.slice(0,32767))}</t></is></c>`,$=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
14
|
-
`,wn=`http://schemas.openxmlformats.org/spreadsheetml/2006/main`,Tn=`http://schemas.openxmlformats.org/officeDocument/2006/relationships`,En=`http://schemas.openxmlformats.org/package/2006/relationships`,Dn=`${$}<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/><Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/><Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/></Types>`,On=`${$}<Relationships xmlns="${En}"><Relationship Id="rId1" Type="${Tn}/officeDocument" Target="xl/workbook.xml"/></Relationships>`,kn=`${$}<Relationships xmlns="${En}"><Relationship Id="rId1" Type="${Tn}/worksheet" Target="worksheets/sheet1.xml"/><Relationship Id="rId2" Type="${Tn}/styles" Target="styles.xml"/></Relationships>`,An=e=>e.replace(/[:\\/?*[\]]/g,` `).slice(0,31).trim()||`Sheet1`,jn=e=>`${$}<workbook xmlns="${wn}" xmlns:r="${Tn}"><sheets><sheet name="${xn(An(e))}" sheetId="1" r:id="rId1"/></sheets></workbook>`,Mn=e=>{let t=e.map((e,t)=>`<numFmt numFmtId="${164+t}" formatCode="${xn(e)}"/>`).join(``),n=e.map((e,t)=>`<xf numFmtId="${164+t}" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>`).join(``);return`${$}<styleSheet xmlns="${wn}">${e.length>0?`<numFmts count="${e.length}">${t}</numFmts>`:``}<fonts count="2"><font><sz val="11"/><name val="Calibri"/></font><font><b/><sz val="11"/><name val="Calibri"/></font></fonts><fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="${2+e.length}"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/><xf numFmtId="0" fontId="1" fillId="0" borderId="0" xfId="0" applyFont="1"/>${n}</cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles></styleSheet>`},Nn=new TextEncoder,Pn=(e,t)=>{let n=new yn((e,n,r)=>{if(e)throw e;t(n,r)}),r=(e,t)=>{let r=new vn(e,{level:6});n.add(r),r.push(Nn.encode(t),!0)};r(`[Content_Types].xml`,Dn),r(`_rels/.rels`,On),r(`xl/workbook.xml`,jn(e.name)),r(`xl/_rels/workbook.xml.rels`,kn);let i=new vn(`xl/worksheets/sheet1.xml`,{level:6});n.add(i);let a=e.widths.map((e,t)=>`<col min="${t+1}" max="${t+1}" width="${e}" customWidth="1"/>`).join(``),o=`<row r="1">${e.headers.map((e,t)=>Cn(`${Sn(t)}1`,e,` s="1"`)).join(``)}</row>`;i.push(Nn.encode(`${$}<worksheet xmlns="${wn}"><sheetViews><sheetView workbookViewId="0"><pane ySplit="1" topLeftCell="A2" activePane="bottomLeft" state="frozen"/></sheetView></sheetViews>${a?`<cols>${a}</cols>`:``}<sheetData>${o}`));let s=e.headers.map((e,t)=>Sn(t)),c=[],l=e=>{let t=c.indexOf(e);return t>=0?t+2:(c.push(e),c.length+1)},u=(e,t)=>{switch(e.kind){case`empty`:return``;case`text`:return Cn(t,e.value);case`boolean`:return`<c r="${t}" t="b"><v>${+!!e.value}</v></c>`;case`number`:return`<c r="${t}"${e.format?` s="${l(e.format)}"`:``}><v>${e.value}</v></c>`}},d=1;return{rows:e=>{let t=``;for(let n of e){if(d+=1,d>1048576)throw Error(`A sheet holds at most 1048575 rows`);t+=`<row r="${d}">${n.map((e,t)=>u(e,`${s[t]}${d}`)).join(``)}</row>`}i.push(Nn.encode(t))},finish:()=>{i.push(Nn.encode(`</sheetData></worksheet>`),!0),r(`xl/styles.xml`,Mn(c)),n.end()}}},Fn=/* @__PURE__ */ new Set([`text`,`uuid`,`enum`,`relation`,`file`,`json`,`currency`,`country`]),In=(e,t,n)=>e.map(e=>{let r=Math.max(e.header.length,...t.map(t=>gt(e,t[e.name],n,`shown`).length));return Math.min(60,Math.max(8,r+2))}),Ln=(e,t)=>{let n=new TextEncoder;t(wt),t(n.encode(kt(e.columns.map(e=>Dt(e.header)))));let r=(t,n,r)=>{let i=gt(t,n[t.name],r,e.mode);return Fn.has(t.field.type)?Ot(i):Dt(i)};return{page:(i,a)=>{t(n.encode(i.map(t=>kt(e.columns.map(e=>r(e,t,a)))).join(``)))},finish:()=>void 0}},Rn=(e,t)=>{let n,r=(n,r)=>Pn({name:e.name,headers:e.columns.map(e=>e.header),widths:In(e.columns,n,r)},t);return{page:(t,i)=>{n??=r(t,i),n.rows(t.map(t=>e.columns.map(n=>Ct(n,t[n.name],i,e.mode))))},finish:()=>{n??=r([],{}),n.finish()}}},zn=(e,t)=>e.format===`csv`?Ln(e,t):Rn(e,t),Bn=e=>{let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t},Vn=(()=>{let e,t=[];return n=>{if(n.kind===`start`)e=zn(n.plan,e=>t.push(e));else if(e)n.kind===`page`?e.page(n.records,n.labels):e.finish();else throw Error(`The export was not started`);let r=Bn(t);return t=[],r}})(),Hn=self;Hn.onmessage=e=>{e.data.kind===`start`&&i(e.data.locale);let t=Vn(e.data);Hn.postMessage({bytes:t},[t.buffer])}})();
|
|
15
|
-
//# debugId=6ec7ee9d-a7d1-4fe7-a472-af53cf973b6b
|