@evotecit/canopyx 0.3.7 → 0.3.9

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.
@@ -60,7 +60,7 @@ function fill(template,values){return template.replace(/\{(\w+)\}/g, (match, nam
60
60
  const pluralRules=new Map();function plural(template,count,lang){if(!template.startsWith("["))return template;const forms={};for(const match of template.matchAll(/\[(zero|one|two|few|many|other)\]([^[]*)/g)) forms[match[1]] = match[2];
61
61
  let rules=pluralRules.get(lang);if(!rules){try{rules=new Intl.PluralRules(lang||"en")}catch(_){rules=new Intl.PluralRules("en")}pluralRules.set(lang,rules)}
62
62
  return forms[rules.select(Number(count))]??forms.other??template}
63
- let DEFAULT_LABELS=Object.freeze({searchPlaceholder:"Search",searchResults:"Search results",searchResultCount:"{count} results",searchResultCountOfTotal:"{count} of {total} results",searchResultCountOfMany:"{count} of many results",searchNoResults:"No results",searchTooShort:"Type at least {min} characters",searchWordTooShort:"Type a word of at least {min} characters",searchFailed:"Search failed: {error}",columns:"Columns",hiddenColumns:"[one]+{count} column[other]+{count} columns",visibleColumns:"Visible columns",resizeColumn:"Resize {column}",columnWidth:"{width} pixels",loading:"Loading…",loadError:"Could not load: {error} (Enter to retry)",queryFailed:"Could not update the view: {error}",showMore:"Show more ({loaded} of {total} loaded)",showMoreUnknownTotal:"Show more ({loaded} loaded)",pageLoaded:"{loaded} of {total} loaded",itemsLoaded:"{count} items",yes:"Yes",no:"No",utcTime:"{time} UTC",localTime:"{time} local time",mountError:"This view could not be displayed: {error}"});function labelsFor(...sources){const labels=Object.assign({},DEFAULT_LABELS);for(const source of sources){if(source==null)continue;if(typeof source!=="object"||Array.isArray(source))throw new Error("CanopyX: labels must be an object of strings.");Object.keys(source).forEach((name)=>{if(!Object.hasOwn(DEFAULT_LABELS,name)&&!/^(?:gridEdit|format|calendar|flow|matrix)[A-Z]\w{0,63}$/.test(name)) throw new Error("CanopyX: there is no label '" + name + "'.");
63
+ let DEFAULT_LABELS=Object.freeze({searchPlaceholder:"Search",searchResults:"Search results",searchResultCount:"{count} results",searchResultCountOfTotal:"{count} of {total} results",searchResultCountOfMany:"{count} of many results",searchNoResults:"No results",searchTooShort:"Type at least {min} characters",searchWordTooShort:"Type a word of at least {min} characters",searchFailed:"Search failed: {error}",columns:"Columns",hiddenColumns:"[one]+{count} column[other]+{count} columns",visibleColumns:"Visible columns",resizeColumn:"Resize {column}",columnWidth:"{width} pixels",loading:"Loading…",loadError:"Could not load: {error} (Enter to retry)",queryFailed:"Could not update the view: {error}",showMore:"Show more ({loaded} of {total} loaded)",showMoreUnknownTotal:"Show more ({loaded} loaded)",pageLoaded:"{loaded} of {total} loaded",itemsLoaded:"{count} items",yes:"Yes",no:"No",utcTime:"{time} UTC",localTime:"{time} local time",mountError:"This view could not be displayed: {error}"});function labelsFor(...sources){const labels=Object.assign({},DEFAULT_LABELS);for(const source of sources){if(source==null)continue;if(typeof source!=="object"||Array.isArray(source))throw new Error("CanopyX: labels must be an object of strings.");Object.keys(source).forEach((name)=>{if(!Object.hasOwn(DEFAULT_LABELS,name)&&!/^(?:gridEdit|format|calendar|flow|matrix|change)[A-Z]\w{0,63}$/.test(name)) throw new Error("CanopyX: there is no label '" + name + "'.");
64
64
  if(typeof source[name]!=="string"||!/\S/.test(source[name])) throw new Error("CanopyX: label '" + name + "' must be a string with visible text.");
65
65
  if((name==="utcTime"||name==="localTime")&&source[name].indexOf("{time}")<0)throw new Error("CanopyX: label '"+name+"' must hold {time}.");labels[name]=source[name]})}
66
66
  return Object.freeze(labels)}
@@ -504,7 +504,7 @@ if(active>=0){list.children[active].setAttribute("aria-selected","false")}
504
504
  active=active<0?(delta<0?hits.length-1:0):(active+delta+hits.length)%hits.length;const item=list.children[active];item.setAttribute("aria-selected","true");input.setAttribute("aria-activedescendant",item.id);item.scrollIntoView({block:"nearest"})};input.addEventListener("input",()=>{cancelNavigation();sequence++;clearTimeout(timer);hits=[];close();timer=setTimeout(run,150)});input.addEventListener("keydown",(e)=>{if(e.defaultPrevented||e.isComposing)return;if(e.key==="ArrowDown"||e.key==="ArrowUp"){move(e.key==="ArrowDown"?1:-1)}else if(e.key==="Enter"){if(!list.hidden){choose(active>=0?active:0)}}else if(e.key==="Escape"){cancelNavigation();sequence++;clearTimeout(timer);if(list.hidden){input.value=""}
505
505
  close()}else{return}
506
506
  e.preventDefault()});input.addEventListener("blur",()=>{cancelNavigation();sequence++;clearTimeout(timer);clearTimeout(blurTimer);blurTimer=setTimeout(close,150)});this.cancelSearch=()=>{cancelNavigation();sequence++;clearTimeout(timer);clearTimeout(blurTimer);hits=[];close()};box.appendChild(input);box.appendChild(list);box.appendChild(status);bar.appendChild(box);this.searchInput=input}});function watchFlyout(anchorElement,panel,isOpen){const position=()=>{if(!isOpen())return;const anchor=anchorElement.getBoundingClientRect(),fixed=getComputedStyle(panel).position==="fixed";const below=Math.max(0,global.innerHeight-anchor.bottom-8);const above=Math.max(0,anchor.top-8);const opensAbove=below<120&&above>below,room=opensAbove?above:below;panel.style.maxHeight=(panel.classList.contains("cx-fb")?room:Math.min(320,room))+ "px";panel.style.top=opensAbove?"auto":fixed?anchor.bottom+"px":"100%";panel.style.bottom=opensAbove?fixed?global.innerHeight-anchor.top+"px":"100%":"auto";const width=panel.getBoundingClientRect().width;panel.style.left=Math.max(8,Math.min(anchor.left,global.innerWidth-width-8))-(fixed?0:anchor.left)+ "px"};global.addEventListener("resize",position);global.addEventListener("scroll",position,true);return{position,dispose:()=>{global.removeEventListener("resize",position);global.removeEventListener("scroll",position,true)}}}
507
- const PART_URL=typeof document!=="undefined"&&document.currentScript?.src;const PARTS={"tree-tools":["4c6c4101089c4444","canopyx-tree-tools.510207e8f47014fd.js","canopyx-tree-tools.ef7a3fb9c9115a82.css"],"filter-editor":["8a058a87bbba3cbe","canopyx-filter-editor.15e355b04c7138cc.js","canopyx-filter-editor.01b7bb6820dc9edb.css"],"export":["8b99c0b7b0ec37c5","canopyx-export.6989ea36f5d6da7b.js"],"history":["7d9901d2fe04df72","canopyx-history.9432e724bf14c9ed.js"],"pager":["8f804f70b96409f2","canopyx-pager.ac543250cf2f6e8b.js","canopyx-pager.08ad67c69026852e.css"],"enhance":["31162b1ffa622bf8","canopyx-enhance.65868addbc5c4a1a.js"],"data":["f07aebe37f3d1bb4","canopyx-data.401d09bc34c61d2f.js"],"forms":["a8c60f205d9babca","canopyx-forms.16987de1cdf9bda9.js","canopyx-forms.29058ce3c88af96e.css"],"flow":["842e1f1956f6213f","canopyx-flow.efc6250968e8b10a.js","canopyx-flow.3152e616c5557452.css"],"flow-host":["de4f9b11ab881eca","canopyx-flow-host.aea5ed35816df2af.js","canopyx-flow-host.1301fcf3454a723a.css"],"flow-checks":["ec2451183901867b","canopyx-flow-checks.29c4586a80f04b6a.js","canopyx-flow-checks.4502d6f7f7487b73.css"],"flow-options":["60450342239ded26","canopyx-flow-options.d31458a54aa4b1e7.js"],"flow-pick":["426718e2fa1f3cd0","canopyx-flow-pick.379205e09325bca3.js","canopyx-flow-pick.771b06ac50c141a1.css"],"flow-records":["f3c09661bdffb8d0","canopyx-flow-records.fddf130ace0764b1.js","canopyx-flow-records.e362111fb5f85732.css"],"flow-drafts":["4f112f64736ca8e3","canopyx-flow-drafts.09b88e275c7bc3b9.js","canopyx-flow-drafts.2dd86fb31fc10458.css"],"flow-preview":["f4fb5c42743873c0","canopyx-flow-preview.5778d5fce9ae0d78.js","canopyx-flow-preview.7928e22901da2088.css"],"flow-command":["39472118ca80ef02","canopyx-flow-command.78f4f931c52b1bfc.js","canopyx-flow-command.0c1247a371b7e775.css"],"flow-tasks":["147dd31638a9cb94","canopyx-flow-tasks.f012a521560f7075.js","canopyx-flow-tasks.524df90f908f81dd.css"],"flow-dialog":["ebb432cd6e34aba6","canopyx-flow-dialog.b00addd6a176198e.js","canopyx-flow-dialog.e6192e827eca25d2.css"],"flow-links":["2c14b19c9236e90d","canopyx-flow-links.7b6cfe42d28b6067.js"],"flow-endpoint":["f5cddfc9545e0920","canopyx-flow-endpoint.b31146202bd76aac.js"],"flow-consent":["22121778bc0d07c5","canopyx-flow-consent.749b97f13039bc71.js","canopyx-flow-consent.9f6580d3673ae8bf.css"],"matrix":["b7324bd75b73b9a3","canopyx-matrix.c8e156769fe3eb9d.js","canopyx-matrix.b6ea56044183ca82.css"],"editing":["c82648dfaa7e5ee5","canopyx-editing.4fe83feec389c2ce.js","canopyx-editing.67c43d3b80f20232.css"],"column-groups":["b42238fd108a8614","canopyx-column-groups.d8ad6322f769b915.js","canopyx-column-groups.37e177d74cebb516.css"],"cell-range":["e99a39e7cccc57b1","canopyx-cell-range.647da96e57924f3e.js","canopyx-cell-range.23f3222652588441.css"],"links":["f1ab7e32b501ce37","canopyx-links.d96addeefb3eccf5.js"],"search":["521eebd6e1bbbd35","canopyx-search.14c69f4551c69f23.js"],"formatting":["1a28068597f435de","canopyx-formatting.68c501f97b71f1ec.js","canopyx-formatting.a59507e4e8334891.css"],"format-editor":["24f176a39c02944a","canopyx-format-editor.3b1dec2527e53988.js","canopyx-format-editor.1ba153c82aa87b04.css"],"link":["fa0c9e888463553b","canopyx-link.4ec39bc39fa6cf50.js","canopyx-link.8435c892613926ac.css"],"detail-rows":["4908d1d2b7f67aa8","canopyx-detail-rows.fe29b1759c962565.js","canopyx-detail-rows.8e38a8ad01fded76.css"],"grouping":["0970f2edbcb32de8","canopyx-grouping.84660cd1a0ea5f8f.js","canopyx-grouping.6c93259b4b89e523.css"],"highlight":["f39423961654c1e2","canopyx-highlight.a6f93893d36ab343.js","canopyx-highlight.5b6d2e0d979f9f9b.css"],"layouts":["fa8c686f21626884","canopyx-layouts.e7250c82a6abf52e.js","canopyx-layouts.0b75738924533ee8.css"],"facets":["f9219d35a87635f8","canopyx-facets.8bf477b7915bdcd6.js","canopyx-facets.648a88d2f36d4999.css"],"live":["a27c818b731c22e3","canopyx-live.d19df9edc92e7d09.js","canopyx-live.cc4b94a2dec6f064.css"],"record-panel":["bcc06276c7933af6","canopyx-record-panel.a374fb4254f9115c.js","canopyx-record-panel.f3691d54cefaab04.css"],"calendar":["762f4b4b62ecb4d8","canopyx-calendar.dc45ebdeb704d9c3.js","canopyx-calendar.1099197a45632f63.css"],"calendar-recurrence":["64bcc24d785bd1af","canopyx-calendar-recurrence.4b7f430c2a64de23.js"],"calendar-edit":["bdde26d4b7de2096","canopyx-calendar-edit.4ab2cf55e84f310f.js"],"calendar-ics":["feb3ed2cd67d057f","canopyx-calendar-ics.2a3af9eb3bf444fc.js"],"timeline":["3f04ba99401e9ebd","canopyx-timeline.76928f089774b3de.js","canopyx-timeline.0393f92746f8fa09.css"]},PART_CODE=new Map(),partName=name=>typeof name==="string"&&/^[a-z][a-z\d-]{0,31}$/.test(name);
507
+ const PART_URL=typeof document!=="undefined"&&document.currentScript?.src;const PARTS={"tree-tools":["4c6c4101089c4444","canopyx-tree-tools.510207e8f47014fd.js","canopyx-tree-tools.ef7a3fb9c9115a82.css"],"filter-editor":["8a058a87bbba3cbe","canopyx-filter-editor.15e355b04c7138cc.js","canopyx-filter-editor.01b7bb6820dc9edb.css"],"export":["8b99c0b7b0ec37c5","canopyx-export.6989ea36f5d6da7b.js"],"history":["7d9901d2fe04df72","canopyx-history.9432e724bf14c9ed.js"],"pager":["8f804f70b96409f2","canopyx-pager.ac543250cf2f6e8b.js","canopyx-pager.08ad67c69026852e.css"],"enhance":["31162b1ffa622bf8","canopyx-enhance.65868addbc5c4a1a.js"],"data":["f07aebe37f3d1bb4","canopyx-data.401d09bc34c61d2f.js"],"forms":["a8c60f205d9babca","canopyx-forms.16987de1cdf9bda9.js","canopyx-forms.29058ce3c88af96e.css"],"flow":["842e1f1956f6213f","canopyx-flow.efc6250968e8b10a.js","canopyx-flow.3152e616c5557452.css"],"flow-host":["de4f9b11ab881eca","canopyx-flow-host.aea5ed35816df2af.js","canopyx-flow-host.1301fcf3454a723a.css"],"flow-checks":["ec2451183901867b","canopyx-flow-checks.29c4586a80f04b6a.js","canopyx-flow-checks.4502d6f7f7487b73.css"],"flow-options":["60450342239ded26","canopyx-flow-options.d31458a54aa4b1e7.js"],"flow-pick":["426718e2fa1f3cd0","canopyx-flow-pick.379205e09325bca3.js","canopyx-flow-pick.771b06ac50c141a1.css"],"flow-records":["f3c09661bdffb8d0","canopyx-flow-records.fddf130ace0764b1.js","canopyx-flow-records.e362111fb5f85732.css"],"flow-drafts":["4f112f64736ca8e3","canopyx-flow-drafts.09b88e275c7bc3b9.js","canopyx-flow-drafts.2dd86fb31fc10458.css"],"flow-preview":["f4fb5c42743873c0","canopyx-flow-preview.5778d5fce9ae0d78.js","canopyx-flow-preview.7928e22901da2088.css"],"flow-command":["39472118ca80ef02","canopyx-flow-command.78f4f931c52b1bfc.js","canopyx-flow-command.0c1247a371b7e775.css"],"flow-tasks":["147dd31638a9cb94","canopyx-flow-tasks.f012a521560f7075.js","canopyx-flow-tasks.524df90f908f81dd.css"],"flow-dialog":["ebb432cd6e34aba6","canopyx-flow-dialog.b00addd6a176198e.js","canopyx-flow-dialog.e6192e827eca25d2.css"],"flow-links":["2c14b19c9236e90d","canopyx-flow-links.7b6cfe42d28b6067.js"],"flow-endpoint":["f5cddfc9545e0920","canopyx-flow-endpoint.b31146202bd76aac.js"],"flow-consent":["22121778bc0d07c5","canopyx-flow-consent.749b97f13039bc71.js","canopyx-flow-consent.9f6580d3673ae8bf.css"],"matrix":["16ab7faa98c96b46","canopyx-matrix.4d417eaeba54ca4f.js","canopyx-matrix.9b3f57c1d0f090b6.css"],"changes":["2db8e138da4b5658","canopyx-changes.053104f8f56b0a87.js","canopyx-changes.dfbdb3d6c468ccb1.css"],"editing":["c82648dfaa7e5ee5","canopyx-editing.4fe83feec389c2ce.js","canopyx-editing.67c43d3b80f20232.css"],"column-groups":["b42238fd108a8614","canopyx-column-groups.d8ad6322f769b915.js","canopyx-column-groups.37e177d74cebb516.css"],"cell-range":["e99a39e7cccc57b1","canopyx-cell-range.647da96e57924f3e.js","canopyx-cell-range.23f3222652588441.css"],"links":["f1ab7e32b501ce37","canopyx-links.d96addeefb3eccf5.js"],"search":["521eebd6e1bbbd35","canopyx-search.14c69f4551c69f23.js"],"formatting":["1a28068597f435de","canopyx-formatting.68c501f97b71f1ec.js","canopyx-formatting.a59507e4e8334891.css"],"format-editor":["24f176a39c02944a","canopyx-format-editor.3b1dec2527e53988.js","canopyx-format-editor.1ba153c82aa87b04.css"],"link":["fa0c9e888463553b","canopyx-link.4ec39bc39fa6cf50.js","canopyx-link.8435c892613926ac.css"],"detail-rows":["4908d1d2b7f67aa8","canopyx-detail-rows.fe29b1759c962565.js","canopyx-detail-rows.8e38a8ad01fded76.css"],"grouping":["0970f2edbcb32de8","canopyx-grouping.84660cd1a0ea5f8f.js","canopyx-grouping.6c93259b4b89e523.css"],"highlight":["f39423961654c1e2","canopyx-highlight.a6f93893d36ab343.js","canopyx-highlight.5b6d2e0d979f9f9b.css"],"layouts":["fa8c686f21626884","canopyx-layouts.e7250c82a6abf52e.js","canopyx-layouts.0b75738924533ee8.css"],"facets":["f9219d35a87635f8","canopyx-facets.8bf477b7915bdcd6.js","canopyx-facets.648a88d2f36d4999.css"],"live":["a27c818b731c22e3","canopyx-live.d19df9edc92e7d09.js","canopyx-live.cc4b94a2dec6f064.css"],"record-panel":["bcc06276c7933af6","canopyx-record-panel.a374fb4254f9115c.js","canopyx-record-panel.f3691d54cefaab04.css"],"calendar":["762f4b4b62ecb4d8","canopyx-calendar.dc45ebdeb704d9c3.js","canopyx-calendar.1099197a45632f63.css"],"calendar-recurrence":["64bcc24d785bd1af","canopyx-calendar-recurrence.4b7f430c2a64de23.js"],"calendar-edit":["bdde26d4b7de2096","canopyx-calendar-edit.4ab2cf55e84f310f.js"],"calendar-ics":["feb3ed2cd67d057f","canopyx-calendar-ics.2a3af9eb3bf444fc.js"],"timeline":["3f04ba99401e9ebd","canopyx-timeline.76928f089774b3de.js","canopyx-timeline.0393f92746f8fa09.css"]},PART_CODE=new Map(),partName=name=>typeof name==="string"&&/^[a-z][a-z\d-]{0,31}$/.test(name);
508
508
  function registerPart(name,part){if(!partName(name)||!part||typeof part.version!=="string"||typeof part.install!=="function"||
509
509
  part.requires!==undefined&&!(Array.isArray(part.requires)&&part.requires.every(partName)))throw new Error("CanopyX: invalid part.");PART_CODE.set(name,part)}
510
510
  function definePart(View,name,label,context){const parts=View.prototype.parts||={};return parts[name]={name,label,context,parts}}
@@ -971,9 +971,14 @@ return applied},initializeState(){if(this.initialState?.facets)this.facetOpen=th
971
971
  !!row&&Object.values(row.cells).some(cell=>isCellObject(cell)&&RECORD_STRUCTURE.some(name=>cell[name]!==undefined))};const GRID_RECORD_INIT=DataGrid.prototype.initializeState;DataGrid.prototype.initializeState=function(){const ready=GRID_RECORD_INIT.call(this);return this.columns.some(column=>column.presenter?.kind==="structured")?Promise.all([ready,this.loadRecordPanel()]).then(([result])=>result):ready};const GRID_DATA_IMPL={},GRID_DATA=definePart(DataGrid,"data","row data",()=>({GRID_DATA_IMPL,PROTOCOL,validateGridRows,inlineGridSource,loadSidecar,gridIdOrder}));function rowDataSource(grid){let inner=null;const source={reset:()=>{inner=null},query:(query,options)=>
972
972
  (inner||=loadPart(GRID_DATA).then(()=>GRID_DATA_IMPL.source(grid,source)).catch(error=>{inner=null;throw error})).then(rows=>rows.query(query,options))};return source}
973
973
  class MatrixHost{}
974
- const MATRIX_IMPL={},activeMatrices=new WeakMap();const MATRIX_PART=definePart(MatrixHost,"matrix","matrix view",()=>({MATRIX_IMPL,h,setText,fill,foldText,numberFormat,gridFreeze,toneOf,applyTone,toneColors,AxisWindow,PROTOCOL}));const MATRIX_METHODS=["sort","group","filter","setSearch","setAttentionOnly","getState","setState","getVisible","focusCell","update"];function createMatrix(host,options){if(!host||!options||!options.view||typeof options.view!=="object")throw new Error("CanopyX: createMatrix needs a host element and a matrix document.");const existing=activeMatrices.get(host);if(existing)return existing;const addedClasses=["cx-host","cx-matrix-host"].filter(name=>!host.classList.contains(name)),hadClass=host.hasAttribute("class");const previousError=host.getAttribute("data-cx-error");let impl=null,destroyed=false,notice=null,errorText=null;const cancelled=()=>new DOMException("Matrix was destroyed.","AbortError");const ready=loadPart(MATRIX_PART).then(()=>{if(destroyed)throw cancelled();impl=MATRIX_IMPL.create(host,options);return impl.ready});const api={element:host};Object.defineProperty(api,"view",{enumerable:true,get:()=>impl?impl.document():options.view});for(const name of MATRIX_METHODS)api[name]=(...args)=>{const invoke=()=>{if(destroyed)throw cancelled();return impl[name](...args)};if(destroyed)throw cancelled();return impl?invoke():ready.then(invoke)};api.ready=ready.then(()=>{if(destroyed)throw cancelled();return api});api.ready.catch(()=>{});api.destroy=()=>{if(destroyed)return;destroyed=true;impl?.destroy();if(activeMatrices.get(host)===api)activeMatrices.delete(host);if(host.canopyx===api)delete host.canopyx;host.removeAttribute("data-canopyx-mounted");notice?.remove();if(errorText!==null&&host.getAttribute("data-cx-error")===errorText){if(previousError===null)host.removeAttribute("data-cx-error");else host.setAttribute("data-cx-error",previousError)}
974
+ const MATRIX_IMPL={},activeMatrices=new WeakMap();const MATRIX_PART=definePart(MatrixHost,"matrix","matrix view",()=>({MATRIX_IMPL,h,setText,fill,plural,foldText,numberFormat,gridFreeze,toneOf,applyTone,toneColors,AxisWindow,PROTOCOL}));const MATRIX_METHODS=["sort","group","filter","setSearch","setAttentionOnly","getState","setState","getVisible","focusCell","update"];function createMatrix(host,options){if(!host||!options||!options.view||typeof options.view!=="object")throw new Error("CanopyX: createMatrix needs a host element and a matrix document.");const existing=activeMatrices.get(host);if(existing)return existing;const addedClasses=["cx-host","cx-matrix-host"].filter(name=>!host.classList.contains(name)),hadClass=host.hasAttribute("class");const previousError=host.getAttribute("data-cx-error");let impl=null,destroyed=false,notice=null,errorText=null;const cancelled=()=>new DOMException("Matrix was destroyed.","AbortError");const ready=loadPart(MATRIX_PART).then(()=>{if(destroyed)throw cancelled();impl=MATRIX_IMPL.create(host,options);return impl.ready});const api={element:host};Object.defineProperty(api,"view",{enumerable:true,get:()=>impl?impl.document():options.view});for(const name of MATRIX_METHODS)api[name]=(...args)=>{const invoke=()=>{if(destroyed)throw cancelled();return impl[name](...args)};if(destroyed)throw cancelled();return impl?invoke():ready.then(invoke)};api.ready=ready.then(()=>{if(destroyed)throw cancelled();return api});api.ready.catch(()=>{});api.destroy=()=>{if(destroyed)return;destroyed=true;impl?.destroy();if(activeMatrices.get(host)===api)activeMatrices.delete(host);if(host.canopyx===api)delete host.canopyx;host.removeAttribute("data-canopyx-mounted");notice?.remove();if(errorText!==null&&host.getAttribute("data-cx-error")===errorText){if(previousError===null)host.removeAttribute("data-cx-error");else host.setAttribute("data-cx-error",previousError)}
975
975
  for(const name of addedClasses)host.classList.remove(name);if(!hadClass&&!host.classList.length)host.removeAttribute("class")};ready.catch(error=>{if(destroyed)return;notice=h("div","cx-mount-error");notice.setAttribute("role","alert");setText(notice,error&&error.message?error.message:String(error));host.appendChild(notice);errorText=notice.textContent;host.setAttribute("data-cx-error",errorText);host.dispatchEvent(new CustomEvent("canopyx:error",{detail:{error},bubbles:true}))});Object.freeze(api);activeMatrices.set(host,api);host.classList.add("cx-host","cx-matrix-host");host.setAttribute("data-canopyx-mounted","true");host.canopyx=api;return api}
976
- const MATRIX_API={createMatrix};DEFAULT_LABELS=Object.freeze(Object.assign({},DEFAULT_LABELS,{gridCellRangeSelected:"{rows} rows × {columns} columns selected",gridCellRangesSelected:"{ranges} ranges selected, {cells} cells",gridCellRangeCleared:"Cell selection cleared",gridCopyCells:"Copy cells",gridCopyCellsWithHeaders:"Copy cells with headers",gridPasteCells:"Paste",gridSelectAllCells:"Select all cells",gridCellsCopied:"Copied {rows} rows × {columns} columns",gridCellsPasted:"Pasted {count} cells",gridPasteRefused:"{count} cells were not pasted",gridPasteReadOnly:"This cell cannot be changed.",gridPasteType:"“{value}” is not a valid value for {column}.",gridPasteReport:"Paste report",gridPasteCell:"Row {row}, {column}: {reason}",gridFillHandle:"Drag to fill the cells below",gridCellsFilled:"Filled {count} cells",gridCellMenu:"Cell actions",gridClearCellRanges:"Clear cell selection"}));const GRID_PART_CONTEXT=()=>({DataGrid,h,setText,fill,columnWidth,foldText,gridButton,gridIcon,gridDecorateButton,cellText,cellValue,isCellObject,numberFormat,gridFreeze,gridMomentFromParts,requireIdentifier,loadGridFilterEditor,CELL_CONTROLS,reachable,gridExportField});const GRID_COLUMN_GROUPS=definePart(DataGrid,"column-groups","column groups",GRID_PART_CONTEXT);const GRID_CELL_RANGE=definePart(DataGrid,"cell-range","cell ranges",GRID_PART_CONTEXT);const GRID_PART_API=[["column-groups","getColumnGroups","setColumnGroupVisible"],["cell-range","getCellRanges","setCellRanges","clearCellRanges","selectAllCells","copyCellRanges","getCellRangeText","pasteCells"]];const gridPartLoader=(part,start)=>function(){return(this.partLoads||={})[start]||=loadPart(part).then(()=>this.destroyed||this["start"+start]()).catch(error=>{this.partLoads[start]=null;throw error})};DataGrid.prototype.loadColumnGroups=gridPartLoader(GRID_COLUMN_GROUPS,"ColumnGroups");DataGrid.prototype.loadCellRanges=gridPartLoader(GRID_CELL_RANGE,"CellRanges");for(const[part,read,...actions]of GRID_PART_API){const load=part==="cell-range"?"loadCellRanges":"loadColumnGroups";DataGrid.prototype[read]=()=>[];for(const name of actions){const stub=DataGrid.prototype[name]=function(...args){return this[load]().then(()=>{if(DataGrid.prototype[name]===stub)throw new Error("CanopyX: the "+part+" part did not install "+name+".");return this[name](...args)})}}}
976
+ const MATRIX_API={createMatrix};class ChangesHost{}
977
+ const CHANGES_IMPL={},activeChangeViews=new WeakMap();const CHANGES_PART=definePart(ChangesHost,"changes","change views",()=>({CHANGES_IMPL,h,setText,fill,plural,numberFormat,gridFreeze,toneOf,applyTone,svgIcon,PROTOCOL}));const CHANGE_VIEW_METHODS={diff:["getLayout","setLayout","next","previous","expandAll","copy","getHunks","update"],changes:["getState","setState","toggle","focusItem","update"],propagation:["update"]};function changeViewFactory(kind,name){return function(host,options){if(!host||!options||!options.view||typeof options.view!=="object")throw new Error("CanopyX: "+name+" needs a host element and a "+kind+" document.");const existing=activeChangeViews.get(host);if(existing)return existing;const addedClasses=["cx-host","cx-change-host"].filter(className=>!host.classList.contains(className)),hadClass=host.hasAttribute("class"),previousError=host.getAttribute("data-cx-error");let impl=null,destroyed=false,notice=null,errorText=null,failure=null,loaded=false,currentView=options.view;const cancelled=()=>new DOMException("Change view was destroyed.","AbortError");const clearError=()=>{notice?.remove();notice=null;if(errorText!==null&&host.getAttribute("data-cx-error")===errorText){if(previousError===null)host.removeAttribute("data-cx-error");else host.setAttribute("data-cx-error",previousError)}
978
+ errorText=null};const showError=error=>{if(destroyed)return;impl?.destroy();impl=null;failure=error;clearError();notice=h("div","cx-mount-error");notice.setAttribute("role","alert");setText(notice,error&&error.message?error.message:String(error));host.appendChild(notice);errorText=notice.textContent;host.setAttribute("data-cx-error",errorText);host.dispatchEvent(new CustomEvent("canopyx:error",{detail:{error},bubbles:true}))};const mount=view=>{clearError();impl=CHANGES_IMPL[kind](host,{...options,view});failure=null;return impl.ready};const ready=loadPart(CHANGES_PART).then(()=>{if(destroyed)throw cancelled();loaded=true;return mount(currentView)});const api={element:host};Object.defineProperty(api,"view",{enumerable:true,get:()=>impl?impl.document():currentView});for(const method of CHANGE_VIEW_METHODS[kind])api[method]=(...args)=>{const invoke=()=>{if(destroyed)throw cancelled();if(method==="update"){currentView=args[0];try{return impl?impl.update(...args):mount(currentView)}
979
+ catch(error){showError(error);throw error}}
980
+ if(failure)throw failure;return impl[method](...args)};if(destroyed)throw cancelled();return loaded?invoke():ready.then(invoke)};api.ready=ready.then(()=>{if(destroyed)throw cancelled();return api});api.ready.catch(()=>{});api.destroy=()=>{if(destroyed)return;destroyed=true;impl?.destroy();if(activeChangeViews.get(host)===api)activeChangeViews.delete(host);if(host.canopyx===api)delete host.canopyx;host.removeAttribute("data-canopyx-mounted");clearError();for(const className of addedClasses)host.classList.remove(className);if(!hadClass&&!host.classList.length)host.removeAttribute("class")};ready.catch(showError);Object.freeze(api);activeChangeViews.set(host,api);host.classList.add("cx-host","cx-change-host");host.setAttribute("data-canopyx-mounted","true");host.canopyx=api;return api}}
981
+ const CHANGES_API={createDiff:changeViewFactory("diff","createDiff"),createChangeList:changeViewFactory("changes","createChangeList"),createPropagation:changeViewFactory("propagation","createPropagation")};const CHANGE_VIEW_TYPES={diff:CHANGES_API.createDiff,changes:CHANGES_API.createChangeList,propagation:CHANGES_API.createPropagation};DEFAULT_LABELS=Object.freeze(Object.assign({},DEFAULT_LABELS,{gridCellRangeSelected:"{rows} rows × {columns} columns selected",gridCellRangesSelected:"{ranges} ranges selected, {cells} cells",gridCellRangeCleared:"Cell selection cleared",gridCopyCells:"Copy cells",gridCopyCellsWithHeaders:"Copy cells with headers",gridPasteCells:"Paste",gridSelectAllCells:"Select all cells",gridCellsCopied:"Copied {rows} rows × {columns} columns",gridCellsPasted:"Pasted {count} cells",gridPasteRefused:"{count} cells were not pasted",gridPasteReadOnly:"This cell cannot be changed.",gridPasteType:"“{value}” is not a valid value for {column}.",gridPasteReport:"Paste report",gridPasteCell:"Row {row}, {column}: {reason}",gridFillHandle:"Drag to fill the cells below",gridCellsFilled:"Filled {count} cells",gridCellMenu:"Cell actions",gridClearCellRanges:"Clear cell selection"}));const GRID_PART_CONTEXT=()=>({DataGrid,h,setText,fill,columnWidth,foldText,gridButton,gridIcon,gridDecorateButton,cellText,cellValue,isCellObject,numberFormat,gridFreeze,gridMomentFromParts,requireIdentifier,loadGridFilterEditor,CELL_CONTROLS,reachable,gridExportField});const GRID_COLUMN_GROUPS=definePart(DataGrid,"column-groups","column groups",GRID_PART_CONTEXT);const GRID_CELL_RANGE=definePart(DataGrid,"cell-range","cell ranges",GRID_PART_CONTEXT);const GRID_PART_API=[["column-groups","getColumnGroups","setColumnGroupVisible"],["cell-range","getCellRanges","setCellRanges","clearCellRanges","selectAllCells","copyCellRanges","getCellRangeText","pasteCells"]];const gridPartLoader=(part,start)=>function(){return(this.partLoads||={})[start]||=loadPart(part).then(()=>this.destroyed||this["start"+start]()).catch(error=>{this.partLoads[start]=null;throw error})};DataGrid.prototype.loadColumnGroups=gridPartLoader(GRID_COLUMN_GROUPS,"ColumnGroups");DataGrid.prototype.loadCellRanges=gridPartLoader(GRID_CELL_RANGE,"CellRanges");for(const[part,read,...actions]of GRID_PART_API){const load=part==="cell-range"?"loadCellRanges":"loadColumnGroups";DataGrid.prototype[read]=()=>[];for(const name of actions){const stub=DataGrid.prototype[name]=function(...args){return this[load]().then(()=>{if(DataGrid.prototype[name]===stub)throw new Error("CanopyX: the "+part+" part did not install "+name+".");return this[name](...args)})}}}
977
982
  const GRID_PARTS_INIT=DataGrid.prototype.initializeState;DataGrid.prototype.initializeState=function(){const ready=GRID_PARTS_INIT.call(this),range=this.opts.rangeSelection??this.view.rangeSelection;const parts=[this.view.columnGroups?.length&&this.loadColumnGroups(),range&&range.enabled!==false&&this.loadCellRanges()].filter(Boolean);return parts.length?Promise.all([ready,...parts.map(part=>part.catch(error=>this.emit("error",{error})))]).then(([result])=>result):ready};function gridButton(text,run){const button=h("button","cx-button");button.type="button";setText(button,text);button.onclick=event=>{button.focus({preventScroll:true});run(event)};return button}
978
983
  let keyboardInput=false;if(typeof document!=="undefined"){document.addEventListener("keydown",()=>{keyboardInput=true},true);document.addEventListener("pointerdown",()=>{keyboardInput=false},true)}
979
984
  const focusDrawerTitle=title=>{if(keyboardInput&&title===document.activeElement&&!title.matches(":focus-visible"))title.blur();title.toggleAttribute("data-cx-pointer-focus",!keyboardInput);if(!keyboardInput)title.addEventListener("blur",()=>title.removeAttribute("data-cx-pointer-focus"),{once:true});title.focus({preventScroll:true,focusVisible:keyboardInput})};function gridInputLabel(text,input){const label=h("label","cx-grid-field");label.appendChild(document.createTextNode(text));label.appendChild(input);return label}
@@ -1182,5 +1187,5 @@ watcher.observe(host)}
1182
1187
  function mount(root,automatic){const scope=root||document;const created=[];const showError=(host,err,api,view)=>{if(api){api.destroy();if(host.canopyx===api)delete host.canopyx}
1183
1188
  const message=err&&err.message?err.message:String(err);let labels=DEFAULT_LABELS;for(const attempt of[()=>labelsFor(view&&view.labels,view&&configured.has(view.id)?configured.get(view.id).labels:null),()=>labelsFor(view&&view.labels)]){try{labels=attempt();break}catch(e){labels=DEFAULT_LABELS}}
1184
1189
  const notice=document.createElement("div");notice.className="cx-mount-error";notice.setAttribute("role","alert");setText(notice,fill(labels.mountError,{error:message}));host.classList.add("cx-host");host.setAttribute("data-canopyx-mounted","true");host.setAttribute("data-cx-error",message);host.appendChild(notice);if(global.console)global.console.error(err)};const selector="[data-canopyx-host]:not([data-canopyx-mounted])";(scope.matches?.(selector)?[scope]:scope.querySelectorAll(selector)).forEach((host)=>{const config=host.querySelector("script.cx-config"),mode=host.getAttribute("data-cx-mount");if(!config||(automatic===true&&mode==="manual")){return}
1185
- if(mode==="visible"&&host!==scope&&global.IntersectionObserver)return mountWhenVisible(host);watcher?.unobserve(host);host.setAttribute("data-canopyx-mounted","true");let view=null;try{view=JSON.parse(config.textContent);if(view===Object(view))parsedViews.add(view);const flow=view&&view.kind==="flow"&&typeof FLOW_API==="object",matrix=view&&view.type==="matrix"&&typeof MATRIX_API==="object";const create=flow?FLOW_API.createFlow:matrix?MATRIX_API.createMatrix:view&&view.type==="grid"&&typeof createDataGrid==="function"?createDataGrid:createTreeGrid;const api=create(host,Object.assign({},view&&configured.get(view.id),flow?{flow:view}:{view}));created.push(api);api.ready.catch((err)=>{if(view.type!=="grid"&&!matrix&&activeGrids.get(host)===api&&host.canopyx===api)showError(host,err,api,view)})}catch(err){showError(host,err,null,view)}});return created}
1186
- global.CanopyX=Object.freeze(Object.assign({protocol:PROTOCOL,createTreeGrid,configure,unconfigure,mount:(root)=>mount(root,false),sources:Object.freeze({inline:inlineSource,sidecar:sidecarSource,remote:remoteSource}),badge:hostBadge,labels:DEFAULT_LABELS,registerExportFormat,use,registerPart,setNonce},typeof GRID_API==="object"?GRID_API:{},typeof FLOW_API==="object"?FLOW_API:{},typeof MATRIX_API==="object"?MATRIX_API:{}));const navigation=global.performance&&performance.getEntriesByType?performance.getEntriesByType("navigation")[0]:null;if(document.readyState==="loading"||(document.readyState==="interactive"&&navigation&&navigation.domContentLoadedEventStart===0)){document.addEventListener("DOMContentLoaded",()=>mount(document,true))}else{mount(document,true)}})(typeof window!=="undefined"?window:this);
1190
+ if(mode==="visible"&&host!==scope&&global.IntersectionObserver)return mountWhenVisible(host);watcher?.unobserve(host);host.setAttribute("data-canopyx-mounted","true");let view=null;try{view=JSON.parse(config.textContent);if(view===Object(view))parsedViews.add(view);const flow=view&&view.kind==="flow"&&typeof FLOW_API==="object",matrix=view&&view.type==="matrix"&&typeof MATRIX_API==="object";const change=view&&typeof CHANGE_VIEW_TYPES==="object"&&Object.hasOwn(CHANGE_VIEW_TYPES,view.type)?CHANGE_VIEW_TYPES[view.type]:null;const create=flow?FLOW_API.createFlow:matrix?MATRIX_API.createMatrix:change?change:view&&view.type==="grid"&&typeof createDataGrid==="function"?createDataGrid:createTreeGrid;const api=create(host,Object.assign({},view&&configured.get(view.id),flow?{flow:view}:{view}));created.push(api);api.ready.catch((err)=>{if(view.type!=="grid"&&!matrix&&!change&&activeGrids.get(host)===api&&host.canopyx===api)showError(host,err,api,view)})}catch(err){showError(host,err,null,view)}});return created}
1191
+ global.CanopyX=Object.freeze(Object.assign({protocol:PROTOCOL,createTreeGrid,configure,unconfigure,mount:(root)=>mount(root,false),sources:Object.freeze({inline:inlineSource,sidecar:sidecarSource,remote:remoteSource}),badge:hostBadge,labels:DEFAULT_LABELS,registerExportFormat,use,registerPart,setNonce},typeof GRID_API==="object"?GRID_API:{},typeof FLOW_API==="object"?FLOW_API:{},typeof MATRIX_API==="object"?MATRIX_API:{},typeof CHANGES_API==="object"?CHANGES_API:{}));const navigation=global.performance&&performance.getEntriesByType?performance.getEntriesByType("navigation")[0]:null;if(document.readyState==="loading"||(document.readyState==="interactive"&&navigation&&navigation.domContentLoadedEventStart===0)){document.addEventListener("DOMContentLoaded",()=>mount(document,true))}else{mount(document,true)}})(typeof window!=="undefined"?window:this);
@@ -60,7 +60,7 @@ function fill(template,values){return template.replace(/\{(\w+)\}/g, (match, nam
60
60
  const pluralRules=new Map();function plural(template,count,lang){if(!template.startsWith("["))return template;const forms={};for(const match of template.matchAll(/\[(zero|one|two|few|many|other)\]([^[]*)/g)) forms[match[1]] = match[2];
61
61
  let rules=pluralRules.get(lang);if(!rules){try{rules=new Intl.PluralRules(lang||"en")}catch(_){rules=new Intl.PluralRules("en")}pluralRules.set(lang,rules)}
62
62
  return forms[rules.select(Number(count))]??forms.other??template}
63
- let DEFAULT_LABELS=Object.freeze({searchPlaceholder:"Search",searchResults:"Search results",searchResultCount:"{count} results",searchResultCountOfTotal:"{count} of {total} results",searchResultCountOfMany:"{count} of many results",searchNoResults:"No results",searchTooShort:"Type at least {min} characters",searchWordTooShort:"Type a word of at least {min} characters",searchFailed:"Search failed: {error}",columns:"Columns",hiddenColumns:"[one]+{count} column[other]+{count} columns",visibleColumns:"Visible columns",resizeColumn:"Resize {column}",columnWidth:"{width} pixels",loading:"Loading…",loadError:"Could not load: {error} (Enter to retry)",queryFailed:"Could not update the view: {error}",showMore:"Show more ({loaded} of {total} loaded)",showMoreUnknownTotal:"Show more ({loaded} loaded)",pageLoaded:"{loaded} of {total} loaded",itemsLoaded:"{count} items",yes:"Yes",no:"No",utcTime:"{time} UTC",localTime:"{time} local time",mountError:"This view could not be displayed: {error}"});function labelsFor(...sources){const labels=Object.assign({},DEFAULT_LABELS);for(const source of sources){if(source==null)continue;if(typeof source!=="object"||Array.isArray(source))throw new Error("CanopyX: labels must be an object of strings.");Object.keys(source).forEach((name)=>{if(!Object.hasOwn(DEFAULT_LABELS,name)&&!/^(?:gridEdit|format|calendar|flow|matrix)[A-Z]\w{0,63}$/.test(name)) throw new Error("CanopyX: there is no label '" + name + "'.");
63
+ let DEFAULT_LABELS=Object.freeze({searchPlaceholder:"Search",searchResults:"Search results",searchResultCount:"{count} results",searchResultCountOfTotal:"{count} of {total} results",searchResultCountOfMany:"{count} of many results",searchNoResults:"No results",searchTooShort:"Type at least {min} characters",searchWordTooShort:"Type a word of at least {min} characters",searchFailed:"Search failed: {error}",columns:"Columns",hiddenColumns:"[one]+{count} column[other]+{count} columns",visibleColumns:"Visible columns",resizeColumn:"Resize {column}",columnWidth:"{width} pixels",loading:"Loading…",loadError:"Could not load: {error} (Enter to retry)",queryFailed:"Could not update the view: {error}",showMore:"Show more ({loaded} of {total} loaded)",showMoreUnknownTotal:"Show more ({loaded} loaded)",pageLoaded:"{loaded} of {total} loaded",itemsLoaded:"{count} items",yes:"Yes",no:"No",utcTime:"{time} UTC",localTime:"{time} local time",mountError:"This view could not be displayed: {error}"});function labelsFor(...sources){const labels=Object.assign({},DEFAULT_LABELS);for(const source of sources){if(source==null)continue;if(typeof source!=="object"||Array.isArray(source))throw new Error("CanopyX: labels must be an object of strings.");Object.keys(source).forEach((name)=>{if(!Object.hasOwn(DEFAULT_LABELS,name)&&!/^(?:gridEdit|format|calendar|flow|matrix|change)[A-Z]\w{0,63}$/.test(name)) throw new Error("CanopyX: there is no label '" + name + "'.");
64
64
  if(typeof source[name]!=="string"||!/\S/.test(source[name])) throw new Error("CanopyX: label '" + name + "' must be a string with visible text.");
65
65
  if((name==="utcTime"||name==="localTime")&&source[name].indexOf("{time}")<0)throw new Error("CanopyX: label '"+name+"' must hold {time}.");labels[name]=source[name]})}
66
66
  return Object.freeze(labels)}
@@ -740,5 +740,5 @@ watcher.observe(host)}
740
740
  function mount(root,automatic){const scope=root||document;const created=[];const showError=(host,err,api,view)=>{if(api){api.destroy();if(host.canopyx===api)delete host.canopyx}
741
741
  const message=err&&err.message?err.message:String(err);let labels=DEFAULT_LABELS;for(const attempt of[()=>labelsFor(view&&view.labels,view&&configured.has(view.id)?configured.get(view.id).labels:null),()=>labelsFor(view&&view.labels)]){try{labels=attempt();break}catch(e){labels=DEFAULT_LABELS}}
742
742
  const notice=document.createElement("div");notice.className="cx-mount-error";notice.setAttribute("role","alert");setText(notice,fill(labels.mountError,{error:message}));host.classList.add("cx-host");host.setAttribute("data-canopyx-mounted","true");host.setAttribute("data-cx-error",message);host.appendChild(notice);if(global.console)global.console.error(err)};const selector="[data-canopyx-host]:not([data-canopyx-mounted])";(scope.matches?.(selector)?[scope]:scope.querySelectorAll(selector)).forEach((host)=>{const config=host.querySelector("script.cx-config"),mode=host.getAttribute("data-cx-mount");if(!config||(automatic===true&&mode==="manual")){return}
743
- if(mode==="visible"&&host!==scope&&global.IntersectionObserver)return mountWhenVisible(host);watcher?.unobserve(host);host.setAttribute("data-canopyx-mounted","true");let view=null;try{view=JSON.parse(config.textContent);if(view===Object(view))parsedViews.add(view);const flow=view&&view.kind==="flow"&&typeof FLOW_API==="object",matrix=view&&view.type==="matrix"&&typeof MATRIX_API==="object";const create=flow?FLOW_API.createFlow:matrix?MATRIX_API.createMatrix:view&&view.type==="grid"&&typeof createDataGrid==="function"?createDataGrid:createTreeGrid;const api=create(host,Object.assign({},view&&configured.get(view.id),flow?{flow:view}:{view}));created.push(api);api.ready.catch((err)=>{if(view.type!=="grid"&&!matrix&&activeGrids.get(host)===api&&host.canopyx===api)showError(host,err,api,view)})}catch(err){showError(host,err,null,view)}});return created}
744
- global.CanopyX=Object.freeze(Object.assign({protocol:PROTOCOL,createTreeGrid,configure,unconfigure,mount:(root)=>mount(root,false),sources:Object.freeze({inline:inlineSource,sidecar:sidecarSource,remote:remoteSource}),badge:hostBadge,labels:DEFAULT_LABELS,registerExportFormat,use,registerPart,setNonce},typeof GRID_API==="object"?GRID_API:{},typeof FLOW_API==="object"?FLOW_API:{},typeof MATRIX_API==="object"?MATRIX_API:{}));const navigation=global.performance&&performance.getEntriesByType?performance.getEntriesByType("navigation")[0]:null;if(document.readyState==="loading"||(document.readyState==="interactive"&&navigation&&navigation.domContentLoadedEventStart===0)){document.addEventListener("DOMContentLoaded",()=>mount(document,true))}else{mount(document,true)}})(typeof window!=="undefined"?window:this);
743
+ if(mode==="visible"&&host!==scope&&global.IntersectionObserver)return mountWhenVisible(host);watcher?.unobserve(host);host.setAttribute("data-canopyx-mounted","true");let view=null;try{view=JSON.parse(config.textContent);if(view===Object(view))parsedViews.add(view);const flow=view&&view.kind==="flow"&&typeof FLOW_API==="object",matrix=view&&view.type==="matrix"&&typeof MATRIX_API==="object";const change=view&&typeof CHANGE_VIEW_TYPES==="object"&&Object.hasOwn(CHANGE_VIEW_TYPES,view.type)?CHANGE_VIEW_TYPES[view.type]:null;const create=flow?FLOW_API.createFlow:matrix?MATRIX_API.createMatrix:change?change:view&&view.type==="grid"&&typeof createDataGrid==="function"?createDataGrid:createTreeGrid;const api=create(host,Object.assign({},view&&configured.get(view.id),flow?{flow:view}:{view}));created.push(api);api.ready.catch((err)=>{if(view.type!=="grid"&&!matrix&&!change&&activeGrids.get(host)===api&&host.canopyx===api)showError(host,err,api,view)})}catch(err){showError(host,err,null,view)}});return created}
744
+ global.CanopyX=Object.freeze(Object.assign({protocol:PROTOCOL,createTreeGrid,configure,unconfigure,mount:(root)=>mount(root,false),sources:Object.freeze({inline:inlineSource,sidecar:sidecarSource,remote:remoteSource}),badge:hostBadge,labels:DEFAULT_LABELS,registerExportFormat,use,registerPart,setNonce},typeof GRID_API==="object"?GRID_API:{},typeof FLOW_API==="object"?FLOW_API:{},typeof MATRIX_API==="object"?MATRIX_API:{},typeof CHANGES_API==="object"?CHANGES_API:{}));const navigation=global.performance&&performance.getEntriesByType?performance.getEntriesByType("navigation")[0]:null;if(document.readyState==="loading"||(document.readyState==="interactive"&&navigation&&navigation.domContentLoadedEventStart===0)){document.addEventListener("DOMContentLoaded",()=>mount(document,true))}else{mount(document,true)}})(typeof window!=="undefined"?window:this);
@@ -690,14 +690,86 @@ const labels = Object.freeze({
690
690
  matrixItemTotal: "{item}: {count}",
691
691
  matrixExpandGroup: "{group} aufklappen",
692
692
  matrixCollapseGroup: "{group} zuklappen",
693
- matrixGroupHeadingCount: "{count}",
694
- matrixGroupCount: "Elemente: {count}",
693
+ matrixGroupCount: "{count}",
694
+ matrixCellCount: "Zellen: {count}",
695
695
  matrixDetails: "Details",
696
696
  matrixClose: "Schließen",
697
697
  matrixValue: "Wert",
698
698
  matrixState: "Zustand",
699
699
  matrixAllClear: "Nichts erfordert Aufmerksamkeit",
700
700
  matrixShowMore: "Mehr anzeigen",
701
+ changeInline: "Inline",
702
+ changeSplit: "Nebeneinander",
703
+ changeLayout: "Ansicht",
704
+ changeCopyDiff: "Diff kopieren",
705
+ changeCopied: "Kopiert",
706
+ changeCopyFailed: "Kopieren nicht möglich",
707
+ changeNext: "Nächste Änderung",
708
+ changePrevious: "Vorherige Änderung",
709
+ changePosition: "Änderung {index} von {count}",
710
+ changeShowLines: "[one]{count} weitere Zeile anzeigen[other]{count} weitere Zeilen anzeigen",
711
+ changeHiddenLines: "[one]{count} unveränderte Zeile nicht enthalten[other]{count} unveränderte Zeilen nicht enthalten",
712
+ changeLineCounts: "Hinzugefügte Zeilen: {added}, entfernte: {removed}",
713
+ changeLineAdded: "Hinzugefügte Zeile {line}",
714
+ changeLineRemoved: "Entfernte Zeile {line}",
715
+ changeLineContext: "Zeile {line}",
716
+ changeBefore: "Vorher",
717
+ changeAfter: "Nachher",
718
+ changeBinary: "Binärdatei: nach Größe und Hash verglichen, nicht zeilenweise.",
719
+ changeUnavailable: "Der Inhalt dieser Datei ist nicht verfügbar.",
720
+ changeIdentical: "Der Text hat sich nicht geändert.",
721
+ changeTruncated: "Einige Änderungen fehlen: Der Vergleich war zu groß.",
722
+ changeTooLarge: "Diese Texte sind zu lang, um sie hier zu vergleichen.",
723
+ changeDiffOf: "Änderungen in {name}",
724
+ changeAdded: "Hinzugefügt",
725
+ changeRemoved: "Entfernt",
726
+ changeModified: "Geändert",
727
+ changeRenamed: "Umbenannt",
728
+ changeFlaggedOnly: "Nur markierte",
729
+ changeFlaggedCount: "{count} markiert",
730
+ changeNoItems: "Keine Änderungen anzuzeigen.",
731
+ changeSize: "Größe",
732
+ changeHash: "Hash",
733
+ changeTime: "Zeit",
734
+ changeCopyHash: "Vollständigen Hash kopieren",
735
+ changeDetails: "Details zu {name}",
736
+ changeFileCount: "[one]{count} Datei[other]{count} Dateien",
737
+ changeFrom: "von {path}",
738
+ changeShowMore: "Mehr anzeigen",
739
+ changeFlags: "Markierungen",
740
+ changeFacts: "Details",
741
+ changeRoot: "Oberste Ebene",
742
+ changeShown: "{shown} von {total} angezeigt",
743
+ changeFilter: "Änderungen anzeigen",
744
+ changeActions: "Aktionen für {name}",
745
+ changeConverged: "Konvergiert",
746
+ changePropagating: "Wird repliziert",
747
+ changeFault: "Fehler",
748
+ changeUnknown: "Unbekannt",
749
+ changeReplica: "Replikat",
750
+ changeState: "Zustand",
751
+ changeFirstSeen: "Zuerst gesehen",
752
+ changeLastSeen: "Zuletzt gesehen",
753
+ changeTimeline: "Verzögerung",
754
+ changeNotSeen: "Noch nicht gesehen",
755
+ changeDelay: "+{duration}",
756
+ changeSource: "Quelle",
757
+ changeProgress: "{converged} von {total} haben die Änderung",
758
+ changeSeconds: "{count} s",
759
+ changeMinutes: "{count} Min.",
760
+ changeHours: "{count} Std.",
761
+ changeDays: "{count} T.",
762
+ changeUtcTime: "{time} UTC",
763
+ changeExportCsv: "CSV exportieren",
764
+ changeExportJson: "JSON exportieren",
765
+ changeReason: "Grund",
766
+ changeReasonHint: "{action}: Begründen Sie die Aktion. Der Grund wird mit ihr gespeichert.",
767
+ changeReasonRequired: "Geben Sie zuerst einen Grund ein.",
768
+ changeCancel: "Abbrechen",
769
+ changeUnclaimed: "Diese Seite kann „{action}“ nicht selbst ausführen. Kopieren Sie die Anfrage, um sie weiterzugeben.",
770
+ changeCopyRequest: "Anfrage kopieren",
771
+ changeFiltered: "Gefiltert: {filters}",
772
+ changePrintLimit: "{count} weitere Zeilen werden nicht gedruckt.",
701
773
  });
702
774
  const staticLabels = Object.freeze({
703
775
  overflowNote: "{shown} Zeilen angezeigt. Gesamtzahl: {total}.",
@@ -690,14 +690,86 @@ const labels = Object.freeze({
690
690
  matrixItemTotal: "{item}: {count}",
691
691
  matrixExpandGroup: "Expandir {group}",
692
692
  matrixCollapseGroup: "Contraer {group}",
693
- matrixGroupHeadingCount: "{count}",
694
- matrixGroupCount: "Elementos: {count}",
693
+ matrixGroupCount: "{count}",
694
+ matrixCellCount: "Celdas: {count}",
695
695
  matrixDetails: "Detalles",
696
696
  matrixClose: "Cerrar",
697
697
  matrixValue: "Valor",
698
698
  matrixState: "Estado",
699
699
  matrixAllClear: "Nada requiere atención",
700
700
  matrixShowMore: "Mostrar más",
701
+ changeInline: "En línea",
702
+ changeSplit: "En paralelo",
703
+ changeLayout: "Diseño",
704
+ changeCopyDiff: "Copiar diff",
705
+ changeCopied: "Copiado",
706
+ changeCopyFailed: "No se pudo copiar",
707
+ changeNext: "Siguiente cambio",
708
+ changePrevious: "Cambio anterior",
709
+ changePosition: "Cambio {index} de {count}",
710
+ changeShowLines: "[one]Mostrar {count} línea más[other]Mostrar {count} líneas más",
711
+ changeHiddenLines: "[one]{count} línea sin cambios no incluida[other]{count} líneas sin cambios no incluidas",
712
+ changeLineCounts: "Líneas añadidas: {added}, eliminadas: {removed}",
713
+ changeLineAdded: "Línea añadida {line}",
714
+ changeLineRemoved: "Línea eliminada {line}",
715
+ changeLineContext: "Línea {line}",
716
+ changeBefore: "Antes",
717
+ changeAfter: "Después",
718
+ changeBinary: "Archivo binario: se compara por tamaño y hash, no por líneas.",
719
+ changeUnavailable: "El contenido de este archivo no está disponible.",
720
+ changeIdentical: "El texto no cambió.",
721
+ changeTruncated: "Algunos cambios no se muestran: la comparación era demasiado grande.",
722
+ changeTooLarge: "Estos textos son demasiado largos para compararlos aquí.",
723
+ changeDiffOf: "Cambios en {name}",
724
+ changeAdded: "Añadido",
725
+ changeRemoved: "Eliminado",
726
+ changeModified: "Modificado",
727
+ changeRenamed: "Renombrado",
728
+ changeFlaggedOnly: "Solo marcados",
729
+ changeFlaggedCount: "{count} marcados",
730
+ changeNoItems: "No hay cambios que mostrar.",
731
+ changeSize: "Tamaño",
732
+ changeHash: "Hash",
733
+ changeTime: "Hora",
734
+ changeCopyHash: "Copiar el hash completo",
735
+ changeDetails: "Detalles de {name}",
736
+ changeFileCount: "[one]{count} archivo[other]{count} archivos",
737
+ changeFrom: "desde {path}",
738
+ changeShowMore: "Mostrar más",
739
+ changeFlags: "Marcas",
740
+ changeFacts: "Detalles",
741
+ changeRoot: "Nivel superior",
742
+ changeShown: "{shown} de {total} mostrados",
743
+ changeFilter: "Mostrar cambios",
744
+ changeActions: "Acciones para {name}",
745
+ changeConverged: "Convergido",
746
+ changePropagating: "Propagándose",
747
+ changeFault: "Fallo",
748
+ changeUnknown: "Desconocido",
749
+ changeReplica: "Réplica",
750
+ changeState: "Estado",
751
+ changeFirstSeen: "Visto por primera vez",
752
+ changeLastSeen: "Visto por última vez",
753
+ changeTimeline: "Retraso",
754
+ changeNotSeen: "Aún no visto",
755
+ changeDelay: "+{duration}",
756
+ changeSource: "Origen",
757
+ changeProgress: "{converged} de {total} tienen el cambio",
758
+ changeSeconds: "{count} s",
759
+ changeMinutes: "{count} min",
760
+ changeHours: "{count} h",
761
+ changeDays: "{count} d",
762
+ changeUtcTime: "{time} UTC",
763
+ changeExportCsv: "Exportar CSV",
764
+ changeExportJson: "Exportar JSON",
765
+ changeReason: "Motivo",
766
+ changeReasonHint: "{action}: indique el motivo. El motivo se guarda con la acción.",
767
+ changeReasonRequired: "Indique primero un motivo.",
768
+ changeCancel: "Cancelar",
769
+ changeUnclaimed: "Esta página no puede realizar «{action}» por sí misma. Copie la solicitud para transmitirla.",
770
+ changeCopyRequest: "Copiar solicitud",
771
+ changeFiltered: "Filtrado: {filters}",
772
+ changePrintLimit: "{count} líneas más no se imprimen.",
701
773
  });
702
774
  const staticLabels = Object.freeze({
703
775
  overflowNote: "Filas mostradas: {shown}. Total: {total}.",
@@ -690,14 +690,86 @@ const labels = Object.freeze({
690
690
  matrixItemTotal: "{item} : {count}",
691
691
  matrixExpandGroup: "Développer {group}",
692
692
  matrixCollapseGroup: "Réduire {group}",
693
- matrixGroupHeadingCount: "{count}",
694
- matrixGroupCount: "Éléments : {count}",
693
+ matrixGroupCount: "{count}",
694
+ matrixCellCount: "Cellules : {count}",
695
695
  matrixDetails: "Détails",
696
696
  matrixClose: "Fermer",
697
697
  matrixValue: "Valeur",
698
698
  matrixState: "État",
699
699
  matrixAllClear: "Rien à examiner",
700
700
  matrixShowMore: "Afficher plus",
701
+ changeInline: "En ligne",
702
+ changeSplit: "Côte à côte",
703
+ changeLayout: "Disposition",
704
+ changeCopyDiff: "Copier le diff",
705
+ changeCopied: "Copié",
706
+ changeCopyFailed: "Copie impossible",
707
+ changeNext: "Modification suivante",
708
+ changePrevious: "Modification précédente",
709
+ changePosition: "Modification {index} sur {count}",
710
+ changeShowLines: "[one]Afficher {count} ligne de plus[other]Afficher {count} lignes de plus",
711
+ changeHiddenLines: "[one]{count} ligne inchangée non incluse[other]{count} lignes inchangées non incluses",
712
+ changeLineCounts: "Lignes ajoutées : {added}, supprimées : {removed}",
713
+ changeLineAdded: "Ligne ajoutée {line}",
714
+ changeLineRemoved: "Ligne supprimée {line}",
715
+ changeLineContext: "Ligne {line}",
716
+ changeBefore: "Avant",
717
+ changeAfter: "Après",
718
+ changeBinary: "Fichier binaire : comparé par taille et empreinte, pas par lignes.",
719
+ changeUnavailable: "Le contenu de ce fichier n'est pas disponible.",
720
+ changeIdentical: "Le texte n'a pas changé.",
721
+ changeTruncated: "Certaines modifications ne sont pas affichées : la comparaison était trop grande.",
722
+ changeTooLarge: "Ces textes sont trop longs pour être comparés ici.",
723
+ changeDiffOf: "Modifications dans {name}",
724
+ changeAdded: "Ajouté",
725
+ changeRemoved: "Supprimé",
726
+ changeModified: "Modifié",
727
+ changeRenamed: "Renommé",
728
+ changeFlaggedOnly: "Signalés uniquement",
729
+ changeFlaggedCount: "Signalés : {count}",
730
+ changeNoItems: "Aucune modification à afficher.",
731
+ changeSize: "Taille",
732
+ changeHash: "Empreinte",
733
+ changeTime: "Heure",
734
+ changeCopyHash: "Copier l'empreinte complète",
735
+ changeDetails: "Détails de {name}",
736
+ changeFileCount: "[one]{count} fichier[other]{count} fichiers",
737
+ changeFrom: "depuis {path}",
738
+ changeShowMore: "Afficher plus",
739
+ changeFlags: "Signalements",
740
+ changeFacts: "Détails",
741
+ changeRoot: "Niveau supérieur",
742
+ changeShown: "{shown} sur {total} affichés",
743
+ changeFilter: "Afficher les modifications",
744
+ changeActions: "Actions pour {name}",
745
+ changeConverged: "Convergé",
746
+ changePropagating: "En propagation",
747
+ changeFault: "Défaut",
748
+ changeUnknown: "Inconnu",
749
+ changeReplica: "Réplica",
750
+ changeState: "État",
751
+ changeFirstSeen: "Vu pour la première fois",
752
+ changeLastSeen: "Vu pour la dernière fois",
753
+ changeTimeline: "Délai",
754
+ changeNotSeen: "Pas encore vu",
755
+ changeDelay: "+{duration}",
756
+ changeSource: "Source",
757
+ changeProgress: "{converged} sur {total} ont la modification",
758
+ changeSeconds: "{count} s",
759
+ changeMinutes: "{count} min",
760
+ changeHours: "{count} h",
761
+ changeDays: "{count} j",
762
+ changeUtcTime: "{time} UTC",
763
+ changeExportCsv: "Exporter en CSV",
764
+ changeExportJson: "Exporter en JSON",
765
+ changeReason: "Motif",
766
+ changeReasonHint: "{action} : indiquez le motif. Le motif est conservé avec l'action.",
767
+ changeReasonRequired: "Indiquez d'abord un motif.",
768
+ changeCancel: "Annuler",
769
+ changeUnclaimed: "Cette page ne peut pas exécuter « {action} » elle-même. Copiez la demande pour la transmettre.",
770
+ changeCopyRequest: "Copier la demande",
771
+ changeFiltered: "Filtré : {filters}",
772
+ changePrintLimit: "{count} lignes de plus ne sont pas imprimées.",
701
773
  });
702
774
  const staticLabels = Object.freeze({
703
775
  overflowNote: "{shown} lignes affichées sur {total}.",
@@ -690,14 +690,86 @@ const labels = Object.freeze({
690
690
  matrixItemTotal: "{item}: {count}",
691
691
  matrixExpandGroup: "Espandi {group}",
692
692
  matrixCollapseGroup: "Comprimi {group}",
693
- matrixGroupHeadingCount: "{count}",
694
- matrixGroupCount: "Elementi: {count}",
693
+ matrixGroupCount: "{count}",
694
+ matrixCellCount: "Celle: {count}",
695
695
  matrixDetails: "Dettagli",
696
696
  matrixClose: "Chiudi",
697
697
  matrixValue: "Valore",
698
698
  matrixState: "Stato",
699
699
  matrixAllClear: "Niente richiede attenzione",
700
700
  matrixShowMore: "Mostra altro",
701
+ changeInline: "In linea",
702
+ changeSplit: "Affiancato",
703
+ changeLayout: "Layout",
704
+ changeCopyDiff: "Copia diff",
705
+ changeCopied: "Copiato",
706
+ changeCopyFailed: "Impossibile copiare",
707
+ changeNext: "Modifica successiva",
708
+ changePrevious: "Modifica precedente",
709
+ changePosition: "Modifica {index} di {count}",
710
+ changeShowLines: "[one]Mostra {count} altra riga[other]Mostra altre {count} righe",
711
+ changeHiddenLines: "[one]{count} riga invariata non inclusa[other]{count} righe invariate non incluse",
712
+ changeLineCounts: "Righe aggiunte: {added}, rimosse: {removed}",
713
+ changeLineAdded: "Riga aggiunta {line}",
714
+ changeLineRemoved: "Riga rimossa {line}",
715
+ changeLineContext: "Riga {line}",
716
+ changeBefore: "Prima",
717
+ changeAfter: "Dopo",
718
+ changeBinary: "File binario: confrontato per dimensione e hash, non per righe.",
719
+ changeUnavailable: "Il contenuto di questo file non è disponibile.",
720
+ changeIdentical: "Il testo non è cambiato.",
721
+ changeTruncated: "Alcune modifiche non sono mostrate: il confronto era troppo grande.",
722
+ changeTooLarge: "Questi testi sono troppo lunghi per essere confrontati qui.",
723
+ changeDiffOf: "Modifiche in {name}",
724
+ changeAdded: "Aggiunto",
725
+ changeRemoved: "Rimosso",
726
+ changeModified: "Modificato",
727
+ changeRenamed: "Rinominato",
728
+ changeFlaggedOnly: "Solo segnalati",
729
+ changeFlaggedCount: "{count} segnalati",
730
+ changeNoItems: "Nessuna modifica da mostrare.",
731
+ changeSize: "Dimensione",
732
+ changeHash: "Hash",
733
+ changeTime: "Ora",
734
+ changeCopyHash: "Copia l'hash completo",
735
+ changeDetails: "Dettagli di {name}",
736
+ changeFileCount: "[one]{count} file[other]{count} file",
737
+ changeFrom: "da {path}",
738
+ changeShowMore: "Mostra altro",
739
+ changeFlags: "Segnalazioni",
740
+ changeFacts: "Dettagli",
741
+ changeRoot: "Livello principale",
742
+ changeShown: "{shown} di {total} mostrati",
743
+ changeFilter: "Mostra modifiche",
744
+ changeActions: "Azioni per {name}",
745
+ changeConverged: "Convergente",
746
+ changePropagating: "In propagazione",
747
+ changeFault: "Errore",
748
+ changeUnknown: "Sconosciuto",
749
+ changeReplica: "Replica",
750
+ changeState: "Stato",
751
+ changeFirstSeen: "Visto per la prima volta",
752
+ changeLastSeen: "Visto per l'ultima volta",
753
+ changeTimeline: "Ritardo",
754
+ changeNotSeen: "Non ancora visto",
755
+ changeDelay: "+{duration}",
756
+ changeSource: "Origine",
757
+ changeProgress: "{converged} su {total} hanno la modifica",
758
+ changeSeconds: "{count} s",
759
+ changeMinutes: "{count} min",
760
+ changeHours: "{count} h",
761
+ changeDays: "{count} g",
762
+ changeUtcTime: "{time} UTC",
763
+ changeExportCsv: "Esporta CSV",
764
+ changeExportJson: "Esporta JSON",
765
+ changeReason: "Motivo",
766
+ changeReasonHint: "{action}: indica il motivo. Il motivo viene conservato con l'azione.",
767
+ changeReasonRequired: "Indica prima un motivo.",
768
+ changeCancel: "Annulla",
769
+ changeUnclaimed: "Questa pagina non può eseguire «{action}» da sola. Copia la richiesta per inoltrarla.",
770
+ changeCopyRequest: "Copia richiesta",
771
+ changeFiltered: "Filtrato: {filters}",
772
+ changePrintLimit: "Altre {count} righe non vengono stampate.",
701
773
  });
702
774
  const staticLabels = Object.freeze({
703
775
  overflowNote: "Righe mostrate: {shown} su {total}.",
@@ -690,14 +690,86 @@ const labels = Object.freeze({
690
690
  matrixItemTotal: "{item}: {count}",
691
691
  matrixExpandGroup: "Rozwiń {group}",
692
692
  matrixCollapseGroup: "Zwiń {group}",
693
- matrixGroupHeadingCount: "{count}",
694
- matrixGroupCount: "Elementy: {count}",
693
+ matrixGroupCount: "{count}",
694
+ matrixCellCount: "Komórki: {count}",
695
695
  matrixDetails: "Szczegóły",
696
696
  matrixClose: "Zamknij",
697
697
  matrixValue: "Wartość",
698
698
  matrixState: "Stan",
699
699
  matrixAllClear: "Nic nie wymaga uwagi",
700
700
  matrixShowMore: "Pokaż więcej",
701
+ changeInline: "W jednej kolumnie",
702
+ changeSplit: "Obok siebie",
703
+ changeLayout: "Układ",
704
+ changeCopyDiff: "Kopiuj różnice",
705
+ changeCopied: "Skopiowano",
706
+ changeCopyFailed: "Nie udało się skopiować",
707
+ changeNext: "Następna zmiana",
708
+ changePrevious: "Poprzednia zmiana",
709
+ changePosition: "Zmiana {index} z {count}",
710
+ changeShowLines: "[one]Pokaż jeszcze {count} wiersz[few]Pokaż jeszcze {count} wiersze[many]Pokaż jeszcze {count} wierszy[other]Pokaż jeszcze {count} wiersza",
711
+ changeHiddenLines: "[one]{count} niezmieniony wiersz pominięty[few]{count} niezmienione wiersze pominięte[many]{count} niezmienionych wierszy pominiętych[other]{count} niezmienionego wiersza pominięte",
712
+ changeLineCounts: "Dodane wiersze: {added}, usunięte: {removed}",
713
+ changeLineAdded: "Dodany wiersz {line}",
714
+ changeLineRemoved: "Usunięty wiersz {line}",
715
+ changeLineContext: "Wiersz {line}",
716
+ changeBefore: "Przed",
717
+ changeAfter: "Po",
718
+ changeBinary: "Plik binarny: porównany według rozmiaru i skrótu, nie wierszy.",
719
+ changeUnavailable: "Zawartość tego pliku jest niedostępna.",
720
+ changeIdentical: "Tekst się nie zmienił.",
721
+ changeTruncated: "Część zmian nie jest pokazana: porównanie było zbyt duże.",
722
+ changeTooLarge: "Te teksty są zbyt długie, aby je tu porównać.",
723
+ changeDiffOf: "Zmiany w {name}",
724
+ changeAdded: "Dodany",
725
+ changeRemoved: "Usunięty",
726
+ changeModified: "Zmieniony",
727
+ changeRenamed: "Przemianowany",
728
+ changeFlaggedOnly: "Tylko oznaczone",
729
+ changeFlaggedCount: "Oznaczone: {count}",
730
+ changeNoItems: "Brak zmian do pokazania.",
731
+ changeSize: "Rozmiar",
732
+ changeHash: "Skrót",
733
+ changeTime: "Czas",
734
+ changeCopyHash: "Kopiuj pełny skrót",
735
+ changeDetails: "Szczegóły: {name}",
736
+ changeFileCount: "[one]{count} plik[few]{count} pliki[many]{count} plików[other]{count} pliku",
737
+ changeFrom: "z {path}",
738
+ changeShowMore: "Pokaż więcej",
739
+ changeFlags: "Oznaczenia",
740
+ changeFacts: "Szczegóły",
741
+ changeRoot: "Poziom główny",
742
+ changeShown: "Pokazano {shown} z {total}",
743
+ changeFilter: "Pokaż zmiany",
744
+ changeActions: "Akcje dla {name}",
745
+ changeConverged: "Zbieżny",
746
+ changePropagating: "W trakcie replikacji",
747
+ changeFault: "Błąd",
748
+ changeUnknown: "Nieznany",
749
+ changeReplica: "Replika",
750
+ changeState: "Stan",
751
+ changeFirstSeen: "Pierwsze wykrycie",
752
+ changeLastSeen: "Ostatni raport",
753
+ changeTimeline: "Opóźnienie",
754
+ changeNotSeen: "Jeszcze nie wykryto",
755
+ changeDelay: "+{duration}",
756
+ changeSource: "Źródło",
757
+ changeProgress: "Zmianę ma {converged} z {total}",
758
+ changeSeconds: "{count} s",
759
+ changeMinutes: "{count} min",
760
+ changeHours: "{count} godz.",
761
+ changeDays: "{count} d.",
762
+ changeUtcTime: "{time} UTC",
763
+ changeExportCsv: "Eksportuj CSV",
764
+ changeExportJson: "Eksportuj JSON",
765
+ changeReason: "Powód",
766
+ changeReasonHint: "{action}: podaj powód. Powód zostanie zapisany razem z akcją.",
767
+ changeReasonRequired: "Najpierw podaj powód.",
768
+ changeCancel: "Anuluj",
769
+ changeUnclaimed: "Ta strona nie może sama wykonać akcji „{action}”. Skopiuj żądanie, aby je przekazać.",
770
+ changeCopyRequest: "Kopiuj żądanie",
771
+ changeFiltered: "Filtry: {filters}",
772
+ changePrintLimit: "Pominięte w wydruku wiersze: {count}.",
701
773
  });
702
774
  const staticLabels = Object.freeze({
703
775
  overflowNote: "Pokazano {shown} z {total} wierszy.",
@@ -140,11 +140,24 @@ border:var(--cx-size-1px) solid var(--cx-line-strong);border-radius:var(--cx-rad
140
140
  .cx-matrix .cx-mx-bar,.cx-matrix .cx-mx-scroll,.cx-matrix .cx-mx-cards,.cx-matrix .cx-mx-tip{display:none !important;}
141
141
  .cx-matrix .cx-mx-print{display:block;}
142
142
  .cx-matrix-host{max-height:none !important;}
143
- .cx-mx-printtable{border-collapse:collapse;font-size:var(--cx-size-11px);}
143
+ .cx-mx-printtable{border-collapse:collapse;font-size:var(--cx-size-11px);-webkit-print-color-adjust:exact;print-color-adjust:exact;}
144
144
  .cx-mx-printtable :is(th,td){border:var(--cx-size-1px) solid var(--cx-line);padding:var(--cx-size-2px) var(--cx-size-4px);text-align:center;}
145
- .cx-mx-printtable th[scope="row"]{text-align:start;}
145
+ .cx-mx-printtable thead th{background:var(--cx-head-bg);}
146
+ .cx-mx-printtable :is(th[scope="row"],th[scope="rowgroup"]){text-align:start;}
146
147
  .cx-mx-printtable caption{text-align:start;font-weight:600;padding-bottom:var(--cx-size-6px);}
147
- .cx-mx-printattn{font-weight:700;}
148
+ .cx-mx-printgroup > th,.cx-mx-printgroup > td,.cx-mx-printrolled > th{background:var(--cx-head-bg);font-weight:600;}
149
+ .cx-mx-printcount{font-weight:400;color:var(--cx-muted);}
150
+ .cx-mx-printmember{padding-inline-start:var(--cx-size-16px) !important;font-weight:400;}
151
+ .cx-mx-printcell{color:var(--cx-muted);}
152
+ .cx-mx-printcell.cx-tone-danger{color:var(--cx-tone-danger);}
153
+ .cx-mx-printcell.cx-tone-warning{color:var(--cx-tone-warning);}
154
+ .cx-mx-printcell.cx-tone-info{color:var(--cx-tone-info);}
155
+ .cx-mx-printcell.cx-tone-success{color:var(--cx-quiet);}
156
+ .cx-mx-printcell.cx-toned{color:var(--cx-t);}
157
+ .cx-mx-printcell.cx-mx-attn{background:var(--mx-bg,var(--cx-hover-bg));font-weight:700;}
158
+ .cx-mx-printcell.cx-mx-attn.cx-tone-success{color:var(--cx-tone-success);}
159
+ .cx-mx-printnone{color:var(--mx-none);}
160
+ .cx-mx-printself{background:var(--cx-hover-bg);}
148
161
  }
149
162
  @media (forced-colors:active){
150
163
  .cx-mx-cell.cx-mx-attn{border:var(--cx-size-1px) solid CanvasText;}