/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.24/esri/copyright.txt for details. */ import e from"../PopupTemplate.js";import{isRasterPixelValueField as t,getDisplayFieldName as i}from"../layers/support/fieldUtils.js";import o from"../popup/content/AttachmentsContent.js";import"../popup/content/Content.js";import"../popup/content/CustomContent.js";import"../popup/content/ExpressionContent.js";import n from"../popup/content/FieldsContent.js";import"../popup/content/MediaContent.js";import"../popup/content/TextContent.js";import r from"../popup/FieldInfo.js";import s from"../popup/support/FieldInfoFormat.js";const l=["oid","global-id"],a=["oid","global-id","guid"];function d({displayField:t,editFieldsInfo:i,fields:o,objectIdField:n,title:r},s){if(!o)return null;const l=w({editFieldsInfo:i,fields:o,objectIdField:n},s);if(!l.length)return null;const a=j({titleBase:r,fields:o,displayField:t}),d=g();return new e({title:a,content:d,fieldInfos:l})}const p=[/^fnode_$/i,/^tnode_$/i,/^lpoly_$/i,/^rpoly_$/i,/^poly_$/i,/^subclass$/i,/^subclass_$/i,/^rings_ok$/i,/^rings_nok$/i,/shape/i,/perimeter/i,/objectid/i,/_i$/i],c=(e,{editFieldsInfo:t,objectIdField:i,visibleFieldNames:o})=>o?o.has(e.name):!f(e.name,t)&&((!i||e.name!==i)&&(!l.includes(e.type)&&!p.some((t=>t.test(e.name)))));function u(e,t){const i=e;return t&&(e=e.filter((e=>!t.includes(e.type)))),e===i&&(e=e.slice()),e.sort(m),e}function m(e,t){return"oid"===e.type?-1:"oid"===t.type?1:y(e)?-1:y(t)?1:(e.alias||e.name).toLocaleLowerCase().localeCompare((t.alias||t.name).toLocaleLowerCase())}function f(e,t){if(!e||!t)return!1;const{creationDateField:i,creatorField:o,editDateField:n,editorField:r}=t;return[i&&i.toLowerCase(),o&&o.toLowerCase(),n&&n.toLowerCase(),r&&r.toLowerCase()].includes(e.toLowerCase())}function F(e,t){return e.editable&&!a.includes(e.type)&&!f(e.name,t)}function b(e,t){return new n({fieldInfos:w(e,t).filter((e=>e.visible))})}function w({editFieldsInfo:e,fields:t,objectIdField:i},o){return u(t,o?.ignoreFieldTypes||I).map((t=>new r({fieldName:t.name,isEditable:F(t,e),label:t.alias,format:C(t),visible:c(t,{editFieldsInfo:e,objectIdField:i,visibleFieldNames:o?.visibleFieldNames})})))}function C(e){switch(e.type){case"small-integer":case"integer":case"single":return new s({digitSeparator:!0,places:0});case"double":return new s({digitSeparator:!0,places:2});case"date":return new s({dateFormat:"long-month-day-year"});default:return"string"===e.type&&t(e.name)?new s({digitSeparator:!0,places:0}):null}}function g(){return[new n,new o]}function j(e){const t=i(e),{titleBase:o}=e;return t?`${o}: {${t.trim()}}`:o}function y(e){if("name"===(e.name&&e.name.toLowerCase()))return!0;return"name"===(e.alias&&e.alias.toLowerCase())||void 0}const I=["geometry","blob","raster","guid","xml"];export{w as createFieldInfos,b as createFieldsContent,d as createPopupTemplate};