MCPcopy Create free account
hub / github.com/bigskysoftware/_hyperscript / _parseScrollModifiers

Function _parseScrollModifiers

www/js/_hyperscript.esm.js:6248–6280  ·  view source on GitHub ↗
(parser)

Source from the content-addressed store, hash-verified

6246 }
6247};
6248function _parseScrollModifiers(parser) {
6249 parser.matchToken("the");
6250 var verticalPosition = parser.matchAnyToken("top", "middle", "bottom");
6251 var horizontalPosition = parser.matchAnyToken("left", "center", "right");
6252 if (verticalPosition || horizontalPosition) {
6253 parser.requireToken("of");
6254 }
6255 var target = parser.requireElement("unaryExpression");
6256 var plusOrMinus = parser.matchAnyOpToken("+", "-");
6257 var offset;
6258 if (plusOrMinus) {
6259 parser.pushFollow("px");
6260 try {
6261 offset = parser.requireElement("expression");
6262 } finally {
6263 parser.popFollow();
6264 }
6265 }
6266 parser.matchToken("px");
6267 var container;
6268 if (parser.matchToken("in")) {
6269 container = parser.requireElement("unaryExpression");
6270 }
6271 var smoothness = parser.matchAnyToken("smoothly", "instantly");
6272 var scrollOptions = { block: "start", inline: "nearest" };
6273 var blockMap = { top: "start", bottom: "end", middle: "center" };
6274 var inlineMap = { left: "start", center: "center", right: "end" };
6275 var behaviorMap = { smoothly: "smooth", instantly: "instant" };
6276 if (verticalPosition) scrollOptions.block = blockMap[verticalPosition.value];
6277 if (horizontalPosition) scrollOptions.inline = inlineMap[horizontalPosition.value];
6278 if (smoothness) scrollOptions.behavior = behaviorMap[smoothness.value];
6279 return { target, offset, plusOrMinus, scrollOptions, container };
6280}
6281function _parseSmoothness(parser) {
6282 var smoothness = parser.matchAnyToken("smoothly", "instantly");
6283 if (!smoothness) return void 0;

Callers 2

parseMethod · 0.70
parseMethod · 0.70

Calls 7

matchTokenMethod · 0.45
matchAnyTokenMethod · 0.45
requireTokenMethod · 0.45
requireElementMethod · 0.45
matchAnyOpTokenMethod · 0.45
pushFollowMethod · 0.45
popFollowMethod · 0.45

Tested by

no test coverage detected