UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

1 lines 2.1 kB
{"version":3,"file":"get-objects-by-target.mjs","names":[],"sources":["../../../extensions/aligning_guidelines/util/get-objects-by-target.ts"],"sourcesContent":["import type { FabricObject } from 'fabric';\nimport { ActiveSelection, Group } from 'fabric';\n\nexport function getObjectsByTarget(target: FabricObject) {\n const objects = new Set<FabricObject>();\n const canvas = target.canvas;\n if (!canvas) return objects;\n const children =\n target instanceof ActiveSelection ? target.getObjects() : [target];\n\n canvas.forEachObject((o) => {\n if (!o.isOnScreen()) return;\n if (!o.visible) return;\n if (o.constructor == Group) {\n collectObjectsByGroup(objects, o);\n return;\n }\n objects.add(o);\n });\n\n deleteObjectsByList(objects, children);\n return objects;\n}\n\nfunction deleteObjectsByList(objects: Set<FabricObject>, list: FabricObject[]) {\n for (const target of list) {\n if (target.constructor == Group) {\n deleteObjectsByList(objects, (target as Group).getObjects());\n } else {\n objects.delete(target);\n }\n }\n}\n\nfunction collectObjectsByGroup(objects: Set<FabricObject>, g: Group) {\n const children = g.getObjects();\n for (const child of children) {\n if (!child.visible) continue;\n if (child.constructor == Group) {\n collectObjectsByGroup(objects, child);\n continue;\n }\n objects.add(child);\n }\n}\n"],"mappings":";;AAGA,SAAgB,mBAAmB,QAAsB;CACvD,MAAM,0BAAU,IAAI,KAAmB;CACvC,MAAM,SAAS,OAAO;AACtB,KAAI,CAAC,OAAQ,QAAO;CACpB,MAAM,WACJ,kBAAkB,kBAAkB,OAAO,YAAY,GAAG,CAAC,OAAO;AAEpE,QAAO,eAAe,MAAM;AAC1B,MAAI,CAAC,EAAE,YAAY,CAAE;AACrB,MAAI,CAAC,EAAE,QAAS;AAChB,MAAI,EAAE,eAAe,OAAO;AAC1B,yBAAsB,SAAS,EAAE;AACjC;;AAEF,UAAQ,IAAI,EAAE;GACd;AAEF,qBAAoB,SAAS,SAAS;AACtC,QAAO;;AAGT,SAAS,oBAAoB,SAA4B,MAAsB;AAC7E,MAAK,MAAM,UAAU,KACnB,KAAI,OAAO,eAAe,MACxB,qBAAoB,SAAU,OAAiB,YAAY,CAAC;KAE5D,SAAQ,OAAO,OAAO;;AAK5B,SAAS,sBAAsB,SAA4B,GAAU;CACnE,MAAM,WAAW,EAAE,YAAY;AAC/B,MAAK,MAAM,SAAS,UAAU;AAC5B,MAAI,CAAC,MAAM,QAAS;AACpB,MAAI,MAAM,eAAe,OAAO;AAC9B,yBAAsB,SAAS,MAAM;AACrC;;AAEF,UAAQ,IAAI,MAAM"}