All files / builds/1000i100/quiz-maker/generated/maintainability/assets/scripts codemirror.markpopovertext.js

0% Statements 0/79
0% Branches 0/1
0% Functions 0/1
0% Lines 0/79

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80                                                                                                                                                               
/*global CodeMirror:false, $:false*/

(function() {
	'use strict';

	function makeid(num) {
		num = num || 5;
		var text = '';
		var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';

		for (var i = 0; i < num; i++)
			text += possible.charAt(Math.floor(Math.random() * possible.length));

		return text;
	}

	CodeMirror.prototype.markPopoverText = function(lineObj, regex, className, gutter, message) {
		var re = new RegExp('(' + regex + ')', 'g');
		var cursor = this.getSearchCursor(re, lineObj);

		var match, internalClass = 'plato-mark-' + makeid(10);
		while (match = cursor.findNext()) {
			if (cursor.to().line !== lineObj.line) break;
			this.markText({
				line: lineObj.line,
				ch: cursor.from().ch
			}, {
				line: lineObj.line,
				ch: cursor.to().ch
			}, {
				className: 'plato-mark ' + internalClass + ' ' + (className || ''),
				startStyle: 'plato-mark-start',
				endStyle: 'plato-mark-end'
			});
		}

		if (gutter) {
			this.setGutterMarker(lineObj.line, gutter.gutterId, gutter.el);
		}

    // return a function to bind hover events, to be run after
    // the codemirror operations are executed
		return function() {
			var markStart = $('.plato-mark-start.' + internalClass);
			var markSpans = $('.' + internalClass);

			if (message.type === 'popover') {

				var triggered = false;
				markSpans.add(gutter.el)
          .on('mouseenter touchstart', function(e) {
	e.preventDefault();
	triggered = true;
	markSpans.addClass('active');
	markStart.popover('show');
})
          .on('mouseleave touchend', function(e) {
	e.preventDefault();
	markSpans.removeClass('active');
	triggered = false;
	setTimeout(function() {
		if (!triggered) markStart.popover('hide');
	}, 200);
});

				markStart.popover({
					trigger: 'manual',
					content: message.content,
					html: true,
					title: message.title,
					placement: 'top'
				});
			} else if (message.type === 'block') {
				this.addLineWidget(lineObj.line, $(message.content)[0]);
			}
		};
	};

})();