@aquera/nile-elements 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +8 -0
  2. package/demo/index.html +108 -94
  3. package/dist/nile-code-editor/extensionSetup.cjs.js.map +1 -1
  4. package/dist/nile-code-editor/nile-code-editor.cjs.js +1 -1
  5. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  6. package/dist/nile-code-editor/nile-code-editor.esm.js +2 -2
  7. package/dist/nile-drawer/nile-drawer.css.cjs.js +1 -1
  8. package/dist/nile-drawer/nile-drawer.css.cjs.js.map +1 -1
  9. package/dist/nile-drawer/nile-drawer.css.esm.js +1 -1
  10. package/dist/nile-form-help-text/nile-form-help-text.cjs.js +1 -1
  11. package/dist/nile-form-help-text/nile-form-help-text.cjs.js.map +1 -1
  12. package/dist/nile-form-help-text/nile-form-help-text.esm.js +2 -2
  13. package/dist/nile-tour/nile-tour.cjs.js +1 -1
  14. package/dist/nile-tour/nile-tour.cjs.js.map +1 -1
  15. package/dist/nile-tour/nile-tour.css.cjs.js +1 -1
  16. package/dist/nile-tour/nile-tour.css.cjs.js.map +1 -1
  17. package/dist/nile-tour/nile-tour.css.esm.js +112 -23
  18. package/dist/nile-tour/nile-tour.esm.js +1 -1
  19. package/dist/src/nile-code-editor/extensionSetup.d.ts +8 -9
  20. package/dist/src/nile-code-editor/extensionSetup.js +0 -13
  21. package/dist/src/nile-code-editor/extensionSetup.js.map +1 -1
  22. package/dist/src/nile-code-editor/nile-code-editor.d.ts +19 -0
  23. package/dist/src/nile-code-editor/nile-code-editor.js +61 -2
  24. package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
  25. package/dist/src/nile-drawer/nile-drawer.css.js +1 -1
  26. package/dist/src/nile-drawer/nile-drawer.css.js.map +1 -1
  27. package/dist/src/nile-form-help-text/nile-form-help-text.js +32 -2
  28. package/dist/src/nile-form-help-text/nile-form-help-text.js.map +1 -1
  29. package/dist/src/nile-tour/nile-tour.css.js +110 -21
  30. package/dist/src/nile-tour/nile-tour.css.js.map +1 -1
  31. package/dist/src/nile-tour/nile-tour.d.ts +1 -1
  32. package/dist/src/nile-tour/nile-tour.js +23 -5
  33. package/dist/src/nile-tour/nile-tour.js.map +1 -1
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/package.json +1 -1
  36. package/src/nile-code-editor/extensionSetup.ts +8 -23
  37. package/src/nile-code-editor/nile-code-editor.ts +59 -3
  38. package/src/nile-drawer/nile-drawer.css.ts +1 -1
  39. package/src/nile-form-help-text/nile-form-help-text.ts +37 -3
  40. package/src/nile-tour/nile-tour.css.ts +110 -21
  41. package/src/nile-tour/nile-tour.ts +25 -6
  42. package/vscode-html-custom-data.json +7 -3
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent nile-elements following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "nile-elements",
6
- "version": "0.1.2",
6
+ "version": "0.1.4",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
@@ -30,6 +30,14 @@ import {
30
30
 
31
31
  import { lintKeymap } from '@codemirror/lint';
32
32
 
33
+ export interface MinimalSetupOptions {
34
+ highlightSpecialChars?: boolean;
35
+ history?: boolean;
36
+ drawSelection?: boolean;
37
+ syntaxHighlighting?: boolean;
38
+ defaultKeymap?: boolean;
39
+ historyKeymap?: boolean;
40
+ }
33
41
  export interface BasicSetupOptions extends MinimalSetupOptions {
34
42
  lineNumbers?: boolean;
35
43
  highlightActiveLineGutter?: boolean;
@@ -91,27 +99,4 @@ export const basicSetup = (options: BasicSetupOptions = {}): Extension[] => {
91
99
  return extensions.concat([keymap.of(keymaps.flat())]).filter(Boolean);
92
100
  };
93
101
 
94
- export interface MinimalSetupOptions {
95
- highlightSpecialChars?: boolean;
96
- history?: boolean;
97
- drawSelection?: boolean;
98
- syntaxHighlighting?: boolean;
99
- defaultKeymap?: boolean;
100
- historyKeymap?: boolean;
101
- }
102
102
 
103
- export const minimalSetup = (options: MinimalSetupOptions = {}) => {
104
- let keymaps: KeyBinding[] = [];
105
- isValidSetup(options.defaultKeymap) && keymaps.push(...defaultKeymap);
106
- isValidSetup(options.historyKeymap) && keymaps.push(...historyKeymap);
107
- const extensions: Extension[] = [];
108
- isValidSetup(options.highlightSpecialChars) &&
109
- extensions.push(highlightSpecialChars());
110
- isValidSetup(options.history) && extensions.push(history());
111
- isValidSetup(options.drawSelection) && extensions.push(drawSelection());
112
- isValidSetup(options.syntaxHighlighting) &&
113
- extensions.push(
114
- syntaxHighlighting(defaultHighlightStyle, { fallback: true })
115
- );
116
- return extensions.concat([keymap.of(keymaps.flat())]).filter(Boolean);
117
- };
@@ -36,7 +36,6 @@ import { basicSetup } from './extensionSetup';
36
36
  import { classMap } from 'lit/directives/class-map.js';
37
37
  import { Theme } from './theme';
38
38
 
39
- const TIME_OUT_DURATION=200;
40
39
  // Choose the appropriate mode for your use case
41
40
 
42
41
  /**
@@ -84,6 +83,8 @@ export class NileCodeEditor extends NileElement {
84
83
 
85
84
  @property({ type: Boolean, reflect: true , attribute: true}) debounce: boolean = false;
86
85
 
86
+ @property({ type: Number, reflect: true , attribute: true}) debounceTimeout: number = 200;
87
+
87
88
  public view: EditorView;
88
89
  public viewState:EditorState;
89
90
  private timeOut: any = null;
@@ -254,7 +255,11 @@ export class NileCodeEditor extends NileElement {
254
255
  });
255
256
  return this.viewState
256
257
  }
257
-
258
+ /**
259
+ * Custom autocomplete handler for code editor suggestions
260
+ * @param context CompletionContext from CodeMirror
261
+ * @returns CompletionResult with suggestions or null if no suggestions
262
+ */
258
263
  customAutocomplete = (context: CompletionContext): CompletionResult | null => {
259
264
  // Getting the valid last line, last text from the code editor
260
265
  const text = context.state.doc.sliceString(0, context.pos);
@@ -265,6 +270,13 @@ export class NileCodeEditor extends NileElement {
265
270
  || this.getTopLevelSuggestions(context, textBeforeCursor);
266
271
  };
267
272
 
273
+ /**
274
+ * Gets nested property suggestions based on the current path
275
+ * @param context CompletionContext from CodeMirror
276
+ * @param textBeforeCursor Text before cursor position
277
+ * @param baseTextAfterSeperation Text after the last separator (. or [)
278
+ * @returns CompletionResult with nested suggestions or null
279
+ */
268
280
  getNestedSuggestions(context: CompletionContext, textBeforeCursor: string, baseTextAfterSeperation: string) {
269
281
  // Return early if not a valid path or not ending with . or [
270
282
  if (!isValidPath(textBeforeCursor) || !['.', '['].includes(textBeforeCursor.at(-1)!)) {
@@ -307,6 +319,12 @@ export class NileCodeEditor extends NileElement {
307
319
  };
308
320
  }
309
321
 
322
+ /**
323
+ * Gets top level suggestions based on custom completions and paths
324
+ * @param context CompletionContext from CodeMirror
325
+ * @param textBeforeCursor Text before cursor position
326
+ * @returns CompletionResult with top level suggestions or null
327
+ */
310
328
  getTopLevelSuggestions(context: CompletionContext,textBeforeCursor:string){
311
329
  const baseMatch: any = textBeforeCursor.match(/([a-zA-Z_$][\w$]*)$/);
312
330
  if (!baseMatch) return null;
@@ -342,7 +360,7 @@ export class NileCodeEditor extends NileElement {
342
360
 
343
361
  emitAfterTimeout(value:any){
344
362
  if(this.timeOut) clearTimeout(this.timeOut);
345
- this.timeOut=setTimeout(()=> this.emit('nile-change', value, false), TIME_OUT_DURATION)
363
+ this.timeOut=setTimeout(()=> this.emit('nile-change', value, false), this.debounceTimeout)
346
364
  }
347
365
 
348
366
  public insertBetweenCode=(text: string) => {
@@ -413,6 +431,14 @@ declare global {
413
431
  }
414
432
  }
415
433
 
434
+ /**
435
+ * Parses a string path into an array of keys representing nested object access
436
+ * @param text The path string to parse (e.g. "foo.bar[0].baz")
437
+ * @returns Array of keys if valid path, null otherwise
438
+ * @example
439
+ * parsePath("foo.bar[0]") // returns ["foo", "bar", "0"]
440
+ * parsePath("invalid") // returns null
441
+ */
416
442
  function parsePath(text: string) {
417
443
  const regex = /([a-zA-Z_$][\w$]*)(\[(?:[^\]]+)\]|\.[a-zA-Z_$][\w$]*)*/g;
418
444
  const matches = [...text.matchAll(regex)];
@@ -433,12 +459,27 @@ function parsePath(text: string) {
433
459
  return null;
434
460
  };
435
461
 
462
+ /**
463
+ * Splits a path string at the last separator (. or [)
464
+ * @param input The path string to split
465
+ * @returns Array containing [path up to last separator, remainder after separator]
466
+ * @example
467
+ * splitStringAtLastSeparator("foo.bar[0]") // returns ["foo.bar[", "0"]
468
+ */
436
469
  function splitStringAtLastSeparator(input:string) {
437
470
  const lastSeparatorIndex = Math.max(input.lastIndexOf('.'), input.lastIndexOf('['));
438
471
  if (lastSeparatorIndex === -1) return [input, ''];
439
472
  return [input.slice(0, lastSeparatorIndex + 1), input.slice(lastSeparatorIndex + 1)];
440
473
  }
441
474
 
475
+ /**
476
+ * Traverses an object using an array of keys to access nested properties
477
+ * @param obj The object to traverse
478
+ * @param keys Array of keys defining the path to the desired property
479
+ * @returns The value at the specified path, or null if path is invalid
480
+ * @example
481
+ * resolveNestedProperties({foo: {bar: 123}}, ["foo", "bar"]) // returns 123
482
+ */
442
483
  function resolveNestedProperties (obj:any, keys:any[]){
443
484
  return keys.reduce((acc, key) => {
444
485
  if (acc && typeof acc === 'object') {
@@ -448,6 +489,14 @@ function resolveNestedProperties (obj:any, keys:any[]){
448
489
  }, obj);
449
490
  };
450
491
 
492
+ /**
493
+ * Validates if a string represents a valid object path format
494
+ * @param path The path string to validate
495
+ * @returns Boolean indicating if path format is valid
496
+ * @example
497
+ * isValidPath("foo.bar[0]") // returns true
498
+ * isValidPath("foo..bar") // returns false
499
+ */
451
500
  function isValidPath(path: string) {
452
501
  // Regex to validate the format of the string
453
502
  const regex = /^([a-zA-Z_$][\w$]*)(\.[a-zA-Z_$][\w$]*|\[\s*(['"]?[a-zA-Z0-9_$]*['"]?)\s*\])*([\.\[])?$/;
@@ -455,6 +504,13 @@ function isValidPath(path: string) {
455
504
  return regex.test(path);
456
505
  }
457
506
 
507
+ /**
508
+ * Converts multi-line code into a single line by removing line breaks and extra whitespace
509
+ * @param code The code string to convert
510
+ * @returns Single line version of the code
511
+ * @example
512
+ * convertToSingleLine("foo\n bar") // returns "foo bar"
513
+ */
458
514
  function convertToSingleLine(code: string) {
459
515
  if (!code) return '';
460
516
  // Remove line breaks and unnecessary whitespace
@@ -125,7 +125,7 @@ export const styles = css`
125
125
  display: flex;
126
126
  flex-wrap: wrap;
127
127
  justify-content: end;
128
- gap: 0.25rem;
128
+ gap: 0.5rem;
129
129
  padding: 0 var(--header-spacing);
130
130
  }
131
131
 
@@ -58,8 +58,15 @@ export class NileFormHelpText extends LitElement {
58
58
  this.updateDisplayedText()
59
59
  }
60
60
 
61
- updateDisplayedText(){
62
- this.displayedText = this.isExpanded ? this.fullText : `${this.fullText.substring(0, this.textLimit)}...`;
61
+ updateDisplayedText() {
62
+ if (this.isExpanded) {
63
+ this.displayedText = this.fullText;
64
+ } else {
65
+ const validConcatNumber=concatSentence(this.fullText, this.textLimit)
66
+ const truncatedText = this.fullText.slice(0, validConcatNumber);
67
+ const ellipsis = this.fullText.length > validConcatNumber ? '...' : '';
68
+ this.displayedText = `${truncatedText}${ellipsis}`;
69
+ }
63
70
  }
64
71
 
65
72
  /* #endregion */
@@ -71,7 +78,7 @@ export class NileFormHelpText extends LitElement {
71
78
  * @slot This is a slot test
72
79
  */
73
80
  public render(): TemplateResult {
74
- const showMoreButton = this.fullText.length > this.textLimit+3;
81
+ const showMoreButton = this.fullText.length > this.textLimit;
75
82
  const iconName = this.isExpanded ? 'arrowup' : 'arrowdown';
76
83
 
77
84
  return html`
@@ -101,3 +108,30 @@ declare global {
101
108
  'nile-form-help-text': NileFormHelpText;
102
109
  }
103
110
  }
111
+
112
+ function concatSentence(sentence:string, n:number) {
113
+ if (n < 0 || n > sentence.length) {
114
+ throw new Error("Invalid value of n. It must be between 0 and the sentence length.");
115
+ }
116
+
117
+ // Adjust n if it falls in the middle of a word
118
+ if (sentence[n] !== " " && n !== 0 && n !== sentence.length) {
119
+ // Move left until the start of the word or the beginning of the sentence
120
+ let left = n;
121
+ while (left > 0 && sentence[left - 1] !== " ") {
122
+ left--;
123
+ }
124
+
125
+ // Move right until the end of the word or the end of the sentence
126
+ let right = n;
127
+ while (right < sentence.length && sentence[right] !== " ") {
128
+ right++;
129
+ }
130
+
131
+ // Adjust n to the closer boundary
132
+ n = (n - left <= right - n) ? left : right;
133
+ }
134
+
135
+ // Return the substring from the start to the adjusted n
136
+ return n;
137
+ }
@@ -15,34 +15,99 @@ export const styles = css`
15
15
  }
16
16
 
17
17
  .introjs-tooltip {
18
- background-color: var(--nile-tour-background-color, #000);
18
+ background-color: var(--nile-tour-background-color, #fff);
19
19
  color: var(--nile-tour-text-color, #fff);
20
20
  width: 300px;
21
21
  max-width: 300px;
22
+ border-radius: 4px;
23
+ border: 1px solid var(--Neutral-30, #c7ced4);
24
+ background: var(--White-Normal, #fff);
25
+
26
+ /* Elevation/Lifted */
27
+ box-shadow: 0px 4px 8px 0px rgba(119, 125, 130, 0.15);
22
28
  }
23
29
 
24
- .introjs-arrow.bottom {
25
- border-top-color: var(--nile-tour-background-color, #000);
30
+ .introjs-tooltip-title {
31
+ color: #000;
32
+ font-size: 16px;
33
+ font-style: normal;
34
+ font-weight: 500;
35
+ line-height: 16px;
36
+ letter-spacing: 0.2px;
37
+ }
38
+
39
+ .introjs-tooltip-header {
40
+ padding-left: 18px;
41
+ padding-right: 18px;
42
+ padding-top: 18px;
43
+ }
44
+
45
+ .introjs-tooltiptext {
46
+ color: #7f7f7f;
47
+ font-size: 14px;
48
+ font-style: normal;
49
+ font-weight: 400;
50
+ line-height: 20px;
51
+ letter-spacing: 0.2px;
52
+ padding: 15px 18px;
53
+ }
54
+
55
+ .introjs-arrow {
56
+ width: 15px;
57
+ height: 20px;
58
+ background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="15" height="20" viewBox="0 0 15 20" fill="none"%3E%3Cpath d="M1.43333 11.2C0.633333 10.6 0.633333 9.4 1.43333 8.8L12.1 0.800001C13.0889 0.0583585 14.5 0.763931 14.5 2L14.5 18C14.5 19.2361 13.0889 19.9416 12.1 19.2L1.43333 11.2Z" fill="white" stroke="%23C7CED4"/%3E%3C/svg%3E');
59
+ background-repeat: no-repeat;
60
+ background-size: contain;
61
+ background-position: center;
62
+ position: absolute;
63
+ border: none;
64
+ content: none;
26
65
  }
27
66
 
28
67
  .introjs-arrow.top {
29
- border-bottom-color: var(--nile-tour-background-color, #000);
68
+ top: -14.5px;
69
+ transform: rotate(90deg);
70
+ clip-path: inset(0px 3px 0px 0px);
71
+ }
72
+
73
+ .introjs-arrow.bottom {
74
+ bottom: -14.5px;
75
+ transform: rotate(270deg);
76
+ clip-path: inset(0px 3px 0px 0px);
30
77
  }
31
78
 
32
79
  .introjs-arrow.left {
33
- border-right-color: var(--nile-tour-background-color, #000);
80
+ left: -11.5px;
81
+ transform: rotate(0);
82
+ clip-path: inset(0px 3px 0px 0px);
34
83
  }
35
84
 
36
85
  .introjs-arrow.right {
37
- border-left-color: var(--nile-tour-background-color, #000);
86
+ right: -12px;
87
+ transform: rotate(180deg);
88
+ clip-path: inset(0px 3px 0px 0px);
38
89
  }
39
90
 
40
91
  .introjs-arrow.left-bottom {
41
- border-right-color: var(--nile-tour-background-color, #000) !important;
92
+ transform: rotate(0);
93
+ clip-path: inset(0px 1px 0px 0px);
94
+ left: -13.5px;
95
+ border-right-color: var(--nile-tour-background-color, #fff) !important;
42
96
  }
43
97
 
44
98
  .introjs-arrow.right-bottom {
45
- border-left-color: var(--nile-tour-background-color, #000) !important;
99
+ right: -12px;
100
+ transform: rotate(180deg);
101
+ clip-path: inset(0px 3px 0px 0px);
102
+ border-left-color: var(--nile-tour-background-color, #fff) !important;
103
+ }
104
+
105
+ .introjs-arrow.top-middle {
106
+ top: -14px;
107
+ left: 50%;
108
+ margin-left: -5px;
109
+ transform: rotate(90deg);
110
+ clip-path: inset(0px 3px 0px 0px);
46
111
  }
47
112
 
48
113
  .introjs-button {
@@ -53,26 +118,46 @@ export const styles = css`
53
118
  padding: 0;
54
119
  cursor: pointer;
55
120
  text-shadow: none;
56
- background: transparent;
121
+ background: var(--Primary-Normal, #005ea6);
57
122
  border-color: transparent;
123
+ display: flex;
124
+ padding: 12px;
125
+ align-items: center;
126
+ gap: 12px;
127
+ border-radius: 4px;
58
128
  }
59
129
 
60
130
  .introjs-button:hover {
61
- outline: 0;
62
- text-decoration: none;
131
+ background: none;
132
+ border: none;
133
+ color: var(--nile-tour-text-color, #fff);
134
+ font-size: 14px;
135
+ padding: 0;
136
+ cursor: pointer;
137
+ text-shadow: none;
138
+ background: var(--Primary-Normal, #005ea6);
63
139
  border-color: transparent;
64
- background: transparent;
65
- color: white;
140
+ display: flex;
141
+ padding: 12px;
142
+ align-items: center;
143
+ gap: 12px;
66
144
  }
67
145
 
68
146
  .introjs-button:focus {
69
- outline: 0;
70
- text-decoration: none;
71
- border-color: transparent;
72
- background: transparent;
73
- color: white;
147
+ background: none;
74
148
  border: none;
149
+ color: var(--nile-tour-text-color, #fff);
150
+ font-size: 14px;
151
+ padding: 0;
152
+ cursor: pointer;
153
+ text-shadow: none;
75
154
  box-shadow: none;
155
+ background: var(--Primary-Normal, #005ea6);
156
+ border-color: transparent;
157
+ display: flex;
158
+ padding: 12px;
159
+ align-items: center;
160
+ gap: 12px;
76
161
  }
77
162
 
78
163
  .introjs-tooltipbuttons {
@@ -109,12 +194,16 @@ export const styles = css`
109
194
  }
110
195
 
111
196
  .introjs-step-counter {
112
- margin-right: auto; /* Push buttons to the opposite side */
197
+ margin-right: auto;
113
198
  font-size: 14px;
114
- color: #ffffff;
115
199
  padding: 0 10px;
116
200
  display: flex;
117
201
  align-items: center;
202
+ color: var(--Color-Text-Info, #1978B8);
203
+ font-style: normal;
204
+ font-weight: 400;
205
+ line-height: 14px;
206
+ letter-spacing: 0.2px;
118
207
  }
119
208
 
120
209
  @keyframes shake {
@@ -136,7 +225,7 @@ export const styles = css`
136
225
  }
137
226
 
138
227
  .introjs-shake {
139
- animation: shake 0.5s ease infinite; /* Repeats continuously */
228
+ animation: shake 0.5s ease infinite;
140
229
  }
141
230
  `;
142
231
 
@@ -28,7 +28,7 @@ export class NileTour extends LitElement {
28
28
  element: string;
29
29
  title: string;
30
30
  content: string;
31
- position: "top" | "left" | "right" | "bottom";
31
+ position: any;
32
32
  beforeChange?: () => Promise<boolean> | boolean;
33
33
  afterChange?: () => Promise<void> | void;
34
34
  }> = [];
@@ -101,13 +101,13 @@ export class NileTour extends LitElement {
101
101
  position: step.position,
102
102
  beforeChange: step.beforeChange,
103
103
  afterChange: step.afterChange,
104
- }))
105
- .filter((step) => step.element !== null);
104
+ }));
105
+ // .filter((step) => step.element !== null);
106
106
 
107
107
  this.tourInstance = introJs().setOptions({
108
108
  steps: introSteps,
109
- nextLabel: "<button class='introjs-button introjs-next-button'>Next</button>",
110
- prevLabel: "<button class='introjs-button introjs-prev-button'>Prev</button>",
109
+ nextLabel: "Next",
110
+ prevLabel: "Prev",
111
111
  overlayOpacity: 0,
112
112
  disableInteraction: this.disableInteraction,
113
113
  showButtons: true,
@@ -157,7 +157,26 @@ export class NileTour extends LitElement {
157
157
  }
158
158
  });
159
159
 
160
- this.tourInstance.start();
160
+
161
+
162
+ this.tourInstance.start().then(() => {
163
+ const currentStep = this.tourInstance?._currentStep ?? 0;
164
+ const totalSteps = this.steps.length;
165
+ const tooltip = document.querySelector('.introjs-tooltip');
166
+ if (tooltip) {
167
+ const navBar = tooltip.querySelector('.introjs-tooltipbuttons');
168
+ if (navBar) {
169
+ let stepCounter = navBar.querySelector('.introjs-step-counter') as HTMLElement;
170
+ if (!stepCounter) {
171
+ stepCounter = document.createElement('div');
172
+ stepCounter.className = 'introjs-step-counter';
173
+ navBar.insertBefore(stepCounter, navBar.firstChild);
174
+ }
175
+ stepCounter.textContent = `${currentStep + 1} of ${totalSteps}`;
176
+ }
177
+ } }).catch(err => {
178
+ console.error('Error starting the tour:', err);
179
+ });
161
180
  }
162
181
 
163
182
  private shakeTooltip(): void {
@@ -726,7 +726,7 @@
726
726
  },
727
727
  {
728
728
  "name": "nile-code-editor",
729
- "description": "Nile icon component.\n\nEvents:\n\n * `nile-focus` {`Event`} - \n\n * `nile-blur` {`Event`} - \n\nAttributes:\n\n * `value` {`string`} - \n\n * `expandIcon` {`string`} - \n\n * `placeholder` {`string`} - \n\n * `customAutoCompletions` - \n\n * `customCompletionsPaths` {`string[]`} - \n\n * `language` {`\"html\" | \"javascript\" | \"sql\" | \"json\"`} - \n\n * `error-message` {`string`} - \n\n * `error` {`boolean`} - \n\n * `noborder` {`boolean`} - \n\n * `multiline` {`boolean`} - \n\n * `allowVariableInCustomSuggestion` {`boolean`} - \n\n * `lineNumbers` {`boolean`} - \n\n * `lineNumbersMultiline` {`boolean`} - \n\n * `hasScroller` {`boolean`} - \n\n * `expandable` {`boolean`} - \n\n * `readonly` {`boolean`} - \n\n * `debounce` {`boolean`} - \n\nProperties:\n\n * `codeEditor` {`HTMLInputElement`} - \n\n * `value` {`string`} - \n\n * `expandIcon` {`string`} - \n\n * `placeholder` {`string`} - \n\n * `customAutoCompletions` - \n\n * `customCompletionsPaths` {`string[]`} - \n\n * `language` {`\"html\" | \"javascript\" | \"sql\" | \"json\"`} - \n\n * `errorMessage` {`string`} - \n\n * `error` {`boolean`} - \n\n * `noborder` {`boolean`} - \n\n * `multiline` {`boolean`} - \n\n * `allowVariableInCustomSuggestion` {`boolean`} - \n\n * `lineNumbers` {`boolean`} - \n\n * `lineNumbersMultiline` {`boolean`} - \n\n * `hasScroller` {`boolean`} - \n\n * `expandable` {`boolean`} - \n\n * `readonly` {`boolean`} - \n\n * `debounce` {`boolean`} - \n\n * `view` - \n\n * `viewState` - \n\n * `timeOut` - \n\n * `lineNumbersComp` - \n\n * `restrictSingleLineComp` - \n\n * `readOnlyComp` - \n\n * `customCompletionComp` - \n\n * `placeholderComp` - \n\n * `customAutocomplete` - \n\n * `insertBetweenCode` - \n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
729
+ "description": "Nile icon component.\n\nEvents:\n\n * `nile-focus` {`Event`} - \n\n * `nile-blur` {`Event`} - \n\nAttributes:\n\n * `value` {`string`} - \n\n * `expandIcon` {`string`} - \n\n * `placeholder` {`string`} - \n\n * `customAutoCompletions` - \n\n * `customCompletionsPaths` {`string[]`} - \n\n * `language` {`\"html\" | \"javascript\" | \"sql\" | \"json\"`} - \n\n * `error-message` {`string`} - \n\n * `error` {`boolean`} - \n\n * `noborder` {`boolean`} - \n\n * `multiline` {`boolean`} - \n\n * `allowVariableInCustomSuggestion` {`boolean`} - \n\n * `lineNumbers` {`boolean`} - \n\n * `lineNumbersMultiline` {`boolean`} - \n\n * `hasScroller` {`boolean`} - \n\n * `expandable` {`boolean`} - \n\n * `readonly` {`boolean`} - \n\n * `debounce` {`boolean`} - \n\n * `debounceTimeout` {`number`} - \n\nProperties:\n\n * `codeEditor` {`HTMLInputElement`} - \n\n * `value` {`string`} - \n\n * `expandIcon` {`string`} - \n\n * `placeholder` {`string`} - \n\n * `customAutoCompletions` - \n\n * `customCompletionsPaths` {`string[]`} - \n\n * `language` {`\"html\" | \"javascript\" | \"sql\" | \"json\"`} - \n\n * `errorMessage` {`string`} - \n\n * `error` {`boolean`} - \n\n * `noborder` {`boolean`} - \n\n * `multiline` {`boolean`} - \n\n * `allowVariableInCustomSuggestion` {`boolean`} - \n\n * `lineNumbers` {`boolean`} - \n\n * `lineNumbersMultiline` {`boolean`} - \n\n * `hasScroller` {`boolean`} - \n\n * `expandable` {`boolean`} - \n\n * `readonly` {`boolean`} - \n\n * `debounce` {`boolean`} - \n\n * `debounceTimeout` {`number`} - \n\n * `view` - \n\n * `viewState` - \n\n * `timeOut` - \n\n * `lineNumbersComp` - \n\n * `restrictSingleLineComp` - \n\n * `readOnlyComp` - \n\n * `customCompletionComp` - \n\n * `placeholderComp` - \n\n * `customAutocomplete` - Custom autocomplete handler for code editor suggestions\n\n * `insertBetweenCode` - \n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
730
730
  "attributes": [
731
731
  {
732
732
  "name": "value",
@@ -820,6 +820,10 @@
820
820
  "description": "`debounce` {`boolean`} - \n\nProperty: debounce\n\nDefault: false",
821
821
  "valueSet": "v"
822
822
  },
823
+ {
824
+ "name": "debounceTimeout",
825
+ "description": "`debounceTimeout` {`number`} - \n\nProperty: debounceTimeout\n\nDefault: 200"
826
+ },
823
827
  {
824
828
  "name": "onnile-focus",
825
829
  "description": "`nile-focus` {`Event`} - "
@@ -3762,11 +3766,11 @@
3762
3766
  },
3763
3767
  {
3764
3768
  "name": "nile-tour",
3765
- "description": "Nile tour component.\n\nAttributes:\n\n * `steps` {`{ stepNo: number; element: string; title: string; content: string; position: \"top\" | \"bottom\" | \"right\" | \"left\"; beforeChange?: (() => boolean | Promise<boolean>) | undefined; afterChange?: (() => void | Promise<...>) | undefined; }[]`} - The steps for the tour.\n\n * `stepsJson` {`string`} - JSON string for steps.\n\n * `showBackdrop` {`boolean`} - Whether to show the backdrop overlay.\n\n * `disableInteraction` {`boolean`} - Whether to disable interaction during the tour.\n\nProperties:\n\n * `tourInstance` - \n\n * `steps` {`{ stepNo: number; element: string; title: string; content: string; position: \"top\" | \"bottom\" | \"right\" | \"left\"; beforeChange?: (() => boolean | Promise<boolean>) | undefined; afterChange?: (() => void | Promise<...>) | undefined; }[]`} - The steps for the tour.\n\n * `stepsJson` {`string`} - JSON string for steps.\n\n * `showBackdrop` {`boolean`} - Whether to show the backdrop overlay.\n\n * `disableInteraction` {`boolean`} - Whether to disable interaction during the tour.",
3769
+ "description": "Nile tour component.\n\nAttributes:\n\n * `steps` {`{ stepNo: number; element: string; title: string; content: string; position: any; beforeChange?: (() => boolean | Promise<boolean>) | undefined; afterChange?: (() => void | Promise<void>) | undefined; }[]`} - The steps for the tour.\n\n * `stepsJson` {`string`} - JSON string for steps.\n\n * `showBackdrop` {`boolean`} - Whether to show the backdrop overlay.\n\n * `disableInteraction` {`boolean`} - Whether to disable interaction during the tour.\n\nProperties:\n\n * `tourInstance` - \n\n * `steps` {`{ stepNo: number; element: string; title: string; content: string; position: any; beforeChange?: (() => boolean | Promise<boolean>) | undefined; afterChange?: (() => void | Promise<void>) | undefined; }[]`} - The steps for the tour.\n\n * `stepsJson` {`string`} - JSON string for steps.\n\n * `showBackdrop` {`boolean`} - Whether to show the backdrop overlay.\n\n * `disableInteraction` {`boolean`} - Whether to disable interaction during the tour.",
3766
3770
  "attributes": [
3767
3771
  {
3768
3772
  "name": "steps",
3769
- "description": "`steps` {`{ stepNo: number; element: string; title: string; content: string; position: \"top\" | \"bottom\" | \"right\" | \"left\"; beforeChange?: (() => boolean | Promise<boolean>) | undefined; afterChange?: (() => void | Promise<...>) | undefined; }[]`} - The steps for the tour.\n\nProperty: steps\n\nDefault: "
3773
+ "description": "`steps` {`{ stepNo: number; element: string; title: string; content: string; position: any; beforeChange?: (() => boolean | Promise<boolean>) | undefined; afterChange?: (() => void | Promise<void>) | undefined; }[]`} - The steps for the tour.\n\nProperty: steps\n\nDefault: "
3770
3774
  },
3771
3775
  {
3772
3776
  "name": "stepsJson",