@@ -11,7 +11,7 @@ let version_id = '7.3.0';
1111
1212/** @summary version date
1313 * @desc Release date in format day/month/year like '14/04/2022' */
14- let version_date = '13 /12/2022';
14+ let version_date = '14 /12/2022';
1515
1616/** @summary version id and date
1717 * @desc Produced by concatenation of {@link version_id} and {@link version_date}
@@ -3792,30 +3792,6 @@ function select(selector) {
37923792 : new Selection$1([[selector]], root$1);
37933793}
37943794
3795- var nextId = 0;
3796-
3797- function Local() {
3798- this._ = "@" + (++nextId).toString(36);
3799- }
3800-
3801- Local.prototype = {
3802- constructor: Local,
3803- get: function(node) {
3804- var id = this._;
3805- while (!(id in node)) if (!(node = node.parentNode)) return;
3806- return node[id];
3807- },
3808- set: function(node, value) {
3809- return node[this._] = value;
3810- },
3811- remove: function(node) {
3812- return this._ in node && delete node[this._];
3813- },
3814- toString: function() {
3815- return this._;
3816- }
3817- };
3818-
38193795function sourceEvent(event) {
38203796 let sourceEvent;
38213797 while (sourceEvent = event.sourceEvent) event = sourceEvent;
@@ -5379,7 +5355,6 @@ millisecond.every = function(k) {
53795355};
53805356
53815357var millisecond$1 = millisecond;
5382- millisecond.range;
53835358
53845359const durationSecond = 1000;
53855360const durationMinute = durationSecond * 60;
@@ -5400,7 +5375,6 @@ var second = newInterval(function(date) {
54005375});
54015376
54025377var utcSecond = second;
5403- second.range;
54045378
54055379var minute = newInterval(function(date) {
54065380 date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);
@@ -5413,7 +5387,6 @@ var minute = newInterval(function(date) {
54135387});
54145388
54155389var timeMinute = minute;
5416- minute.range;
54175390
54185391var hour = newInterval(function(date) {
54195392 date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);
@@ -5426,7 +5399,6 @@ var hour = newInterval(function(date) {
54265399});
54275400
54285401var timeHour = hour;
5429- hour.range;
54305402
54315403var day = newInterval(
54325404 date => date.setHours(0, 0, 0, 0),
@@ -5436,7 +5408,6 @@ var day = newInterval(
54365408);
54375409
54385410var timeDay = day;
5439- day.range;
54405411
54415412function weekday(i) {
54425413 return newInterval(function(date) {
@@ -5451,19 +5422,11 @@ function weekday(i) {
54515422
54525423var sunday = weekday(0);
54535424var monday = weekday(1);
5454- var tuesday = weekday(2);
5455- var wednesday = weekday(3);
5425+ weekday(2);
5426+ weekday(3);
54565427var thursday = weekday(4);
5457- var friday = weekday(5);
5458- var saturday = weekday(6);
5459-
5460- sunday.range;
5461- monday.range;
5462- tuesday.range;
5463- wednesday.range;
5464- thursday.range;
5465- friday.range;
5466- saturday.range;
5428+ weekday(5);
5429+ weekday(6);
54675430
54685431var month = newInterval(function(date) {
54695432 date.setDate(1);
@@ -5477,7 +5440,6 @@ var month = newInterval(function(date) {
54775440});
54785441
54795442var timeMonth = month;
5480- month.range;
54815443
54825444var year = newInterval(function(date) {
54835445 date.setMonth(0, 1);
@@ -5502,9 +5464,8 @@ year.every = function(k) {
55025464};
55035465
55045466var timeYear = year;
5505- year.range;
55065467
5507- var utcMinute = newInterval(function(date) {
5468+ newInterval(function(date) {
55085469 date.setUTCSeconds(0, 0);
55095470}, function(date, step) {
55105471 date.setTime(+date + step * durationMinute);
@@ -5513,9 +5474,8 @@ var utcMinute = newInterval(function(date) {
55135474}, function(date) {
55145475 return date.getUTCMinutes();
55155476});
5516- utcMinute.range;
55175477
5518- var utcHour = newInterval(function(date) {
5478+ newInterval(function(date) {
55195479 date.setUTCMinutes(0, 0, 0);
55205480}, function(date, step) {
55215481 date.setTime(+date + step * durationHour);
@@ -5524,7 +5484,6 @@ var utcHour = newInterval(function(date) {
55245484}, function(date) {
55255485 return date.getUTCHours();
55265486});
5527- utcHour.range;
55285487
55295488var utcDay = newInterval(function(date) {
55305489 date.setUTCHours(0, 0, 0, 0);
@@ -5537,7 +5496,6 @@ var utcDay = newInterval(function(date) {
55375496});
55385497
55395498var utcDay$1 = utcDay;
5540- utcDay.range;
55415499
55425500function utcWeekday(i) {
55435501 return newInterval(function(date) {
@@ -5552,21 +5510,13 @@ function utcWeekday(i) {
55525510
55535511var utcSunday = utcWeekday(0);
55545512var utcMonday = utcWeekday(1);
5555- var utcTuesday = utcWeekday(2);
5556- var utcWednesday = utcWeekday(3);
5513+ utcWeekday(2);
5514+ utcWeekday(3);
55575515var utcThursday = utcWeekday(4);
5558- var utcFriday = utcWeekday(5);
5559- var utcSaturday = utcWeekday(6);
5560-
5561- utcSunday.range;
5562- utcMonday.range;
5563- utcTuesday.range;
5564- utcWednesday.range;
5565- utcThursday.range;
5566- utcFriday.range;
5567- utcSaturday.range;
5568-
5569- var utcMonth = newInterval(function(date) {
5516+ utcWeekday(5);
5517+ utcWeekday(6);
5518+
5519+ newInterval(function(date) {
55705520 date.setUTCDate(1);
55715521 date.setUTCHours(0, 0, 0, 0);
55725522}, function(date, step) {
@@ -5576,7 +5526,6 @@ var utcMonth = newInterval(function(date) {
55765526}, function(date) {
55775527 return date.getUTCMonth();
55785528});
5579- utcMonth.range;
55805529
55815530var utcYear = newInterval(function(date) {
55825531 date.setUTCMonth(0, 1);
@@ -5601,7 +5550,6 @@ utcYear.every = function(k) {
56015550};
56025551
56035552var utcYear$1 = utcYear;
5604- utcYear.range;
56055553
56065554function ticker(year, month, week, day, hour, minute) {
56075555
@@ -6351,7 +6299,6 @@ defaultLocale({
63516299function defaultLocale(definition) {
63526300 locale = formatLocale(definition);
63536301 timeFormat = locale.format;
6354- locale.parse;
63556302 utcFormat = locale.utcFormat;
63566303 utcParse = locale.utcParse;
63576304 return locale;
@@ -53808,6 +53755,8 @@ class BrowserLayout {
5380853755
5380953756} // class BrowserLayout
5381053757
53758+ const clTButton = 'TButton';
53759+
5381153760function getButtonSize(handler, fact) {
5381253761 return Math.round((fact || 1) * (handler.iscan || !handler.has_canvas ? 16 : 12));
5381353762}
@@ -53975,7 +53924,8 @@ class TPadPainter extends ObjectPainter {
5397553924 if (!this.iscan && pad?.fName) {
5397653925 this.this_pad_name = pad.fName.replace(' ', '_'); // avoid empty symbol in pad name
5397753926 let regexp = new RegExp('^[A-Za-z][A-Za-z0-9_]*$');
53978- if (!regexp.test(this.this_pad_name)) this.this_pad_name = 'jsroot_pad_' + internals.id_counter++;
53927+ if (!regexp.test(this.this_pad_name) || ((this.this_pad_name == 'button') && (pad._typename == clTButton)))
53928+ this.this_pad_name = 'jsroot_pad_' + internals.id_counter++;
5397953929 }
5398053930 this.painters = []; // complete list of all painters in the pad
5398153931 this.has_canvas = true;
@@ -55925,7 +55875,8 @@ class TPadPainter extends ObjectPainter {
5592555875var TPadPainter$1 = /*#__PURE__*/Object.freeze({
5592655876__proto__: null,
5592755877TPadPainter: TPadPainter,
55928- PadButtonsHandler: PadButtonsHandler
55878+ PadButtonsHandler: PadButtonsHandler,
55879+ clTButton: clTButton
5592955880});
5593055881
5593155882/** @summary direct draw of TFrame object,
@@ -56541,12 +56492,12 @@ class TCanvasPainter extends TPadPainter {
5654156492 selectActivePad(pad_painter, obj_painter, click_pos) {
5654256493 if (!this.snapid || !pad_painter) return; // only interactive canvas
5654356494
56544- let arg = null, ischanged = false;
56495+ let arg = null, ischanged = false, is_button = pad_painter.matchObjectType(clTButton) ;
5654556496
5654656497 if (pad_painter.snapid && this._websocket)
5654756498 arg = { _typename: 'TWebPadClick', padid: pad_painter.snapid.toString(), objid: '', x: -1, y: -1, dbl: false };
5654856499
56549- if (!pad_painter.is_active_pad) {
56500+ if (!pad_painter.is_active_pad && !is_button ) {
5655056501 ischanged = true;
5655156502 this.forEachPainterInPad(pp => pp.drawActiveBorder(null, pp === pad_painter), 'pads');
5655256503 }
@@ -56563,7 +56514,7 @@ class TCanvasPainter extends TPadPainter {
5656356514 if (click_pos.dbl) arg.dbl = true;
5656456515 }
5656556516
56566- if (arg && ischanged)
56517+ if (arg && ( ischanged || is_button) )
5656756518 this.sendWebsocket('PADCLICKED:' + toJSON(arg));
5656856519 }
5656956520
@@ -71878,6 +71829,7 @@ const drawFuncs = { lst: [
7187871829 { name: clTCanvas, icon: 'img_canvas', class: () => Promise.resolve().then(function () { return TCanvasPainter$1; }).then(h => h.TCanvasPainter), opt: ';grid;gridx;gridy;tick;tickx;ticky;log;logx;logy;logz', expand_item: 'fPrimitives' },
7187971830 { name: clTPad, icon: 'img_canvas', class: () => Promise.resolve().then(function () { return TPadPainter$1; }).then(h => h.TPadPainter), opt: ';grid;gridx;gridy;tick;tickx;ticky;log;logx;logy;logz', expand_item: 'fPrimitives' },
7188071831 { name: 'TSlider', icon: 'img_canvas', class: () => Promise.resolve().then(function () { return TPadPainter$1; }).then(h => h.TPadPainter) },
71832+ { name: clTButton, icon: 'img_canvas', class: () => Promise.resolve().then(function () { return TPadPainter$1; }).then(h => h.TPadPainter) },
7188171833 { name: 'TFrame', icon: 'img_frame', draw: () => Promise.resolve().then(function () { return TCanvasPainter$1; }).then(h => h.drawTFrame) },
7188271834 { name: clTPave, icon: 'img_pavetext', class: () => Promise.resolve().then(function () { return TPavePainter$1; }).then(h => h.TPavePainter) },
7188371835 { name: clTPaveText, sameas: clTPave },
0 commit comments