fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 2.56 kB
Source Map (JSON)
{"version":3,"file":"dom_misc.mjs","names":[],"sources":["../../../src/util/dom_misc.ts"],"sourcesContent":["/**\n * Returns element scroll offsets\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\nexport function getScrollLeftTop(element: HTMLElement | null) {\n const doc = element && getDocumentFromElement(element);\n let left = 0,\n top = 0;\n if (!element || !doc) {\n return { left, top };\n }\n let elementLoop: HTMLElement | Document | ShadowRoot = element;\n const docElement = doc.documentElement,\n body = doc.body || {\n scrollLeft: 0,\n scrollTop: 0,\n };\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n while (\n elementLoop &&\n (elementLoop.parentNode || (elementLoop as unknown as ShadowRoot).host)\n ) {\n elementLoop = (elementLoop.parentNode ||\n (elementLoop as unknown as ShadowRoot).host) as\n | HTMLElement\n | Document\n | ShadowRoot;\n if (elementLoop === doc) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n } else {\n left += (elementLoop as HTMLElement).scrollLeft || 0;\n top += (elementLoop as HTMLElement).scrollTop || 0;\n }\n\n if (\n elementLoop.nodeType === 1 &&\n (elementLoop as HTMLElement).style.position === 'fixed'\n ) {\n break;\n }\n }\n\n return { left, top };\n}\n\nexport const getDocumentFromElement = (el: HTMLElement) =>\n el.ownerDocument || null;\n\nexport const getWindowFromElement = (el: HTMLElement) =>\n el.ownerDocument?.defaultView || null;\n"],"mappings":";;;;;;AAKA,SAAgB,iBAAiB,SAA6B;CAC5D,MAAM,MAAM,WAAW,uBAAuB,QAAQ;CACtD,IAAI,OAAO,GACT,MAAM;AACR,KAAI,CAAC,WAAW,CAAC,IACf,QAAO;EAAE;EAAM;EAAK;CAEtB,IAAI,cAAmD;CACvD,MAAM,aAAa,IAAI,iBACrB,OAAO,IAAI,QAAQ;EACjB,YAAY;EACZ,WAAW;EACZ;AAKH,QACE,gBACC,YAAY,cAAe,YAAsC,OAClE;AACA,gBAAe,YAAY,cACxB,YAAsC;AAIzC,MAAI,gBAAgB,KAAK;AACvB,UAAO,KAAK,cAAc,WAAW,cAAc;AACnD,SAAM,KAAK,aAAa,WAAW,aAAa;SAC3C;AACL,WAAS,YAA4B,cAAc;AACnD,UAAQ,YAA4B,aAAa;;AAGnD,MACE,YAAY,aAAa,KACxB,YAA4B,MAAM,aAAa,QAEhD;;AAIJ,QAAO;EAAE;EAAM;EAAK;;AAGtB,MAAa,0BAA0B,OACrC,GAAG,iBAAiB;AAEtB,MAAa,wBAAwB,OACnC;;iCAAG,mBAAA,QAAA,sBAAA,KAAA,IAAA,KAAA,IAAA,kBAAe,gBAAe"}