/* COPYRIGHT Esri - https://js.arcgis.com/5.1.0/LICENSE.txt */
import e from"../PopupTemplate.js";import{isFieldEditable as t,getDisplayFieldName as i,isFieldVisibleByDefault as n,isRasterPixelValueField as o}from"../layers/support/fieldUtils.js";import r from"../popup/FieldInfo.js";import s from"../popup/content/AttachmentsContent.js";import l from"../popup/content/FieldsContent.js";import a from"../popup/support/FieldInfoFormat.js";function d({displayField:t,editFieldsInfo:i,fields:n,objectIdField:o,title:r},s){if(!n)return null;const l=b({editFieldsInfo:i,fields:n,objectIdField:o},s);if(!l.length)return null;const a=I({titleBase:r,fields:n,displayField:t}),d=y();return new e({title:a,content:d,fieldInfos:l})}function u(t){const{fields:i,featureReduction:n,title:o}=t,r=n.fields;if(!r)return null;const s=w(r,i??[]);if(!s.length)return null;const l=v();return new e({title:o,content:l,fieldInfos:s})}const c=(e,t)=>t.visibleFieldNames?t.visibleFieldNames.has(e.name):n(e,t);function f({fields:e,ignoreFieldTypes:t,sortDisabled:i}){const n=e;return t&&(e=e.filter(e=>!t.includes(e.type))),e===n&&(e=e.slice()),!0!==i&&e.sort(p),e}function p(e,t){return"oid"===e.type?-1:"oid"===t.type?1:j(e)?-1:j(t)?1:(e.alias||e.name).toLocaleLowerCase().localeCompare((t.alias||t.name).toLocaleLowerCase())}function m(e,t){return new l({fieldInfos:b(e,t).filter(e=>e.visible)})}function b(e,i){const n=i?.visibleFieldNames;return f({fields:e.fields??[],ignoreFieldTypes:i?.ignoreFieldTypes||C,sortDisabled:i?.sortDisabled}).map(i=>new r({fieldName:i.name,isEditable:t(i,e),label:i.alias,format:g(i),visible:c(i,{...e,visibleFieldNames:n})}))}function w(e,t){return e.map(e=>new r({fieldName:e.name,isEditable:!1,label:e.alias,format:F(e,t),visible:!0}))}function F(e,t){const{onStatisticField:i,onStatisticExpression:n,statisticType:o}=e;if(i){const e=t.find(e=>i===e.name);if(e)return g(e)}return"number"===n?.returnType?new a({digitSeparator:!0,places:2}):"count"===o?new a({digitSeparator:!0,places:0}):void 0}function g(e){switch(e.type){case"small-integer":case"integer":return new a({digitSeparator:!0,places:0});case"single":case"double":return new a({digitSeparator:!0,places:2});case"string":return o(e.name)?new a({digitSeparator:!0,places:0}):void 0;default:return}}function y(){return[new l,new s]}function v(){return[new l]}function I(e){const t=i(e),{titleBase:n}=e;return t?`${n}: {${t.trim()}}`:n??""}function j(e){if("name"===(e.name&&e.name.toLowerCase()))return!0;const t=e.alias?.toLowerCase();return"name"===t}const C=["geometry","blob","raster","guid","xml"];export{b as createFieldInfos,m as createFieldsContent,d as createPopupTemplate,u as createPopupTemplateForFeatureReduction};
