@cortezaproject/corteza-vue 2024.9.6-dev.1 → 2024.9.6-dev.2

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 (32) hide show
  1. package/dist/index.cjs +274 -90
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +274 -90
  4. package/dist/index.js.map +1 -1
  5. package/package.json +3 -2
  6. package/dist/components/c3/C3.d.ts +0 -5
  7. package/dist/components/filePreview/common/index.d.ts +0 -2
  8. package/dist/components/filePreview/common/types/PDF/helpers.d.ts +0 -53
  9. package/dist/components/filePreview/common/types/index.d.ts +0 -3
  10. package/dist/components/input/CRichTextInput/RToolbar/TMark/loader.d.ts +0 -10
  11. package/dist/components/input/CRichTextInput/RToolbar/TNode/loader.d.ts +0 -6
  12. package/dist/components/input/CRichTextInput/RToolbar/TNodeAttr/loader.d.ts +0 -6
  13. package/dist/components/input/CRichTextInput/RToolbar/loader.d.ts +0 -9
  14. package/dist/components/input/CRichTextInput/extensions/heading.d.ts +0 -12
  15. package/dist/components/input/CRichTextInput/extensions/htmlPaster.d.ts +0 -4
  16. package/dist/components/input/CRichTextInput/extensions/index.d.ts +0 -6
  17. package/dist/components/input/CRichTextInput/extensions/link.d.ts +0 -6
  18. package/dist/components/input/CRichTextInput/extensions/paragraph.d.ts +0 -9
  19. package/dist/components/input/CRichTextInput/extensions/textBackground.d.ts +0 -23
  20. package/dist/components/input/CRichTextInput/extensions/textColor.d.ts +0 -23
  21. package/dist/components/input/CRichTextInput/extensions/utils.d.ts +0 -15
  22. package/dist/components/input/CRichTextInput/lib/formats.d.ts +0 -85
  23. package/dist/components/input/CRichTextInput/lib/index.d.ts +0 -1
  24. package/dist/components/itemPicker/C3.d.ts +0 -1
  25. package/dist/components/itemPicker/CItemPicker.c3.d.ts +0 -32
  26. package/dist/components/toaster/actions/index.d.ts +0 -3
  27. package/dist/mixins/corredor.d.ts +0 -49
  28. package/dist/mixins/files.d.ts +0 -19
  29. package/dist/mixins/vue-select-position.d.ts +0 -11
  30. package/dist/node_modules/@tiptap/pm/state/index.d.ts +0 -1
  31. package/dist/plugins/reminder.d.ts +0 -66
  32. package/dist/plugins/settings.d.ts +0 -27
package/dist/index.js CHANGED
@@ -8559,8 +8559,6 @@ const __vue_script__$16 = script$16;
8559
8559
  //
8560
8560
  //
8561
8561
  //
8562
- //
8563
- //
8564
8562
 
8565
8563
 
8566
8564
  var script$15 = {
@@ -8585,12 +8583,6 @@ var script$15 = {
8585
8583
  }
8586
8584
  },
8587
8585
 
8588
- computed: {
8589
- typeStyle () {
8590
- return `${this.format.type}-icon`
8591
- },
8592
- },
8593
-
8594
8586
  methods: {
8595
8587
  getComputedColor (cssVar) {
8596
8588
  try {
@@ -8623,24 +8615,22 @@ var script$15 = {
8623
8615
  const __vue_script__$15 = script$15;
8624
8616
 
8625
8617
  /* template */
8626
- var __vue_render__$12 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-button',{staticClass:"text-dark font-weight-bold text-decoration-none",attrs:{"id":("color-popover-" + (_vm.format.type)),"variant":"link"},on:{"click":function($event){$event.stopPropagation();$event.preventDefault();return _vm.showPicker.apply(null, arguments)}}},[_c('span',{staticClass:"icon",class:_vm.typeStyle,style:({
8618
+ var __vue_render__$12 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-button',{staticClass:"text-dark font-weight-bold text-decoration-none mb-1",attrs:{"id":("color-popover-" + (_vm.format.type)),"variant":"link"},on:{"click":function($event){$event.stopPropagation();$event.preventDefault();return _vm.showPicker.apply(null, arguments)}}},[_c('span',{style:({
8627
8619
  backgroundColor: _vm.background ? _vm.selectedColor : 'transparent',
8628
- borderColor: _vm.background ? 'transparent' : _vm.selectedColor,
8620
+ 'border-bottom': _vm.background ? 'none' : ("2px solid " + _vm.selectedColor),
8629
8621
  })},[_vm._v("\n A\n ")])]),_vm._v(" "),_c('c-input-color-picker',{ref:"picker",staticClass:"d-none",attrs:{"value":_vm.selectedColor,"default-value":_vm.getDefaultColor(),"show-text":false,"width":'0px',"height":'0px'},on:{"input":_vm.applyFromPicker}})],1)};
8630
8622
  var __vue_staticRenderFns__$12 = [];
8631
8623
 
8632
8624
  /* style */
8633
- const __vue_inject_styles__$16 = function (inject) {
8634
- if (!inject) return
8635
- inject("data-v-f18be530_0", { source: ".icon[data-v-f18be530]{padding:0 2px}.icon.color-icon[data-v-f18be530]{border-bottom:2px solid var(--dark)}.icon.background-icon[data-v-f18be530]{padding:2px 3px}", map: undefined, media: undefined });
8636
-
8637
- };
8625
+ const __vue_inject_styles__$16 = undefined;
8638
8626
  /* scoped */
8639
- const __vue_scope_id__$16 = "data-v-f18be530";
8627
+ const __vue_scope_id__$16 = undefined;
8640
8628
  /* module identifier */
8641
8629
  const __vue_module_identifier__$16 = undefined;
8642
8630
  /* functional template */
8643
8631
  const __vue_is_functional_template__$16 = false;
8632
+ /* style inject */
8633
+
8644
8634
  /* style inject SSR */
8645
8635
 
8646
8636
  /* style inject shadow dom */
@@ -8655,7 +8645,7 @@ var __vue_staticRenderFns__$12 = [];
8655
8645
  __vue_is_functional_template__$16,
8656
8646
  __vue_module_identifier__$16,
8657
8647
  false,
8658
- createInjector);
8648
+ undefined);
8659
8649
 
8660
8650
  //
8661
8651
  //
@@ -9075,11 +9065,11 @@ var suggestion = {
9075
9065
  }
9076
9066
  });
9077
9067
  };
9078
- popup.addEventListener('click', function (event) {
9079
- return handleSelection(event);
9068
+ popup.addEventListener('click', function () {
9069
+ return handleSelection;
9080
9070
  });
9081
- popup.addEventListener('mouseup', function (event) {
9082
- return handleSelection(event);
9071
+ popup.addEventListener('mouseup', function () {
9072
+ return handleSelection;
9083
9073
  });
9084
9074
  popperInstance = createPopper(virtualElement, popup, {
9085
9075
  placement: 'bottom-start',
@@ -10272,6 +10262,9 @@ var __vue_staticRenderFns__$V = [];
10272
10262
  //
10273
10263
  //
10274
10264
  //
10265
+ //
10266
+ //
10267
+ //
10275
10268
 
10276
10269
 
10277
10270
  library.add(faExpandAlt);
@@ -10292,9 +10285,9 @@ var script$W = {
10292
10285
  default: 'text',
10293
10286
  },
10294
10287
 
10295
- height: {
10288
+ minHeight: {
10296
10289
  type: String,
10297
- default: '80',
10290
+ default: '2.35rem',
10298
10291
  },
10299
10292
 
10300
10293
  showLineNumbers: {
@@ -10356,6 +10349,21 @@ var script$W = {
10356
10349
  type: String,
10357
10350
  default: '',
10358
10351
  },
10352
+
10353
+ resizable: {
10354
+ type: Boolean,
10355
+ default: false,
10356
+ },
10357
+ },
10358
+
10359
+ data () {
10360
+ return {
10361
+ resizeObserver: null,
10362
+ manualHeight: null,
10363
+ contentHeight: null,
10364
+ programmaticUpdate: false,
10365
+ resizeTimeout: null,
10366
+ }
10359
10367
  },
10360
10368
 
10361
10369
  computed: {
@@ -10368,9 +10376,144 @@ var script$W = {
10368
10376
  this.$emit('update:value', value);
10369
10377
  },
10370
10378
  },
10379
+
10380
+ containerStyle () {
10381
+ if (this.resizable) {
10382
+ return {
10383
+ minHeight: this.minHeight,
10384
+ height: this.effectiveHeight,
10385
+ }
10386
+ }
10387
+ return {}
10388
+ },
10389
+
10390
+ effectiveHeight () {
10391
+ if (this.resizable) {
10392
+ // Use the larger of manual height, content height, or minimum height
10393
+ const manualHeightPx = this.manualHeight ? this.parseHeight(this.manualHeight) : 0;
10394
+ const contentHeightPx = this.contentHeight ? this.parseHeight(this.contentHeight) : 0;
10395
+ const minHeightPx = this.parseHeight(this.minHeight);
10396
+
10397
+ const maxHeight = Math.max(manualHeightPx, contentHeightPx, minHeightPx);
10398
+ return `${maxHeight}px`
10399
+ }
10400
+ return this.minHeight
10401
+ },
10402
+ },
10403
+
10404
+ watch: {
10405
+ value () {
10406
+ if (this.resizable && this.$refs.aceeditor && this.$refs.aceeditor.editor) {
10407
+ this.$nextTick(() => {
10408
+ this.calculateContentHeight(this.$refs.aceeditor.editor);
10409
+ });
10410
+ }
10411
+ },
10412
+ },
10413
+
10414
+ mounted () {
10415
+ if (this.resizable) {
10416
+ this.setupResizeObserver();
10417
+ }
10418
+ },
10419
+
10420
+ beforeDestroy () {
10421
+ if (this.resizeObserver) {
10422
+ this.resizeObserver.disconnect();
10423
+ }
10424
+ if (this.resizeTimeout) {
10425
+ clearTimeout(this.resizeTimeout);
10426
+ }
10371
10427
  },
10372
10428
 
10373
10429
  methods: {
10430
+ parseHeight (height) {
10431
+ if (typeof height === 'number') return height
10432
+ if (typeof height === 'string') {
10433
+ // Remove 'px' and parse to number
10434
+ return parseFloat(height.replace('px', '').replace('rem', '')) * (height.includes('rem') ? 16 : 1)
10435
+ }
10436
+ return 0
10437
+ },
10438
+
10439
+ calculateContentHeight (editor) {
10440
+ if (!editor) return
10441
+
10442
+ const session = editor.session;
10443
+ const lineCount = session.getLength();
10444
+ const lineHeight = editor.renderer.lineHeight || 16;
10445
+ const padding = 14; // Top and bottom padding
10446
+
10447
+ const contentHeight = (lineCount * lineHeight) + padding;
10448
+
10449
+ // Parse minHeight to ensure we don't go below it
10450
+ const minHeightPx = this.parseHeight(this.minHeight);
10451
+ const finalHeight = Math.max(contentHeight, minHeightPx);
10452
+
10453
+ // Set flag to prevent ResizeObserver from reacting to this change
10454
+ this.programmaticUpdate = true;
10455
+ this.contentHeight = `${finalHeight}px`;
10456
+
10457
+ // Clear the flag after a short delay
10458
+ this.$nextTick(() => {
10459
+ setTimeout(() => {
10460
+ this.programmaticUpdate = false;
10461
+ }, 50);
10462
+ });
10463
+ },
10464
+
10465
+ setupResizeObserver () {
10466
+ let lastHeight = null;
10467
+ let isInitialized = false;
10468
+
10469
+ this.resizeObserver = new ResizeObserver((entries) => {
10470
+ // Skip if we're in the middle of a programmatic update
10471
+ if (this.programmaticUpdate) {
10472
+ return
10473
+ }
10474
+
10475
+ for (const entry of entries) {
10476
+ const newHeight = entry.contentRect.height;
10477
+
10478
+ // Skip the first observation (initialization)
10479
+ if (!isInitialized) {
10480
+ lastHeight = newHeight;
10481
+ isInitialized = true;
10482
+ return
10483
+ }
10484
+
10485
+ // Only update if height actually changed significantly (more than 2px to avoid rounding issues)
10486
+ if (lastHeight !== null && Math.abs(lastHeight - newHeight) > 2) {
10487
+ // Clear any pending timeout
10488
+ if (this.resizeTimeout) {
10489
+ clearTimeout(this.resizeTimeout);
10490
+ }
10491
+
10492
+ // Debounce the update slightly to prevent flickering
10493
+ this.resizeTimeout = setTimeout(() => {
10494
+ this.manualHeight = `${newHeight}px`;
10495
+ this.updateEditorSize();
10496
+ lastHeight = newHeight;
10497
+ }, 10);
10498
+ }
10499
+ }
10500
+ });
10501
+
10502
+ if (this.$refs.container) {
10503
+ this.resizeObserver.observe(this.$refs.container);
10504
+ }
10505
+ },
10506
+
10507
+ updateEditorSize () {
10508
+ // Force ace editor to resize
10509
+ this.$nextTick(() => {
10510
+ if (this.$refs.aceeditor && this.$refs.aceeditor.editor) {
10511
+ const editor = this.$refs.aceeditor.editor;
10512
+ editor.resize();
10513
+ }
10514
+ });
10515
+ },
10516
+
10374
10517
  editorInit (editor) {
10375
10518
  Promise.resolve().then(function () { return text$1; });
10376
10519
  Promise.resolve().then(function () { return html$1; });
@@ -10378,7 +10521,6 @@ var script$W = {
10378
10521
  Promise.resolve().then(function () { return scss$1; });
10379
10522
  Promise.resolve().then(function () { return json$1; });
10380
10523
  Promise.resolve().then(function () { return javascript$1; });
10381
- Promise.resolve().then(function () { return json$1; });
10382
10524
 
10383
10525
  Promise.resolve().then(function () { return text; });
10384
10526
  Promise.resolve().then(function () { return html; });
@@ -10386,7 +10528,6 @@ var script$W = {
10386
10528
  Promise.resolve().then(function () { return scss; });
10387
10529
  Promise.resolve().then(function () { return json; });
10388
10530
  Promise.resolve().then(function () { return javascript; });
10389
- Promise.resolve().then(function () { return json; });
10390
10531
 
10391
10532
  Promise.resolve().then(function () { return chrome; });
10392
10533
  Promise.resolve().then(function () { return language_tools; });
@@ -10405,8 +10546,6 @@ var script$W = {
10405
10546
  readOnly: this.readOnly,
10406
10547
  highlightActiveLine: this.highlightActiveLine,
10407
10548
  cursorStyle: 'smooth',
10408
- // // minLines: this.height,
10409
- // maxPixelHeight: 100,
10410
10549
 
10411
10550
  ...(this.autoComplete && {
10412
10551
  enableBasicAutocompletion: true,
@@ -10422,6 +10561,19 @@ var script$W = {
10422
10561
  editor.on('input', this.updatePlaceholder);
10423
10562
  this.updatePlaceholder(undefined, editor);
10424
10563
 
10564
+ // Calculate initial content height and listen for changes if resizable
10565
+ if (this.resizable) {
10566
+ // Calculate initial height
10567
+ this.$nextTick(() => {
10568
+ this.calculateContentHeight(editor);
10569
+ });
10570
+
10571
+ // Recalculate on content change
10572
+ editor.session.on('change', () => {
10573
+ this.calculateContentHeight(editor);
10574
+ });
10575
+ }
10576
+
10425
10577
  if (this.initExpressions) {
10426
10578
  this.processExpressionAutoComplete(editor);
10427
10579
  } else if (this.autoComplete) {
@@ -10465,55 +10617,95 @@ var script$W = {
10465
10617
  },
10466
10618
 
10467
10619
  processExpressionAutoComplete (editor) {
10620
+ // Extract text context from current cursor position
10621
+ const getTextContext = (pos) => {
10622
+ const session = editor.session;
10623
+ const line = session.getLine(pos.row);
10624
+ const lastSpaceIndex = Math.max(0, line.lastIndexOf(' '));
10625
+ const textAfterSpace = line.slice(lastSpaceIndex, pos.column).trim();
10626
+ const lastDotIndex = textAfterSpace.lastIndexOf('.');
10627
+ const searchTextForCaption = lastDotIndex >= 0 ? textAfterSpace.slice(lastDotIndex + 1) : textAfterSpace;
10628
+
10629
+ return { line, textAfterSpace, searchTextForCaption }
10630
+ };
10631
+
10632
+ // Check if suggestion matches search text
10633
+ const matchesSuggestion = (suggestion, textAfterSpace, searchTextForCaption) => {
10634
+ const suggestionValue = typeof suggestion === 'string' ? suggestion : suggestion.value;
10635
+ const suggestionCaption = typeof suggestion === 'string' ? suggestion : suggestion.caption;
10636
+ return suggestionValue.toLowerCase().startsWith(textAfterSpace.toLowerCase()) ||
10637
+ suggestionCaption.toLowerCase().startsWith(searchTextForCaption.toLowerCase())
10638
+ };
10639
+
10640
+ // Check and trigger autocomplete if there are matching suggestions
10641
+ const checkAndTriggerAutocomplete = () => {
10642
+ setTimeout(() => {
10643
+ const pos = editor.getCursorPosition();
10644
+ const { line, textAfterSpace, searchTextForCaption } = getTextContext(pos);
10645
+
10646
+ // Don't trigger after closing braces
10647
+ const charBeforeCursor = pos.column > 0 ? line[pos.column - 1] : '';
10648
+ if (charBeforeCursor === '}' || charBeforeCursor === ')' || textAfterSpace.length === 0) {
10649
+ return
10650
+ }
10651
+
10652
+ const context = this.getContext(editor, editor.session, pos);
10653
+ const suggestions = this.getSuggestionsForContext(context);
10654
+ const hasMatches = suggestions.some(s => matchesSuggestion(s, textAfterSpace, searchTextForCaption));
10655
+
10656
+ if (hasMatches) {
10657
+ editor.execCommand('startAutocomplete');
10658
+ }
10659
+ }, 10);
10660
+ };
10661
+
10468
10662
  const staticWordCompleter = {
10663
+ identifierRegexps: [/[${\w]+/],
10469
10664
  getCompletions: (editor, session, pos, prefix, callback) => {
10470
10665
  const context = this.getContext(editor, session, pos);
10471
10666
  const suggestions = this.getSuggestionsForContext(context);
10472
-
10473
- callback(null, suggestions.map(suggestion => {
10474
- let caption = '';
10475
- let value = '';
10476
-
10477
- if (typeof suggestion === 'string') {
10478
- caption = suggestion;
10479
- value = suggestion;
10480
- } else {
10481
- caption = suggestion.caption;
10482
- value = suggestion.value;
10483
- }
10484
-
10485
- return {
10486
- caption,
10487
- value,
10488
- meta: 'variable',
10489
- completer: {
10490
- insertMatch: function (insertEditor, data) {
10491
- const insertValue = data.value;
10492
-
10493
- insertEditor.jumpToMatching();
10494
- const line = session.getLine(pos.row);
10495
- let lastSpaceIndex = line.lastIndexOf(' ') >= 0 ? line.lastIndexOf(' ') : 0;
10496
-
10497
- if (lastSpaceIndex > 0) {
10498
- lastSpaceIndex += 1;
10499
- }
10500
-
10501
- insertEditor.session.replace({
10502
- start: { row: pos.row, column: lastSpaceIndex },
10503
- end: { row: pos.row, column: pos.column },
10504
- }, insertValue);
10667
+ const { textAfterSpace, searchTextForCaption } = getTextContext(pos);
10668
+
10669
+ const filteredSuggestions = suggestions
10670
+ .filter(s => matchesSuggestion(s, textAfterSpace, searchTextForCaption))
10671
+ .map(suggestion => {
10672
+ const caption = typeof suggestion === 'string' ? suggestion : suggestion.caption;
10673
+ const value = typeof suggestion === 'string' ? suggestion : suggestion.value;
10674
+ const captionMatch = caption.toLowerCase().indexOf(searchTextForCaption.toLowerCase());
10675
+
10676
+ return {
10677
+ caption,
10678
+ value,
10679
+ score: captionMatch === 0 ? 10000 : 1000,
10680
+ meta: 'variable',
10681
+ completer: {
10682
+ insertMatch: (insertEditor, data) => {
10683
+ insertEditor.jumpToMatching();
10684
+ const line = session.getLine(pos.row);
10685
+ const spaceIndex = line.lastIndexOf(' ');
10686
+ const startCol = spaceIndex > 0 ? spaceIndex + 1 : 0;
10687
+
10688
+ insertEditor.session.replace({
10689
+ start: { row: pos.row, column: startCol },
10690
+ end: { row: pos.row, column: pos.column },
10691
+ }, data.value);
10692
+
10693
+ checkAndTriggerAutocomplete();
10694
+ },
10505
10695
  },
10506
- },
10507
- }
10508
- }));
10696
+ }
10697
+ });
10698
+
10699
+ callback(null, filteredSuggestions);
10509
10700
  },
10510
10701
  };
10511
10702
 
10512
10703
  editor.completers = [staticWordCompleter];
10513
10704
 
10514
- editor.commands.on('afterExec', function (e) {
10705
+ // Only trigger autocomplete automatically when there's a partial match
10706
+ editor.commands.on('afterExec', (e) => {
10515
10707
  if (['insertstring', 'Return'].includes(e.command.name) || /^[\w.($]$/.test(e.args)) {
10516
- editor.execCommand('startAutocomplete');
10708
+ checkAndTriggerAutocomplete();
10517
10709
  }
10518
10710
  });
10519
10711
 
@@ -10523,17 +10715,13 @@ var script$W = {
10523
10715
 
10524
10716
  getContext (editor, session, pos) {
10525
10717
  const line = session.getLine(pos.row);
10526
- const lastSpaceIndex = line.lastIndexOf(' ') >= 0 ? line.lastIndexOf(' ') : 0;
10527
- const textBeforeCursor = line.slice(lastSpaceIndex, pos.column);
10528
- const context = textBeforeCursor.split('.').slice(0, -1).join('.').trim();
10529
-
10530
- return context
10718
+ const lastSpaceIndex = Math.max(0, line.lastIndexOf(' '));
10719
+ const textBeforeCursor = line.slice(lastSpaceIndex, pos.column).trim();
10720
+ return textBeforeCursor.split('.').slice(0, -1).join('.')
10531
10721
  },
10532
10722
 
10533
10723
  getSuggestionsForContext (context) {
10534
- const suggestions = this.autoCompleteSuggestions;
10535
-
10536
- return suggestions[context] || []
10724
+ return this.autoCompleteSuggestions[context] || []
10537
10725
  },
10538
10726
  },
10539
10727
  };
@@ -10542,18 +10730,18 @@ var script$W = {
10542
10730
  const __vue_script__$W = script$W;
10543
10731
 
10544
10732
  /* template */
10545
- var __vue_render__$U = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"position-relative"},[_c('ace-editor',_vm._g({ref:"aceeditor",class:{ 'border-0 rounded-0': !_vm.border },attrs:{"lang":_vm.lang,"mode":_vm.lang,"theme":"chrome","width":"100%","height":_vm.height},on:{"init":_vm.editorInit},model:{value:(_vm.editorValue),callback:function ($$v) {_vm.editorValue=$$v;},expression:"editorValue"}},_vm.$listeners)),_vm._v(" "),(_vm.showPopout)?_c('b-button',{staticClass:"popout position-absolute px-2 py-1 mr-3",attrs:{"variant":"link"},on:{"click":function($event){return _vm.$emit('open')}}},[_c('font-awesome-icon',{attrs:{"icon":['fas', 'expand-alt']}})],1):_vm._e()],1)};
10733
+ var __vue_render__$U = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"container",staticClass:"position-relative ace-editor-wrapper",class:{ 'resizable': _vm.resizable },style:(_vm.containerStyle)},[_c('ace-editor',_vm._g({ref:"aceeditor",class:{ 'border-0 rounded-0': !_vm.border },attrs:{"lang":_vm.lang,"mode":_vm.lang,"theme":"chrome","width":"100%","height":_vm.effectiveHeight},on:{"init":_vm.editorInit},model:{value:(_vm.editorValue),callback:function ($$v) {_vm.editorValue=$$v;},expression:"editorValue"}},_vm.$listeners)),_vm._v(" "),(_vm.showPopout)?_c('b-button',{staticClass:"popout position-absolute px-2 py-1 mr-3",attrs:{"variant":"link"},on:{"click":function($event){return _vm.$emit('open')}}},[_c('font-awesome-icon',{attrs:{"icon":['fas', 'expand-alt']}})],1):_vm._e()],1)};
10546
10734
  var __vue_staticRenderFns__$U = [];
10547
10735
 
10548
10736
  /* style */
10549
10737
  const __vue_inject_styles__$X = function (inject) {
10550
10738
  if (!inject) return
10551
- inject("data-v-0a4a06ee_0", { source: ".popout[data-v-0a4a06ee]{z-index:7;bottom:0;right:0}", map: undefined, media: undefined })
10552
- ,inject("data-v-0a4a06ee_1", { source: ".ace_editor{color:var(--black)!important;background-color:var(--white)!important;border-radius:.25rem;border:2px solid var(--extra-light);font-size:initial!important}.ace_editor .ace_gutter{background-color:var(--light)!important;color:var(--black)!important}.ace_editor .ace_gutter .ace_gutter-active-line{background-color:var(--extra-light)!important}.ace_editor .ace_hidden-cursors .ace_cursor{color:var(--white)!important}.ace_editor .ace_cursor{color:var(--black)!important}.ace_autocomplete{border:none!important}.ace_autocomplete .ace_active-line{background-color:var(--extra-light)!important}.ace_autocomplete .ace_line-hover{border:none!important;background-color:var(--extra-light)!important}.ace_autocomplete .ace_completion-highlight{color:var(--primary)!important}", map: undefined, media: undefined });
10739
+ inject("data-v-00e2204c_0", { source: ".popout[data-v-00e2204c]{z-index:7;bottom:0;right:0}.ace-editor-wrapper.resizable[data-v-00e2204c]{resize:vertical;overflow:auto}.ace-editor-wrapper.resizable .ace_editor[data-v-00e2204c]{height:100%!important}", map: undefined, media: undefined })
10740
+ ,inject("data-v-00e2204c_1", { source: ".ace_editor{color:var(--black)!important;background-color:var(--white)!important;border-radius:.25rem;border:2px solid var(--extra-light);font-size:initial!important}.ace_editor .ace_gutter{background-color:var(--light)!important;color:var(--black)!important}.ace_editor .ace_gutter .ace_gutter-active-line{background-color:var(--extra-light)!important}.ace_editor .ace_hidden-cursors .ace_cursor{color:var(--white)!important}.ace_editor .ace_cursor{color:var(--black)!important}.ace_autocomplete{border:none!important}.ace_autocomplete .ace_active-line{background-color:var(--extra-light)!important}.ace_autocomplete .ace_line-hover{border:none!important;background-color:var(--extra-light)!important}.ace_autocomplete .ace_completion-highlight{color:var(--primary)!important}", map: undefined, media: undefined });
10553
10741
 
10554
10742
  };
10555
10743
  /* scoped */
10556
- const __vue_scope_id__$X = "data-v-0a4a06ee";
10744
+ const __vue_scope_id__$X = "data-v-00e2204c";
10557
10745
  /* module identifier */
10558
10746
  const __vue_module_identifier__$X = undefined;
10559
10747
  /* functional template */
@@ -10607,9 +10795,9 @@ var script$V = {
10607
10795
  default: 'text',
10608
10796
  },
10609
10797
 
10610
- height: {
10798
+ minHeight: {
10611
10799
  type: String,
10612
- default: '80px',
10800
+ default: '2.35rem',
10613
10801
  },
10614
10802
 
10615
10803
  showLineNumbers: {
@@ -10661,6 +10849,11 @@ var script$V = {
10661
10849
  type: String,
10662
10850
  default: '',
10663
10851
  },
10852
+
10853
+ resizable: {
10854
+ type: Boolean,
10855
+ default: true,
10856
+ },
10664
10857
  },
10665
10858
 
10666
10859
  computed: {
@@ -11265,7 +11458,7 @@ var script$R = {
11265
11458
  return this.$SystemAPI
11266
11459
  .userGroupList(this.userGroup.filter)
11267
11460
  .then(({ set }) => {
11268
- this.userGroup.options = set.map((m) => Object.freeze(m));
11461
+ this.userGroup.options = set.map((m) => new system.UserGroup(m));
11269
11462
  })
11270
11463
  .finally(() => {
11271
11464
  setTimeout(() => {
@@ -11276,9 +11469,7 @@ var script$R = {
11276
11469
 
11277
11470
  getUserGroupByID (userGroupID) {
11278
11471
  if (!userGroupID || userGroupID === NoID) {
11279
- this.userGroup.value = this.userGroup.options.find(
11280
- ({ selfID }) => selfID === NoID,
11281
- );
11472
+ this.userGroup.value = this.userGroup.options.find(({ isRoot }) => !!isRoot);
11282
11473
 
11283
11474
  this.$emit('input', this.userGroup.value?.userGroupID);
11284
11475
  return
@@ -11288,13 +11479,6 @@ var script$R = {
11288
11479
 
11289
11480
  if (userGroup) {
11290
11481
  this.userGroup.value = userGroup;
11291
- } else {
11292
- return this.$SystemAPI.userGroupRead({ userGroupID }).then((userGroup) => {
11293
- this.userGroup.options.push(Object.freeze(userGroup));
11294
- this.userGroup.value = this.userGroup.options.find(
11295
- ({ selfID }) => selfID === NoID,
11296
- );
11297
- })
11298
11482
  }
11299
11483
  },
11300
11484