{"version":3,"file":"hide-overlap.js","sourceRoot":"","sources":["../../../../src/geometry/label/layout/hide-overlap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAkB,EAAE,MAAgB,EAAE,MAA2B,EAAE,MAAY;IACzG,oBAAoB;IACpB,gFAAgF;IAEhF,4BAA4B;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,IAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;oBAClE,IAAM,IAAI,GAAG,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;oBAC5F,IAAM,IAAI,GAAG,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;oBAE5F,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;wBAC3B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;qBACjC;iBACF;aACF;SACF;KACF;AACH,CAAC","sourcesContent":["import { get } from '@antv/util';\nimport { BBox, IGroup, IShape } from '../../../dependents';\nimport { isIntersect } from '../../../util/collision-detect';\nimport { LabelItem } from '../interface';\nimport { getlLabelBackgroundInfo } from '../util';\n\n/**\n * label 防遮挡布局:在不改变 label 位置的情况下对相互重叠的 label 进行隐藏(非移除)\n * 不同于 'overlap' 类型的布局,该布局不会对 label 的位置进行偏移调整。\n * @param labels 参与布局调整的 label 数组集合\n */\nexport function hideOverlap(items: LabelItem[], labels: IGroup[], shapes: IShape[] | IGroup[], region: BBox) {\n // todo 添加 labelrank\n // each label will hide the next one because the next one always has lower rank.\n\n // Detect overlapping labels\n for (let i = 0; i < labels.length; i++) {\n const label1 = labels[i];\n if (labels[i].get('visible')) {\n for (let j = i + 1; j < labels.length; j++) {\n const label2 = labels[j];\n if (label1 && label2 && label1 !== label2 && label2.get('visible')) {\n const box1 = getlLabelBackgroundInfo(label1, items[i], get(items[i], 'background.padding'));\n const box2 = getlLabelBackgroundInfo(label2, items[j], get(items[j], 'background.padding'));\n\n if (isIntersect(box1, box2)) {\n labels[j].set('visible', false);\n }\n }\n }\n }\n }\n}\n"]}