import { Optional } from '@ephox/katamari'; import { SugarElement, Traverse } from '@ephox/sugar'; export interface Navigation { view: (doc: SugarElement) => Optional>; owner: (elem: SugarElement) => SugarElement; } const view = (doc: SugarElement): Optional> => { // Only walk up to the document this script is defined in. // This prevents walking up to the parent window when the editor is in an iframe. const element = doc.dom === document ? Optional.none() : Optional.from(doc.dom.defaultView?.frameElement); return element.map(SugarElement.fromDom); }; const owner = (element: SugarElement): SugarElement => Traverse.owner(element); export { view, owner };