@oslokommune/punkt-elements 16.14.0 → 16.15.0

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.
Files changed (153) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/dist/calendar-Ch1dgnBo.js +656 -0
  3. package/dist/calendar-DkjXla0I.cjs +90 -0
  4. package/dist/{card-CQYxrtL0.cjs → card-C3POnP3O.cjs} +1 -1
  5. package/dist/{card-Bir3-pl2.js → card-CEDbo1t7.js} +2 -2
  6. package/dist/{checkbox-Cspxcvt_.js → checkbox-Bjp43NxA.js} +1 -1
  7. package/dist/{checkbox-BARDb9iV.cjs → checkbox-nTbihMxW.cjs} +1 -1
  8. package/dist/{combobox-CstFVsy1.cjs → combobox-C4Q6kQEs.cjs} +1 -1
  9. package/dist/{combobox-DtYloYZq.js → combobox-CL9BLuxt.js} +6 -6
  10. package/dist/components/fileupload/fileupload-base.d.ts +116 -0
  11. package/dist/components/fileupload/fileupload-operations.d.ts +4 -0
  12. package/dist/components/fileupload/fileupload-renderers.d.ts +28 -0
  13. package/dist/components/fileupload/fileupload-types.d.ts +70 -0
  14. package/dist/components/fileupload/fileupload.d.ts +25 -0
  15. package/dist/components/fileupload/fileupload.test.d.ts +0 -0
  16. package/dist/components/fileupload/index.d.ts +4 -0
  17. package/dist/components/index.d.ts +2 -0
  18. package/dist/converters-Bffq_YDm.cjs +1 -0
  19. package/dist/converters-jauYkvNh.js +1378 -0
  20. package/dist/{datepicker-gO2EuaBX.js → datepicker-BUK1Qanw.js} +22 -21
  21. package/dist/{datepicker-DfSdjIjl.cjs → datepicker-DYd3JCs_.cjs} +10 -10
  22. package/dist/docs/components/fileupload.d.ts +27 -0
  23. package/dist/fileupload-BRqioKSY.cjs +396 -0
  24. package/dist/fileupload-Bnl303X0.js +1372 -0
  25. package/dist/fileupload.d.ts +1 -0
  26. package/dist/{header-DpU4HYdj.cjs → header-Dps8o-ZY.cjs} +1 -1
  27. package/dist/{header-BHrgTCxj.js → header-T5O6sfCN.js} +3 -3
  28. package/dist/{helptext-CCBKKLus.js → helptext-C5rG4VkA.js} +2 -2
  29. package/dist/{helptext-D-3QfZv5.cjs → helptext-DQgStO4D.cjs} +1 -1
  30. package/dist/{input-element-Bw1s6NlF.js → input-element-CjebcQd1.js} +3 -3
  31. package/dist/{input-element-B1yxcfz4.cjs → input-element-FGcr5hGd.cjs} +1 -1
  32. package/dist/{input-wrapper-CzS4rUrK.cjs → input-wrapper-B_XFi211.cjs} +1 -1
  33. package/dist/{input-wrapper-XuUnGN_U.js → input-wrapper-DBpMVSxt.js} +4 -4
  34. package/dist/{listbox-DuBgTFvH.js → listbox-0NHJvNjz.js} +2 -2
  35. package/dist/{listbox-DCA2JoPV.cjs → listbox-CcThiNBY.cjs} +1 -1
  36. package/dist/{modal-CBEWrAi2.cjs → modal-B6591sWa.cjs} +1 -1
  37. package/dist/{modal-pPp8nia6.js → modal-DyIC3uhs.js} +1 -1
  38. package/dist/pkt-calendar.cjs +1 -1
  39. package/dist/pkt-calendar.js +1 -1
  40. package/dist/pkt-card.cjs +1 -1
  41. package/dist/pkt-card.js +1 -1
  42. package/dist/pkt-checkbox.cjs +1 -1
  43. package/dist/pkt-checkbox.js +1 -1
  44. package/dist/pkt-combobox.cjs +1 -1
  45. package/dist/pkt-combobox.js +1 -1
  46. package/dist/pkt-consent.cjs +1 -1
  47. package/dist/pkt-consent.js +1 -1
  48. package/dist/pkt-datepicker.cjs +1 -1
  49. package/dist/pkt-datepicker.js +1 -1
  50. package/dist/pkt-fileupload.cjs +1 -0
  51. package/dist/pkt-fileupload.js +2 -0
  52. package/dist/pkt-header.cjs +1 -1
  53. package/dist/pkt-header.js +1 -1
  54. package/dist/pkt-heading.cjs +1 -1
  55. package/dist/pkt-heading.js +1 -1
  56. package/dist/pkt-helptext.cjs +1 -1
  57. package/dist/pkt-helptext.js +1 -1
  58. package/dist/pkt-index.cjs +1 -1
  59. package/dist/pkt-index.js +25 -24
  60. package/dist/pkt-input-wrapper.cjs +1 -1
  61. package/dist/pkt-input-wrapper.js +1 -1
  62. package/dist/pkt-link.cjs +1 -1
  63. package/dist/pkt-link.js +1 -1
  64. package/dist/pkt-linkcard.cjs +1 -1
  65. package/dist/pkt-linkcard.js +1 -1
  66. package/dist/pkt-listbox.cjs +1 -1
  67. package/dist/pkt-listbox.js +1 -1
  68. package/dist/pkt-loader.cjs +1 -1
  69. package/dist/pkt-loader.js +1 -1
  70. package/dist/pkt-messagebox.cjs +1 -1
  71. package/dist/pkt-messagebox.js +1 -1
  72. package/dist/pkt-modal.cjs +1 -1
  73. package/dist/pkt-modal.js +1 -1
  74. package/dist/pkt-progressbar.cjs +1 -1
  75. package/dist/pkt-progressbar.js +1 -1
  76. package/dist/pkt-radiobutton.cjs +1 -1
  77. package/dist/pkt-radiobutton.js +1 -1
  78. package/dist/pkt-select.cjs +1 -1
  79. package/dist/pkt-select.js +1 -1
  80. package/dist/pkt-tabs.cjs +1 -1
  81. package/dist/pkt-tabs.js +1 -1
  82. package/dist/pkt-tag.cjs +1 -1
  83. package/dist/pkt-tag.js +1 -1
  84. package/dist/pkt-textarea.cjs +1 -1
  85. package/dist/pkt-textarea.js +1 -1
  86. package/dist/pkt-textinput.cjs +1 -1
  87. package/dist/pkt-textinput.js +1 -1
  88. package/dist/pkt-timepicker.cjs +1 -1
  89. package/dist/pkt-timepicker.js +1 -1
  90. package/dist/{progressbar-CdXtmOBb.cjs → progressbar-CrwpnIkv.cjs} +1 -1
  91. package/dist/{progressbar-Dy9AiYQz.js → progressbar-uC-0W6o4.js} +1 -1
  92. package/dist/{radiobutton-V_KPbup_.js → radiobutton-B-8-wWFf.js} +1 -1
  93. package/dist/{radiobutton-GOnpUbCW.cjs → radiobutton-DvXr7tDk.cjs} +1 -1
  94. package/dist/{select-Cwzq_O8S.cjs → select-B75wzvyz.cjs} +1 -1
  95. package/dist/{select-Bo-w84pI.js → select-D9B8Ighz.js} +3 -3
  96. package/dist/shared-types/fileupload.d.ts +73 -0
  97. package/dist/shared-types/index.d.ts +2 -0
  98. package/dist/shared-utils/fileupload/announcements.d.ts +11 -0
  99. package/dist/shared-utils/fileupload/filename.d.ts +13 -0
  100. package/dist/shared-utils/fileupload/focus-trap.d.ts +12 -0
  101. package/dist/shared-utils/fileupload/formats.d.ts +30 -0
  102. package/dist/shared-utils/fileupload/index.d.ts +15 -0
  103. package/dist/shared-utils/fileupload/navigation.d.ts +5 -0
  104. package/dist/shared-utils/fileupload/size.d.ts +12 -0
  105. package/dist/shared-utils/fileupload/transfers.d.ts +17 -0
  106. package/dist/shared-utils/fileupload/truncate.d.ts +13 -0
  107. package/dist/shared-utils/fileupload/validation.d.ts +24 -0
  108. package/dist/tests/component-registry.d.ts +2 -0
  109. package/dist/{textarea-DYInBFHP.js → textarea-CIWXMaAD.js} +2 -2
  110. package/dist/{textarea-CbqiuSE8.cjs → textarea-CjqprL6Y.cjs} +1 -1
  111. package/dist/{textinput-Bp-UeGOq.cjs → textinput-B0VWmVIF.cjs} +1 -1
  112. package/dist/{textinput-DO9RldRk.js → textinput-CxzAxM8E.js} +2 -2
  113. package/dist/{timepicker-BpBcPB-r.cjs → timepicker-Cv9juQeB.cjs} +1 -1
  114. package/dist/{timepicker-D_XpQJXa.js → timepicker-DXrpg5C7.js} +2 -2
  115. package/package.json +2 -2
  116. package/src/components/fileupload/fileupload-base.ts +557 -0
  117. package/src/components/fileupload/fileupload-operations.ts +213 -0
  118. package/src/components/fileupload/fileupload-renderers.ts +769 -0
  119. package/src/components/fileupload/fileupload-types.ts +88 -0
  120. package/src/components/fileupload/fileupload.test.ts +949 -0
  121. package/src/components/fileupload/fileupload.ts +469 -0
  122. package/src/components/fileupload/index.ts +34 -0
  123. package/src/components/index.ts +16 -0
  124. package/dist/calendar-BzEtOJla.js +0 -2031
  125. package/dist/calendar-E5jJLt8D.cjs +0 -90
  126. /package/dist/{booleanish-jJLlnr6-.cjs → booleanish-B5EFqFpJ.cjs} +0 -0
  127. /package/dist/{booleanish-BmcOU-43.js → booleanish-CRaKZ75t.js} +0 -0
  128. /package/dist/{consent-DeB_5sWH.js → consent-f_IGyHss.js} +0 -0
  129. /package/dist/{consent-hwu7pp3S.cjs → consent-zh2npq2K.cjs} +0 -0
  130. /package/dist/{dialog-polyfill.esm-1hPr0gl9.js → dialog-polyfill.esm-BmVHGRTX.js} +0 -0
  131. /package/dist/{dialog-polyfill.esm-D3Oinvk0.cjs → dialog-polyfill.esm-CXDsb3l-.cjs} +0 -0
  132. /package/dist/{heading-DiQLPxdf.js → heading-BxvE80bb.js} +0 -0
  133. /package/dist/{heading-BgSWIRii.cjs → heading-DRJTS27k.cjs} +0 -0
  134. /package/dist/{input-wrapper-Dwd-_sKm.cjs → input-wrapper-CYCCx8MP.cjs} +0 -0
  135. /package/dist/{input-wrapper-CDyHTR1V.js → input-wrapper-kw2y6Jp_.js} +0 -0
  136. /package/dist/{link-CyTCpI0k.cjs → link-B8zYc5WK.cjs} +0 -0
  137. /package/dist/{link-CKAFMz9j.js → link-CjJcwcxR.js} +0 -0
  138. /package/dist/{linkcard-BE4-FewK.cjs → linkcard-C4x-NJMi.cjs} +0 -0
  139. /package/dist/{linkcard-B0KOGaGj.js → linkcard-Ddh5R_L-.js} +0 -0
  140. /package/dist/{loader-CX2rsC01.cjs → loader-CGQXAuyM.cjs} +0 -0
  141. /package/dist/{loader-6kFZUErT.js → loader-DeizpX45.js} +0 -0
  142. /package/dist/{messagebox-Din9X53b.cjs → messagebox-Ccu29rDv.cjs} +0 -0
  143. /package/dist/{messagebox-Cwlg5sOr.js → messagebox-DqoPqo4K.js} +0 -0
  144. /package/dist/{pkt-options-controller-CXUGx134.cjs → pkt-options-controller-BPBb_O2K.cjs} +0 -0
  145. /package/dist/{pkt-options-controller-CRrI6WMk.js → pkt-options-controller-DbLrdRwH.js} +0 -0
  146. /package/dist/{repeat-Cepr3469.js → repeat-DV1O43YU.js} +0 -0
  147. /package/dist/{repeat-CqcDYBxr.cjs → repeat-DaDFvx86.cjs} +0 -0
  148. /package/dist/{tabs-Rc9N9HWa.js → tabs-4eWA7CsK.js} +0 -0
  149. /package/dist/{tabs-BfurI6C3.cjs → tabs-RnDtIFv3.cjs} +0 -0
  150. /package/dist/{tag-DLthw5b4.cjs → tag-DWtajZk6.cjs} +0 -0
  151. /package/dist/{tag-VwykmuQR.js → tag-hl59gziI.js} +0 -0
  152. /package/dist/{utils-CUqCKGvp.js → utils-BOOZ0ppt.js} +0 -0
  153. /package/dist/{utils-CjAbIttF.cjs → utils-CM67Oudc.cjs} +0 -0
@@ -0,0 +1,396 @@
1
+ const e=require(`./element-DjtxO-1r.cjs`),t=require(`./class-map-CJ-msbHs.cjs`);require(`./alert-BEEnTiCb.cjs`),require(`./icon-Dr8sfT2X.cjs`);const n=require(`./if-defined-XKOD_t_V.cjs`),r=require(`./converters-Bffq_YDm.cjs`);require(`./input-wrapper-B_XFi211.cjs`),require(`./modal-B6591sWa.cjs`),require(`./progressbar-CrwpnIkv.cjs`);var i={dropZoneDragMultiple:`Dra filer hit for å laste dem opp eller`,dropZoneDragSingle:`Dra en fil hit for å laste den opp eller`,dropZoneDragMultipleThumbnail:`Dra bilder hit for å laste dem opp eller`,dropZoneDragSingleThumbnail:`Dra et bilde hit for å laste det opp eller`,dropZoneDragActiveMultiple:`Slipp filene her`,dropZoneDragActiveSingle:`Slipp filen her`,dropZoneDragActiveMultipleThumbnail:`Slipp bildene her`,dropZoneDragActiveSingleThumbnail:`Slipp bildet her`,dropZoneOpenFileDialogMultiple:`velg filer`,dropZoneOpenFileDialogSingle:`velg en fil`,dropZoneOpenFileDialogMultipleThumbnail:`velg fra kamerarull`,dropZoneOpenFileDialogSingleThumbnail:`velg fra kamerarull`,supportedFormatsPrefix:`Format:`,invalidFormatDefault:e=>`Ugyldig filtype. Tillatte formater: ${e}`,sizeTooLargeDefault:e=>`Filen er for stor. Maks størrelse er ${e}.`,requiredMissing:`Du må laste opp minst én fil.`,genericValidationRejection:`Filen ble avvist av validering.`,unknownFilename:`Ukjent fil`,fileLabel:e=>e===1?`fil`:`filer`,srFileAdded:e=>`Filen «${e}» er lagt til`,srFilesAdded:e=>`${e} filer er lagt til`,srFilesUploadedOfTotal:(e,t,n)=>`${e} av ${t} ${n} lastet opp`,srFilesFailedOfTotal:(e,t,n)=>`Feil ved opplasting: ${e} av ${t} ${n} feilet`};function a(e){if(e==null||e===``)return;if(typeof e==`number`)return Number.isFinite(e)&&e>0?e:void 0;let t=String(e).trim(),n=Number(t);if(!Number.isNaN(n)&&n>0)return n;let r=t.match(/^(\d+(?:\.\d+)?)\s*(B|KB|MB|GB)$/i);if(!r){console.warn(`PktFileUpload: Invalid maxFileSize format "${t}". Use format like "5MB", "500KB", "1GB", or bytes.`);return}let i=parseFloat(r[1]);switch(r[2].toUpperCase()){case`B`:return i;case`KB`:return i*1024;case`MB`:return i*1024*1024;case`GB`:return i*1024*1024*1024;default:return}}function o(e){return e<1024?`${Math.round(e)} B`:e<1024*1024?`${Math.round(e/1024)} KB`:e<1024*1024*1024?`${Math.round(e/(1024*1024))} MB`:`${Math.round(e/(1024*1024*1024))} GB`}function s(e){return Array.isArray(e)?e.map(e=>String(e).trim().toLowerCase()).filter(Boolean):[]}function c(e){return e?e.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean):[]}function l(e,t,n){let r=e.toLowerCase().replace(/^\./,``);if(r.includes(`/`)){if(r.endsWith(`/*`)){let e=r.replace(`/*`,``);return n.startsWith(`${e}/`)}return n===r}return t===r}function u(e,t){let n=s(t);if(n.length===0)return!0;let r=e.name.split(`.`).pop()?.toLowerCase()??``,i=e.type.toLowerCase();return n.some(e=>l(e,r,i))}function d(e,t){let n=(e??``).trim();if(n)return n;let r=s(t);return r.length===0?``:r.map(e=>e.includes(`/`)||e.startsWith(`.`)?e:`.${e}`).join(`, `)}function f(e){return e.includes(`/`)?e:e.replace(/^\./,``).toUpperCase()}function p(e,t){let n=s(e);if(n.length>0)return n.map(f).join(`, `);let r=c(t);return r.length>0?r.map(f).join(`, `):``}function m(e,t,n){return((e??``).trim()||t).replace(/\{(\w+)\}/g,(e,t)=>n[t]??`{${t}}`)}function h(e,t){let n=s(t.allowedFormats);if(n.length>0&&!u(e,n)){let e=n.join(`, `),r=`Ugyldig filtype. Tillatte formater: ${e}`;return m(t.formatErrorMessage,r,{formats:e})}let r=a(t.maxFileSize);if(r!==void 0&&e.size>r){let e=o(r),n=`Filen er for stor. Maks størrelse er ${e}.`;return m(t.sizeErrorMessage,n,{maxSize:e})}if(t.onFileValidation){let n=t.onFileValidation(e);if(n)return n}return null}function g(e){let t=e.file;if(t?.type?.startsWith(`image/`))return!0;let n=e.attributes?.targetFilename||t?.name||``;return/\.(jpe?g|png|gif|webp|heic|heif|bmp|svg)$/i.test(n)}function _(e){return typeof e==`number`?`in-progress`:e===`error`?`error`:`idle`}function v(e,t,n){let r={"in-progress":0,error:1,idle:2};return e.map(e=>{let r=t?.find(t=>t.fileId===e.fileId);return{...e,progress:r?.progress??(n===`form`?`done`:`queued`),errorMessage:r?.errorMessage,showProgress:r?.showProgress,lastProgress:r?.lastProgress}}).sort((e,t)=>r[_(e.progress)]-r[_(t.progress)])}function y(e){if(!e)return[];let t=[`a[href]:not([tabindex="-1"])`,`button:not([disabled]):not([tabindex="-1"])`,`input:not([disabled]):not([type="hidden"]):not([tabindex="-1"])`,`select:not([disabled]):not([tabindex="-1"])`,`textarea:not([disabled]):not([tabindex="-1"])`,`[tabindex]:not([tabindex="-1"])`].join(`, `);return Array.from(e.querySelectorAll(t)).filter(e=>!e.hasAttribute(`inert`))}function b(e,t){if(e.key!==`Tab`)return!1;let n=y(t);if(n.length===0)return e.preventDefault(),!0;let r=n[0],i=n[n.length-1],a=(t?.ownerDocument??document).activeElement,o=!!a&&n.includes(a);return e.shiftKey?!o||a===r?(e.preventDefault(),i.focus(),!0):!1:!o||a===i?(e.preventDefault(),r.focus(),!0):!1}function x(e,t){return!t||t<=0||e.length<=t+3?null:{head:e.slice(0,e.length-t),tail:e.slice(-t)}}function S(e,t,n){return n<=0?0:t===`prev`?e<=0?n-1:e-1:e>=n-1?0:e+1}function C(e,t){let n=e.length;if(n===0||!t||t.length===0)return{totalCount:n,uploadedCount:0,failedCount:0};let r=0,i=0;for(let n of e){let e=t.find(e=>e.fileId===n.fileId);e?.progress===`done`?r++:e?.progress===`error`&&i++}return{totalCount:n,uploadedCount:r,failedCount:i}}function w(e,t=i.unknownFilename){return e.attributes?.targetFilename||e.file?.name||t}var T=class extends e.t{constructor(...e){super(...e),this.id=`pkt-fileupload-${crypto.randomUUID()}`,this.name=`files`,this.label=``,this.helptext=``,this.required=!1,this.multiple=!1,this.disabled=!1,this.fullwidth=!1,this.uploadStrategy=`form`,this.itemRenderer=`filename`,this.accept=``,this.allowedFormats=[],this.formatErrorMessage=``,this.sizeErrorMessage=``,this.transfers=[],this.addCommentsEnabled=!1,this.renameFilesEnabled=!1,this.extraOperations=[],this.enableImagePreview=!1,this.hasError=!1,this.errorMessage=``,this.optionalTag=!1,this.requiredTag=!1,this.truncateTail=4,this.files=[],this.isDragActive=!1,this.validationErrorMessage=null,this.addedAnnouncement=``,this.thumbnailUrls={},this.hasInitializedValue=!1,this.hasWarnedInvalidValueCombo=!1,this.thumbnailFileById=new Map,this.connectedForm=null,this.addedAnnouncementTimer=null,this.requiredSelectionMessage=i.requiredMissing,this.onNativeFileChange=e=>{let t=e.target;this.addFiles(t.files?Array.from(t.files):[]),this.uploadStrategy===`custom`&&(t.value=``)},this.openFileDialog=e=>{e.preventDefault(),e.stopPropagation(),!this.disabled&&this.querySelector(`#${this.id}-input`)?.click()},this.onDropZoneClick=e=>{this.disabled||e.target.closest(`.pkt-fileupload__drop-zone__placeholder__title__open-file-dialog`)||this.querySelector(`#${this.id}-input`)?.click()},this.onDragOver=e=>{e.preventDefault(),!this.disabled&&(this.isDragActive=!0)},this.onDragLeave=()=>{this.isDragActive=!1},this.onDrop=e=>{if(e.preventDefault(),this.isDragActive=!1,this.disabled)return;let t=e.dataTransfer?.files?Array.from(e.dataTransfer.files):[];this.addFiles(t)},this.onHostFormSubmit=e=>{!this.required||this.uploadStrategy!==`custom`||this.getCurrentFiles().length>0||(this.validationErrorMessage=this.requiredSelectionMessage,e.preventDefault())}}get isControlled(){return this.value!==void 0}get hasEffectiveError(){return!!this.validationErrorMessage||this.hasError||!!this.errorMessage.trim()}get effectiveErrorMessage(){return this.validationErrorMessage??this.errorMessage??``}get hasValidationError(){return!!this.validationErrorMessage}firstUpdated(e){super.firstUpdated?.(e),this.hasInitializedValue||=(this.files=this.value??this.defaultValue??[],this.syncThumbnailUrls(this.files),!0),this.value!==void 0&&this.defaultValue!==void 0&&this.warnInvalidValueCombo()}willUpdate(e){super.willUpdate(e),this.hasInitializedValue&&this.isControlled&&(e.has(`value`)||e.has(`itemRenderer`)||e.has(`enableImagePreview`))&&(this.files=this.value??[],this.syncThumbnailUrls(this.files))}updated(e){super.updated(e),(e.has(`uploadStrategy`)||e.has(`required`)||e.has(`value`))&&this.syncFormSubmitListener(),this.uploadStrategy===`form`&&(e.has(`value`)||e.has(`files`)||e.has(`uploadStrategy`))&&this.syncNativeInputFiles()}syncNativeInputFiles(){let e=this.querySelector(`#${this.id}-input`);if(!(!e||typeof DataTransfer>`u`))try{let t=new DataTransfer;for(let e of this.getCurrentFiles())e.file&&t.items.add(e.file);e.files=t.files}catch{}}warnInvalidValueCombo(){this.hasWarnedInvalidValueCombo||=(console.warn(`PktFileUpload: Både value og defaultValue er angitt. Komponenten kan være enten kontrollert eller ukontrollert, ikke begge. value vil bli prioritert.`),!0)}disconnectedCallback(){this.teardownFormSubmitListener(),this.addedAnnouncementTimer&&=(clearTimeout(this.addedAnnouncementTimer),null),super.disconnectedCallback(),this.revokeAllThumbnailUrls()}setAddedAnnouncement(e){this.addedAnnouncement=e,this.addedAnnouncementTimer&&clearTimeout(this.addedAnnouncementTimer),this.addedAnnouncementTimer=setTimeout(()=>{this.addedAnnouncement=``,this.addedAnnouncementTimer=null},1500)}connectedCallback(){super.connectedCallback(),this.syncFormSubmitListener()}addFiles(e){if(e.length===0)return;let t=this.multiple?e:[e[0]];for(let e of t){let t=this.validateFile(e);if(t){this.validationErrorMessage=t;return}}this.validationErrorMessage=null;let n=t.map(e=>({fileId:crypto.randomUUID(),file:e,attributes:{targetFilename:e.name}}));this.setAddedAnnouncement(n.length===1?i.srFileAdded(n[0].attributes.targetFilename):i.srFilesAdded(n.length));let r=this.getCurrentFiles(),a=this.multiple?[...r,...n]:[n[0]];this.commitFiles(a,`add`,n.map(e=>e.fileId)),this.uploadStrategy===`custom`&&n.forEach(e=>{this.dispatchEvent(new CustomEvent(`file-upload-requested`,{detail:{fileId:e.fileId,file:e.file,attributes:e.attributes},bubbles:!0,composed:!0}))})}getCurrentFiles(){return this.isControlled?this.value??[]:this.files}cancelTransfer(e){if(this.disabled)return;let t=this.getCurrentFiles().find(t=>t.fileId===e);t&&(this.removeFileItem(e),this.dispatchEvent(new CustomEvent(`transfer-cancelled`,{detail:{fileId:t.fileId,file:t.file,attributes:t.attributes},bubbles:!0,composed:!0})))}removeFileItem(e){if(this.disabled)return;let t=this.getCurrentFiles(),n=t.filter(t=>t.fileId!==e);n.length!==t.length&&this.commitFiles(n,`remove`,[e])}updateFileItem(e,t){let n=this.getCurrentFiles().map(n=>n.fileId===e?{...n,...t}:n);this.commitFiles(n,`update`,[e])}commitFiles(e,t,n){this.isControlled||(this.files=e,this.syncThumbnailUrls(e)),this.validationErrorMessage===this.requiredSelectionMessage&&e.length>0&&(this.validationErrorMessage=null),this.dispatchEvent(new CustomEvent(`files-changed`,{detail:{files:e,reason:t,changedFileIds:n},bubbles:!0,composed:!0}))}getThumbnailUrl(e){return this.thumbnailUrls[e.fileId]}getTransferProgress(e){let t=this.transfers.find(t=>t.fileId===e);return t?t.progress:this.uploadStrategy===`form`?`done`:`queued`}getTransferForFile(e){return this.transfers.find(t=>t.fileId===e)}isImageFile(e){return g(e)}formatFileSize(e){return o(e)}getResolvedAcceptValue(){return d(this.accept,this.allowedFormats)}getSupportedFormatsText(){return p(this.allowedFormats,this.accept)}getSortedFilesAndTransfers(){return v(this.getCurrentFiles(),this.transfers,this.uploadStrategy)}validateFile(e){let t=h(e,{allowedFormats:this.allowedFormats,maxFileSize:this.maxFileSize,formatErrorMessage:this.formatErrorMessage,sizeErrorMessage:this.sizeErrorMessage,onFileValidation:this.onFileValidation});if(t)return t;let n={file:e,errorMessage:null},r=new CustomEvent(`file-validate`,{detail:n,bubbles:!0,composed:!0,cancelable:!0});return this.dispatchEvent(r),n.errorMessage?n.errorMessage:r.defaultPrevented?i.genericValidationRejection:null}syncThumbnailUrls(e){if(!(typeof URL<`u`&&typeof URL.createObjectURL==`function`&&typeof URL.revokeObjectURL==`function`)){this.thumbnailUrls={},this.thumbnailFileById.clear();return}let t=new Set(e.map(e=>e.fileId)),n={};for(let[e,n]of Object.entries(this.thumbnailUrls))t.has(e)||(URL.revokeObjectURL(n),this.thumbnailFileById.delete(e));for(let t of e){let e=this.thumbnailUrls[t.fileId],r=this.thumbnailFileById.get(t.fileId);if(!t.file||!this.isImageFile(t)){e&&(URL.revokeObjectURL(e),this.thumbnailFileById.delete(t.fileId));continue}if(e&&r===t.file){n[t.fileId]=e;continue}e&&r!==t.file&&URL.revokeObjectURL(e);let i=URL.createObjectURL(t.file);this.thumbnailFileById.set(t.fileId,t.file),n[t.fileId]=i}this.thumbnailUrls=n}revokeAllThumbnailUrls(){if(typeof URL>`u`||typeof URL.revokeObjectURL!=`function`){this.thumbnailUrls={},this.thumbnailFileById.clear();return}Object.values(this.thumbnailUrls).forEach(e=>URL.revokeObjectURL(e)),this.thumbnailUrls={},this.thumbnailFileById.clear()}getSrUploadedMessage(){if(this.addedAnnouncement)return this.addedAnnouncement;let{totalCount:e,uploadedCount:t}=C(this.getCurrentFiles(),this.transfers);return e===0||t===0?``:i.srFilesUploadedOfTotal(t,e,i.fileLabel(e))}getSrErrorsMessage(){let{totalCount:e,failedCount:t}=C(this.getCurrentFiles(),this.transfers);return e===0||t===0?``:i.srFilesFailedOfTotal(t,e,i.fileLabel(e))}syncFormSubmitListener(){let e=this.closest(`form`);this.connectedForm!==e&&(this.teardownFormSubmitListener(),this.connectedForm=e,this.connectedForm&&this.connectedForm.addEventListener(`submit`,this.onHostFormSubmit))}teardownFormSubmitListener(){this.connectedForm&&=(this.connectedForm.removeEventListener(`submit`,this.onHostFormSubmit),null)}};e.r([e.s({type:String})],T.prototype,`id`,void 0),e.r([e.s({type:String})],T.prototype,`name`,void 0),e.r([e.s({type:String})],T.prototype,`label`,void 0),e.r([e.s({type:String})],T.prototype,`helptext`,void 0),e.r([e.s({type:Boolean,reflect:!0})],T.prototype,`required`,void 0),e.r([e.s({type:Boolean,reflect:!0})],T.prototype,`multiple`,void 0),e.r([e.s({type:Boolean,reflect:!0})],T.prototype,`disabled`,void 0),e.r([e.s({type:Boolean,reflect:!0,attribute:`fullwidth`})],T.prototype,`fullwidth`,void 0),e.r([e.s({type:String,reflect:!0,attribute:`upload-strategy`})],T.prototype,`uploadStrategy`,void 0),e.r([e.s({type:String,reflect:!0,attribute:`item-renderer`})],T.prototype,`itemRenderer`,void 0),e.r([e.s({type:String})],T.prototype,`accept`,void 0),e.r([e.s({converter:r.t.csvToArray,attribute:`allowed-formats`})],T.prototype,`allowedFormats`,void 0),e.r([e.s({type:String,attribute:`format-error-message`})],T.prototype,`formatErrorMessage`,void 0),e.r([e.s({attribute:`max-file-size`})],T.prototype,`maxFileSize`,void 0),e.r([e.s({type:String,attribute:`size-error-message`})],T.prototype,`sizeErrorMessage`,void 0),e.r([e.s({attribute:!1})],T.prototype,`onFileValidation`,void 0),e.r([e.s({attribute:!1})],T.prototype,`transfers`,void 0),e.r([e.s({type:Boolean,attribute:`add-comments-enabled`})],T.prototype,`addCommentsEnabled`,void 0),e.r([e.s({type:Boolean,attribute:`rename-files-enabled`})],T.prototype,`renameFilesEnabled`,void 0),e.r([e.s({attribute:!1})],T.prototype,`extraOperations`,void 0),e.r([e.s({type:Boolean,reflect:!0,attribute:`enable-image-preview`})],T.prototype,`enableImagePreview`,void 0),e.r([e.s({type:Boolean,attribute:`has-error`})],T.prototype,`hasError`,void 0),e.r([e.s({type:String,attribute:`error-message`})],T.prototype,`errorMessage`,void 0),e.r([e.s({type:Boolean,attribute:`optional-tag`})],T.prototype,`optionalTag`,void 0),e.r([e.s({type:Boolean,attribute:`required-tag`})],T.prototype,`requiredTag`,void 0),e.r([e.s({type:Number,attribute:`truncate-tail`})],T.prototype,`truncateTail`,void 0),e.r([e.s({attribute:!1})],T.prototype,`value`,void 0),e.r([e.s({attribute:!1})],T.prototype,`defaultValue`,void 0),e.r([e.o()],T.prototype,`files`,void 0),e.r([e.o()],T.prototype,`isDragActive`,void 0),e.r([e.o()],T.prototype,`validationErrorMessage`,void 0),e.r([e.o()],T.prototype,`addedAnnouncement`,void 0),e.r([e.o()],T.prototype,`thumbnailUrls`,void 0);var E=`comments`,D=e=>{let t=new Date(e);return Number.isNaN(t.getTime())?e:`${String(t.getDate()).padStart(2,`0`)}.${String(t.getMonth()+1).padStart(2,`0`)}.${t.getFullYear()} kl. ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`},O=(e,t,n)=>{e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),t()),e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),n())},k=(e,t,n)=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),n()),(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),t())},A=e=>({id:`remove`,title:`Slett`,ariaLabel:`Slett fil`,onClick:({file:t})=>e(t.fileId)}),j=()=>({id:`rename`,title:`Rediger`,ariaLabel:`Rediger filnavn`,renderInlineUI:t=>{let n=t.getAttribute(`targetFilename`)||t.file.attributes?.targetFilename||t.file.file?.name||``,r=`pkt-fileupload-rename-${t.file.fileId}`,i=()=>{let e=document.getElementById(r)?.value?.trim();e&&t.setAttribute(`targetFilename`,e),t.close()};return e.d`
2
+ <label for=${r} class="pkt-sr-only">Endre filnavn</label>
3
+ <input
4
+ id=${r}
5
+ type="text"
6
+ class="pkt-fileupload__queue-display__item__rename-input"
7
+ ?disabled=${t.disabled}
8
+ .value=${n}
9
+ @keydown=${e=>O(e,i,t.close)}
10
+ />
11
+ <button
12
+ type="button"
13
+ class="pkt-btn pkt-btn--secondary pkt-btn--small"
14
+ ?disabled=${t.disabled}
15
+ @click=${i}
16
+ >
17
+ Lagre
18
+ </button>
19
+ <button
20
+ type="button"
21
+ class="pkt-btn pkt-btn--tertiary pkt-btn--small"
22
+ ?disabled=${t.disabled}
23
+ @click=${t.close}
24
+ >
25
+ Avbryt
26
+ </button>
27
+ `},renderHidden:t=>{let n=t.getAttribute(`targetFilename`)||t.file.attributes?.targetFilename||t.file.file?.name||``;return e.d`<input
28
+ type="hidden"
29
+ name=${`${t.inputName}-targetFilename`}
30
+ value=${n}
31
+ />`}}),M=()=>({id:`comment`,title:e=>(e.attributes?.[E]??[]).length>0?``:`Legg til kommentar`,ariaLabel:`Legg til kommentar`,renderExtendedUI:t=>{let n=(t.getAttribute(E)??[])[0],r=`pkt-fileupload-comment-${t.file.fileId}`,i=()=>{let e=document.getElementById(r)?.value?.trim();e&&t.setAttribute(E,[{text:e,timestamp:new Date().toISOString()}]),t.close()};return e.d`
32
+ <label for=${r} class="pkt-fileupload__queue-display__item__comment-label">
33
+ ${n?`Rediger kommentar`:`Legg til kommentar`}
34
+ </label>
35
+ <textarea
36
+ id=${r}
37
+ class="pkt-fileupload__queue-display__item__comment-input"
38
+ ?disabled=${t.disabled}
39
+ .value=${n?.text??``}
40
+ rows="2"
41
+ placeholder="Skriv inn kommentar"
42
+ @keydown=${e=>k(e,i,t.close)}
43
+ ></textarea>
44
+ <button
45
+ type="button"
46
+ class="pkt-btn pkt-btn--secondary pkt-btn--small"
47
+ ?disabled=${t.disabled}
48
+ @click=${i}
49
+ >
50
+ ${n?`Lagre kommentar`:`Legg til kommentar`}
51
+ </button>
52
+ <button
53
+ type="button"
54
+ class="pkt-btn pkt-btn--tertiary pkt-btn--small"
55
+ ?disabled=${t.disabled}
56
+ @click=${t.close}
57
+ >
58
+ Avbryt
59
+ </button>
60
+ `},renderContent:t=>{if(t.isActive)return null;let n=t.getAttribute(E)??[];if(n.length===0)return null;let r=n[0];return e.d`
61
+ <div class="pkt-fileupload__queue-display__item__comments">
62
+ <div class="pkt-fileupload__queue-display__item__comment">
63
+ <div class="pkt-fileupload__queue-display__item__comment__content">
64
+ <span class="pkt-fileupload__queue-display__item__comment__text" aria-label="Kommentar tekst">
65
+ ${r.text}
66
+ </span>
67
+ <time class="pkt-fileupload__queue-display__item__comment__time">
68
+ ${D(r.timestamp)}
69
+ </time>
70
+ </div>
71
+ <div class="pkt-fileupload__queue-display__item__comment__actions">
72
+ <button
73
+ type="button"
74
+ class="pkt-fileupload__queue-display__item__comment__action"
75
+ aria-label="Rediger kommentar"
76
+ ?disabled=${t.disabled}
77
+ @click=${t.activate}
78
+ >
79
+ <pkt-icon name="edit"></pkt-icon>
80
+ </button>
81
+ <button
82
+ type="button"
83
+ class="pkt-fileupload__queue-display__item__comment__action"
84
+ aria-label="Slett kommentar"
85
+ ?disabled=${t.disabled}
86
+ @click=${()=>t.setAttribute(E,void 0)}
87
+ >
88
+ <pkt-icon name="trash-can"></pkt-icon>
89
+ </button>
90
+ </div>
91
+ </div>
92
+ </div>
93
+ `},renderHidden:t=>{let n=t.getAttribute(E);return e.d`<input
94
+ type="hidden"
95
+ name=${`${t.inputName}-comments`}
96
+ value=${n?JSON.stringify(n):``}
97
+ />`}}),N=(t,n)=>{let r=x(t,n);return r?e.d`<span
98
+ class="pkt-fileupload__queue-display__item__title__head"
99
+ data-pkt-truncate-part="first"
100
+ >${r.head}</span
101
+ ><span
102
+ class="pkt-fileupload__queue-display__item__title__tail"
103
+ data-pkt-truncate-part="tail"
104
+ >${r.tail}</span
105
+ >`:e.d`<span data-pkt-truncate-part="first">${t}</span>`},P=(t,n,r)=>e.d`
106
+ <p class="pkt-fileupload__queue-display__item__title">
107
+ ${N(t,r)}${n?e.d`<span class="pkt-fileupload__queue-display__item__filesize"> (${n})</span>`:null}
108
+ </p>
109
+ `,F=e=>typeof e==`number`?`in-progress`:e===`error`?`error`:`idle`,I=t=>e.d`<span class="pkt-fileupload__queue-display__item__loading-text" aria-label="Laster opp fil"
110
+ >${t??`Laster opp...`}</span
111
+ >`,L=({operationId:e,file:t,inputName:n,disabled:r,isActive:i,onActivateOperation:a,onCloseOperation:o,getFileAttribute:s,setFileAttribute:c})=>({file:t,inputName:n,disabled:r,isActive:i,activate:()=>a(t.fileId,e),close:()=>o(t.fileId),getAttribute:e=>s(t.fileId,e),setAttribute:(e,n)=>c(t.fileId,e,n)}),R=({file:t,fileSize:n,disabled:r,transferProgress:i,transferShowProgress:a,loadingText:o,truncateTail:s,onCancel:c,iconName:l=`document-text`})=>{let u=w(t),d=a??i!==0;return e.d`
112
+ <pkt-icon
113
+ name=${l}
114
+ class="pkt-fileupload__queue-display__item__icon pkt-icon--medium"
115
+ aria-hidden="true"
116
+ ></pkt-icon>
117
+ ${P(u,n,s)}
118
+ <button
119
+ type="button"
120
+ class="pkt-fileupload__queue-display__item__cancel-button"
121
+ aria-label="Avbryt opplasting"
122
+ ?disabled=${r}
123
+ @click=${()=>c(t.fileId)}
124
+ >
125
+ Avbryt
126
+ </button>
127
+ ${d?e.d`
128
+ <pkt-progressbar
129
+ class="pkt-fileupload__queue-display__item__progress"
130
+ valueCurrent=${Math.round(i*100)}
131
+ valueMax=${100}
132
+ statusType="none"
133
+ statusPlacement="following"
134
+ ></pkt-progressbar>
135
+ <span class="pkt-fileupload__queue-display__item__percentage" aria-hidden="true"
136
+ >${Math.round(i*100)}%</span
137
+ >
138
+ `:I(o)}
139
+ `},z=({file:t,fileSize:n,disabled:r,transferShowProgress:i,transferLastProgress:a,transferErrorMessage:o,truncateTail:s,onCancel:c})=>{let l=w(t),u=!!i,d=Math.round((a??1)*100);return e.d`
140
+ <pkt-icon
141
+ name="alert-error"
142
+ class="pkt-fileupload__queue-display__item__icon pkt-icon--medium"
143
+ aria-hidden="true"
144
+ ></pkt-icon>
145
+ ${P(l,n,s)}
146
+ <button
147
+ type="button"
148
+ class="pkt-fileupload__queue-display__item__cancel-button"
149
+ aria-label="Fjern fil som feilet under opplasting"
150
+ ?disabled=${r}
151
+ @click=${()=>c(t.fileId)}
152
+ >
153
+ Fjern
154
+ </button>
155
+ ${u?e.d`
156
+ <pkt-progressbar
157
+ class="pkt-fileupload__queue-display__item__progress pkt-fileupload__queue-display__item__progress--error"
158
+ valueCurrent=${d}
159
+ valueMax=${100}
160
+ statusType="none"
161
+ statusPlacement="following"
162
+ ></pkt-progressbar>
163
+ `:null}
164
+ ${o?e.d`<span class="pkt-fileupload__queue-display__item__error-message"
165
+ >${o}</span
166
+ >`:null}
167
+ `},B=({file:t,disabled:r,inputName:i,operations:a,activeOperationId:o,onActivateOperation:s,onCloseOperation:c,getFileAttribute:l,setFileAttribute:u})=>{let d=a.find(e=>e.id===o);if(d?.renderInlineUI||d?.renderExtendedUI)return null;let f=a.map(a=>{let d=L({operationId:a.id,file:t,inputName:i,disabled:r,isActive:a.id===o,onActivateOperation:s,onCloseOperation:c,getFileAttribute:l,setFileAttribute:u}),f=typeof a.title==`function`?a.title(t):a.title;return f?e.d`<button
168
+ type="button"
169
+ class="pkt-fileupload__queue-display__item__operation"
170
+ aria-label=${n.t(typeof a.ariaLabel==`function`?a.ariaLabel(t):a.ariaLabel)}
171
+ ?disabled=${r}
172
+ @click=${()=>{(a.renderInlineUI||a.renderExtendedUI)&&d.activate(),a.onClick?.(d)}}
173
+ >
174
+ ${f}
175
+ </button>`:null}).filter(Boolean);return f.length===0?null:e.d`<div class="pkt-fileupload__queue-display__item__actions">${f}</div>`},V=({file:t,disabled:n,inputName:r,operations:i,activeOperationId:a,onActivateOperation:o,onCloseOperation:s,getFileAttribute:c,setFileAttribute:l})=>i.map(i=>{if(!i.renderContent)return null;let u=L({operationId:i.id,file:t,inputName:r,disabled:n,isActive:i.id===a,onActivateOperation:o,onCloseOperation:s,getFileAttribute:c,setFileAttribute:l}),d=i.renderContent(u);return d==null?null:e.d`<div class="pkt-fileupload__queue-display__item__operation-content">
176
+ ${d}
177
+ </div>`}),H=({file:t,disabled:n,inputName:r,operations:i,activeOperationId:a,onActivateOperation:o,onCloseOperation:s,getFileAttribute:c,setFileAttribute:l})=>{if(!a)return null;let u=i.find(e=>e.id===a);if(!u?.renderExtendedUI)return null;let d=L({operationId:u.id,file:t,inputName:r,disabled:n,isActive:!0,onActivateOperation:o,onCloseOperation:s,getFileAttribute:c,setFileAttribute:l});return e.d`<div class="pkt-fileupload__queue-display__item__expanded-operation-ui">
178
+ ${u.renderExtendedUI(d)}
179
+ </div>`},U=({file:e,disabled:t,inputName:n,operations:r,activeOperationId:i,onActivateOperation:a,onCloseOperation:o,getFileAttribute:s,setFileAttribute:c})=>r.map(r=>{if(!r.renderHidden)return null;let l=L({operationId:r.id,file:e,inputName:n,disabled:t,isActive:r.id===i,onActivateOperation:a,onCloseOperation:o,getFileAttribute:s,setFileAttribute:c});return r.renderHidden(l)}),W=(t,n,r)=>e.d`
180
+ <pkt-icon
181
+ name="document-text"
182
+ class="pkt-fileupload__queue-display__item__icon pkt-icon--medium"
183
+ aria-hidden="true"
184
+ ></pkt-icon>
185
+ ${P(w(t),n,r)}
186
+ `,G=({file:r,thumbnailUrl:i,previewEnabled:a,canOpenPreview:o,truncateTail:s,onOpenPreview:c,onThumbnailImageError:l})=>{let u=w(r),d=!!i,f=!!a&&!!o,p=f&&!!c;return e.d`
187
+ <div
188
+ class=${t.t({"pkt-fileupload__queue-display__item__thumbnail":!0,"pkt-fileupload__queue-display__item__thumbnail--fallback":!d})}
189
+ >
190
+ <button
191
+ type="button"
192
+ class="pkt-fileupload__queue-display__item__thumbnail__image-wrapper pkt-btn pkt-btn--medium pkt-btn--secondary pkt-btn--label-only"
193
+ aria-label=${`Forhåndsvis bilde ${u}`}
194
+ ?disabled=${!p}
195
+ @click=${()=>{!p||!c||c(r.fileId)}}
196
+ >
197
+ <span class="pkt-btn__text">
198
+ ${f?e.d`<pkt-icon
199
+ name="expand"
200
+ class="pkt-fileupload__queue-display__item__thumbnail__expand-icon"
201
+ aria-hidden="true"
202
+ ></pkt-icon>`:null}
203
+ ${d?e.d`<img
204
+ src=${n.t(i)}
205
+ alt=${u}
206
+ @error=${()=>l?.(r.fileId)}
207
+ />`:e.d`<pkt-icon
208
+ name="document-text"
209
+ class="pkt-fileupload__queue-display__item__icon pkt-icon--medium"
210
+ aria-hidden="true"
211
+ ></pkt-icon>`}
212
+ </span>
213
+ </button>
214
+ <span class="pkt-fileupload__queue-display__item__thumbnail__title"
215
+ >${N(u,s)}</span
216
+ >
217
+ </div>
218
+ `},K=({file:n,inputName:r,disabled:i,fileSize:a,operations:o,activeOperationId:s,onActivateOperation:c,onCloseOperation:l,getFileAttribute:u,setFileAttribute:d,transferProgress:f,transferErrorMessage:p,transferShowProgress:m,transferLastProgress:h,loadingText:g,truncateTail:_,onCancel:v})=>{let y=F(f),b=o.find(e=>e.id===s),x=b?.renderInlineUI?b.renderInlineUI(L({operationId:b.id,file:n,inputName:r,disabled:i,isActive:!0,onActivateOperation:c,onCloseOperation:l,getFileAttribute:u,setFileAttribute:d})):null;return e.d`
219
+ <li
220
+ class=${t.t({"pkt-fileupload__queue-display__item":!0,"pkt-fileupload__queue-display__item--in-progress":y===`in-progress`,"pkt-fileupload__queue-display__item--error":y===`error`,[`pkt-fileupload__queue-display__item--${f}`]:typeof f==`string`})}
221
+ >
222
+ ${U({file:n,disabled:i,inputName:r,operations:o,activeOperationId:s,onActivateOperation:c,onCloseOperation:l,getFileAttribute:u,setFileAttribute:d})}
223
+ ${y===`in-progress`?R({file:n,fileSize:a,disabled:i,transferProgress:f,transferShowProgress:m,loadingText:g,truncateTail:_,onCancel:v}):y===`error`?z({file:n,fileSize:a,disabled:i,transferShowProgress:m,transferLastProgress:h,transferErrorMessage:p,truncateTail:_,onCancel:v}):x?e.d`
224
+ <pkt-icon
225
+ name="document-text"
226
+ class="pkt-fileupload__queue-display__item__icon pkt-icon--medium"
227
+ aria-hidden="true"
228
+ ></pkt-icon>
229
+ <div class="pkt-fileupload__queue-display__item__inline-ui">
230
+ ${x}
231
+ </div>
232
+ `:W(n,a,_)}
233
+ ${y===`idle`?B({file:n,disabled:i,inputName:r,operations:o,activeOperationId:s,onActivateOperation:c,onCloseOperation:l,getFileAttribute:u,setFileAttribute:d}):null}
234
+ ${y===`idle`?V({file:n,disabled:i,inputName:r,operations:o,activeOperationId:s,onActivateOperation:c,onCloseOperation:l,getFileAttribute:u,setFileAttribute:d}):null}
235
+ ${y===`idle`?H({file:n,disabled:i,inputName:r,operations:o,activeOperationId:s,onActivateOperation:c,onCloseOperation:l,getFileAttribute:u,setFileAttribute:d}):null}
236
+ </li>
237
+ `},q=({file:n,inputName:r,disabled:i,fileSize:a,thumbnailUrl:o,previewEnabled:s,canOpenPreview:c,operations:l,activeOperationId:u,onActivateOperation:d,onCloseOperation:f,getFileAttribute:p,setFileAttribute:m,transferProgress:h,transferErrorMessage:g,transferShowProgress:_,transferLastProgress:v,loadingText:y,truncateTail:b,onCancel:x,onOpenPreview:S,onThumbnailImageError:C})=>{let w=F(h),T=l.find(e=>e.id===u),E=T?.renderInlineUI?T.renderInlineUI(L({operationId:T.id,file:n,inputName:r,disabled:i,isActive:!0,onActivateOperation:d,onCloseOperation:f,getFileAttribute:p,setFileAttribute:m})):null;return e.d`
238
+ <li
239
+ class=${t.t({"pkt-fileupload__queue-display__item":!0,"pkt-fileupload__queue-display__item--in-progress":w===`in-progress`,"pkt-fileupload__queue-display__item--error":w===`error`,[`pkt-fileupload__queue-display__item--${h}`]:typeof h==`string`})}
240
+ >
241
+ ${U({file:n,disabled:i,inputName:r,operations:l,activeOperationId:u,onActivateOperation:d,onCloseOperation:f,getFileAttribute:p,setFileAttribute:m})}
242
+ ${w===`in-progress`?R({file:n,fileSize:a,disabled:i,transferProgress:h,transferShowProgress:_,loadingText:y,truncateTail:b,onCancel:x,iconName:`picture`}):w===`error`?z({file:n,fileSize:a,disabled:i,transferShowProgress:_,transferLastProgress:v,transferErrorMessage:g,truncateTail:b,onCancel:x}):E?e.d`
243
+ <pkt-icon
244
+ name="picture"
245
+ class="pkt-fileupload__queue-display__item__icon pkt-icon--medium"
246
+ aria-hidden="true"
247
+ ></pkt-icon>
248
+ <div class="pkt-fileupload__queue-display__item__inline-ui">
249
+ ${E}
250
+ </div>
251
+ `:G({file:n,thumbnailUrl:o,previewEnabled:s,canOpenPreview:c,truncateTail:b,onOpenPreview:S,onThumbnailImageError:C})}
252
+ ${w===`idle`?B({file:n,disabled:i,inputName:r,operations:l,activeOperationId:u,onActivateOperation:d,onCloseOperation:f,getFileAttribute:p,setFileAttribute:m}):null}
253
+ ${w===`idle`?V({file:n,disabled:i,inputName:r,operations:l,activeOperationId:u,onActivateOperation:d,onCloseOperation:f,getFileAttribute:p,setFileAttribute:m}):null}
254
+ ${w===`idle`?H({file:n,disabled:i,inputName:r,operations:l,activeOperationId:u,onActivateOperation:d,onCloseOperation:f,getFileAttribute:p,setFileAttribute:m}):null}
255
+ </li>
256
+ `},J=class extends T{constructor(...e){super(...e),this.activeOperationByFileId={},this.isPreviewModalOpen=!1,this.previewCurrentIndex=0,this.failedImageFileIds={},this.closePreview=()=>{this.isPreviewModalOpen=!1},this.onPreviewKeyDown=(e,t)=>{if(this.isPreviewModalOpen){if(e.key===`Tab`){b(e,e.currentTarget);return}switch(e.key){case`ArrowLeft`:e.preventDefault(),this.navigatePreview(`prev`,t);break;case`ArrowRight`:e.preventDefault(),this.navigatePreview(`next`,t);break;case`Escape`:e.preventDefault(),this.closePreview();break;default:break}}}}render(){let n=this.renderContent();return this.label?e.d`
257
+ <pkt-input-wrapper
258
+ .forId=${`${this.id}-input`}
259
+ .label=${this.label}
260
+ .helptext=${this.helptext}
261
+ ?disabled=${this.disabled}
262
+ ?hasError=${this.hasEffectiveError}
263
+ ?optionalTag=${this.optionalTag}
264
+ ?requiredTag=${this.requiredTag}
265
+ class=${t.t({"pkt-fileupload-wrapper":!0,"pkt-fileupload-wrapper--full-width":this.fullwidth})}
266
+ >
267
+ ${n}
268
+ </pkt-input-wrapper>
269
+ `:n}renderContent(){let r=this.getSortedFilesAndTransfers(),a=this.getPreviewableImages(r),o=this.getSupportedFormatsText(),s=[!this.label&&this.helptext?`${this.id}-helptext`:void 0,this.hasEffectiveError?`${this.id}-error`:void 0].filter(Boolean).join(` `)||void 0,c=this.itemRenderer===`thumbnail`?this.multiple?{dragInactive:i.dropZoneDragMultipleThumbnail,dragActive:i.dropZoneDragActiveMultipleThumbnail,openFileDialog:i.dropZoneOpenFileDialogMultipleThumbnail}:{dragInactive:i.dropZoneDragSingleThumbnail,dragActive:i.dropZoneDragActiveSingleThumbnail,openFileDialog:i.dropZoneOpenFileDialogSingleThumbnail}:this.multiple?{dragInactive:i.dropZoneDragMultiple,dragActive:i.dropZoneDragActiveMultiple,openFileDialog:i.dropZoneOpenFileDialogMultiple}:{dragInactive:i.dropZoneDragSingle,dragActive:i.dropZoneDragActiveSingle,openFileDialog:i.dropZoneOpenFileDialogSingle};return e.d`
270
+ <div
271
+ class=${t.t({"pkt-fileupload":!0,"pkt-fileupload--full-width":this.fullwidth,"pkt-fileupload--error":this.hasEffectiveError,"pkt-fileupload--disabled":this.disabled})}
272
+ aria-disabled=${String(this.disabled)}
273
+ ?inert=${this.disabled}
274
+ >
275
+ <div class="pkt-sr-only" aria-live="polite" aria-atomic="true">
276
+ ${this.getSrUploadedMessage()}
277
+ </div>
278
+ <div class="pkt-sr-only" aria-live="assertive" aria-atomic="true">
279
+ ${this.getSrErrorsMessage()}
280
+ </div>
281
+ <div
282
+ class=${t.t({"pkt-fileupload__drop-zone":!0,"pkt-fileupload__drop-zone--drag-active":this.isDragActive,"pkt-fileupload__drop-zone--disabled":this.disabled})}
283
+ @dragover=${this.onDragOver}
284
+ @dragleave=${this.onDragLeave}
285
+ @drop=${this.onDrop}
286
+ @click=${this.onDropZoneClick}
287
+ >
288
+ <input
289
+ id=${`${this.id}-input`}
290
+ type="file"
291
+ name=${n.t(this.uploadStrategy===`form`?this.name:void 0)}
292
+ ?multiple=${this.multiple}
293
+ ?disabled=${this.disabled}
294
+ ?required=${this.required&&this.uploadStrategy===`form`}
295
+ accept=${this.getResolvedAcceptValue()}
296
+ aria-label=${n.t(this.label?void 0:this.multiple?`Velg filer`:`Velg fil`)}
297
+ aria-required=${n.t(this.required?`true`:void 0)}
298
+ aria-invalid=${n.t(this.hasEffectiveError?`true`:void 0)}
299
+ aria-describedby=${n.t(s)}
300
+ @change=${this.onNativeFileChange}
301
+ />
302
+ ${this.uploadStrategy===`custom`?r.map(t=>e.d`<input type="hidden" name=${this.name} value=${t.fileId} />`):null}
303
+ <div class="pkt-fileupload__drop-zone__placeholder">
304
+ <pkt-icon
305
+ name="attachment"
306
+ class="pkt-fileupload__drop-zone__placeholder__icon"
307
+ aria-hidden="true"
308
+ ></pkt-icon>
309
+ <p class="pkt-fileupload__drop-zone__placeholder__title">
310
+ ${this.isDragActive?`${c.dragActive} ...`:e.d`${c.dragInactive}
311
+ <button
312
+ type="button"
313
+ class="pkt-fileupload__drop-zone__placeholder__title__open-file-dialog"
314
+ @click=${this.openFileDialog}
315
+ >
316
+ ${c.openFileDialog}
317
+ </button>`}
318
+ </p>
319
+ ${o?e.d`<p class="pkt-fileupload__drop-zone__placeholder__formats">
320
+ ${i.supportedFormatsPrefix} ${o}
321
+ </p>`:null}
322
+ </div>
323
+ </div>
324
+ ${this.hasEffectiveError?e.d`
325
+ <pkt-alert
326
+ skin="error"
327
+ role="alert"
328
+ aria-live="assertive"
329
+ compact
330
+ id=${`${this.id}-error`}
331
+ class="pkt-alert--error pkt-fileupload__error-alert"
332
+ >
333
+ ${this.effectiveErrorMessage}
334
+ </pkt-alert>
335
+ `:null}
336
+ ${r.length>0?e.d`<ul class="pkt-fileupload__queue-display">
337
+ ${r.map(e=>this.renderQueueItem(e,a))}
338
+ </ul>`:null}
339
+ ${this.renderPreviewModal(a)}
340
+ </div>
341
+ `}renderQueueItem(e,t){let n=typeof e.file?.size==`number`?this.formatFileSize(e.file.size):``,r=this.getQueueItemOperations();if(this.itemRenderer===`thumbnail`){let i=this.canOpenPreview(e),a=this.failedImageFileIds[e.fileId]?.thumbnail?void 0:this.getThumbnailUrl(e);return q({file:e,inputName:this.name,disabled:this.disabled,fileSize:n,operations:r,activeOperationId:this.activeOperationByFileId[e.fileId],onActivateOperation:(e,t)=>this.activateOperation(e,t),onCloseOperation:e=>this.closeOperation(e),getFileAttribute:(e,t)=>this.getFileAttribute(e,t),setFileAttribute:(e,t,n)=>this.setFileAttribute(e,t,n),thumbnailUrl:a,previewEnabled:this.enableImagePreview,canOpenPreview:i,transferProgress:e.progress,transferErrorMessage:e.errorMessage,transferShowProgress:e.showProgress,transferLastProgress:e.lastProgress,loadingText:`Laster opp`,truncateTail:this.truncateTail,onCancel:e=>this.cancelTransfer(e),onOpenPreview:e=>this.openPreview(e,t),onThumbnailImageError:e=>this.markImageFailed(e,`thumbnail`)})}return K({file:e,inputName:this.name,disabled:this.disabled,fileSize:n,operations:r,activeOperationId:this.activeOperationByFileId[e.fileId],onActivateOperation:(e,t)=>this.activateOperation(e,t),onCloseOperation:e=>this.closeOperation(e),getFileAttribute:(e,t)=>this.getFileAttribute(e,t),setFileAttribute:(e,t,n)=>this.setFileAttribute(e,t,n),transferProgress:e.progress,transferErrorMessage:e.errorMessage,transferShowProgress:e.showProgress,transferLastProgress:e.lastProgress,loadingText:`Laster opp`,truncateTail:this.truncateTail,onCancel:e=>this.cancelTransfer(e)})}markImageFailed(e,t){this.failedImageFileIds={...this.failedImageFileIds,[e]:{...this.failedImageFileIds[e],[t]:!0}}}getPreviewableImages(e){return this.enableImagePreview?e.filter(e=>e.progress===`done`&&this.isImageFile(e)):[]}canOpenPreview(e){return this.enableImagePreview&&e.progress===`done`&&this.isImageFile(e)}openPreview(e,t){let n=t.findIndex(t=>t.fileId===e);n<0||(this.previewCurrentIndex=n,this.isPreviewModalOpen=!0,this.failedImageFileIds={...this.failedImageFileIds,[e]:{...this.failedImageFileIds[e],preview:!1}})}navigatePreview(e,t){t.length!==0&&(this.previewCurrentIndex=S(this.previewCurrentIndex,e,t.length))}renderPreviewModal(t){if(!this.enableImagePreview||t.length===0)return null;let n=t[this.previewCurrentIndex];if(!n)return null;let r=t.length>1,i=this.getThumbnailUrl(n),a=!!i&&!this.failedImageFileIds[n.fileId]?.preview,o=n.attributes?.targetFilename||n.file?.name||`Forhåndsvisning`;return e.d`
342
+ <pkt-modal
343
+ .open=${this.isPreviewModalOpen}
344
+ .headingText=${o}
345
+ closeOnBackdropClick
346
+ class="pkt-fileupload__image-preview-modal"
347
+ @close=${this.closePreview}
348
+ @keydown=${e=>this.onPreviewKeyDown(e,t)}
349
+ >
350
+ <div class="pkt-fileupload__image-preview">
351
+ ${r?e.d`<button
352
+ type="button"
353
+ class="pkt-fileupload__image-preview__nav pkt-fileupload__image-preview__nav--prev pkt-btn pkt-btn--medium pkt-btn--secondary pkt-btn--icon-only"
354
+ aria-label=${`Forrige bilde ${this.previewCurrentIndex} / ${t.length}`}
355
+ @click=${()=>this.navigatePreview(`prev`,t)}
356
+ >
357
+ <pkt-icon
358
+ class="pkt-btn__icon pkt-icon"
359
+ name="chevron-thin-left"
360
+ aria-hidden="true"
361
+ ></pkt-icon>
362
+ <span class="pkt-btn__text"></span>
363
+ </button>`:null}
364
+
365
+ <div class="pkt-fileupload__image-preview__content">
366
+ ${a?e.d`<img
367
+ src=${i}
368
+ alt=${`${o} - ${this.previewCurrentIndex+1} av ${t.length}`}
369
+ class="pkt-fileupload__image-preview__image"
370
+ @error=${()=>this.markImageFailed(n.fileId,`preview`)}
371
+ />`:e.d`<pkt-icon
372
+ name="picture"
373
+ class="pkt-fileupload__queue-display__item__icon pkt-icon--medium"
374
+ aria-hidden="true"
375
+ ></pkt-icon>`}
376
+ </div>
377
+
378
+ ${r?e.d`<span class="pkt-fileupload__image-preview__counter">
379
+ ${this.previewCurrentIndex+1} / ${t.length}
380
+ </span>`:null}
381
+ ${r?e.d`<button
382
+ type="button"
383
+ class="pkt-fileupload__image-preview__nav pkt-fileupload__image-preview__nav--next pkt-btn pkt-btn--medium pkt-btn--secondary pkt-btn--icon-only"
384
+ aria-label=${`Neste bilde ${this.previewCurrentIndex+2} / ${t.length}`}
385
+ @click=${()=>this.navigatePreview(`next`,t)}
386
+ >
387
+ <pkt-icon
388
+ class="pkt-btn__icon pkt-icon"
389
+ name="chevron-thin-right"
390
+ aria-hidden="true"
391
+ ></pkt-icon>
392
+ <span class="pkt-btn__text"></span>
393
+ </button>`:null}
394
+ </div>
395
+ </pkt-modal>
396
+ `}getQueueItemOperations(){let e=[];return this.renameFilesEnabled&&this.itemRenderer!==`thumbnail`&&e.push(j()),this.addCommentsEnabled&&this.itemRenderer!==`thumbnail`&&e.push(M()),e.push(...this.extraOperations),e.push(A(e=>this.removeFileItem(e))),e}activateOperation(e,t){this.activeOperationByFileId={...this.activeOperationByFileId,[e]:t}}closeOperation(e){this.activeOperationByFileId={...this.activeOperationByFileId,[e]:void 0}}getFileAttribute(e,t){let n=this.getCurrentFiles().find(t=>t.fileId===e);if(n)return n.attributes?.[t]??void 0}setFileAttribute(e,t,n){let r=this.getCurrentFiles().find(t=>t.fileId===e);if(!r)return;let i={...r.attributes,[t]:n};n===void 0&&delete i[t],this.updateFileItem(e,{attributes:i})}};e.r([e.o()],J.prototype,`activeOperationByFileId`,void 0),e.r([e.o()],J.prototype,`isPreviewModalOpen`,void 0),e.r([e.o()],J.prototype,`previewCurrentIndex`,void 0),e.r([e.o()],J.prototype,`failedImageFileIds`,void 0),J=e.r([e.c(`pkt-fileupload`)],J);var Y=J;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Y}});