diff --git a/apps/oozie/src/oozie/static/oozie/css/coordinator-editor.css b/apps/oozie/src/oozie/static/oozie/css/coordinator-editor.css
index 0338a8d1064..b7f3f194145 100644
--- a/apps/oozie/src/oozie/static/oozie/css/coordinator-editor.css
+++ b/apps/oozie/src/oozie/static/oozie/css/coordinator-editor.css
@@ -14,4 +14,4 @@ distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
- */.form-horizontal .control-label{width:90px}.form-horizontal .controls{margin-left:98px}.inline-block{display:inline-block}.datepicker{z-index:1300}.coordinator .card-home{padding-bottom:10px}.dataset-input{width:380px}
\ No newline at end of file
+ */.form-horizontal .control-label{width:90px}.form-horizontal .controls{margin-left:98px}.inline-block{display:inline-block}.datepicker{z-index:1300}.coordinator .card-home{padding-bottom:10px}.dataset-input{width:380px}.cron-expression-explainer{margin-top:10px;margin-bottom:0}.cron-expression-explainer__status{margin-bottom:6px}.cron-expression-explainer__status i{margin-right:6px}.cron-expression-explainer__status--valid{color:#1f7a1f}.cron-expression-explainer__status--invalid{color:#c0392b}.cron-expression-explainer__next-runs{margin-top:4px}.cron-expression-explainer__next-runs-list{margin:4px 0 0 18px;padding:0}
\ No newline at end of file
diff --git a/apps/oozie/src/oozie/static/oozie/js/coordinator-editor.ko.js b/apps/oozie/src/oozie/static/oozie/js/coordinator-editor.ko.js
index 33105a03cd1..fbf2ef84d59 100644
--- a/apps/oozie/src/oozie/static/oozie/js/coordinator-editor.ko.js
+++ b/apps/oozie/src/oozie/static/oozie/js/coordinator-editor.ko.js
@@ -220,6 +220,37 @@ var CoordinatorEditorViewModel = (function () {
self.coordinator.refreshParameters();
}
+ self.cronExpressionExplanation = ko.observable({
+ isValid: false,
+ description: '',
+ error: '',
+ nextRuns: []
+ });
+
+ var cronExplanationTimeout = null;
+ self.updateCronExpressionExplanation = function () {
+ if (cronExplanationTimeout) {
+ window.clearTimeout(cronExplanationTimeout);
+ }
+
+ cronExplanationTimeout = window.setTimeout(function () {
+ if (typeof window.cronExpressionUtils === 'undefined') {
+ return;
+ }
+
+ self.cronExpressionExplanation(
+ window.cronExpressionUtils.explain(
+ self.coordinator.properties.cron_frequency(),
+ self.coordinator.properties.timezone()
+ )
+ );
+ }, 300);
+ };
+
+ self.coordinator.properties.cron_frequency.subscribe(self.updateCronExpressionExplanation);
+ self.coordinator.properties.timezone.subscribe(self.updateCronExpressionExplanation);
+ self.updateCronExpressionExplanation();
+
self.workflowModalFilter = ko.observable("");
self.filteredModalWorkflows = ko.computed(function () {
var _filter = self.workflowModalFilter().toLowerCase();
diff --git a/apps/oozie/src/oozie/static/oozie/less/coordinator-editor.less b/apps/oozie/src/oozie/static/oozie/less/coordinator-editor.less
index 4e88d3d1d42..1e246de9c0d 100644
--- a/apps/oozie/src/oozie/static/oozie/less/coordinator-editor.less
+++ b/apps/oozie/src/oozie/static/oozie/less/coordinator-editor.less
@@ -38,4 +38,34 @@
.dataset-input {
width: 380px;
+}
+
+.cron-expression-explainer {
+ margin-top: 10px;
+ margin-bottom: 0;
+}
+
+.cron-expression-explainer__status {
+ margin-bottom: 6px;
+}
+
+.cron-expression-explainer__status i {
+ margin-right: 6px;
+}
+
+.cron-expression-explainer__status--valid {
+ color: #1f7a1f;
+}
+
+.cron-expression-explainer__status--invalid {
+ color: #c0392b;
+}
+
+.cron-expression-explainer__next-runs {
+ margin-top: 4px;
+}
+
+.cron-expression-explainer__next-runs-list {
+ margin: 4px 0 0 18px;
+ padding: 0;
}
\ No newline at end of file
diff --git a/apps/oozie/src/oozie/templates/editor2/common_scheduler.inc.mako b/apps/oozie/src/oozie/templates/editor2/common_scheduler.inc.mako
index 0ebfcb242eb..a25f5c71d69 100644
--- a/apps/oozie/src/oozie/templates/editor2/common_scheduler.inc.mako
+++ b/apps/oozie/src/oozie/templates/editor2/common_scheduler.inc.mako
@@ -88,7 +88,7 @@ else:
@@ -102,6 +102,37 @@ else:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${ _('Next run') }
+
+ ():
+
+
+ :
+
+
+
+
+
+
+
diff --git a/apps/oozie/src/oozie/templates/editor2/coordinator_utils.mako b/apps/oozie/src/oozie/templates/editor2/coordinator_utils.mako
index d886f1761d9..ac326a249b4 100644
--- a/apps/oozie/src/oozie/templates/editor2/coordinator_utils.mako
+++ b/apps/oozie/src/oozie/templates/editor2/coordinator_utils.mako
@@ -30,7 +30,7 @@
-
+
${ _('Crontab') }
diff --git a/desktop/core/src/desktop/js/hue.js b/desktop/core/src/desktop/js/hue.js
index 1e34375822b..639891d6183 100644
--- a/desktop/core/src/desktop/js/hue.js
+++ b/desktop/core/src/desktop/js/hue.js
@@ -50,6 +50,7 @@ import hueDrop from 'utils/hueDrop';
import HueGeo from 'utils/hueGeo';
import huePubSub from 'utils/huePubSub';
import hueUtils from 'utils/hueUtils';
+import cronExpressionUtils from 'utils/cron/cronExpressionUtils';
import I18n from 'utils/i18n';
import MultiLineEllipsisHandler from 'utils/multiLineEllipsisHandler';
import sqlUtils from 'sql/sqlUtils';
@@ -103,6 +104,7 @@ window.HueFileEntry = HueFileEntry;
window.HueGeo = HueGeo;
window.huePubSub = huePubSub;
window.hueUtils = hueUtils;
+window.cronExpressionUtils = cronExpressionUtils;
window.I18n = I18n;
window.localforage = localforage;
window.MultiLineEllipsisHandler = MultiLineEllipsisHandler;
diff --git a/desktop/core/src/desktop/js/utils/cron/cronExpressionUtils.test.ts b/desktop/core/src/desktop/js/utils/cron/cronExpressionUtils.test.ts
new file mode 100644
index 00000000000..e5e7ee4b992
--- /dev/null
+++ b/desktop/core/src/desktop/js/utils/cron/cronExpressionUtils.test.ts
@@ -0,0 +1,60 @@
+// Licensed to Cloudera, Inc. under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. Cloudera, Inc. licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import { explainCronExpression } from './cronExpressionUtils';
+
+describe('cronExpressionUtils', () => {
+ it('returns an empty result for blank expressions', () => {
+ const result = explainCronExpression(' ');
+
+ expect(result.isValid).toBe(false);
+ expect(result.description).toBe('');
+ expect(result.error).toBe('');
+ expect(result.nextRuns).toEqual([]);
+ });
+
+ it('describes a valid daily cron expression', () => {
+ const result = explainCronExpression('0 0 * * *');
+
+ expect(result.isValid).toBe(true);
+ expect(result.description.length).toBeGreaterThan(0);
+ expect(result.nextRuns).toHaveLength(1);
+ });
+
+ it('describes weekday schedules and returns next runs', () => {
+ const result = explainCronExpression('0 0/2 * * 1-5', 'UTC', { nextRunsCount: 3 });
+
+ expect(result.isValid).toBe(true);
+ expect(result.description.length).toBeGreaterThan(0);
+ expect(result.nextRuns).toHaveLength(3);
+ });
+
+ it('rejects expressions that do not use the Oozie 5-field format', () => {
+ const result = explainCronExpression('0 0 0 * * *');
+
+ expect(result.isValid).toBe(false);
+ expect(result.error).toContain('Expected 5 cron fields');
+ expect(result.nextRuns).toEqual([]);
+ });
+
+ it('returns parser errors for invalid cron syntax', () => {
+ const result = explainCronExpression('not a cron');
+
+ expect(result.isValid).toBe(false);
+ expect(result.error.length).toBeGreaterThan(0);
+ expect(result.nextRuns).toEqual([]);
+ });
+});
diff --git a/desktop/core/src/desktop/js/utils/cron/cronExpressionUtils.ts b/desktop/core/src/desktop/js/utils/cron/cronExpressionUtils.ts
new file mode 100644
index 00000000000..f1a9863a9e9
--- /dev/null
+++ b/desktop/core/src/desktop/js/utils/cron/cronExpressionUtils.ts
@@ -0,0 +1,105 @@
+// Licensed to Cloudera, Inc. under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. Cloudera, Inc. licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import cronstrue from 'cronstrue';
+import CronExpressionParser from 'cron-parser';
+import { DateTime } from 'luxon';
+
+export const OOZIE_CRON_FIELD_COUNT = 5;
+export const DEFAULT_NEXT_RUNS_COUNT = 1;
+
+export interface CronExplanation {
+ isValid: boolean;
+ description: string;
+ error: string;
+ nextRuns: string[];
+}
+
+export interface ExplainCronExpressionOptions {
+ nextRunsCount?: number;
+}
+
+const formatNextRun = (date: Date, timezone?: string): string => {
+ const formatted = timezone
+ ? DateTime.fromJSDate(date, { zone: timezone })
+ : DateTime.fromJSDate(date);
+
+ return formatted.toFormat('ccc, LLL d, yyyy h:mm a');
+};
+
+export const explainCronExpression = (
+ expression: string,
+ timezone?: string,
+ options?: ExplainCronExpressionOptions
+): CronExplanation => {
+ const trimmed = (expression || '').trim();
+ const emptyResult: CronExplanation = {
+ isValid: false,
+ description: '',
+ error: '',
+ nextRuns: []
+ };
+
+ if (!trimmed) {
+ return emptyResult;
+ }
+
+ const fields = trimmed.split(/\s+/);
+ if (fields.length !== OOZIE_CRON_FIELD_COUNT) {
+ return {
+ ...emptyResult,
+ error: `Expected ${OOZIE_CRON_FIELD_COUNT} cron fields (minute hour day month weekday), found ${fields.length}`
+ };
+ }
+
+ try {
+ const description = cronstrue.toString(trimmed, { use24HourTimeFormat: false });
+ const parseOptions: { tz?: string } = {};
+
+ if (timezone) {
+ parseOptions.tz = timezone;
+ }
+
+ const interval = CronExpressionParser.parse(trimmed, parseOptions);
+ const nextRuns: string[] = [];
+ const nextRunsCount = options?.nextRunsCount ?? DEFAULT_NEXT_RUNS_COUNT;
+
+ for (let i = 0; i < nextRunsCount; i++) {
+ nextRuns.push(formatNextRun(interval.next().toDate(), timezone));
+ }
+
+ return {
+ isValid: true,
+ description,
+ error: '',
+ nextRuns
+ };
+ } catch (error) {
+ const errorMessage = error instanceof Error ? error.message : 'Invalid cron expression';
+
+ return {
+ ...emptyResult,
+ error: errorMessage
+ };
+ }
+};
+
+export default {
+ DEFAULT_NEXT_RUNS_COUNT,
+ OOZIE_CRON_FIELD_COUNT,
+ explain: explainCronExpression,
+ explainCronExpression
+};
diff --git a/desktop/libs/notebook/src/notebook/static/notebook/css/editor2.css b/desktop/libs/notebook/src/notebook/static/notebook/css/editor2.css
index 851aa66e1df..70488a61ec2 100644
--- a/desktop/libs/notebook/src/notebook/static/notebook/css/editor2.css
+++ b/desktop/libs/notebook/src/notebook/static/notebook/css/editor2.css
@@ -14,4 +14,4 @@ distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
- */.editor{position:absolute;top:0;bottom:0;left:0;right:0;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.editor .editor-nav-bar{-ms-flex:0 0 50px;-webkit-flex:0 0 50px;flex:0 0 50px;position:relative}.editor .editor-app{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;position:relative;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.editor .editor-app>.editor-top{-ms-flex:0 0 40%;-webkit-flex:0 0 40%;flex:0 0 40%;position:relative;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden;padding:0 8px}.editor .editor-app>.editor-top .editor-top-actions{-ms-flex:0 0 32px;-webkit-flex:0 0 32px;flex:0 0 32px;position:relative;line-height:32px}.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions{float:right}.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions>*{margin-left:10px}.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions button{color:#838b92;background-color:transparent;border:none;cursor:pointer;display:inline;margin:0;padding:2px 6px;font-size:15px}.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions button:hover{color:#0B7FAD}.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions button:hover,.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions button:focus{text-decoration:none;outline:none}.editor .editor-app>.editor-top .editor-settings-drawer{position:absolute;width:100%;z-index:400}.editor .editor-app>.editor-top .editor-code-editor{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;position:relative}.editor .editor-app>.editor-top .editor-code-editor .ace_gutter{background-color:transparent !important;border-right:1px solid #f1f2f3}.editor .editor-app>.editor-top .editor-code-editor .ace_gutter>.ace_layer{border-left:none}.editor .editor-app>.editor-top .editor-execute-status{-ms-flex:1 0 5px;-webkit-flex:1 0 5px;flex:1 0 5px;position:relative}.editor .editor-app>.editor-top .editor-code-editor{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;position:relative}.editor .editor-app>.editor-top .editor-code-editor .ace_gutter{background-color:transparent !important;border-right:1px solid #f1f2f3}.editor .editor-app>.editor-top .editor-code-editor .ace_gutter>.ace_layer{border-left:none}.editor .editor-app>.editor-top .editor-variable-substitution{-ms-flex:1;-webkit-flex:1;flex:1;position:relative}.editor .editor-app>.editor-top .editor-execute-status{-ms-flex:1 0 5px;-webkit-flex:1 0 5px;flex:1 0 5px;position:relative}.editor .editor-app>.editor-top .editor-execute-actions{-ms-flex:0 0 36px;-webkit-flex:0 0 36px;flex:0 0 36px;position:relative}.editor .editor-app>.editor-divider{-ms-flex:0 0 2px;-webkit-flex:0 0 2px;flex:0 0 2px;position:relative;border-bottom:1px solid #d6d8db}.editor .editor-app>.editor-bottom{-ms-flex:0 1 60%;-webkit-flex:0 1 60%;flex:0 1 60%;position:relative;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden;padding:0 8px}.editor .editor-app>.editor-bottom .editor-bottom-tabs{-ms-flex:0 0 38px;-webkit-flex:0 0 38px;flex:0 0 38px;position:relative}.editor .editor-app>.editor-bottom .editor-bottom-tabs li.editor-bottom-tab-actions{-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;transition:opacity .2s ease;float:right;padding:6px;opacity:0}.editor .editor-app>.editor-bottom .editor-bottom-tabs li.editor-bottom-tab-actions button{color:#838b92;background-color:transparent;border:none;cursor:pointer;display:inline;margin:0;padding:2px 6px;font-size:15px}.editor .editor-app>.editor-bottom .editor-bottom-tabs li.editor-bottom-tab-actions button:hover{color:#0B7FAD}.editor .editor-app>.editor-bottom .editor-bottom-tabs li.editor-bottom-tab-actions button:hover,.editor .editor-app>.editor-bottom .editor-bottom-tabs li.editor-bottom-tab-actions button:focus{text-decoration:none;outline:none}.editor .editor-app>.editor-bottom .editor-bottom-tab-content{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;position:relative;overflow:hidden}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane{position:absolute;top:0;bottom:0;left:0;right:0}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-bottom-tab-panel{position:absolute;top:0;bottom:0;left:0;right:0;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-bottom-tab-panel .snippet-tab-actions{-ms-flex:0 0 30px;-webkit-flex:0 0 30px;flex:0 0 30px;position:relative}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-bottom-tab-panel .snippet-tab-body{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;position:relative;overflow:auto}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .result-tab-body{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;overflow:hidden}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .table-results,.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .chart-container{height:100%;width:100%;position:relative}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .result-settings .nav-list .nav-header{margin-bottom:-3px;padding-left:3px}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .result-settings .checkbox{padding-top:0}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;position:relative;width:100%;height:100%}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .result-settings-panel{-ms-flex:0 0 200px;-webkit-flex:0 0 200px;flex:0 0 200px;min-width:200px;overflow-y:auto;padding-bottom:15px}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-resizer{-ms-flex:0 0 3px;-webkit-flex:0 0 3px;flex:0 0 3px;cursor:ew-resize}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-content{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;overflow-y:auto}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-content .resultTable th{color:#FFFFFF}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-content .dataTables_wrapper .resultTable th{color:#333e47}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-content .results-images{border-left:5px solid #d6d8db;background-color:#f4f5f6;padding:5px}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-content .table-results{position:relative;width:100%;min-height:250px}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .execution-results-tab-panel{position:absolute;top:0;bottom:0;left:0;right:0}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .execution-results-tab-panel .table-results-bridge,.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .execution-results-tab-panel .hue-table-container{position:relative;height:100%;width:100%}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .execution-results-tab-panel .hue-table-container{overflow:auto}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .execution-history-tab-panel{position:absolute;top:0;bottom:0;left:0;right:0}.editor .editor-app>.editor-bottom:hover .editor-bottom-tabs li.editor-bottom-tab-actions{opacity:1}.editor.editor-top-expanded .editor-app .editor-top{-webkit-flex-basis:100%;-ms-flex-basis:100%;flex-basis:100%}.editor.editor-top-expanded .editor-nav-bar,.editor.editor-top-expanded .editor-app .editor-divider,.editor.editor-top-expanded .editor-app .editor-bottom{display:none}.editor.editor-bottom-expanded .editor-nav-bar,.editor.editor-bottom-expanded .editor-app .editor-top,.editor.editor-bottom-expanded .editor-app .editor-divider{display:none}.editor.editor-bottom-expanded .editor-app .editor-bottom{-webkit-flex-basis:100%;-ms-flex-basis:100%;flex-basis:100%}.editor .snippet-move-placeholder{margin:10px;height:100px;background-color:#f4f5f6;border:2px dotted #d6d8db}.editor .snippet-move-helper{margin:10px;background-color:#FFFFFF;border:1px solid #F1EFEF}.editor .resizer{position:absolute;height:100%;width:4px;cursor:col-resize}.editor .resize-bar{position:absolute;height:100%;width:2px;background-color:#d6d8db}.editor .question{margin:10px}.editor .snippet{padding-bottom:10px;margin-left:18px;margin-right:18px}.editor .snippet-v2 .table-results{position:relative;width:100%;min-height:290px}.editor .snippet-v2 .table-results table>thead>tr>td:first-child,.editor .snippet-v2 .table-results table>tbody>tr>td:first-child{background-color:#f4f5f6}.editor .snippet-v2 .table-results.table-results-notebook{max-height:400px}.editor .notebook-snippet{border-bottom:1px solid #d6d8db;border-radius:0}.editor .snippet.editor-mode{border-bottom:none}.editor .snippet-body{z-index:90;min-height:40px}.editor .snippet-text .snippet-body{min-height:1px}.editor .snippet-text.card-widget{min-height:1px}.editor .snippet-body h2{padding-left:0 !important}.editor .snippet-settings{background-color:#FFFFFF;border-left:1px solid #d6d8db;border-right:1px solid #d6d8db;border-bottom:1px solid #d6d8db;-webkit-box-shadow:0 2px 8px rgba(0,0,0,0.18);-moz-box-shadow:0 2px 8px rgba(0,0,0,0.18);box-shadow:0 2px 6px 0 rgba(0,0,0,0.18),0 2px 8px 0 rgba(0,0,0,0.13)}.editor .snippet-settings-header>h4{margin:0;padding:10px}.editor .snippet-settings-body{padding:10px}.editor .CodeMirror{height:auto}.editor .card .card-heading.simple{border:none}.editor .add-snippet{margin:10px;margin-top:60px;margin-bottom:60px}.editor .add-snippet-button{z-index:300;margin-left:auto;margin-right:auto;width:220px;padding:20px}.editor .add-snippet-button>i{color:#adb2b6;cursor:pointer}.editor .select-snippet-button{z-index:500;position:absolute;top:62px;left:62px;width:23px;height:18px;line-height:12px;background-color:#adb2b6;cursor:pointer;border:2px solid #FFFFFF;color:#FFFFFF;border-radius:7px}.editor .add-snippet-alt{z-index:400;position:absolute;background-color:#0B7FAD;color:#CFD8DC;height:54px;width:54px;border-radius:28px;border:1px solid}.editor .add-snippet-alt>div{display:table-cell;text-align:center;vertical-align:middle;line-height:14px;width:50px;height:54px;padding-left:2px;font-size:11px}.editor .snippet-list-alts{margin:0;padding:0;list-style:none}.editor .snippet-list-alts>li{padding:5px 0 5px 10px;cursor:pointer;color:#333e47;margin-bottom:2px}.editor .snippet-list-alts>li:hover{padding:5px 0 5px 10px;background-color:#F1EFEF}.editor .select-snippet-button,.editor .add-snippet-button>i,.editor .add-snippet-alt{-webkit-transition:color .3s ease,-webkit-transform .3s;-moz-transition:color .3s ease,-moz-transform .3s;-ms-transition:color .3s ease,-ms-transform .3s;transition:color .3s ease,transform .3s}.editor .add-snippet-alt:hover{color:#FFFFFF}.editor .select-snippet-button:hover,.editor .add-snippet-button>i:hover,.editor .add-snippet-alt:hover{-webkit-transform:scale(1.3, 1.3);-moz-transform:scale(1.3, 1.3);-ms-transform:scale(1.3, 1.3);transform:scale(1.3, 1.3)}.editor .spark-btn{border-left:none;border-right:none;width:14px;opacity:.8;border-radius:0}.editor .spark-btn:hover{opacity:1}.editor .codeMirror-overlaybtn{position:absolute;margin-top:-30px;margin-left:0;z-index:999}.editor .nav{margin-bottom:0}.editor .nav i{line-height:20px !important}.editor .nav-list>li>a,.editor .nav-list .nav-header{padding-left:0;margin-left:0;margin-bottom:-7px;margin-top:10px !important}.editor .snippet-tab-actions{padding:10px 5px 5px 5px;height:30px}.editor .snippet-tab-actions-append form,.editor .snippet-tab-actions form{margin:0}.editor .snippet-tab-actions-append .search-input,.editor .snippet-tab-actions .search-input{margin:0;padding:5px 6px;height:12px;border-radius:2px;width:150px}.editor .snippet-tab-actions .btn-group .btn-editor:first-of-type,.editor .snippet-tab-body .snippet-tab-actions-append .btn-group .btn-editor:first-of-type{border-top-left-radius:2px;border-bottom-left-radius:2px}.editor .snippet-tab-actions .btn-group .btn-editor:last-of-type,.editor .snippet-tab-body .snippet-tab-actions-append .btn-group .btn-editor:last-of-type{border-top-right-radius:2px;border-bottom-right-radius:2px}.editor .nav-list{padding-left:0}.editor .dropdown-menu li{font-size:14px}.editor .dropdown a.dropdown-toggle{padding-left:10px;padding-right:10px}.editor .search-bar{background-color:#f4f5f6;margin:0;padding:4px 20px 0;text-align:left;width:100%;position:fixed;top:28px;z-index:1000}.editor .search-bar input{margin-left:10px;padding-right:20px}.editor .search-bar ul li{text-align:right}.editor .search-bar ul.dropdown-menu li{text-align:left}.editor .tab-content{background-color:#FFFFFF}.editor .editor-help b{font-weight:500}.editor .editor-help .nav-list>li>a{padding:8px 15px !important;margin-bottom:2px;margin-top:2px !important;margin-left:-15px}.editor .editor-help .help-list-spacing li{margin-bottom:15px}.editor .editor-help .tab-content{border:none}.editor .editor-help .tab-pane>.tab-content{padding:20px 10px;line-height:24px}.editor .two-pane{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex}.editor .two-pane .tab-content{-ms-flex:1;-webkit-flex:1;flex:1}.editor .two-pane-left{-ms-flex:0 0 150px;-webkit-flex:0 0 150px;flex:0 0 150px;border-right:1px solid #f1f2f3;margin-right:10px}.editor .empty-title{font-weight:normal}.editor .snippet-icon-image{height:16px;width:16px;-webkit-filter:grayscale(1);-webkit-filter:grayscale(100%);filter:grayscale(100%);-webkit-transition:-webkit-filter .2s ease;-moz-transition:filter .2s ease;-ms-transition:filter .2s ease}.editor .inactive-action:hover>.snippet-icon-image{-webkit-filter:grayscale(0);filter:grayscale(0)}.editor .snippet-icon{color:#989ea4;height:16px;width:16px;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;-ms-transition:color .2s ease;transition:color .2s ease}.editor .inactive-action:hover>.snippet-icon{color:#0B7FAD !important}.editor .row-container.is-editing{border:none}.editor .ui-sortable{background-color:#FFFFFF;min-height:0}.editor .editable-click,.editor a.editable-click,.editor a.editable-click:hover{cursor:pointer !important}.editor .editable-click.editable-disabled,.editor a.editable-click.editable-disabled,.editor a.editable-click.editable-disabled:hover{cursor:default !important}.editor .results table tr td{white-space:nowrap}.editor [contenteditable]:focus{outline:none}.editor .snippet-progress-container{height:3px;overflow:hidden;margin-bottom:2px}.editor .snippet-logs-btn{margin-top:-9px;margin-left:-3px;font-size:20px}.editor .snippet-execution-status{margin-top:10px;margin-bottom:4px}.editor .ace-container-resizable{position:relative;min-height:128px !important}.editor .ace-editor-resizable{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden !important}.editor .snippet-code-resizer,.editor .snippet-log-resizer{border-top:1px solid #d6d8db;cursor:row-resize;text-align:center;font-size:12px;height:8px;margin-bottom:5px;color:#eaebec}.editor .snippet-code-resizer>i,.editor .snippet-log-resizer>i{-ms-transform:scale(1.3, 1);-webkit-transform:scale(1.3, 1);transform:scale(1.3, 1)}.editor .snippet-log-expander{position:absolute;text-align:center;cursor:pointer;bottom:4px;width:100%}.editor .snippet-log-expander:hover{background-color:#FFFFFF;opacity:.5}.editor .snippet-footer-actions-bar{padding:0 3px;height:29px}.editor .text-snippet h2{padding-left:0 !important}.editor .span12.nomargin{margin-left:0}.editor .show-assist,.editor .show-assist-right{position:fixed;top:80px;background-color:#FFFFFF;width:16px;height:24px;line-height:24px;text-align:center;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;z-index:1000}.editor .show-assist{left:8px;margin-left:-2px;-webkit-transition:margin-left .2s linear;-moz-transition:margin-left .2s linear;-ms-transition:margin-left .2s linear;transition:margin-left .2s linear}.editor .show-assist-right{right:8px;margin-right:-2px;-webkit-transition:margin-right .2s linear;-moz-transition:margin-right .2s linear;-ms-transition:margin-right .2s linear;transition:margin-right .2s linear}.editor .show-assist:hover{margin-left:0}.editor .show-assist-right:hover{margin-right:0}.editor .hide-assist,.editor .hide-assist-right{position:absolute;top:2px;z-index:1000;color:#989ea4;font-size:12px}.editor .hide-assist{right:4px;-webkit-transition:margin-right .2s linear,color .5s ease;-moz-transition:margin-right .2s linear,color .5s ease;-ms-transition:margin-right .2s linear,color .5s ease;transition:margin-right .2s linear,color .5s ease}.editor .hide-assist-right{left:4px;-webkit-transition:margin-left .2s linear,color .5s ease;-moz-transition:margin-left .2s linear,color .5s ease;-ms-transition:margin-left .2s linear,color .5s ease;transition:margin-left .2s linear,color .5s ease}.editor .hide-assist:hover{margin-right:2px;color:#0B7FAD}.editor .hide-assist-right:hover{margin-left:2px;color:#0B7FAD}.editor .logs{padding:9.5px;font-size:11px;height:80px;overflow-y:auto;margin-bottom:0}.editor h1.empty{margin-top:50px;text-align:center;color:#d6d8db}.editor .chart-icon{width:15px;text-align:center}.editor .resize-panel a{cursor:ns-resize;color:#5a656d;position:absolute}.editor .progress-snippet{width:100%;background-image:none;box-shadow:none}.editor .progress-snippet .bar{background-image:none}.editor .progress .bar{background-repeat:repeat-x}.editor .progress,.editor .progress-neutral .bar{background-color:#d6d8db}.editor .progress .bar{background-color:#FFFFFF}.editor .progress .bar-info{background-color:#0B7FAD}.editor .progress-starting .bar{background-color:#0B7FAD}@-webkit-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@-moz-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@-o-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}.editor .progress-starting{-webkit-animation:pulsate 1s infinite;-moz-animation:pulsate 1s infinite;-o-animation:pulsate 1s infinite;animation:pulsate 1s infinite}.editor .progress-success .bar,.editor .progress .bar-success{background-color:#5aa232}.editor .progress-running .bar{background-color:#0B7FAD}.editor .progress-warning .bar,.editor .progress .bar-warning{background-color:#ffa319}.editor .progress-danger .bar,.editor .progress .bar-danger{background-color:#e83934}.editor .text-snippet{padding-left:4px}.editor .medium-editor-toolbar-form label{min-height:20px}.editor .medium-editor-toolbar-form input[type="checkbox"]{float:left;margin-left:0;margin-right:4px}.editor .medium-editor-toolbar li button{padding:0 !important;height:40px !important;min-width:40px !important}.editor .medium-toolbar-arrow-under:after{top:40px !important}.editor .medium-editor-placeholder:after{padding-left:5px;font-size:13px !important;font-family:Roboto Mono,Menlo,Monaco,Consolas,"Courier New",monospace !important;color:#989ea4 !important;font-style:normal !important}.editor .card-heading-print{display:none}.editor .no-underline:hover{text-decoration:none !important}.editor input[type="text"].filechooser-input{border-right:none;margin-bottom:0}.editor table.airy tr td{padding:4px}.editor .ace-filechooser{position:absolute;display:none;z-index:20000;background-color:#FFFFFF;padding:10px;min-width:350px}.editor .hover-dropdown{display:inline-block;position:relative}.editor .results.alert-error,.editor .alert-error-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #f2dede 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-pink-050', endColorstr='#00ffffff', GradientType=1)}.editor .alert-notebook,.editor .alert-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #fcf8e3 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-yellow-050', endColorstr='#00ffffff', GradientType=1)}.editor .hoverMsg{background:#000000;height:100%;left:0;opacity:.5;position:absolute;width:100%;top:0;z-index:10000}.editor .hoverText{color:#FFFFFF;font-size:5em;position:relative;text-align:center;top:45%;font-weight:700;text-shadow:1px 1px 1px rgba(0,0,0,0.3);-webkit-animation-name:bounceInDown;animation-name:bounceInDown;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.editor .snippet-row{position:relative;display:block;height:auto;width:100%}.editor .snippet-side-btn{color:#CFD8DC;display:inline-block;line-height:27px;height:27px;min-height:27px;margin:0;font-size:13px;cursor:pointer;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;-ms-transition:color .2s ease;transition:color .2s ease}.editor .snippet-side-btn.disabled{cursor:default !important;opacity:.5}.editor .snippet-side-btn:focus{color:#CFD8DC}.editor .snippet-side-btn.active{color:#0B7FAD}.editor .snippet-side-btn:hover{color:#0B7FAD}.editor .snippet-side-single{padding:0 3px}.editor .execution-timer{color:#989ea4}.editor .navbar .editor-nav>li>a{max-width:600px}.editor .navbar .editor-nav>li>a,.editor .navbar .editor-nav>li>a:hover{color:#5a656d;cursor:default}.editor .navbar .editor-nav>li.query-name{font-weight:bold}.editor .editor-nav .editable-click:hover{border-bottom:dashed 1px #004496}.editor .editor-nav .editable-click,.editor .editor-nav a.editable-click{border-bottom:1px solid transparent}.editor .editable-empty,.editor .editable-empty:hover{color:#5a656d !important}.editor h4.header{font-weight:bold;color:#838b92;font-size:14px;text-transform:uppercase;padding-left:4px;border-bottom:1px solid #d6d8db;padding-bottom:3px}.editor .history-table tbody tr{border-left:2px solid transparent;border-right:2px solid transparent}.editor .history-table tbody tr td{vertical-align:top}.editor .history-table tbody tr:hover{border-left:2px solid #DBE8F1;border-right:2px solid #DBE8F1}.editor .history-table tbody tr:hover td,.editor .history-table tbody tr:hover th{background-color:#f4f5f6}.editor .history-table tbody tr.highlight{background-color:#f4f5f6;border-left:2px solid #DBE8F1;border-right:2px solid #DBE8F1}.editor .history-table .ace-highlight{padding:4px 0}.editor .ace-highlight .ace_layer{pointer-events:all}.editor .ace-highlight .ace-hue{background-color:transparent !important}.editor .ace-highlight .ace_invalid{display:none}.editor .ace-highlight .ace_line{white-space:normal}.editor .ace-highlight .ace-highlight-pre{white-space:pre !important}.editor .history-status{width:20px}.editor .history-status .fa-check{color:#B4D689}.editor .history-status .fa-fighter-jet{color:#ffa319}.editor #helpModal th:first-child{width:25%}.editor #helpModal th:last-child{width:50%}.editor #helpModal .tab-content{min-height:310px;max-height:310px}.editor .tooltip{z-index:3000 !important}.editor .saveResultsModal .overlay{background:black;opacity:.5;position:absolute;top:0;right:0;left:0;bottom:0;z-index:100}.editor .saveResultsModal .loader{text-align:center;position:absolute;top:0;right:0;left:0;bottom:0}.editor .saveResultsModal i.fa-spinner,.editor .saveResultsModal img.spinner{margin-top:-30px;margin-left:-30px;position:absolute;top:50%;left:50%;z-index:101}.editor .saveResultsModal i.fa-spinner{font-size:60px;color:#d6d8db}.editor .notebook-name-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.editor .notebook-name-input{width:220px}.editor pre{font-size:11px}.editor .inline-tab-filter{border-radius:5px !important;min-height:17px !important;height:17px !important;margin:0 3px 0 -2px !important;padding:0 18px 0 5px !important}.editor .no-horiz-padding a{padding-left:0 !important;padding-right:0 !important}.editor .no-horiz-padding.muted a{color:#989ea4 !important}.editor .no-horiz-padding:not(:first-child) a{margin-left:0 !important}.editor .collapse-results{right:20px;top:20px}.editor .meta-title{line-height:22px}.editor .meta-filter{width:118px;margin-bottom:0}.editor .meta-noresults{font-style:italic}.editor #schedulerEditor .container-fluid,.editor #schedulerEditor .card-heading,.editor #schedulerEditor .card-body{padding:0}.editor #schedulerEditor .dataset-input{width:270px}.editor #schedulerEditor .form-horizontal .control-label{width:100px;text-align:left}.editor #schedulerEditor .form-horizontal .controls{margin-left:110px}.editor #schedulerEditor .workflow-parameter{padding:10px;margin-left:-10px;margin-right:-10px}.editor #schedulerEditor .workflow-parameter:hover{background-color:#f4f5f6}.editor .warning{color:#f96600}.editor .nav-header-like{padding:6px;margin-top:1px;overflow:hidden;font-size:14px;line-height:1.4;color:#0B7FAD;text-overflow:ellipsis;text-shadow:none;background-color:#FFFFFF;border-left:2px solid transparent;-webkit-transition:border .218s;-moz-transition:border .218s;-o-transition:border .218s;transition:border .218s;text-transform:uppercase}.editor .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:9px !important;margin:0 !important;margin-top:3px !important}.editor .mCSB_scrollTools.mCSB_scrollTools_horizontal{margin:0 !important}.editor .mCSB_scrollTools.mCSB_scrollTools_vertical .mCSB_dragger .mCSB_dragger_bar{width:8px !important;margin-left:10px !important}.editor .alert-info-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #e6f7ff 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-blue-050', endColorstr='#00ffffff', GradientType=1)}.editor .alert-success-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #EDF5E2 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-lime-050', endColorstr='#00ffffff', GradientType=1)}.editor .alert-neutral-gradient{border:none;border-left:1px solid #e6f7ff;margin-top:-3px;background:-moz-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #F1EFEF 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-purple-gray-050', endColorstr='#00ffffff', GradientType=1)}.editor .alert-warning{background-color:#fffaed;border:1px solid #ffa319;color:#f96600}.editor .sql-analyzer-container{margin-top:-11px;font-size:15px}.editor .sql-analyzer-icon{display:inline-block;width:16px;height:16px;text-align:center;line-height:16px;font-size:14px;opacity:.8;cursor:pointer}.editor .sql-analyzer-icon.empty{width:1px;cursor:default}.editor .sql-analyzer-icon.idle{color:#adb2b6;cursor:default}.editor .sql-analyzer-icon:hover{opacity:1}.editor .sql-analyzer-icon.success{color:#2c6c08}.editor .sql-analyzer-icon.warning{color:#ffa319}.editor .sql-analyzer-icon.error{color:#e83934}.editor .active .sql-analyzer-icon{opacity:1}.editor .alert-neutral{border:none;margin-top:-3px;background:transparent;margin-bottom:0;padding:0;padding-right:4px;display:inline-block}.editor .alert-empty{border:none;margin-bottom:0;background:transparent;padding-left:4px}.editor .sql-analyzer-explanation{margin-left:4px}.editor .popover{z-index:1030}.editor .close-logs-overlay{position:absolute;top:2px;right:10px;font-size:20px;display:none;background-color:#f4f5f6}.editor .snippet-log-container:hover .close-logs-overlay{display:block}.editor .snippet-error-log{position:relative}.editor .snippet-error-log .clear-container{position:absolute;top:6px;right:6px}.editor .snippet-error-log .clear-container .close{opacity:.5}.editor .snippet-error-log .clear-container .close:hover{opacity:1}.editor .snippet-error-log .clear-container .close::before{border-color:#a60115 !important}.editor .snippet-error-log .clear-container .close::after{border-color:#a60115 !important}.editor .jobs-overlay{background-color:#FFFFFF;opacity:.8;position:absolute;top:10px;right:20px}.editor .jobs-overlay .progress-job{height:2px;margin-bottom:0}.editor .jobs-overlay li{background-color:#FFFFFF;padding:5px}.editor .jobs-overlay li a{margin:6px}.editor .jobs-overlay:hover{opacity:1}.editor .ace-filechooser{border-radius:2px;background-color:#FFFFFF;-webkit-box-shadow:0 2px 8px rgba(0,0,0,0.18);-moz-box-shadow:0 2px 8px rgba(0,0,0,0.18);box-shadow:0 2px 6px 0 rgba(0,0,0,0.18),0 2px 8px 0 rgba(0,0,0,0.13)}.editor .ace-filechooser-content .filechooser-tree{position:relative;margin-right:10px}.editor .ace-filechooser-close{position:absolute;right:10px;top:10px;z-index:1000}.editor .query-name{margin-left:28px}.editor .statement-type-selector>.hue-drop-down-container{margin-left:-100px}.editor .variables .selectize-control{display:inline-block;width:164px}.editor .variables .selectize-input{line-height:19px}.editor .variables .selectize-input input[type="text"]{height:19px}.editor .variables .input-prepend{line-height:0}.editor .variables input:not(:focus)[value=""]{border-color:#f96600}.editor .variables input[type="checkbox"]{margin:12px 0 0 10px}.editor .variables div.selectize-input{padding:5px 23px 6px 8px;text-overflow:ellipsis}.editor .nav-tabs-editor .visible-on-hover{opacity:0;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;transition:opacity .2s ease}.editor .nav-tabs-editor li:hover .visible-on-hover{opacity:1}
\ No newline at end of file
+ */.editor{position:absolute;top:0;bottom:0;left:0;right:0;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.editor .editor-nav-bar{-ms-flex:0 0 50px;-webkit-flex:0 0 50px;flex:0 0 50px;position:relative}.editor .editor-app{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;position:relative;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.editor .editor-app>.editor-top{-ms-flex:0 0 40%;-webkit-flex:0 0 40%;flex:0 0 40%;position:relative;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden;padding:0 8px}.editor .editor-app>.editor-top .editor-top-actions{-ms-flex:0 0 32px;-webkit-flex:0 0 32px;flex:0 0 32px;position:relative;line-height:32px}.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions{float:right}.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions>*{margin-left:10px}.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions button{color:#838b92;background-color:transparent;border:none;cursor:pointer;display:inline;margin:0;padding:2px 6px;font-size:15px}.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions button:hover{color:#0B7FAD}.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions button:hover,.editor .editor-app>.editor-top .editor-top-actions .editor-top-right-actions button:focus{text-decoration:none;outline:none}.editor .editor-app>.editor-top .editor-settings-drawer{position:absolute;width:100%;z-index:400}.editor .editor-app>.editor-top .editor-code-editor{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;position:relative}.editor .editor-app>.editor-top .editor-code-editor .ace_gutter{background-color:transparent !important;border-right:1px solid #f1f2f3}.editor .editor-app>.editor-top .editor-code-editor .ace_gutter>.ace_layer{border-left:none}.editor .editor-app>.editor-top .editor-execute-status{-ms-flex:1 0 5px;-webkit-flex:1 0 5px;flex:1 0 5px;position:relative}.editor .editor-app>.editor-top .editor-code-editor{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;position:relative}.editor .editor-app>.editor-top .editor-code-editor .ace_gutter{background-color:transparent !important;border-right:1px solid #f1f2f3}.editor .editor-app>.editor-top .editor-code-editor .ace_gutter>.ace_layer{border-left:none}.editor .editor-app>.editor-top .editor-variable-substitution{-ms-flex:1;-webkit-flex:1;flex:1;position:relative}.editor .editor-app>.editor-top .editor-execute-status{-ms-flex:1 0 5px;-webkit-flex:1 0 5px;flex:1 0 5px;position:relative}.editor .editor-app>.editor-top .editor-execute-actions{-ms-flex:0 0 36px;-webkit-flex:0 0 36px;flex:0 0 36px;position:relative}.editor .editor-app>.editor-divider{-ms-flex:0 0 2px;-webkit-flex:0 0 2px;flex:0 0 2px;position:relative;border-bottom:1px solid #d6d8db}.editor .editor-app>.editor-bottom{-ms-flex:0 1 60%;-webkit-flex:0 1 60%;flex:0 1 60%;position:relative;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden;padding:0 8px}.editor .editor-app>.editor-bottom .editor-bottom-tabs{-ms-flex:0 0 38px;-webkit-flex:0 0 38px;flex:0 0 38px;position:relative}.editor .editor-app>.editor-bottom .editor-bottom-tabs li.editor-bottom-tab-actions{-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;transition:opacity .2s ease;float:right;padding:6px;opacity:0}.editor .editor-app>.editor-bottom .editor-bottom-tabs li.editor-bottom-tab-actions button{color:#838b92;background-color:transparent;border:none;cursor:pointer;display:inline;margin:0;padding:2px 6px;font-size:15px}.editor .editor-app>.editor-bottom .editor-bottom-tabs li.editor-bottom-tab-actions button:hover{color:#0B7FAD}.editor .editor-app>.editor-bottom .editor-bottom-tabs li.editor-bottom-tab-actions button:hover,.editor .editor-app>.editor-bottom .editor-bottom-tabs li.editor-bottom-tab-actions button:focus{text-decoration:none;outline:none}.editor .editor-app>.editor-bottom .editor-bottom-tab-content{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;position:relative;overflow:hidden}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane{position:absolute;top:0;bottom:0;left:0;right:0}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-bottom-tab-panel{position:absolute;top:0;bottom:0;left:0;right:0;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-bottom-tab-panel .snippet-tab-actions{-ms-flex:0 0 30px;-webkit-flex:0 0 30px;flex:0 0 30px;position:relative}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-bottom-tab-panel .snippet-tab-body{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;position:relative;overflow:auto}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .result-tab-body{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;overflow:hidden}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .table-results,.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .chart-container{height:100%;width:100%;position:relative}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .result-settings .nav-list .nav-header{margin-bottom:-3px;padding-left:3px}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .result-settings .checkbox{padding-top:0}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex;position:relative;width:100%;height:100%}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .result-settings-panel{-ms-flex:0 0 200px;-webkit-flex:0 0 200px;flex:0 0 200px;min-width:200px;overflow-y:auto;padding-bottom:15px}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-resizer{-ms-flex:0 0 3px;-webkit-flex:0 0 3px;flex:0 0 3px;cursor:ew-resize}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-content{-ms-flex:0 1 100%;-webkit-flex:0 1 100%;flex:0 1 100%;overflow-y:auto}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-content .resultTable th{color:#FFFFFF}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-content .dataTables_wrapper .resultTable th{color:#333e47}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-content .results-images{border-left:5px solid #d6d8db;background-color:#f4f5f6;padding:5px}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .editor-chart-panel .split-result-container .split-result-content .table-results{position:relative;width:100%;min-height:250px}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .execution-results-tab-panel{position:absolute;top:0;bottom:0;left:0;right:0}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .execution-results-tab-panel .table-results-bridge,.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .execution-results-tab-panel .hue-table-container{position:relative;height:100%;width:100%}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .execution-results-tab-panel .hue-table-container{overflow:auto}.editor .editor-app>.editor-bottom .editor-bottom-tab-content .tab-pane .execution-history-tab-panel{position:absolute;top:0;bottom:0;left:0;right:0}.editor .editor-app>.editor-bottom:hover .editor-bottom-tabs li.editor-bottom-tab-actions{opacity:1}.editor.editor-top-expanded .editor-app .editor-top{-webkit-flex-basis:100%;-ms-flex-basis:100%;flex-basis:100%}.editor.editor-top-expanded .editor-nav-bar,.editor.editor-top-expanded .editor-app .editor-divider,.editor.editor-top-expanded .editor-app .editor-bottom{display:none}.editor.editor-bottom-expanded .editor-nav-bar,.editor.editor-bottom-expanded .editor-app .editor-top,.editor.editor-bottom-expanded .editor-app .editor-divider{display:none}.editor.editor-bottom-expanded .editor-app .editor-bottom{-webkit-flex-basis:100%;-ms-flex-basis:100%;flex-basis:100%}.editor .snippet-move-placeholder{margin:10px;height:100px;background-color:#f4f5f6;border:2px dotted #d6d8db}.editor .snippet-move-helper{margin:10px;background-color:#FFFFFF;border:1px solid #F1EFEF}.editor .resizer{position:absolute;height:100%;width:4px;cursor:col-resize}.editor .resize-bar{position:absolute;height:100%;width:2px;background-color:#d6d8db}.editor .question{margin:10px}.editor .snippet{padding-bottom:10px;margin-left:18px;margin-right:18px}.editor .snippet-v2 .table-results{position:relative;width:100%;min-height:290px}.editor .snippet-v2 .table-results table>thead>tr>td:first-child,.editor .snippet-v2 .table-results table>tbody>tr>td:first-child{background-color:#f4f5f6}.editor .snippet-v2 .table-results.table-results-notebook{max-height:400px}.editor .notebook-snippet{border-bottom:1px solid #d6d8db;border-radius:0}.editor .snippet.editor-mode{border-bottom:none}.editor .snippet-body{z-index:90;min-height:40px}.editor .snippet-text .snippet-body{min-height:1px}.editor .snippet-text.card-widget{min-height:1px}.editor .snippet-body h2{padding-left:0 !important}.editor .snippet-settings{background-color:#FFFFFF;border-left:1px solid #d6d8db;border-right:1px solid #d6d8db;border-bottom:1px solid #d6d8db;-webkit-box-shadow:0 2px 8px rgba(0,0,0,0.18);-moz-box-shadow:0 2px 8px rgba(0,0,0,0.18);box-shadow:0 2px 6px 0 rgba(0,0,0,0.18),0 2px 8px 0 rgba(0,0,0,0.13)}.editor .snippet-settings-header>h4{margin:0;padding:10px}.editor .snippet-settings-body{padding:10px}.editor .CodeMirror{height:auto}.editor .card .card-heading.simple{border:none}.editor .add-snippet{margin:10px;margin-top:60px;margin-bottom:60px}.editor .add-snippet-button{z-index:300;margin-left:auto;margin-right:auto;width:220px;padding:20px}.editor .add-snippet-button>i{color:#adb2b6;cursor:pointer}.editor .select-snippet-button{z-index:500;position:absolute;top:62px;left:62px;width:23px;height:18px;line-height:12px;background-color:#adb2b6;cursor:pointer;border:2px solid #FFFFFF;color:#FFFFFF;border-radius:7px}.editor .add-snippet-alt{z-index:400;position:absolute;background-color:#0B7FAD;color:#CFD8DC;height:54px;width:54px;border-radius:28px;border:1px solid}.editor .add-snippet-alt>div{display:table-cell;text-align:center;vertical-align:middle;line-height:14px;width:50px;height:54px;padding-left:2px;font-size:11px}.editor .snippet-list-alts{margin:0;padding:0;list-style:none}.editor .snippet-list-alts>li{padding:5px 0 5px 10px;cursor:pointer;color:#333e47;margin-bottom:2px}.editor .snippet-list-alts>li:hover{padding:5px 0 5px 10px;background-color:#F1EFEF}.editor .select-snippet-button,.editor .add-snippet-button>i,.editor .add-snippet-alt{-webkit-transition:color .3s ease,-webkit-transform .3s;-moz-transition:color .3s ease,-moz-transform .3s;-ms-transition:color .3s ease,-ms-transform .3s;transition:color .3s ease,transform .3s}.editor .add-snippet-alt:hover{color:#FFFFFF}.editor .select-snippet-button:hover,.editor .add-snippet-button>i:hover,.editor .add-snippet-alt:hover{-webkit-transform:scale(1.3, 1.3);-moz-transform:scale(1.3, 1.3);-ms-transform:scale(1.3, 1.3);transform:scale(1.3, 1.3)}.editor .spark-btn{border-left:none;border-right:none;width:14px;opacity:.8;border-radius:0}.editor .spark-btn:hover{opacity:1}.editor .codeMirror-overlaybtn{position:absolute;margin-top:-30px;margin-left:0;z-index:999}.editor .nav{margin-bottom:0}.editor .nav i{line-height:20px !important}.editor .nav-list>li>a,.editor .nav-list .nav-header{padding-left:0;margin-left:0;margin-bottom:-7px;margin-top:10px !important}.editor .snippet-tab-actions{padding:10px 5px 5px 5px;height:30px}.editor .snippet-tab-actions-append form,.editor .snippet-tab-actions form{margin:0}.editor .snippet-tab-actions-append .search-input,.editor .snippet-tab-actions .search-input{margin:0;padding:5px 6px;height:12px;border-radius:2px;width:150px}.editor .snippet-tab-actions .btn-group .btn-editor:first-of-type,.editor .snippet-tab-body .snippet-tab-actions-append .btn-group .btn-editor:first-of-type{border-top-left-radius:2px;border-bottom-left-radius:2px}.editor .snippet-tab-actions .btn-group .btn-editor:last-of-type,.editor .snippet-tab-body .snippet-tab-actions-append .btn-group .btn-editor:last-of-type{border-top-right-radius:2px;border-bottom-right-radius:2px}.editor .nav-list{padding-left:0}.editor .dropdown-menu li{font-size:14px}.editor .dropdown a.dropdown-toggle{padding-left:10px;padding-right:10px}.editor .search-bar{background-color:#f4f5f6;margin:0;padding:4px 20px 0;text-align:left;width:100%;position:fixed;top:28px;z-index:1000}.editor .search-bar input{margin-left:10px;padding-right:20px}.editor .search-bar ul li{text-align:right}.editor .search-bar ul.dropdown-menu li{text-align:left}.editor .tab-content{background-color:#FFFFFF}.editor .editor-help b{font-weight:500}.editor .editor-help .nav-list>li>a{padding:8px 15px !important;margin-bottom:2px;margin-top:2px !important;margin-left:-15px}.editor .editor-help .help-list-spacing li{margin-bottom:15px}.editor .editor-help .tab-content{border:none}.editor .editor-help .tab-pane>.tab-content{padding:20px 10px;line-height:24px}.editor .two-pane{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex}.editor .two-pane .tab-content{-ms-flex:1;-webkit-flex:1;flex:1}.editor .two-pane-left{-ms-flex:0 0 150px;-webkit-flex:0 0 150px;flex:0 0 150px;border-right:1px solid #f1f2f3;margin-right:10px}.editor .empty-title{font-weight:normal}.editor .snippet-icon-image{height:16px;width:16px;-webkit-filter:grayscale(1);-webkit-filter:grayscale(100%);filter:grayscale(100%);-webkit-transition:-webkit-filter .2s ease;-moz-transition:filter .2s ease;-ms-transition:filter .2s ease}.editor .inactive-action:hover>.snippet-icon-image{-webkit-filter:grayscale(0);filter:grayscale(0)}.editor .snippet-icon{color:#989ea4;height:16px;width:16px;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;-ms-transition:color .2s ease;transition:color .2s ease}.editor .inactive-action:hover>.snippet-icon{color:#0B7FAD !important}.editor .row-container.is-editing{border:none}.editor .ui-sortable{background-color:#FFFFFF;min-height:0}.editor .editable-click,.editor a.editable-click,.editor a.editable-click:hover{cursor:pointer !important}.editor .editable-click.editable-disabled,.editor a.editable-click.editable-disabled,.editor a.editable-click.editable-disabled:hover{cursor:default !important}.editor .results table tr td{white-space:nowrap}.editor [contenteditable]:focus{outline:none}.editor .snippet-progress-container{height:3px;overflow:hidden;margin-bottom:2px}.editor .snippet-logs-btn{margin-top:-9px;margin-left:-3px;font-size:20px}.editor .snippet-execution-status{margin-top:10px;margin-bottom:4px}.editor .ace-container-resizable{position:relative;min-height:128px !important}.editor .ace-editor-resizable{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden !important}.editor .snippet-code-resizer,.editor .snippet-log-resizer{border-top:1px solid #d6d8db;cursor:row-resize;text-align:center;font-size:12px;height:8px;margin-bottom:5px;color:#eaebec}.editor .snippet-code-resizer>i,.editor .snippet-log-resizer>i{-ms-transform:scale(1.3, 1);-webkit-transform:scale(1.3, 1);transform:scale(1.3, 1)}.editor .snippet-log-expander{position:absolute;text-align:center;cursor:pointer;bottom:4px;width:100%}.editor .snippet-log-expander:hover{background-color:#FFFFFF;opacity:.5}.editor .snippet-footer-actions-bar{padding:0 3px;height:29px}.editor .text-snippet h2{padding-left:0 !important}.editor .span12.nomargin{margin-left:0}.editor .show-assist,.editor .show-assist-right{position:fixed;top:80px;background-color:#FFFFFF;width:16px;height:24px;line-height:24px;text-align:center;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;z-index:1000}.editor .show-assist{left:8px;margin-left:-2px;-webkit-transition:margin-left .2s linear;-moz-transition:margin-left .2s linear;-ms-transition:margin-left .2s linear;transition:margin-left .2s linear}.editor .show-assist-right{right:8px;margin-right:-2px;-webkit-transition:margin-right .2s linear;-moz-transition:margin-right .2s linear;-ms-transition:margin-right .2s linear;transition:margin-right .2s linear}.editor .show-assist:hover{margin-left:0}.editor .show-assist-right:hover{margin-right:0}.editor .hide-assist,.editor .hide-assist-right{position:absolute;top:2px;z-index:1000;color:#989ea4;font-size:12px}.editor .hide-assist{right:4px;-webkit-transition:margin-right .2s linear,color .5s ease;-moz-transition:margin-right .2s linear,color .5s ease;-ms-transition:margin-right .2s linear,color .5s ease;transition:margin-right .2s linear,color .5s ease}.editor .hide-assist-right{left:4px;-webkit-transition:margin-left .2s linear,color .5s ease;-moz-transition:margin-left .2s linear,color .5s ease;-ms-transition:margin-left .2s linear,color .5s ease;transition:margin-left .2s linear,color .5s ease}.editor .hide-assist:hover{margin-right:2px;color:#0B7FAD}.editor .hide-assist-right:hover{margin-left:2px;color:#0B7FAD}.editor .logs{padding:9.5px;font-size:11px;height:80px;overflow-y:auto;margin-bottom:0}.editor h1.empty{margin-top:50px;text-align:center;color:#d6d8db}.editor .chart-icon{width:15px;text-align:center}.editor .resize-panel a{cursor:ns-resize;color:#5a656d;position:absolute}.editor .progress-snippet{width:100%;background-image:none;box-shadow:none}.editor .progress-snippet .bar{background-image:none}.editor .progress .bar{background-repeat:repeat-x}.editor .progress,.editor .progress-neutral .bar{background-color:#d6d8db}.editor .progress .bar{background-color:#FFFFFF}.editor .progress .bar-info{background-color:#0B7FAD}.editor .progress-starting .bar{background-color:#0B7FAD}@-webkit-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@-moz-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@-o-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}.editor .progress-starting{-webkit-animation:pulsate 1s infinite;-moz-animation:pulsate 1s infinite;-o-animation:pulsate 1s infinite;animation:pulsate 1s infinite}.editor .progress-success .bar,.editor .progress .bar-success{background-color:#5aa232}.editor .progress-running .bar{background-color:#0B7FAD}.editor .progress-warning .bar,.editor .progress .bar-warning{background-color:#ffa319}.editor .progress-danger .bar,.editor .progress .bar-danger{background-color:#e83934}.editor .text-snippet{padding-left:4px}.editor .medium-editor-toolbar-form label{min-height:20px}.editor .medium-editor-toolbar-form input[type="checkbox"]{float:left;margin-left:0;margin-right:4px}.editor .medium-editor-toolbar li button{padding:0 !important;height:40px !important;min-width:40px !important}.editor .medium-toolbar-arrow-under:after{top:40px !important}.editor .medium-editor-placeholder:after{padding-left:5px;font-size:13px !important;font-family:Roboto Mono,Menlo,Monaco,Consolas,"Courier New",monospace !important;color:#989ea4 !important;font-style:normal !important}.editor .card-heading-print{display:none}.editor .no-underline:hover{text-decoration:none !important}.editor input[type="text"].filechooser-input{border-right:none;margin-bottom:0}.editor table.airy tr td{padding:4px}.editor .ace-filechooser{position:absolute;display:none;z-index:20000;background-color:#FFFFFF;padding:10px;min-width:350px}.editor .hover-dropdown{display:inline-block;position:relative}.editor .results.alert-error,.editor .alert-error-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #f2dede 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-pink-050', endColorstr='#00ffffff', GradientType=1)}.editor .alert-notebook,.editor .alert-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #fcf8e3 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-yellow-050', endColorstr='#00ffffff', GradientType=1)}.editor .hoverMsg{background:#000000;height:100%;left:0;opacity:.5;position:absolute;width:100%;top:0;z-index:10000}.editor .hoverText{color:#FFFFFF;font-size:5em;position:relative;text-align:center;top:45%;font-weight:700;text-shadow:1px 1px 1px rgba(0,0,0,0.3);-webkit-animation-name:bounceInDown;animation-name:bounceInDown;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.editor .snippet-row{position:relative;display:block;height:auto;width:100%}.editor .snippet-side-btn{color:#CFD8DC;display:inline-block;line-height:27px;height:27px;min-height:27px;margin:0;font-size:13px;cursor:pointer;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;-ms-transition:color .2s ease;transition:color .2s ease}.editor .snippet-side-btn.disabled{cursor:default !important;opacity:.5}.editor .snippet-side-btn:focus{color:#CFD8DC}.editor .snippet-side-btn.active{color:#0B7FAD}.editor .snippet-side-btn:hover{color:#0B7FAD}.editor .snippet-side-single{padding:0 3px}.editor .execution-timer{color:#989ea4}.editor .navbar .editor-nav>li>a{max-width:600px}.editor .navbar .editor-nav>li>a,.editor .navbar .editor-nav>li>a:hover{color:#5a656d;cursor:default}.editor .navbar .editor-nav>li.query-name{font-weight:bold}.editor .editor-nav .editable-click:hover{border-bottom:dashed 1px #004496}.editor .editor-nav .editable-click,.editor .editor-nav a.editable-click{border-bottom:1px solid transparent}.editor .editable-empty,.editor .editable-empty:hover{color:#5a656d !important}.editor h4.header{font-weight:bold;color:#838b92;font-size:14px;text-transform:uppercase;padding-left:4px;border-bottom:1px solid #d6d8db;padding-bottom:3px}.editor .history-table tbody tr{border-left:2px solid transparent;border-right:2px solid transparent}.editor .history-table tbody tr td{vertical-align:top}.editor .history-table tbody tr:hover{border-left:2px solid #DBE8F1;border-right:2px solid #DBE8F1}.editor .history-table tbody tr:hover td,.editor .history-table tbody tr:hover th{background-color:#f4f5f6}.editor .history-table tbody tr.highlight{background-color:#f4f5f6;border-left:2px solid #DBE8F1;border-right:2px solid #DBE8F1}.editor .history-table .ace-highlight{padding:4px 0}.editor .ace-highlight .ace_layer{pointer-events:all}.editor .ace-highlight .ace-hue{background-color:transparent !important}.editor .ace-highlight .ace_invalid{display:none}.editor .ace-highlight .ace_line{white-space:normal}.editor .ace-highlight .ace-highlight-pre{white-space:pre !important}.editor .history-status{width:20px}.editor .history-status .fa-check{color:#B4D689}.editor .history-status .fa-fighter-jet{color:#ffa319}.editor #helpModal th:first-child{width:25%}.editor #helpModal th:last-child{width:50%}.editor #helpModal .tab-content{min-height:310px;max-height:310px}.editor .tooltip{z-index:3000 !important}.editor .saveResultsModal .overlay{background:black;opacity:.5;position:absolute;top:0;right:0;left:0;bottom:0;z-index:100}.editor .saveResultsModal .loader{text-align:center;position:absolute;top:0;right:0;left:0;bottom:0}.editor .saveResultsModal i.fa-spinner,.editor .saveResultsModal img.spinner{margin-top:-30px;margin-left:-30px;position:absolute;top:50%;left:50%;z-index:101}.editor .saveResultsModal i.fa-spinner{font-size:60px;color:#d6d8db}.editor .notebook-name-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.editor .notebook-name-input{width:220px}.editor pre{font-size:11px}.editor .inline-tab-filter{border-radius:5px !important;min-height:17px !important;height:17px !important;margin:0 3px 0 -2px !important;padding:0 18px 0 5px !important}.editor .no-horiz-padding a{padding-left:0 !important;padding-right:0 !important}.editor .no-horiz-padding.muted a{color:#989ea4 !important}.editor .no-horiz-padding:not(:first-child) a{margin-left:0 !important}.editor .collapse-results{right:20px;top:20px}.editor .meta-title{line-height:22px}.editor .meta-filter{width:118px;margin-bottom:0}.editor .meta-noresults{font-style:italic}.editor #schedulerEditor .container-fluid,.editor #schedulerEditor .card-heading,.editor #schedulerEditor .card-body{padding:0}.editor #schedulerEditor .dataset-input{width:270px}.editor #schedulerEditor .form-horizontal .control-label{width:100px;text-align:left}.editor #schedulerEditor .form-horizontal .controls{margin-left:110px}.editor #schedulerEditor .workflow-parameter{padding:10px;margin-left:-10px;margin-right:-10px}.editor #schedulerEditor .workflow-parameter:hover{background-color:#f4f5f6}.editor #schedulerEditor .cron-expression-explainer{margin-top:10px;margin-bottom:0}.editor #schedulerEditor .cron-expression-explainer__status{margin-bottom:6px}.editor #schedulerEditor .cron-expression-explainer__status i{margin-right:6px}.editor #schedulerEditor .cron-expression-explainer__status--valid{color:#1f7a1f}.editor #schedulerEditor .cron-expression-explainer__status--invalid{color:#c0392b}.editor #schedulerEditor .cron-expression-explainer__next-runs{margin-top:4px}.editor #schedulerEditor .cron-expression-explainer__next-runs-list{margin:4px 0 0 18px;padding:0}.editor .warning{color:#f96600}.editor .nav-header-like{padding:6px;margin-top:1px;overflow:hidden;font-size:14px;line-height:1.4;color:#0B7FAD;text-overflow:ellipsis;text-shadow:none;background-color:#FFFFFF;border-left:2px solid transparent;-webkit-transition:border .218s;-moz-transition:border .218s;-o-transition:border .218s;transition:border .218s;text-transform:uppercase}.editor .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:9px !important;margin:0 !important;margin-top:3px !important}.editor .mCSB_scrollTools.mCSB_scrollTools_horizontal{margin:0 !important}.editor .mCSB_scrollTools.mCSB_scrollTools_vertical .mCSB_dragger .mCSB_dragger_bar{width:8px !important;margin-left:10px !important}.editor .alert-info-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #e6f7ff 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-blue-050', endColorstr='#00ffffff', GradientType=1)}.editor .alert-success-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #EDF5E2 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-lime-050', endColorstr='#00ffffff', GradientType=1)}.editor .alert-neutral-gradient{border:none;border-left:1px solid #e6f7ff;margin-top:-3px;background:-moz-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #F1EFEF 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-purple-gray-050', endColorstr='#00ffffff', GradientType=1)}.editor .alert-warning{background-color:#fffaed;border:1px solid #ffa319;color:#f96600}.editor .sql-analyzer-container{margin-top:-11px;font-size:15px}.editor .sql-analyzer-icon{display:inline-block;width:16px;height:16px;text-align:center;line-height:16px;font-size:14px;opacity:.8;cursor:pointer}.editor .sql-analyzer-icon.empty{width:1px;cursor:default}.editor .sql-analyzer-icon.idle{color:#adb2b6;cursor:default}.editor .sql-analyzer-icon:hover{opacity:1}.editor .sql-analyzer-icon.success{color:#2c6c08}.editor .sql-analyzer-icon.warning{color:#ffa319}.editor .sql-analyzer-icon.error{color:#e83934}.editor .active .sql-analyzer-icon{opacity:1}.editor .alert-neutral{border:none;margin-top:-3px;background:transparent;margin-bottom:0;padding:0;padding-right:4px;display:inline-block}.editor .alert-empty{border:none;margin-bottom:0;background:transparent;padding-left:4px}.editor .sql-analyzer-explanation{margin-left:4px}.editor .popover{z-index:1030}.editor .close-logs-overlay{position:absolute;top:2px;right:10px;font-size:20px;display:none;background-color:#f4f5f6}.editor .snippet-log-container:hover .close-logs-overlay{display:block}.editor .snippet-error-log{position:relative}.editor .snippet-error-log .clear-container{position:absolute;top:6px;right:6px}.editor .snippet-error-log .clear-container .close{opacity:.5}.editor .snippet-error-log .clear-container .close:hover{opacity:1}.editor .snippet-error-log .clear-container .close::before{border-color:#a60115 !important}.editor .snippet-error-log .clear-container .close::after{border-color:#a60115 !important}.editor .jobs-overlay{background-color:#FFFFFF;opacity:.8;position:absolute;top:10px;right:20px}.editor .jobs-overlay .progress-job{height:2px;margin-bottom:0}.editor .jobs-overlay li{background-color:#FFFFFF;padding:5px}.editor .jobs-overlay li a{margin:6px}.editor .jobs-overlay:hover{opacity:1}.editor .ace-filechooser{border-radius:2px;background-color:#FFFFFF;-webkit-box-shadow:0 2px 8px rgba(0,0,0,0.18);-moz-box-shadow:0 2px 8px rgba(0,0,0,0.18);box-shadow:0 2px 6px 0 rgba(0,0,0,0.18),0 2px 8px 0 rgba(0,0,0,0.13)}.editor .ace-filechooser-content .filechooser-tree{position:relative;margin-right:10px}.editor .ace-filechooser-close{position:absolute;right:10px;top:10px;z-index:1000}.editor .query-name{margin-left:28px}.editor .statement-type-selector>.hue-drop-down-container{margin-left:-100px}.editor .variables .selectize-control{display:inline-block;width:164px}.editor .variables .selectize-input{line-height:19px}.editor .variables .selectize-input input[type="text"]{height:19px}.editor .variables .input-prepend{line-height:0}.editor .variables input:not(:focus)[value=""]{border-color:#f96600}.editor .variables input[type="checkbox"]{margin:12px 0 0 10px}.editor .variables div.selectize-input{padding:5px 23px 6px 8px;text-overflow:ellipsis}.editor .nav-tabs-editor .visible-on-hover{opacity:0;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;transition:opacity .2s ease}.editor .nav-tabs-editor li:hover .visible-on-hover{opacity:1}
\ No newline at end of file
diff --git a/desktop/libs/notebook/src/notebook/static/notebook/css/notebook.css b/desktop/libs/notebook/src/notebook/static/notebook/css/notebook.css
index 4f39880876f..303c9f215ed 100644
--- a/desktop/libs/notebook/src/notebook/static/notebook/css/notebook.css
+++ b/desktop/libs/notebook/src/notebook/static/notebook/css/notebook.css
@@ -14,4 +14,4 @@ distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
- */.notebook .snippet-move-placeholder{margin:10px;height:100px;background-color:#f4f5f6;border:2px dotted #d6d8db}.notebook .snippet-move-helper{margin:10px;background-color:#FFFFFF;border:1px solid #F1EFEF}.notebook .resizer{position:absolute;height:100%;width:4px;cursor:col-resize}.notebook .resize-bar{position:absolute;height:100%;width:2px;background-color:#d6d8db}.notebook .question{margin:10px}.notebook .snippet{padding-bottom:10px;margin-left:10px;margin-right:10px}.notebook .notebook-snippet{border-bottom:1px solid #d6d8db;border-radius:0}.notebook .snippet.editor-mode{border-bottom:none}.notebook .snippet-left-bar{position:absolute;display:inline-block;height:auto;left:0;top:0;bottom:0;width:35px}.notebook .result-body{margin-left:35px;margin-right:20px}.notebook .snippet-body{margin-left:35px;margin-right:20px;z-index:90;min-height:40px}.notebook .snippet-text .snippet-body{min-height:1px}.notebook .snippet-text.card-widget{min-height:1px}.notebook .snippet-body h2{padding-left:0 !important}.notebook .snippet-settings{background-color:#FFFFFF;border-left:1px solid #d6d8db;border-right:1px solid #d6d8db;border-bottom:1px solid #d6d8db;-webkit-box-shadow:0 2px 8px rgba(0,0,0,0.18);-moz-box-shadow:0 2px 8px rgba(0,0,0,0.18);box-shadow:0 2px 6px 0 rgba(0,0,0,0.18),0 2px 8px 0 rgba(0,0,0,0.13)}.notebook .snippet-settings-header>h4{margin:0;padding:10px}.notebook .snippet-settings-body{padding:10px}.notebook .CodeMirror{height:auto}.notebook .card .card-heading.simple{border:none}.notebook .add-snippet{margin:10px;margin-top:60px;margin-bottom:60px}.notebook .add-snippet-button{z-index:300;margin-left:auto;margin-right:auto;width:220px;padding:20px}.notebook .add-snippet-button>i{color:#adb2b6;cursor:pointer}.notebook .select-snippet-button{z-index:500;position:absolute;top:62px;left:62px;width:23px;height:18px;line-height:12px;background-color:#adb2b6;cursor:pointer;border:2px solid #FFFFFF;color:#FFFFFF;border-radius:7px}.notebook .add-snippet-alt{z-index:400;position:absolute;background-color:#0B7FAD;color:#CFD8DC;height:54px;width:54px;border-radius:28px;border:1px solid}.notebook .add-snippet-alt>div{display:table-cell;text-align:center;vertical-align:middle;line-height:14px;width:50px;height:54px;padding-left:2px;font-size:11px}.notebook .snippet-list-alts{margin:0;padding:0;list-style:none}.notebook .snippet-list-alts>li{padding:5px 0 5px 10px;cursor:pointer;color:#333e47;margin-bottom:2px}.notebook .snippet-list-alts>li:hover{padding:5px 0 5px 10px;background-color:#F1EFEF}.notebook .select-snippet-button,.notebook .add-snippet-button>i,.notebook .add-snippet-alt{-webkit-transition:color .3s ease,-webkit-transform .3s;-moz-transition:color .3s ease,-moz-transform .3s;-ms-transition:color .3s ease,-ms-transform .3s;transition:color .3s ease,transform .3s}.notebook .add-snippet-alt:hover{color:#FFFFFF}.notebook .select-snippet-button:hover,.notebook .add-snippet-button>i:hover,.notebook .add-snippet-alt:hover{-webkit-transform:scale(1.3, 1.3);-moz-transform:scale(1.3, 1.3);-ms-transform:scale(1.3, 1.3);transform:scale(1.3, 1.3)}.notebook .spark-btn{border-left:none;border-right:none;width:14px;opacity:.8;border-radius:0}.notebook .spark-btn:hover{opacity:1}.notebook .codeMirror-overlaybtn{position:absolute;margin-top:-30px;margin-left:0;z-index:999}.notebook .nav{margin-bottom:0}.notebook .nav i{line-height:20px !important}.notebook .nav-list>li>a,.notebook .nav-list .nav-header{padding-left:0;margin-left:0;margin-bottom:-7px;margin-top:10px !important}.notebook .result-settings .nav-list .nav-header{margin-bottom:-3px;padding-left:3px}.notebook .result-settings .checkbox{padding-top:0}.notebook .nav-list{padding-left:0}.notebook .dropdown-menu li{font-size:14px}.notebook .dropdown a.dropdown-toggle{padding-left:10px;padding-right:10px}.notebook .search-bar{background-color:#f4f5f6;margin:0;padding:4px 20px 0;text-align:left;width:100%;position:fixed;top:28px;z-index:1000}.notebook .search-bar input{margin-left:10px;padding-right:20px}.notebook .search-bar ul li{text-align:right}.notebook .search-bar ul.dropdown-menu li{text-align:left}.notebook .tab-content{background-color:#FFFFFF;border-left:1px solid #d6d8db;border-right:1px solid #d6d8db}.notebook .editor-help b{font-weight:500}.notebook .editor-help .nav-list>li>a{padding:8px 15px !important;margin-bottom:2px;margin-top:2px !important;margin-left:-15px}.notebook .editor-help .help-list-spacing li{margin-bottom:15px}.notebook .editor-help .tab-content{border:none}.notebook .editor-help .tab-pane>.tab-content{padding:20px 10px;line-height:24px}.notebook .two-pane{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex}.notebook .two-pane .tab-content{-ms-flex:1;-webkit-flex:1;flex:1}.notebook .two-pane-left{-ms-flex:0 0 150px;-webkit-flex:0 0 150px;flex:0 0 150px;border-right:1px solid #f1f2f3;margin-right:10px}.notebook .empty-title{font-weight:normal}.notebook .snippet-icon-image{height:16px;width:16px;-webkit-filter:grayscale(1);-webkit-filter:grayscale(100%);filter:grayscale(100%);-webkit-transition:-webkit-filter .2s ease;-moz-transition:filter .2s ease;-ms-transition:filter .2s ease}.notebook .inactive-action:hover>.snippet-icon-image{-webkit-filter:grayscale(0);filter:grayscale(0)}.notebook .snippet-icon{color:#989ea4;height:16px;width:16px;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;-ms-transition:color .2s ease;transition:color .2s ease}.notebook .inactive-action:hover>.snippet-icon{color:#0B7FAD !important}.notebook .row-container.is-editing{border:none}.notebook .ui-sortable{background-color:#FFFFFF;min-height:0}.notebook .editable-click,.notebook a.editable-click,.notebook a.editable-click:hover{cursor:pointer !important}.notebook .editable-click.editable-disabled,.notebook a.editable-click.editable-disabled,.notebook a.editable-click.editable-disabled:hover{cursor:default !important}.notebook .results table tr td{white-space:nowrap}.notebook [contenteditable]:focus{outline:none}.notebook .snippet-progress-container{height:3px;overflow:hidden;margin-bottom:2px}.notebook .snippet-logs-btn{margin-top:-9px;margin-left:-3px;font-size:20px}.notebook .snippet-execution-status{margin-top:10px;margin-left:35px;margin-right:20px;margin-bottom:4px}.notebook .ace-container-resizable{position:relative;min-height:128px !important}.notebook .ace-editor-resizable{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden !important}.notebook .snippet-code-resizer,.notebook .snippet-log-resizer{border-top:1px solid #d6d8db;cursor:row-resize;text-align:center;font-size:12px;height:8px;margin-bottom:5px;color:#eaebec}.notebook .snippet-code-resizer{margin-left:35px;margin-right:20px}.notebook .snippet-code-resizer>i,.notebook .snippet-log-resizer>i{-ms-transform:scale(1.3, 1);-webkit-transform:scale(1.3, 1);transform:scale(1.3, 1)}.notebook .snippet-log-expander{position:absolute;text-align:center;cursor:pointer;bottom:4px;width:100%}.notebook .snippet-log-expander:hover{background-color:#FFFFFF;opacity:.5}.notebook .snippet-log-container,.notebook .query-history-container{margin-left:35px;margin-right:20px}.notebook .snippet-footer-actions-bar{padding:0 3px;height:29px}.notebook .text-snippet h2{padding-left:0 !important}.notebook .span12.nomargin{margin-left:0}.notebook .show-assist,.notebook .show-assist-right{position:fixed;top:80px;background-color:#FFFFFF;width:16px;height:24px;line-height:24px;text-align:center;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;z-index:1000}.notebook .show-assist{left:8px;margin-left:-2px;-webkit-transition:margin-left .2s linear;-moz-transition:margin-left .2s linear;-ms-transition:margin-left .2s linear;transition:margin-left .2s linear}.notebook .show-assist-right{right:8px;margin-right:-2px;-webkit-transition:margin-right .2s linear;-moz-transition:margin-right .2s linear;-ms-transition:margin-right .2s linear;transition:margin-right .2s linear}.notebook .show-assist:hover{margin-left:0}.notebook .show-assist-right:hover{margin-right:0}.notebook .hide-assist,.notebook .hide-assist-right{position:absolute;top:2px;z-index:1000;color:#989ea4;font-size:12px}.notebook .hide-assist{right:4px;-webkit-transition:margin-right .2s linear,color .5s ease;-moz-transition:margin-right .2s linear,color .5s ease;-ms-transition:margin-right .2s linear,color .5s ease;transition:margin-right .2s linear,color .5s ease}.notebook .hide-assist-right{left:4px;-webkit-transition:margin-left .2s linear,color .5s ease;-moz-transition:margin-left .2s linear,color .5s ease;-ms-transition:margin-left .2s linear,color .5s ease;transition:margin-left .2s linear,color .5s ease}.notebook .hide-assist:hover{margin-right:2px;color:#0B7FAD}.notebook .hide-assist-right:hover{margin-left:2px;color:#0B7FAD}.notebook .logs{padding:9.5px;font-size:11px;height:80px;overflow-y:auto;margin-bottom:0}.notebook h1.empty{margin-top:50px;text-align:center;color:#d6d8db}.notebook .toggle-result-settings{float:left;padding:3px;margin-top:31px;width:10px;text-align:center;cursor:pointer}.notebook .toggle-result-settings .close{margin-right:2px}.notebook .toggle-result-settings .open{margin-left:2px}.notebook .chart-icon{width:15px;text-align:center}.notebook .resize-panel a{cursor:ns-resize;color:#5a656d;position:absolute}.notebook .progress-snippet{background-image:none;box-shadow:none}.notebook .progress-snippet .bar{background-image:none}.notebook .progress .bar{background-repeat:repeat-x}.notebook .progress,.notebook .progress-neutral .bar{background-color:#d6d8db}.notebook .progress .bar{background-color:#FFFFFF}.notebook .progress .bar-info{background-color:#0B7FAD}.notebook .progress-starting .bar{background-color:#0B7FAD}@-webkit-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@-moz-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@-o-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}.notebook .progress-starting{-webkit-animation:pulsate 1s infinite;-moz-animation:pulsate 1s infinite;-o-animation:pulsate 1s infinite;animation:pulsate 1s infinite}.notebook .progress-success .bar,.notebook .progress .bar-success{background-color:#5aa232}.notebook .progress-warning .bar,.notebook .progress .bar-warning{background-color:#ffa319}.notebook .progress-danger .bar,.notebook .progress .bar-danger{background-color:#e83934}.notebook .text-snippet{padding-left:4px}.notebook .medium-editor-toolbar-form label{min-height:20px}.notebook .medium-editor-toolbar-form input[type="checkbox"]{float:left;margin-left:0;margin-right:4px}.notebook .medium-editor-toolbar li button{padding:0 !important;height:40px !important;min-width:40px !important}.notebook .medium-toolbar-arrow-under:after{top:40px !important}.notebook .medium-editor-placeholder:after{padding-left:5px;font-size:13px !important;font-family:Roboto Mono,Menlo,Monaco,Consolas,"Courier New",monospace !important;color:#989ea4 !important;font-style:normal !important}.notebook .card-heading-print{display:none}.notebook .no-underline:hover{text-decoration:none !important}.notebook input[type="text"].filechooser-input{border-right:none;margin-bottom:0}.notebook table.airy tr td{padding:4px}.notebook .ace-filechooser{position:absolute;display:none;z-index:20000;background-color:#FFFFFF;padding:10px;min-width:350px}.notebook .hover-dropdown{display:inline-block;position:relative}.notebook .results.alert-error,.notebook .alert-error-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #f2dede 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-pink-050', endColorstr='#00ffffff', GradientType=1)}.notebook .results-images{border-left:5px solid #d6d8db;background-color:#f4f5f6;padding:5px}.notebook .alert-notebook,.notebook .alert-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #fcf8e3 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-yellow-050', endColorstr='#00ffffff', GradientType=1)}.notebook .hoverMsg{background:#000000;height:100%;left:0;opacity:.5;position:absolute;width:100%;top:0;z-index:10000}.notebook .hoverText{color:#FFFFFF;font-size:5em;position:relative;text-align:center;top:45%;font-weight:700;text-shadow:1px 1px 1px rgba(0,0,0,0.3);-webkit-animation-name:bounceInDown;animation-name:bounceInDown;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.notebook .snippet-row{position:relative;display:block;height:auto;width:100%}.notebook .snippet-footer-actions{padding-left:28px}.notebook .snippet-side-btn{color:#CFD8DC;display:inline-block;line-height:27px;height:27px;min-height:27px;margin:0;font-size:13px;cursor:pointer;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;-ms-transition:color .2s ease;transition:color .2s ease}.notebook .snippet-side-btn.disabled{cursor:default !important;opacity:.5}.notebook .snippet-side-btn:focus{color:#CFD8DC}.notebook .snippet-side-btn.active{color:#0B7FAD}.notebook .snippet-side-btn:hover{color:#0B7FAD}.notebook .snippet-side-single{padding:0 3px}.notebook .execution-timer{color:#989ea4}.notebook .resultTable th{color:#FFFFFF}.notebook .dataTables_wrapper .resultTable th{color:#333e47}.notebook .navbar .editor-nav>li>a{max-width:600px}.notebook .navbar .editor-nav>li>a,.notebook .navbar .editor-nav>li>a:hover{color:#5a656d;cursor:default}.notebook .navbar .editor-nav>li.query-name{font-weight:bold}.notebook .editor-nav .editable-click:hover{border-bottom:dashed 1px #004496}.notebook .editor-nav .editable-click,.notebook .editor-nav a.editable-click{border-bottom:1px solid transparent}.notebook .editable-empty,.notebook .editable-empty:hover{color:#5a656d !important}.notebook h4.header{font-weight:bold;color:#838b92;font-size:14px;text-transform:uppercase;padding-left:4px;border-bottom:1px solid #d6d8db;padding-bottom:3px}.notebook .history-table tbody tr{border-left:2px solid transparent;border-right:2px solid transparent}.notebook .history-table tbody tr td{vertical-align:top}.notebook .history-table tbody tr:hover{border-left:2px solid #DBE8F1;border-right:2px solid #DBE8F1}.notebook .history-table tbody tr:hover td,.notebook .history-table tbody tr:hover th{background-color:#f4f5f6}.notebook .history-table tbody tr.highlight{background-color:#f4f5f6;border-left:2px solid #DBE8F1;border-right:2px solid #DBE8F1}.notebook .history-table .ace-highlight{padding:4px 0}.notebook .ace-highlight .ace_layer{pointer-events:all}.notebook .ace-highlight .ace-hue{background-color:transparent !important}.notebook .ace-highlight .ace_invalid{display:none}.notebook .ace-highlight .ace_line{white-space:normal}.notebook .ace-highlight .ace-highlight-pre{white-space:pre !important}.notebook .history-status{width:20px}.notebook .history-status .fa-check{color:#B4D689}.notebook .history-status .fa-fighter-jet{color:#ffa319}.notebook .table-results table>thead>tr>td:first-child,.notebook .table-results table>tbody>tr>td:first-child{background-color:#f4f5f6}.notebook #helpModal th:first-child{width:25%}.notebook #helpModal th:last-child{width:50%}.notebook #helpModal .tab-content{min-height:310px;max-height:310px}.notebook .tooltip{z-index:3000 !important}.notebook .saveResultsModal .overlay{background:black;opacity:.5;position:absolute;top:0;right:0;left:0;bottom:0;z-index:100}.notebook .saveResultsModal .loader{text-align:center;position:absolute;top:0;right:0;left:0;bottom:0}.notebook .saveResultsModal i.fa-spinner,.notebook .saveResultsModal img.spinner{margin-top:-30px;margin-left:-30px;position:absolute;top:50%;left:50%;z-index:101}.notebook .saveResultsModal i.fa-spinner{font-size:60px;color:#d6d8db}.notebook .notebook-name-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.notebook .notebook-name-input{width:220px}.notebook pre{font-size:11px}.notebook .inline-tab-filter{border-radius:5px !important;min-height:17px !important;height:17px !important;margin:0 3px 0 -2px !important;padding:0 18px 0 5px !important}.notebook .no-horiz-padding a{padding-left:0 !important;padding-right:0 !important}.notebook .no-horiz-padding.muted a{color:#989ea4 !important}.notebook .no-horiz-padding:not(:first-child) a{margin-left:0 !important}.notebook .collapse-results{right:20px;top:20px}.notebook .meta-title{line-height:22px}.notebook .meta-filter{width:118px;margin-bottom:0}.notebook .meta-noresults{font-style:italic}.notebook #schedulerEditor .container-fluid,.notebook #schedulerEditor .card-heading,.notebook #schedulerEditor .card-body{padding:0}.notebook #schedulerEditor .dataset-input{width:270px}.notebook #schedulerEditor .form-horizontal .control-label{width:100px;text-align:left}.notebook #schedulerEditor .form-horizontal .controls{margin-left:110px}.notebook #schedulerEditor .workflow-parameter{padding:10px;margin-left:-10px;margin-right:-10px}.notebook #schedulerEditor .workflow-parameter:hover{background-color:#f4f5f6}.notebook .warning{color:#f96600}.notebook .nav-header-like{padding:6px;margin-top:1px;overflow:hidden;font-size:14px;line-height:1.4;color:#0B7FAD;text-overflow:ellipsis;text-shadow:none;background-color:#FFFFFF;border-left:2px solid transparent;-webkit-transition:border .218s;-moz-transition:border .218s;-o-transition:border .218s;transition:border .218s;text-transform:uppercase}.notebook .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:9px !important;margin:0 !important;margin-top:3px !important}.notebook .mCSB_scrollTools.mCSB_scrollTools_horizontal{margin:0 !important}.notebook .mCSB_scrollTools.mCSB_scrollTools_vertical .mCSB_dragger .mCSB_dragger_bar{width:8px !important;margin-left:10px !important}.notebook .alert-info-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #e6f7ff 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-blue-050', endColorstr='#00ffffff', GradientType=1)}.notebook .alert-success-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #EDF5E2 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-lime-050', endColorstr='#00ffffff', GradientType=1)}.notebook .alert-neutral-gradient{border:none;border-left:1px solid #e6f7ff;margin-top:-3px;background:-moz-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #F1EFEF 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-purple-gray-050', endColorstr='#00ffffff', GradientType=1)}.notebook .alert-warning{background-color:#fffaed;border:1px solid #ffa319;color:#f96600}.notebook .sql-analyzer-container{margin-top:-11px;font-size:15px}.notebook .sql-analyzer-icon{display:inline-block;width:16px;height:16px;text-align:center;line-height:16px;font-size:14px;opacity:.8;cursor:pointer}.notebook .sql-analyzer-icon.empty{width:1px;cursor:default}.notebook .sql-analyzer-icon.idle{color:#adb2b6;cursor:default}.notebook .sql-analyzer-icon:hover{opacity:1}.notebook .sql-analyzer-icon.success{color:#2c6c08}.notebook .sql-analyzer-icon.warning{color:#ffa319}.notebook .sql-analyzer-icon.error{color:#e83934}.notebook .active .sql-analyzer-icon{opacity:1}.notebook .alert-neutral{border:none;margin-top:-3px;background:transparent;margin-bottom:0;padding:0;padding-right:4px;display:inline-block}.notebook .alert-empty{border:none;margin-bottom:0;background:transparent;padding-left:4px}.notebook .sql-analyzer-explanation{margin-left:4px}.notebook .popover{z-index:1030}.notebook .close-logs-overlay{position:absolute;top:2px;right:10px;font-size:20px;display:none;background-color:#f4f5f6}.notebook .snippet-log-container:hover .close-logs-overlay{display:block}.notebook .jobs-overlay{background-color:#FFFFFF;opacity:.8;position:absolute;top:10px;right:20px}.notebook .jobs-overlay .progress-job{height:2px;margin-bottom:0}.notebook .jobs-overlay li{background-color:#FFFFFF;padding:5px}.notebook .jobs-overlay li a{margin:6px}.notebook .jobs-overlay:hover{opacity:1}.notebook .ace-filechooser{border-radius:2px;background-color:#FFFFFF;-webkit-box-shadow:0 2px 8px rgba(0,0,0,0.18);-moz-box-shadow:0 2px 8px rgba(0,0,0,0.18);box-shadow:0 2px 6px 0 rgba(0,0,0,0.18),0 2px 8px 0 rgba(0,0,0,0.13)}.notebook .ace-filechooser-content .filechooser-tree{position:relative;margin-right:10px}.notebook .ace-filechooser-close{position:absolute;right:10px;top:10px;z-index:1000}.notebook .query-name{margin-left:28px}.notebook .statement-type-selector>.hue-drop-down-container{margin-left:-100px}.notebook .variables .selectize-control{display:inline-block;width:164px}.notebook .variables .selectize-input{line-height:19px}.notebook .variables .selectize-input input[type="text"]{height:19px}.notebook .variables .input-prepend{line-height:0}.notebook .variables input:not(:focus)[value=""]{border-color:#f96600}.notebook .variables input[type="checkbox"]{margin:12px 0 0 10px}.notebook .variables div.selectize-input{padding:5px 23px 6px 8px;text-overflow:ellipsis}.notebook .nav-tabs-editor .visible-on-hover{opacity:0;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;transition:opacity .2s ease}.notebook .nav-tabs-editor li:hover .visible-on-hover{opacity:1}
\ No newline at end of file
+ */.notebook .snippet-move-placeholder{margin:10px;height:100px;background-color:#f4f5f6;border:2px dotted #d6d8db}.notebook .snippet-move-helper{margin:10px;background-color:#FFFFFF;border:1px solid #F1EFEF}.notebook .resizer{position:absolute;height:100%;width:4px;cursor:col-resize}.notebook .resize-bar{position:absolute;height:100%;width:2px;background-color:#d6d8db}.notebook .question{margin:10px}.notebook .snippet{padding-bottom:10px;margin-left:10px;margin-right:10px}.notebook .notebook-snippet{border-bottom:1px solid #d6d8db;border-radius:0}.notebook .snippet.editor-mode{border-bottom:none}.notebook .snippet-left-bar{position:absolute;display:inline-block;height:auto;left:0;top:0;bottom:0;width:35px}.notebook .result-body{margin-left:35px;margin-right:20px}.notebook .snippet-body{margin-left:35px;margin-right:20px;z-index:90;min-height:40px}.notebook .snippet-text .snippet-body{min-height:1px}.notebook .snippet-text.card-widget{min-height:1px}.notebook .snippet-body h2{padding-left:0 !important}.notebook .snippet-settings{background-color:#FFFFFF;border-left:1px solid #d6d8db;border-right:1px solid #d6d8db;border-bottom:1px solid #d6d8db;-webkit-box-shadow:0 2px 8px rgba(0,0,0,0.18);-moz-box-shadow:0 2px 8px rgba(0,0,0,0.18);box-shadow:0 2px 6px 0 rgba(0,0,0,0.18),0 2px 8px 0 rgba(0,0,0,0.13)}.notebook .snippet-settings-header>h4{margin:0;padding:10px}.notebook .snippet-settings-body{padding:10px}.notebook .CodeMirror{height:auto}.notebook .card .card-heading.simple{border:none}.notebook .add-snippet{margin:10px;margin-top:60px;margin-bottom:60px}.notebook .add-snippet-button{z-index:300;margin-left:auto;margin-right:auto;width:220px;padding:20px}.notebook .add-snippet-button>i{color:#adb2b6;cursor:pointer}.notebook .select-snippet-button{z-index:500;position:absolute;top:62px;left:62px;width:23px;height:18px;line-height:12px;background-color:#adb2b6;cursor:pointer;border:2px solid #FFFFFF;color:#FFFFFF;border-radius:7px}.notebook .add-snippet-alt{z-index:400;position:absolute;background-color:#0B7FAD;color:#CFD8DC;height:54px;width:54px;border-radius:28px;border:1px solid}.notebook .add-snippet-alt>div{display:table-cell;text-align:center;vertical-align:middle;line-height:14px;width:50px;height:54px;padding-left:2px;font-size:11px}.notebook .snippet-list-alts{margin:0;padding:0;list-style:none}.notebook .snippet-list-alts>li{padding:5px 0 5px 10px;cursor:pointer;color:#333e47;margin-bottom:2px}.notebook .snippet-list-alts>li:hover{padding:5px 0 5px 10px;background-color:#F1EFEF}.notebook .select-snippet-button,.notebook .add-snippet-button>i,.notebook .add-snippet-alt{-webkit-transition:color .3s ease,-webkit-transform .3s;-moz-transition:color .3s ease,-moz-transform .3s;-ms-transition:color .3s ease,-ms-transform .3s;transition:color .3s ease,transform .3s}.notebook .add-snippet-alt:hover{color:#FFFFFF}.notebook .select-snippet-button:hover,.notebook .add-snippet-button>i:hover,.notebook .add-snippet-alt:hover{-webkit-transform:scale(1.3, 1.3);-moz-transform:scale(1.3, 1.3);-ms-transform:scale(1.3, 1.3);transform:scale(1.3, 1.3)}.notebook .spark-btn{border-left:none;border-right:none;width:14px;opacity:.8;border-radius:0}.notebook .spark-btn:hover{opacity:1}.notebook .codeMirror-overlaybtn{position:absolute;margin-top:-30px;margin-left:0;z-index:999}.notebook .nav{margin-bottom:0}.notebook .nav i{line-height:20px !important}.notebook .nav-list>li>a,.notebook .nav-list .nav-header{padding-left:0;margin-left:0;margin-bottom:-7px;margin-top:10px !important}.notebook .result-settings .nav-list .nav-header{margin-bottom:-3px;padding-left:3px}.notebook .result-settings .checkbox{padding-top:0}.notebook .nav-list{padding-left:0}.notebook .dropdown-menu li{font-size:14px}.notebook .dropdown a.dropdown-toggle{padding-left:10px;padding-right:10px}.notebook .search-bar{background-color:#f4f5f6;margin:0;padding:4px 20px 0;text-align:left;width:100%;position:fixed;top:28px;z-index:1000}.notebook .search-bar input{margin-left:10px;padding-right:20px}.notebook .search-bar ul li{text-align:right}.notebook .search-bar ul.dropdown-menu li{text-align:left}.notebook .tab-content{background-color:#FFFFFF;border-left:1px solid #d6d8db;border-right:1px solid #d6d8db}.notebook .editor-help b{font-weight:500}.notebook .editor-help .nav-list>li>a{padding:8px 15px !important;margin-bottom:2px;margin-top:2px !important;margin-left:-15px}.notebook .editor-help .help-list-spacing li{margin-bottom:15px}.notebook .editor-help .tab-content{border:none}.notebook .editor-help .tab-pane>.tab-content{padding:20px 10px;line-height:24px}.notebook .two-pane{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:-ms-flex;display:flex}.notebook .two-pane .tab-content{-ms-flex:1;-webkit-flex:1;flex:1}.notebook .two-pane-left{-ms-flex:0 0 150px;-webkit-flex:0 0 150px;flex:0 0 150px;border-right:1px solid #f1f2f3;margin-right:10px}.notebook .empty-title{font-weight:normal}.notebook .snippet-icon-image{height:16px;width:16px;-webkit-filter:grayscale(1);-webkit-filter:grayscale(100%);filter:grayscale(100%);-webkit-transition:-webkit-filter .2s ease;-moz-transition:filter .2s ease;-ms-transition:filter .2s ease}.notebook .inactive-action:hover>.snippet-icon-image{-webkit-filter:grayscale(0);filter:grayscale(0)}.notebook .snippet-icon{color:#989ea4;height:16px;width:16px;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;-ms-transition:color .2s ease;transition:color .2s ease}.notebook .inactive-action:hover>.snippet-icon{color:#0B7FAD !important}.notebook .row-container.is-editing{border:none}.notebook .ui-sortable{background-color:#FFFFFF;min-height:0}.notebook .editable-click,.notebook a.editable-click,.notebook a.editable-click:hover{cursor:pointer !important}.notebook .editable-click.editable-disabled,.notebook a.editable-click.editable-disabled,.notebook a.editable-click.editable-disabled:hover{cursor:default !important}.notebook .results table tr td{white-space:nowrap}.notebook [contenteditable]:focus{outline:none}.notebook .snippet-progress-container{height:3px;overflow:hidden;margin-bottom:2px}.notebook .snippet-logs-btn{margin-top:-9px;margin-left:-3px;font-size:20px}.notebook .snippet-execution-status{margin-top:10px;margin-left:35px;margin-right:20px;margin-bottom:4px}.notebook .ace-container-resizable{position:relative;min-height:128px !important}.notebook .ace-editor-resizable{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden !important}.notebook .snippet-code-resizer,.notebook .snippet-log-resizer{border-top:1px solid #d6d8db;cursor:row-resize;text-align:center;font-size:12px;height:8px;margin-bottom:5px;color:#eaebec}.notebook .snippet-code-resizer{margin-left:35px;margin-right:20px}.notebook .snippet-code-resizer>i,.notebook .snippet-log-resizer>i{-ms-transform:scale(1.3, 1);-webkit-transform:scale(1.3, 1);transform:scale(1.3, 1)}.notebook .snippet-log-expander{position:absolute;text-align:center;cursor:pointer;bottom:4px;width:100%}.notebook .snippet-log-expander:hover{background-color:#FFFFFF;opacity:.5}.notebook .snippet-log-container,.notebook .query-history-container{margin-left:35px;margin-right:20px}.notebook .snippet-footer-actions-bar{padding:0 3px;height:29px}.notebook .text-snippet h2{padding-left:0 !important}.notebook .span12.nomargin{margin-left:0}.notebook .show-assist,.notebook .show-assist-right{position:fixed;top:80px;background-color:#FFFFFF;width:16px;height:24px;line-height:24px;text-align:center;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;z-index:1000}.notebook .show-assist{left:8px;margin-left:-2px;-webkit-transition:margin-left .2s linear;-moz-transition:margin-left .2s linear;-ms-transition:margin-left .2s linear;transition:margin-left .2s linear}.notebook .show-assist-right{right:8px;margin-right:-2px;-webkit-transition:margin-right .2s linear;-moz-transition:margin-right .2s linear;-ms-transition:margin-right .2s linear;transition:margin-right .2s linear}.notebook .show-assist:hover{margin-left:0}.notebook .show-assist-right:hover{margin-right:0}.notebook .hide-assist,.notebook .hide-assist-right{position:absolute;top:2px;z-index:1000;color:#989ea4;font-size:12px}.notebook .hide-assist{right:4px;-webkit-transition:margin-right .2s linear,color .5s ease;-moz-transition:margin-right .2s linear,color .5s ease;-ms-transition:margin-right .2s linear,color .5s ease;transition:margin-right .2s linear,color .5s ease}.notebook .hide-assist-right{left:4px;-webkit-transition:margin-left .2s linear,color .5s ease;-moz-transition:margin-left .2s linear,color .5s ease;-ms-transition:margin-left .2s linear,color .5s ease;transition:margin-left .2s linear,color .5s ease}.notebook .hide-assist:hover{margin-right:2px;color:#0B7FAD}.notebook .hide-assist-right:hover{margin-left:2px;color:#0B7FAD}.notebook .logs{padding:9.5px;font-size:11px;height:80px;overflow-y:auto;margin-bottom:0}.notebook h1.empty{margin-top:50px;text-align:center;color:#d6d8db}.notebook .toggle-result-settings{float:left;padding:3px;margin-top:31px;width:10px;text-align:center;cursor:pointer}.notebook .toggle-result-settings .close{margin-right:2px}.notebook .toggle-result-settings .open{margin-left:2px}.notebook .chart-icon{width:15px;text-align:center}.notebook .resize-panel a{cursor:ns-resize;color:#5a656d;position:absolute}.notebook .progress-snippet{background-image:none;box-shadow:none}.notebook .progress-snippet .bar{background-image:none}.notebook .progress .bar{background-repeat:repeat-x}.notebook .progress,.notebook .progress-neutral .bar{background-color:#d6d8db}.notebook .progress .bar{background-color:#FFFFFF}.notebook .progress .bar-info{background-color:#0B7FAD}.notebook .progress-starting .bar{background-color:#0B7FAD}@-webkit-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@-moz-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@-o-keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}@keyframes pulsate{0%{margin-left:0}50%{margin-left:30px}100%{margin-left:0}}.notebook .progress-starting{-webkit-animation:pulsate 1s infinite;-moz-animation:pulsate 1s infinite;-o-animation:pulsate 1s infinite;animation:pulsate 1s infinite}.notebook .progress-success .bar,.notebook .progress .bar-success{background-color:#5aa232}.notebook .progress-warning .bar,.notebook .progress .bar-warning{background-color:#ffa319}.notebook .progress-danger .bar,.notebook .progress .bar-danger{background-color:#e83934}.notebook .text-snippet{padding-left:4px}.notebook .medium-editor-toolbar-form label{min-height:20px}.notebook .medium-editor-toolbar-form input[type="checkbox"]{float:left;margin-left:0;margin-right:4px}.notebook .medium-editor-toolbar li button{padding:0 !important;height:40px !important;min-width:40px !important}.notebook .medium-toolbar-arrow-under:after{top:40px !important}.notebook .medium-editor-placeholder:after{padding-left:5px;font-size:13px !important;font-family:Roboto Mono,Menlo,Monaco,Consolas,"Courier New",monospace !important;color:#989ea4 !important;font-style:normal !important}.notebook .card-heading-print{display:none}.notebook .no-underline:hover{text-decoration:none !important}.notebook input[type="text"].filechooser-input{border-right:none;margin-bottom:0}.notebook table.airy tr td{padding:4px}.notebook .ace-filechooser{position:absolute;display:none;z-index:20000;background-color:#FFFFFF;padding:10px;min-width:350px}.notebook .hover-dropdown{display:inline-block;position:relative}.notebook .results.alert-error,.notebook .alert-error-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #f2dede 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #f2dede 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-pink-050', endColorstr='#00ffffff', GradientType=1)}.notebook .results-images{border-left:5px solid #d6d8db;background-color:#f4f5f6;padding:5px}.notebook .alert-notebook,.notebook .alert-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #fcf8e3 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #fcf8e3 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-yellow-050', endColorstr='#00ffffff', GradientType=1)}.notebook .hoverMsg{background:#000000;height:100%;left:0;opacity:.5;position:absolute;width:100%;top:0;z-index:10000}.notebook .hoverText{color:#FFFFFF;font-size:5em;position:relative;text-align:center;top:45%;font-weight:700;text-shadow:1px 1px 1px rgba(0,0,0,0.3);-webkit-animation-name:bounceInDown;animation-name:bounceInDown;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.notebook .snippet-row{position:relative;display:block;height:auto;width:100%}.notebook .snippet-footer-actions{padding-left:28px}.notebook .snippet-side-btn{color:#CFD8DC;display:inline-block;line-height:27px;height:27px;min-height:27px;margin:0;font-size:13px;cursor:pointer;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;-ms-transition:color .2s ease;transition:color .2s ease}.notebook .snippet-side-btn.disabled{cursor:default !important;opacity:.5}.notebook .snippet-side-btn:focus{color:#CFD8DC}.notebook .snippet-side-btn.active{color:#0B7FAD}.notebook .snippet-side-btn:hover{color:#0B7FAD}.notebook .snippet-side-single{padding:0 3px}.notebook .execution-timer{color:#989ea4}.notebook .resultTable th{color:#FFFFFF}.notebook .dataTables_wrapper .resultTable th{color:#333e47}.notebook .navbar .editor-nav>li>a{max-width:600px}.notebook .navbar .editor-nav>li>a,.notebook .navbar .editor-nav>li>a:hover{color:#5a656d;cursor:default}.notebook .navbar .editor-nav>li.query-name{font-weight:bold}.notebook .editor-nav .editable-click:hover{border-bottom:dashed 1px #004496}.notebook .editor-nav .editable-click,.notebook .editor-nav a.editable-click{border-bottom:1px solid transparent}.notebook .editable-empty,.notebook .editable-empty:hover{color:#5a656d !important}.notebook h4.header{font-weight:bold;color:#838b92;font-size:14px;text-transform:uppercase;padding-left:4px;border-bottom:1px solid #d6d8db;padding-bottom:3px}.notebook .history-table tbody tr{border-left:2px solid transparent;border-right:2px solid transparent}.notebook .history-table tbody tr td{vertical-align:top}.notebook .history-table tbody tr:hover{border-left:2px solid #DBE8F1;border-right:2px solid #DBE8F1}.notebook .history-table tbody tr:hover td,.notebook .history-table tbody tr:hover th{background-color:#f4f5f6}.notebook .history-table tbody tr.highlight{background-color:#f4f5f6;border-left:2px solid #DBE8F1;border-right:2px solid #DBE8F1}.notebook .history-table .ace-highlight{padding:4px 0}.notebook .ace-highlight .ace_layer{pointer-events:all}.notebook .ace-highlight .ace-hue{background-color:transparent !important}.notebook .ace-highlight .ace_invalid{display:none}.notebook .ace-highlight .ace_line{white-space:normal}.notebook .ace-highlight .ace-highlight-pre{white-space:pre !important}.notebook .history-status{width:20px}.notebook .history-status .fa-check{color:#B4D689}.notebook .history-status .fa-fighter-jet{color:#ffa319}.notebook .table-results table>thead>tr>td:first-child,.notebook .table-results table>tbody>tr>td:first-child{background-color:#f4f5f6}.notebook #helpModal th:first-child{width:25%}.notebook #helpModal th:last-child{width:50%}.notebook #helpModal .tab-content{min-height:310px;max-height:310px}.notebook .tooltip{z-index:3000 !important}.notebook .saveResultsModal .overlay{background:black;opacity:.5;position:absolute;top:0;right:0;left:0;bottom:0;z-index:100}.notebook .saveResultsModal .loader{text-align:center;position:absolute;top:0;right:0;left:0;bottom:0}.notebook .saveResultsModal i.fa-spinner,.notebook .saveResultsModal img.spinner{margin-top:-30px;margin-left:-30px;position:absolute;top:50%;left:50%;z-index:101}.notebook .saveResultsModal i.fa-spinner{font-size:60px;color:#d6d8db}.notebook .notebook-name-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.notebook .notebook-name-input{width:220px}.notebook pre{font-size:11px}.notebook .inline-tab-filter{border-radius:5px !important;min-height:17px !important;height:17px !important;margin:0 3px 0 -2px !important;padding:0 18px 0 5px !important}.notebook .no-horiz-padding a{padding-left:0 !important;padding-right:0 !important}.notebook .no-horiz-padding.muted a{color:#989ea4 !important}.notebook .no-horiz-padding:not(:first-child) a{margin-left:0 !important}.notebook .collapse-results{right:20px;top:20px}.notebook .meta-title{line-height:22px}.notebook .meta-filter{width:118px;margin-bottom:0}.notebook .meta-noresults{font-style:italic}.notebook #schedulerEditor .container-fluid,.notebook #schedulerEditor .card-heading,.notebook #schedulerEditor .card-body{padding:0}.notebook #schedulerEditor .dataset-input{width:270px}.notebook #schedulerEditor .form-horizontal .control-label{width:100px;text-align:left}.notebook #schedulerEditor .form-horizontal .controls{margin-left:110px}.notebook #schedulerEditor .workflow-parameter{padding:10px;margin-left:-10px;margin-right:-10px}.notebook #schedulerEditor .workflow-parameter:hover{background-color:#f4f5f6}.notebook #schedulerEditor .cron-expression-explainer{margin-top:10px;margin-bottom:0}.notebook #schedulerEditor .cron-expression-explainer__status{margin-bottom:6px}.notebook #schedulerEditor .cron-expression-explainer__status i{margin-right:6px}.notebook #schedulerEditor .cron-expression-explainer__status--valid{color:#1f7a1f}.notebook #schedulerEditor .cron-expression-explainer__status--invalid{color:#c0392b}.notebook #schedulerEditor .cron-expression-explainer__next-runs{margin-top:4px}.notebook #schedulerEditor .cron-expression-explainer__next-runs-list{margin:4px 0 0 18px;padding:0}.notebook .warning{color:#f96600}.notebook .nav-header-like{padding:6px;margin-top:1px;overflow:hidden;font-size:14px;line-height:1.4;color:#0B7FAD;text-overflow:ellipsis;text-shadow:none;background-color:#FFFFFF;border-left:2px solid transparent;-webkit-transition:border .218s;-moz-transition:border .218s;-o-transition:border .218s;transition:border .218s;text-transform:uppercase}.notebook .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:9px !important;margin:0 !important;margin-top:3px !important}.notebook .mCSB_scrollTools.mCSB_scrollTools_horizontal{margin:0 !important}.notebook .mCSB_scrollTools.mCSB_scrollTools_vertical .mCSB_dragger .mCSB_dragger_bar{width:8px !important;margin-left:10px !important}.notebook .alert-info-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #e6f7ff 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #e6f7ff 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-blue-050', endColorstr='#00ffffff', GradientType=1)}.notebook .alert-success-gradient{border:none;margin-top:-3px;background:-moz-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #EDF5E2 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #EDF5E2 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-lime-050', endColorstr='#00ffffff', GradientType=1)}.notebook .alert-neutral-gradient{border:none;border-left:1px solid #e6f7ff;margin-top:-3px;background:-moz-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-webkit-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, #F1EFEF 0, rgba(255,255,255,0) 100%);background:linear-gradient(to right, #F1EFEF 0, rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@cui-purple-gray-050', endColorstr='#00ffffff', GradientType=1)}.notebook .alert-warning{background-color:#fffaed;border:1px solid #ffa319;color:#f96600}.notebook .sql-analyzer-container{margin-top:-11px;font-size:15px}.notebook .sql-analyzer-icon{display:inline-block;width:16px;height:16px;text-align:center;line-height:16px;font-size:14px;opacity:.8;cursor:pointer}.notebook .sql-analyzer-icon.empty{width:1px;cursor:default}.notebook .sql-analyzer-icon.idle{color:#adb2b6;cursor:default}.notebook .sql-analyzer-icon:hover{opacity:1}.notebook .sql-analyzer-icon.success{color:#2c6c08}.notebook .sql-analyzer-icon.warning{color:#ffa319}.notebook .sql-analyzer-icon.error{color:#e83934}.notebook .active .sql-analyzer-icon{opacity:1}.notebook .alert-neutral{border:none;margin-top:-3px;background:transparent;margin-bottom:0;padding:0;padding-right:4px;display:inline-block}.notebook .alert-empty{border:none;margin-bottom:0;background:transparent;padding-left:4px}.notebook .sql-analyzer-explanation{margin-left:4px}.notebook .popover{z-index:1030}.notebook .close-logs-overlay{position:absolute;top:2px;right:10px;font-size:20px;display:none;background-color:#f4f5f6}.notebook .snippet-log-container:hover .close-logs-overlay{display:block}.notebook .jobs-overlay{background-color:#FFFFFF;opacity:.8;position:absolute;top:10px;right:20px}.notebook .jobs-overlay .progress-job{height:2px;margin-bottom:0}.notebook .jobs-overlay li{background-color:#FFFFFF;padding:5px}.notebook .jobs-overlay li a{margin:6px}.notebook .jobs-overlay:hover{opacity:1}.notebook .ace-filechooser{border-radius:2px;background-color:#FFFFFF;-webkit-box-shadow:0 2px 8px rgba(0,0,0,0.18);-moz-box-shadow:0 2px 8px rgba(0,0,0,0.18);box-shadow:0 2px 6px 0 rgba(0,0,0,0.18),0 2px 8px 0 rgba(0,0,0,0.13)}.notebook .ace-filechooser-content .filechooser-tree{position:relative;margin-right:10px}.notebook .ace-filechooser-close{position:absolute;right:10px;top:10px;z-index:1000}.notebook .query-name{margin-left:28px}.notebook .statement-type-selector>.hue-drop-down-container{margin-left:-100px}.notebook .variables .selectize-control{display:inline-block;width:164px}.notebook .variables .selectize-input{line-height:19px}.notebook .variables .selectize-input input[type="text"]{height:19px}.notebook .variables .input-prepend{line-height:0}.notebook .variables input:not(:focus)[value=""]{border-color:#f96600}.notebook .variables input[type="checkbox"]{margin:12px 0 0 10px}.notebook .variables div.selectize-input{padding:5px 23px 6px 8px;text-overflow:ellipsis}.notebook .nav-tabs-editor .visible-on-hover{opacity:0;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;transition:opacity .2s ease}.notebook .nav-tabs-editor li:hover .visible-on-hover{opacity:1}
\ No newline at end of file
diff --git a/desktop/libs/notebook/src/notebook/static/notebook/less/editor2.less b/desktop/libs/notebook/src/notebook/static/notebook/less/editor2.less
index 9e404f18150..bc148bc69c8 100644
--- a/desktop/libs/notebook/src/notebook/static/notebook/less/editor2.less
+++ b/desktop/libs/notebook/src/notebook/static/notebook/less/editor2.less
@@ -1353,6 +1353,36 @@
background-color: @cui-gray-050;
}
+ #schedulerEditor .cron-expression-explainer {
+ margin-top: 10px;
+ margin-bottom: 0;
+ }
+
+ #schedulerEditor .cron-expression-explainer__status {
+ margin-bottom: 6px;
+ }
+
+ #schedulerEditor .cron-expression-explainer__status i {
+ margin-right: 6px;
+ }
+
+ #schedulerEditor .cron-expression-explainer__status--valid {
+ color: #1f7a1f;
+ }
+
+ #schedulerEditor .cron-expression-explainer__status--invalid {
+ color: #c0392b;
+ }
+
+ #schedulerEditor .cron-expression-explainer__next-runs {
+ margin-top: 4px;
+ }
+
+ #schedulerEditor .cron-expression-explainer__next-runs-list {
+ margin: 4px 0 0 18px;
+ padding: 0;
+ }
+
.warning {
color: @state-warning-text;
}
diff --git a/desktop/libs/notebook/src/notebook/static/notebook/less/notebook.less b/desktop/libs/notebook/src/notebook/static/notebook/less/notebook.less
index dc9a957b6b8..7672d12a56a 100644
--- a/desktop/libs/notebook/src/notebook/static/notebook/less/notebook.less
+++ b/desktop/libs/notebook/src/notebook/static/notebook/less/notebook.less
@@ -1113,6 +1113,36 @@
background-color: @cui-gray-050;
}
+ #schedulerEditor .cron-expression-explainer {
+ margin-top: 10px;
+ margin-bottom: 0;
+ }
+
+ #schedulerEditor .cron-expression-explainer__status {
+ margin-bottom: 6px;
+ }
+
+ #schedulerEditor .cron-expression-explainer__status i {
+ margin-right: 6px;
+ }
+
+ #schedulerEditor .cron-expression-explainer__status--valid {
+ color: #1f7a1f;
+ }
+
+ #schedulerEditor .cron-expression-explainer__status--invalid {
+ color: #c0392b;
+ }
+
+ #schedulerEditor .cron-expression-explainer__next-runs {
+ margin-top: 4px;
+ }
+
+ #schedulerEditor .cron-expression-explainer__next-runs-list {
+ margin: 4px 0 0 18px;
+ padding: 0;
+ }
+
.warning {
color: @state-warning-text;
}
diff --git a/package-lock.json b/package-lock.json
index 2cb7067cc2f..f1a85f1633a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,6 +19,8 @@
"clipboard": "1.7.1",
"copy-to-clipboard": "3.3.3",
"core-js": "3.19.1",
+ "cron-parser": "^5.6.1",
+ "cronstrue": "^3.24.0",
"cuix": "file:desktop/core/src/desktop/static/desktop/ext/cuix/cuix-13.4.1.tgz",
"d3v3": "1.0.3",
"diff": "5.1.0",
@@ -324,6 +326,7 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.8.tgz",
"integrity": "sha512-6AWcmZC/MZCO0yKys4uhg5NlxL0ESF3K6IAaoQ+xSXvPyPyxNWRafP+GDbI88Oh68O7QkJgmEtedWPM9U0pZNg==",
"dev": true,
+ "peer": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.24.7",
@@ -2347,6 +2350,7 @@
"url": "https://opencollective.com/csstools"
}
],
+ "peer": true,
"engines": {
"node": "^14 || ^16 || >=18"
},
@@ -2369,6 +2373,7 @@
"url": "https://opencollective.com/csstools"
}
],
+ "peer": true,
"engines": {
"node": "^14 || ^16 || >=18"
}
@@ -2455,6 +2460,7 @@
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.1.0.tgz",
"integrity": "sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==",
+ "peer": true,
"dependencies": {
"@dnd-kit/accessibility": "^3.1.0",
"@dnd-kit/utilities": "^3.2.2",
@@ -3175,6 +3181,7 @@
"resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
"integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
"dev": true,
+ "peer": true,
"dependencies": {
"@jest/environment": "^29.7.0",
"@jest/expect": "^29.7.0",
@@ -3859,7 +3866,6 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "peer": true,
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -3875,7 +3881,6 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
- "peer": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -3892,7 +3897,6 @@
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "peer": true,
"dependencies": {
"color-name": "~1.1.4"
},
@@ -3904,15 +3908,13 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/@testing-library/dom/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=8"
}
@@ -3922,7 +3924,6 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
- "peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -4101,8 +4102,7 @@
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
"integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/@types/babel__core": {
"version": "7.20.5",
@@ -4151,18 +4151,6 @@
"integrity": "sha512-RWVEhh/zGXpAVF/ZChwNnv7r4rvqzJ7lYNSmZSVTxjV0PBLf6Qu7RNg+SUtkpzxmiNkjCx0Xn2tPp7FIkshJwQ==",
"dev": true
},
- "node_modules/@types/eslint": {
- "version": "8.21.2",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.2.tgz",
- "integrity": "sha512-EMpxUyystd3uZVByZap1DACsMXvb82ypQnGn89e1Y0a+LYu3JJscUd/gqhRsVFDkaD2MIiWo0MT8EfXr3DGRKw==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
- }
- },
"node_modules/@types/estree": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
@@ -4231,6 +4219,7 @@
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz",
"integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==",
"dev": true,
+ "peer": true,
"dependencies": {
"expect": "^29.0.0",
"pretty-format": "^29.0.0"
@@ -4348,14 +4337,6 @@
"integrity": "sha512-TmCW5HoZ2o2/z2EYi109jLqIaPIi9y/lc2LmDCWzuCi35bcaQ+OtUh6nwBiFK7SOu25FAU5+YKdqFZUwtqGSdg==",
"dev": true
},
- "node_modules/@types/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
- "dev": true,
- "optional": true,
- "peer": true
- },
"node_modules/@types/prop-types": {
"version": "15.7.5",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
@@ -4371,6 +4352,7 @@
"version": "18.0.20",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.20.tgz",
"integrity": "sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA==",
+ "peer": true,
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -4382,6 +4364,7 @@
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz",
"integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==",
"dev": true,
+ "peer": true,
"dependencies": {
"@types/react": "*"
}
@@ -4477,6 +4460,7 @@
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.0.tgz",
"integrity": "sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw==",
"dev": true,
+ "peer": true,
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "7.16.0",
@@ -4510,6 +4494,7 @@
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.16.0.tgz",
"integrity": "sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw==",
"dev": true,
+ "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "7.16.0",
"@typescript-eslint/types": "7.16.0",
@@ -5103,6 +5088,7 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true,
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -5155,6 +5141,7 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -5636,6 +5623,7 @@
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
"integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
"dev": true,
+ "peer": true,
"dependencies": {
"@jest/transform": "^29.7.0",
"@types/babel__core": "^7.1.14",
@@ -5883,23 +5871,6 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/babel-plugin-macros": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
- "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "@babel/runtime": "^7.12.5",
- "cosmiconfig": "^7.0.0",
- "resolve": "^1.19.0"
- },
- "engines": {
- "node": ">=10",
- "npm": ">=6"
- }
- },
"node_modules/babel-plugin-module-resolver": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.2.tgz",
@@ -6146,6 +6117,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001629",
"electron-to-chromium": "^1.4.796",
@@ -6702,24 +6674,6 @@
"url": "https://opencollective.com/core-js"
}
},
- "node_modules/cosmiconfig": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
- "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "@types/parse-json": "^4.0.0",
- "import-fresh": "^3.2.1",
- "parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.10.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/create-jest": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
@@ -6811,6 +6765,36 @@
"node": ">=8"
}
},
+ "node_modules/cron-parser": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-5.6.1.tgz",
+ "integrity": "sha512-QBm4o1PwZiuY7KFbVvW7FLC8bozy7YWzv+Fz6KRS7sQghzcbDZCGxr/Bc5b6TQreAoSwuWVP491dIcK0THCX6A==",
+ "license": "MIT",
+ "dependencies": {
+ "luxon": "^3.7.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cron-parser/node_modules/luxon": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz",
+ "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cronstrue": {
+ "version": "3.24.0",
+ "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-3.24.0.tgz",
+ "integrity": "sha512-t/Ji3Ur2c/pzhIAWNwC0ftl3JAE4dLfCjAdZoTZXmPDZwcispnS1PaMcMS4OmIIXyIVouAz+yw+mfQiE3hz5OQ==",
+ "license": "MIT",
+ "bin": {
+ "cronstrue": "bin/cli.js"
+ }
+ },
"node_modules/cross-fetch": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
@@ -7384,8 +7368,7 @@
"version": "0.5.16",
"resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
"integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/dom-align": {
"version": "1.12.3",
@@ -7982,6 +7965,7 @@
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
"integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
"dev": true,
+ "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
@@ -8037,6 +8021,7 @@
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
"integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
"dev": true,
+ "peer": true,
"bin": {
"eslint-config-prettier": "bin/cli.js"
},
@@ -10125,6 +10110,7 @@
"url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
}
],
+ "peer": true,
"dependencies": {
"@babel/runtime": "^7.17.2"
}
@@ -11138,6 +11124,7 @@
"resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
"integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
"dev": true,
+ "peer": true,
"dependencies": {
"@jest/core": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -13403,7 +13390,8 @@
"node_modules/jquery": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
- "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg=="
+ "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==",
+ "peer": true
},
"node_modules/jquery-contextmenu": {
"version": "2.9.2",
@@ -13545,6 +13533,7 @@
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
"integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
"devOptional": true,
+ "peer": true,
"engines": {
"node": ">=14"
}
@@ -13750,7 +13739,8 @@
"node_modules/knockout": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/knockout/-/knockout-3.5.1.tgz",
- "integrity": "sha512-wRJ9I4az0QcsH7A4v4l0enUpkS++MBx0BnL/68KaLzJg7x1qmbjSlwEoCNol7KTYZ+pmtI7Eh2J0Nu6/2Z5J/Q=="
+ "integrity": "sha512-wRJ9I4az0QcsH7A4v4l0enUpkS++MBx0BnL/68KaLzJg7x1qmbjSlwEoCNol7KTYZ+pmtI7Eh2J0Nu6/2Z5J/Q==",
+ "peer": true
},
"node_modules/knockout-sortable": {
"version": "1.2.0",
@@ -14194,7 +14184,6 @@
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
"integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
"dev": true,
- "peer": true,
"bin": {
"lz-string": "bin/bin.js"
}
@@ -15451,6 +15440,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "peer": true,
"dependencies": {
"nanoid": "^3.3.7",
"picocolors": "^1.1.0",
@@ -15609,6 +15599,7 @@
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz",
"integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==",
"dev": true,
+ "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -15627,6 +15618,7 @@
"version": "10.11.0",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.11.0.tgz",
"integrity": "sha512-Fk6+vB2kb6mSJfDgODq0YDhMfl0HNtK5+Uc9QqECO4nlyPAQwCI+BKyWO//idA7ikV7o+0Fm6LQmNuQi1wXI1w==",
+ "peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
@@ -15646,6 +15638,7 @@
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
"integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
"dev": true,
+ "peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -15673,7 +15666,6 @@
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
"integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
"dev": true,
- "peer": true,
"dependencies": {
"ansi-regex": "^5.0.1",
"ansi-styles": "^5.0.0",
@@ -15688,7 +15680,6 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
- "peer": true,
"engines": {
"node": ">=10"
},
@@ -16475,6 +16466,7 @@
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
"integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0"
},
@@ -16486,6 +16478,7 @@
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
"integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.0"
@@ -16581,8 +16574,7 @@
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "dev": true,
- "peer": true
+ "dev": true
},
"node_modules/react-joyride": {
"version": "2.7.0",
@@ -17244,6 +17236,7 @@
"resolved": "https://registry.npmjs.org/sass/-/sass-1.34.0.tgz",
"integrity": "sha512-rHEN0BscqjUYuomUEaqq3BMgsXqQfkcMVR7UhscsAVub0/spUrZGBMxQXFS2kfiDsPLZw5yuU9iJEFNC2x38Qw==",
"dev": true,
+ "peer": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0"
},
@@ -17339,6 +17332,7 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true,
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -18112,6 +18106,7 @@
"url": "https://github.com/sponsors/stylelint"
}
],
+ "peer": true,
"dependencies": {
"@csstools/css-parser-algorithms": "^2.7.1",
"@csstools/css-tokenizer": "^2.4.1",
@@ -19194,6 +19189,7 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz",
"integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==",
"dev": true,
+ "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -19820,6 +19816,7 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.2.0.tgz",
"integrity": "sha512-eMo5yCdkWRmBfqp/acBI/Y1Omgk0NyGqPViaU66eOpKarXNtkdImzDA57+E76jnWVr6MEp/rg1n0vnxaVvALMQ==",
+ "peer": true,
"dependencies": {
"@vue/compiler-dom": "3.2.0",
"@vue/runtime-dom": "3.2.0",
@@ -20089,6 +20086,7 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
"integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
"dev": true,
+ "peer": true,
"dependencies": {
"@types/estree": "^1.0.5",
"@webassemblyjs/ast": "^1.12.1",
@@ -20226,6 +20224,7 @@
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
"integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
"dev": true,
+ "peer": true,
"dependencies": {
"@discoveryjs/json-ext": "^0.5.0",
"@webpack-cli/configtest": "^2.1.1",
@@ -20314,6 +20313,7 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz",
"integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==",
"dev": true,
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -20701,17 +20701,6 @@
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
},
- "node_modules/yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true,
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
diff --git a/package.json b/package.json
index 829ed62b2ef..5e686f6a90d 100644
--- a/package.json
+++ b/package.json
@@ -40,6 +40,8 @@
"clipboard": "1.7.1",
"copy-to-clipboard": "3.3.3",
"core-js": "3.19.1",
+ "cron-parser": "^5.6.1",
+ "cronstrue": "^3.24.0",
"cuix": "file:desktop/core/src/desktop/static/desktop/ext/cuix/cuix-13.4.1.tgz",
"d3v3": "1.0.3",
"diff": "5.1.0",
@@ -166,17 +168,17 @@
},
"scripts": {
"devinstall": "npm cache clean && npm install && npm prune",
- "webpack": "webpack --config webpack.config.js",
- "webpack-login": "webpack --config webpack.config.login.js",
- "webpack-workers": "webpack --config webpack.config.workers.js",
- "webpack-npm": "webpack --config webpack.config.npm.js",
+ "webpack": "node ./node_modules/webpack/bin/webpack.js --config webpack.config.js",
+ "webpack-login": "node ./node_modules/webpack/bin/webpack.js --config webpack.config.login.js",
+ "webpack-workers": "node ./node_modules/webpack/bin/webpack.js --config webpack.config.workers.js",
+ "webpack-npm": "node ./node_modules/webpack/bin/webpack.js --config webpack.config.npm.js",
"publish-gethue": "make sql-all-parsers && npm run webpack-npm && cd npm_dist && npm publish",
- "dev": "webpack --watch --config webpack.config.js -d eval",
- "dev-login": "webpack --config webpack.config.login.js --watch -d eval",
- "dev-workers": "webpack --config webpack.config.workers.js --watch -d eval",
- "dev-webpack-npm": "webpack --config webpack.config.npm.js --watch -d eval",
- "less": "./node_modules/.bin/grunt less",
- "less-dev": "./node_modules/.bin/grunt watch",
+ "dev": "node ./node_modules/webpack/bin/webpack.js --watch --config webpack.config.js -d eval",
+ "dev-login": "node ./node_modules/webpack/bin/webpack.js --config webpack.config.login.js --watch -d eval",
+ "dev-workers": "node ./node_modules/webpack/bin/webpack.js --config webpack.config.workers.js --watch -d eval",
+ "dev-webpack-npm": "node ./node_modules/webpack/bin/webpack.js --config webpack.config.npm.js --watch -d eval",
+ "less": "node ./node_modules/grunt/bin/grunt less",
+ "less-dev": "node ./node_modules/grunt/bin/grunt watch",
"style-lint": "stylelint \"desktop/core/src/desktop/static/desktop/less/**/*.less\" \"desktop/core/src/desktop/js/**/*.scss\"",
"style-lint-fix": "npm run style-lint -- --fix",
"lint-vue-template": "vti diagnostics",