annotate .cms/lib/codemirror/src/measurement/widgets.js @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 import { contains, elt, removeChildrenAndAdd } from "../util/dom.js"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2 import { e_target } from "../util/event.js"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 export function widgetHeight(widget) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 if (widget.height != null) return widget.height
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 let cm = widget.doc.cm
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 if (!cm) return 0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 if (!contains(document.body, widget.node)) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 let parentStyle = "position: relative;"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 if (widget.coverGutter)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 if (widget.noHScroll)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle))
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 return widget.height = widget.node.parentNode.offsetHeight
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 // Return true when the given mouse event happened in a widget
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 export function eventInWidget(display, e) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 for (let n = e_target(e); n != display.wrapper; n = n.parentNode) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") ||
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 (n.parentNode == display.sizer && n != display.mover))
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 return true
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 }