@aquera/nile-elements 0.0.86 → 0.0.88
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.
- package/README.md +6 -0
- package/demo/index.html +1 -1
- package/dist/index.iife.js +7 -2
- package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.css.esm.js +5 -0
- package/dist/nile-code-editor/index.cjs.js +1 -1
- package/dist/nile-code-editor/index.esm.js +1 -1
- package/dist/nile-code-editor/nile-code-editor.cjs.js +2 -2
- package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
- package/dist/nile-code-editor/nile-code-editor.esm.js +3 -3
- package/dist/nile-code-editor/theme.cjs.js +1 -1
- package/dist/nile-code-editor/theme.cjs.js.map +1 -1
- package/dist/nile-code-editor/theme.esm.js +1 -1
- package/dist/src/nile-calendar/nile-calendar.css.js +5 -0
- package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
- package/dist/src/nile-code-editor/nile-code-editor.d.ts +1 -6
- package/dist/src/nile-code-editor/nile-code-editor.js +11 -31
- package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
- package/dist/src/nile-code-editor/theme.d.ts +4 -1
- package/dist/src/nile-code-editor/theme.js +2 -1
- package/dist/src/nile-code-editor/theme.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-calendar/nile-calendar.css.ts +5 -0
- package/src/nile-code-editor/nile-code-editor.ts +23 -49
- package/src/nile-code-editor/theme.ts +3 -2
@@ -1,2 +1,2 @@
|
|
1
|
-
System.register([],function(_export,_context){"use strict";var o;return{setters:[],execute:function execute(){_export("T",o={"&":{fontSize:"14px",fontFamily:"Colfax-regular",fontWeight:"400"},".cm-content":{},".cm-scroller":{}});}};});
|
1
|
+
System.register([],function(_export,_context){"use strict";var o;return{setters:[],execute:function execute(){_export("T",o={"&":{width:"100%",fontSize:"14px",fontFamily:"Colfax-regular",fontWeight:"400"},".cm-content":{},".cm-scroller":{overflow:"hidden"}});}};});
|
2
2
|
//# sourceMappingURL=theme.cjs.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"theme.cjs.js","sources":["../../../src/nile-code-editor/theme.ts"],"sourcesContent":["export const Theme = {\n '&': {\n fontSize: '14px',\n fontFamily: 'Colfax-regular',\n fontWeight: '400',\n },\n '.cm-content': {},\n
|
1
|
+
{"version":3,"file":"theme.cjs.js","sources":["../../../src/nile-code-editor/theme.ts"],"sourcesContent":["export const Theme = {\n '&': {\n width:\"100%\",\n fontSize: '14px',\n fontFamily: 'Colfax-regular',\n fontWeight: '400',\n },\n '.cm-content': {},\n \".cm-scroller\": {overflow: \"hidden\"},\n};"],"names":["Theme","width","fontSize","fontFamily","fontWeight","overflow"],"mappings":"0HAAaA,EAAQ,CACnB,GAAA,CAAK,CACHC,KAAM,CAAA,MAAA,CACNC,SAAU,MACVC,CAAAA,UAAAA,CAAY,gBACZC,CAAAA,UAAAA,CAAY,OAEd,aAAe,CAAA,CAAE,EACjB,cAAgB,CAAA,CAACC,SAAU"}
|
@@ -1 +1 @@
|
|
1
|
-
const o={"&":{fontSize:"14px",fontFamily:"Colfax-regular",fontWeight:"400"},".cm-content":{},".cm-scroller":{}};export{o as T};
|
1
|
+
const o={"&":{width:"100%",fontSize:"14px",fontFamily:"Colfax-regular",fontWeight:"400"},".cm-content":{},".cm-scroller":{overflow:"hidden"}};export{o as T};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nile-calendar.css.js","sourceRoot":"","sources":["../../../src/nile-calendar/nile-calendar.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA
|
1
|
+
{"version":3,"file":"nile-calendar.css.js","sourceRoot":"","sources":["../../../src/nile-calendar/nile-calendar.css.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsSxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { css } from 'lit-element';\n\n/**\n * DatePicker CSS\n */\nexport const styles = css`\n :host {\n }\n\n .base {\n background-color: white;\n border-radius: 8px;\n width: 300px;\n box-shadow: 0px 8px 8px -4px #10182808;\n box-shadow: 0px 20px 24px -4px #10182814;\n }\n\n .calendar-container {\n font-family: var(--nile-font-family-serif);\n width: 100%;\n height: auto;\n text-align: center;\n background: white;\n border-radius: 8px;\n }\n\n .calendar-wrapper {\n background: white;\n display: flex;\n justify-content: space-between;\n width: 100%;\n border-radius: 8px;\n }\n\n .calendar-header {\n display: flex;\n justify-content: space-between;\n padding: 10px;\n padding: 22px 20px;\n font-size: 14px;\n font-weight: 600;\n line-height: 14px;\n letter-spacing: 0.2px;\n }\n\n .calendar-header__month-navigation {\n cursor: pointer;\n }\n\n /* Date CSS_START */\n\n .days_container {\n\t\tdisplay: grid;\n padding: 0 12px 12px 12px;\n\t\tgrid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;\n\t\tgrid-row-gap: var(--nile-spacing-spacing-xs, 3px);\n }\n\n\n @media not all and (min-resolution: .001dpcm) {\n @supports (-webkit-appearance:none)\n { .day-names, .days_container {\n /* column-gap: 6px; */\n }\n }\n }\n\n .day_date ,.day_name{\n\t\tfont-family: var( --nile-font-family-serif);\n\t\tfont-style: normal;\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\ttext-align: center;\n\n\t\t/* width: 40px;\n\t\theight: 30px; */\n\t\tpadding: 5px 8px;\n\t\tdisplay:grid;\n\t\tplace-items:center;\n }\n\n .day_name{\n font-weight:500;\n }\n\n .day_date{\n font-weight:400;\n }\n\n\t.current__date__dot{\n\t\tbackground-color:white;\n\t\tposition:absolute;\n\t\tborder-radius:50%;\n\t\theight:5px;\n\t\twidth:5px;\n\t\tleft:25%;\n\t\ttop:90%;\n\t}\n\n .day_date:not(.range-start, .selected-date, .range-end) .current__date__dot{\n\t\tbackground-color:var(--nile-colors-primary-600,#005EA6);\n }\n\n\n .day_date:hover {\n background-color: #F9FAFB;\n }\n\n .filler {\n color: #7f7f7f;\n pointer-events: none;\n }\n\n .selected-date {\n color: white;\n border-radius: 4px;\n background: #005EA6;\n }\n\n .selected-date:hover {\n background: #005EA6;\n }\n\n .selected-date,\n .range-start,\n .range-end {\n border-radius: 4px;\n background: #005EA6;\n color: white;\n }\n\n .selected-date:hover,\n .range-start:hover,\n .range-end:hover,\n .day_date.in-range:hover {\n background: #005291;\n }\n\n .range-start.in-range {\n background: #005EA6;\n border-radius: 4px 0 0 4px;\n color: white;\n }\n\n .range-end {\n background: #005EA6;\n border-radius: 0 4px 4px 0;\n color: white;\n }\n\n .range-middle {\n background: #005EA6;\n color: white;\n border-radius: 0;\n }\n\n .day_date.selected {\n background: #005EA6;\n color: white;\n border-radius: 4px;\n }\n\n .day_date.in-range:not(.range-start,.range-end, .selected-date) {\n background: #e5e9eb;\n /* color: white; */\n }\n\n .selected-date {\n color: white;\n border-radius: 4px;\n background: #005EA6;\n }\n\n .not-allowed{\n color: #7f7f7f;\n pointer-events: none;\n }\n\n /* Date CSS_END */\n\n .calender-input {\n box-sizing:border-box;\n padding: 0 16px;\n width:100%;\n justify-content: space-between;\n display: flex;\n gap:8px;\n flex-wrap: wrap;\n }\n\n .from {\n display: flex;\n justify-content: space-between;\n gap: 8px;\n width: auto;\n }\n\n .manual-input-label {\n color: #7f7f7f;\n font-family: Colfax-regular;\n font-size: 12px;\n font-weight: 500;\n line-height: 12px;\n letter-spacing: 0.2px;\n }\n\n .button-container {\n width: 100%;\n text-align: right;\n padding: 12px 16px 16px 16px;\n box-sizing: border-box;\n }\n\n .calendar-config {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n .calendar-switcher {\n width: 100%;\n margin: 0 12px;\n margin-top: 16px;\n }\n\n .calendar-switcher ::part(active-tab-indicator){\n bottom:-2px;\n }\n\n .units-wrapper{\n width:min-content;\n margin:auto;\n }\n\n .unit-container{\n display:grid;\n grid-template-columns: auto auto;\n row-gap:var(--nile-spacing-spacing-2xl);\n column-gap: var(--nile-spacing-spacing-sm);\n padding: 16px;\n padding-bottom: 0;\n }\n \n .duration-name{\n display:flex;\n align-items:center;\n font-family: var( --nile-font-family-serif);\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 20px; \n }\n \n .duration-units{\n display:flex;\n font-family: var( --nile-font-family-serif);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n }\n\n .duration__value{\n display: grid;\n place-items:center;\n width: 34px;\n height: 34px;\n cursor: pointer;\n border-radius: 4px;\n }\n\n .duration__value:hover{\n background:#F9FAFB;\n }\n\n .duration__value--selected{\n background-color:#005EA6;\n color: white;\n }\n\n .duration__value--selected:hover{\n background:#005291;\n }\n\n .hidden {\n display: none !important;\n }\n\n .unit-input-container {\n display: flex;\n justify-content: space-between;\n gap: 8px;\n padding: 0 16px;\n padding-top: 16px;\n }\n\n .duration-input,.time-input,.manual-input {\n width: 125px;\n }\n`;\n\nexport default [styles];\n"]}
|
@@ -25,7 +25,7 @@ export declare class NileCodeEditor extends NileElement {
|
|
25
25
|
error: boolean;
|
26
26
|
noborder: boolean;
|
27
27
|
expandable: any;
|
28
|
-
readonly:
|
28
|
+
readonly: boolean;
|
29
29
|
/**
|
30
30
|
* The styles for CodeEditor
|
31
31
|
* @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
|
@@ -38,17 +38,12 @@ export declare class NileCodeEditor extends NileElement {
|
|
38
38
|
lineNumbersComp: Compartment;
|
39
39
|
restrictSingleLineComp: Compartment;
|
40
40
|
readOnlyComp: Compartment;
|
41
|
-
handleValueChange(): void;
|
42
41
|
getLineNumbersExension(): import("@codemirror/state").Extension;
|
43
42
|
getReadOnlyExtension(): import("@codemirror/state").Extension;
|
44
43
|
getSingleLineExtension(): import("@codemirror/state").Extension;
|
45
44
|
firstUpdated(): void;
|
46
|
-
addOpenListeners(): void;
|
47
45
|
singleLineMultiLineToggle(): void;
|
48
46
|
updated(changedProperties: PropertyValues): void;
|
49
|
-
toggleFocusAndBlur(action: 'blur' | 'focus'): void;
|
50
|
-
setTheme(): import("@codemirror/state").Extension;
|
51
|
-
emitValues(value: string): void;
|
52
47
|
expandCodeEditor(): void;
|
53
48
|
restrictSingleLine(): import("@codemirror/state").Extension;
|
54
49
|
render(): TemplateResult;
|
@@ -15,7 +15,6 @@ import { javascript, javascriptLanguage, scopeCompletionSource, } from '@codemir
|
|
15
15
|
import { autocompletion } from '@codemirror/autocomplete';
|
16
16
|
import NileElement from '../internal/nile-element';
|
17
17
|
import { basicSetup } from './extensionSetup';
|
18
|
-
import { watch } from '../internal/watch';
|
19
18
|
import { classMap } from 'lit/directives/class-map.js';
|
20
19
|
import { Theme } from './theme';
|
21
20
|
// Choose the appropriate mode for your use case
|
@@ -55,13 +54,13 @@ let NileCodeEditor = class NileCodeEditor extends NileElement {
|
|
55
54
|
}
|
56
55
|
disconnectedCallback() {
|
57
56
|
super.disconnectedCallback();
|
57
|
+
this.view.destroy();
|
58
58
|
this.emit('nile-destroy');
|
59
59
|
}
|
60
60
|
convertToSingleLine(code) {
|
61
61
|
// Remove line breaks and unnecessary whitespace
|
62
62
|
return code.replace(/\s+/g, ' ').trim();
|
63
63
|
}
|
64
|
-
handleValueChange() { }
|
65
64
|
getLineNumbersExension() {
|
66
65
|
return this.multiline ? lineNumbers() : [];
|
67
66
|
}
|
@@ -84,9 +83,8 @@ let NileCodeEditor = class NileCodeEditor extends NileElement {
|
|
84
83
|
: this.value,
|
85
84
|
extensions: [
|
86
85
|
basicSetup({
|
87
|
-
lineNumbers: false,
|
88
86
|
highlightActiveLine: false,
|
89
|
-
foldGutter:
|
87
|
+
foldGutter: !!this.multiline,
|
90
88
|
}),
|
91
89
|
lineNumbersExtension,
|
92
90
|
readOnlyExtension,
|
@@ -94,23 +92,22 @@ let NileCodeEditor = class NileCodeEditor extends NileElement {
|
|
94
92
|
customAutoCompletions,
|
95
93
|
autocompletion(),
|
96
94
|
javascript(),
|
97
|
-
|
95
|
+
EditorView.theme(Theme),
|
98
96
|
EditorView.updateListener.of((v) => {
|
99
97
|
if (v.docChanged) {
|
100
|
-
this.
|
98
|
+
this.emit('nile-change', { value: this.view.state.doc.toString() });
|
101
99
|
}
|
102
100
|
}),
|
101
|
+
EditorView.domEventHandlers({
|
102
|
+
focus: () => this.dispatchEvent(new Event('nile-focus')),
|
103
|
+
blur: () => this.dispatchEvent(new Event('nile-blur')),
|
104
|
+
}),
|
103
105
|
],
|
104
106
|
});
|
105
107
|
this.view = new EditorView({
|
106
108
|
state: startState,
|
107
109
|
parent: this.codeEditor,
|
108
110
|
});
|
109
|
-
this.addOpenListeners();
|
110
|
-
}
|
111
|
-
addOpenListeners() {
|
112
|
-
this.view.contentDOM.addEventListener('blur', () => this.toggleFocusAndBlur('blur'));
|
113
|
-
this.view.contentDOM.addEventListener('focus', () => this.toggleFocusAndBlur('focus'));
|
114
111
|
}
|
115
112
|
singleLineMultiLineToggle() {
|
116
113
|
this.view.dispatch({
|
@@ -140,20 +137,6 @@ let NileCodeEditor = class NileCodeEditor extends NileElement {
|
|
140
137
|
this.view.dispatch({ effects: this.readOnlyComp.reconfigure(this.getReadOnlyExtension()) });
|
141
138
|
}
|
142
139
|
}
|
143
|
-
toggleFocusAndBlur(action) {
|
144
|
-
if (action === 'blur') {
|
145
|
-
this.emit('nile-blur', { onBlur: true });
|
146
|
-
}
|
147
|
-
if (action === 'focus') {
|
148
|
-
this.emit('nile-focus', { onFocus: true });
|
149
|
-
}
|
150
|
-
}
|
151
|
-
setTheme() {
|
152
|
-
return EditorView.theme(Theme);
|
153
|
-
}
|
154
|
-
emitValues(value) {
|
155
|
-
this.emit('nile-change', { value: value });
|
156
|
-
}
|
157
140
|
expandCodeEditor() {
|
158
141
|
this.emit('nile-expand', { expand: true });
|
159
142
|
}
|
@@ -211,20 +194,17 @@ __decorate([
|
|
211
194
|
property({ attribute: 'error-message' })
|
212
195
|
], NileCodeEditor.prototype, "errorMessage", void 0);
|
213
196
|
__decorate([
|
214
|
-
property({ attribute: 'error' })
|
197
|
+
property({ attribute: 'error', type: Boolean })
|
215
198
|
], NileCodeEditor.prototype, "error", void 0);
|
216
199
|
__decorate([
|
217
|
-
property({ attribute: 'noborder' })
|
200
|
+
property({ attribute: 'noborder', type: Boolean })
|
218
201
|
], NileCodeEditor.prototype, "noborder", void 0);
|
219
202
|
__decorate([
|
220
203
|
property({ type: Boolean })
|
221
204
|
], NileCodeEditor.prototype, "expandable", void 0);
|
222
205
|
__decorate([
|
223
|
-
property({ type: Boolean })
|
206
|
+
property({ type: Boolean, reflect: true })
|
224
207
|
], NileCodeEditor.prototype, "readonly", void 0);
|
225
|
-
__decorate([
|
226
|
-
watch(['value'], { waitUntilFirstUpdate: true })
|
227
|
-
], NileCodeEditor.prototype, "handleValueChange", null);
|
228
208
|
NileCodeEditor = __decorate([
|
229
209
|
customElement('nile-code-editor')
|
230
210
|
], NileCodeEditor);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nile-code-editor.js","sourceRoot":"","sources":["../../../src/nile-code-editor/nile-code-editor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n LitElement,\n html,\n property,\n CSSResultArray,\n TemplateResult,\n PropertyValueMap,\n} from 'lit-element';\nimport { customElement, query } from 'lit/decorators.js';\nimport { styles } from './nile-code-editor.css';\nimport { EditorView } from 'codemirror';\nimport { ViewUpdate } from '@codemirror/view';\nimport { EditorState, Compartment } from '@codemirror/state';\nimport {lineNumbers} from '@codemirror/view';\nimport {\n javascript,\n javascriptLanguage,\n scopeCompletionSource,\n completionPath,\n} from '@codemirror/lang-javascript';\nimport { autocompletion } from '@codemirror/autocomplete';\nimport { CompletionContext, Completion } from '@codemirror/autocomplete';\nimport NileElement from '../internal/nile-element';\nimport { basicSetup } from './extensionSetup';\nimport { watch } from '../internal/watch';\nimport { PropertyValues } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { Theme } from './theme';\n\n// Choose the appropriate mode for your use case\n\n/**\n * Nile icon component.\n *\n * @tag nile-code-editor\n *\n */\n@customElement('nile-code-editor')\nexport class NileCodeEditor extends NileElement {\n @query('.code-mirror') codeEditor: HTMLInputElement;\n @property({ type: Boolean, reflect: true }) multiline = false;\n @property({ type: String }) value = '';\n @property({ type: String }) customAutoCompletions: any = {};\n @property({ type: Boolean }) updateValue: any = false;\n @property({ attribute: 'error-message' }) errorMessage = '';\n @property({ attribute: 'error' }) error = false;\n @property({ attribute: 'noborder' }) noborder = false;\n\n @property({ type: Boolean }) expandable: any = false;\n @property({ type: Boolean }) readonly: any = false;\n\n /**\n * The styles for CodeEditor\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.emit('nile-init');\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.emit('nile-destroy');\n }\n\n view: EditorView;\n\n convertToSingleLine(code: any) {\n // Remove line breaks and unnecessary whitespace\n return code.replace(/\\s+/g, ' ').trim();\n }\n lineNumbersComp = new Compartment();\n restrictSingleLineComp = new Compartment();\n readOnlyComp = new Compartment();\n\n\n @watch(['value'], { waitUntilFirstUpdate: true })\n handleValueChange() { }\n\n getLineNumbersExension() {\n return this.multiline ? lineNumbers() : [];\n }\n\n getReadOnlyExtension() {\n return EditorState.readOnly.of(this.readonly);\n }\n\n getSingleLineExtension(){\n return !this.multiline ? EditorState.transactionFilter.of(tr =>\n tr.newDoc.lines > 1 ? [] : tr\n ) : [];\n }\n\n firstUpdated() {\n const lineNumbersExtension = this.lineNumbersComp.of(this.getLineNumbersExension());\n const readOnlyExtension = this.readOnlyComp.of(this.getReadOnlyExtension());\n const restrictSingleLineExtension = this.restrictSingleLineComp.of(this.getSingleLineExtension())\n const customAutoCompletions = javascriptLanguage.data.of({\n autocomplete: scopeCompletionSource(this.customAutoCompletions),\n });\n let startState = EditorState.create({\n doc: !this.multiline\n ? this.convertToSingleLine(this.value)\n : this.value,\n extensions: [\n basicSetup({\n lineNumbers: false,\n highlightActiveLine: false,\n foldGutter: false,\n }),\n lineNumbersExtension,\n readOnlyExtension,\n restrictSingleLineExtension,\n customAutoCompletions,\n autocompletion(),\n javascript(),\n this.setTheme(),\n EditorView.updateListener.of((v: ViewUpdate) => {\n if (v.docChanged) {\n this.emitValues(this.view.state.doc.toString());\n }\n }),\n \n ],\n });\n\n this.view = new EditorView({\n state: startState,\n parent: this.codeEditor,\n });\n this.addOpenListeners();\n }\n \n\n addOpenListeners() {\n this.view.contentDOM.addEventListener('blur', () => this.toggleFocusAndBlur('blur'));\n this.view.contentDOM.addEventListener('focus', () => this.toggleFocusAndBlur('focus'));\n }\n \n\n singleLineMultiLineToggle() {\n this.view.dispatch({\n changes: {\n from: 0,\n to: this.view.state.doc.length,\n insert: !this.multiline\n ? this.convertToSingleLine(this.value)\n : this.value,\n },\n });\n }\n \n updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n if (changedProperties.has('value') && this.updateValue) {\n // Editor has already been initialized, update its state\n this.singleLineMultiLineToggle();\n }\n if (changedProperties.has('multiline')) {\n this.view.dispatch({\n effects: [this.lineNumbersComp.reconfigure(this.getLineNumbersExension()),\n this.restrictSingleLineComp.reconfigure(this.getSingleLineExtension())],\n })\n this.singleLineMultiLineToggle();\n }\n if (changedProperties.has('readonly')) {\n this.view.dispatch({ effects: this.readOnlyComp.reconfigure(this.getReadOnlyExtension()) }) \n }\n }\n\n toggleFocusAndBlur(action: 'blur' | 'focus') {\n if(action === 'blur'){\n this.emit('nile-blur', { onBlur : true });\n }\n if (action === 'focus') {\n this.emit('nile-focus', { onFocus : true });\n }\n }\n\n setTheme() {\n return EditorView.theme(Theme);\n }\n\n emitValues(value: string) {\n this.emit('nile-change', { value: value });\n }\n\n expandCodeEditor() {\n this.emit('nile-expand', { expand: true });\n }\n\n restrictSingleLine() {\n return EditorState.transactionFilter.of(tr =>\n tr.newDoc.lines > 1 ? [] : tr\n );\n }\n public render(): TemplateResult {\n const hasErrorMessage = !!this.errorMessage;\n const hasError = !!this.error;\n const noborder = !!this.noborder;\n return html`<div\n part=\"code-editor-base\"\n class=${classMap({\n 'code-mirror': true,\n noborder: noborder,\n error: hasError || hasErrorMessage,\n 'code-mirror__singleline': !this.multiline,\n })}\n >\n ${this.expandable\n ? html` <nile-icon\n name=\"expand-2\"\n class=\"code-editor__icon__container\"\n size=\"16\"\n color=\"black\"\n @click=\"${(e: CustomEvent) => this.expandCodeEditor()}\"\n ></nile-icon>`\n : ''}\n </div>\n ${hasErrorMessage\n ? html`\n <nile-form-error-message\n >${this.errorMessage}</nile-form-error-message\n >\n `\n : ``}`;\n }\n\n /* #endregion */\n}\n\nexport default NileCodeEditor;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-code-editor': NileCodeEditor;\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"nile-code-editor.js","sourceRoot":"","sources":["../../../src/nile-code-editor/nile-code-editor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n LitElement,\n html,\n property,\n CSSResultArray,\n TemplateResult,\n PropertyValueMap,\n} from 'lit-element';\nimport { customElement, query } from 'lit/decorators.js';\nimport { styles } from './nile-code-editor.css';\nimport { EditorView } from 'codemirror';\nimport { ViewUpdate } from '@codemirror/view';\nimport { EditorState, Compartment } from '@codemirror/state';\nimport {lineNumbers} from '@codemirror/view';\nimport {\n javascript,\n javascriptLanguage,\n scopeCompletionSource,\n completionPath,\n} from '@codemirror/lang-javascript';\nimport { autocompletion } from '@codemirror/autocomplete';\nimport { CompletionContext, Completion } from '@codemirror/autocomplete';\nimport NileElement from '../internal/nile-element';\nimport { basicSetup } from './extensionSetup';\nimport { watch } from '../internal/watch';\nimport { PropertyValues } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { Theme } from './theme';\n\n// Choose the appropriate mode for your use case\n\n/**\n * Nile icon component.\n *\n * @tag nile-code-editor\n *\n */\n@customElement('nile-code-editor')\nexport class NileCodeEditor extends NileElement {\n @query('.code-mirror') codeEditor: HTMLInputElement;\n @property({ type: Boolean, reflect: true }) multiline = false;\n @property({ type: String }) value = '';\n @property({ type: String }) customAutoCompletions: any = {};\n @property({ type: Boolean }) updateValue: any = false;\n @property({ attribute: 'error-message' }) errorMessage = '';\n @property({ attribute: 'error', type: Boolean }) error = false;\n @property({ attribute: 'noborder', type:Boolean }) noborder = false;\n\n @property({ type: Boolean }) expandable: any = false;\n @property({ type: Boolean, reflect:true }) readonly: boolean = false;\n\n /**\n * The styles for CodeEditor\n * @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`\n */\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.emit('nile-init');\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.view.destroy()\n this.emit('nile-destroy');\n }\n\n public view: EditorView;\n\n convertToSingleLine(code: any) {\n // Remove line breaks and unnecessary whitespace\n return code.replace(/\\s+/g, ' ').trim();\n }\n lineNumbersComp = new Compartment();\n restrictSingleLineComp = new Compartment();\n readOnlyComp = new Compartment();\n\n getLineNumbersExension() {\n return this.multiline ? lineNumbers() : [];\n }\n\n getReadOnlyExtension() {\n return EditorState.readOnly.of(this.readonly);\n }\n\n getSingleLineExtension(){\n return !this.multiline ? EditorState.transactionFilter.of(tr =>\n tr.newDoc.lines > 1 ? [] : tr\n ) : [];\n }\n\n firstUpdated() {\n const lineNumbersExtension = this.lineNumbersComp.of(this.getLineNumbersExension());\n const readOnlyExtension = this.readOnlyComp.of(this.getReadOnlyExtension());\n const restrictSingleLineExtension = this.restrictSingleLineComp.of(this.getSingleLineExtension())\n const customAutoCompletions = javascriptLanguage.data.of({\n autocomplete: scopeCompletionSource(this.customAutoCompletions),\n });\n let startState = EditorState.create({\n doc: !this.multiline\n ? this.convertToSingleLine(this.value)\n : this.value,\n extensions: [\n basicSetup({\n highlightActiveLine: false,\n foldGutter: !!this.multiline,\n }),\n lineNumbersExtension,\n readOnlyExtension,\n restrictSingleLineExtension,\n customAutoCompletions,\n autocompletion(),\n javascript(),\n EditorView.theme(Theme),\n EditorView.updateListener.of((v: ViewUpdate) => {\n if (v.docChanged) {\n this.emit('nile-change', { value: this.view.state.doc.toString() })\n }\n }),\n EditorView.domEventHandlers({\n focus: () => this.dispatchEvent(new Event('nile-focus')),\n blur: () => this.dispatchEvent(new Event('nile-blur')),\n }),\n ],\n });\n\n this.view = new EditorView({\n state: startState,\n parent: this.codeEditor,\n });\n }\n\n singleLineMultiLineToggle() {\n this.view.dispatch({\n changes: {\n from: 0,\n to: this.view.state.doc.length,\n insert: !this.multiline\n ? this.convertToSingleLine(this.value)\n : this.value,\n },\n });\n }\n \n updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n if (changedProperties.has('value') && this.updateValue) {\n // Editor has already been initialized, update its state\n this.singleLineMultiLineToggle();\n }\n if (changedProperties.has('multiline')) {\n this.view.dispatch({\n effects: [this.lineNumbersComp.reconfigure(this.getLineNumbersExension()),\n this.restrictSingleLineComp.reconfigure(this.getSingleLineExtension())],\n })\n this.singleLineMultiLineToggle();\n }\n if (changedProperties.has('readonly')) {\n this.view.dispatch({ effects: this.readOnlyComp.reconfigure(this.getReadOnlyExtension()) }) \n }\n }\n\n expandCodeEditor() {\n this.emit('nile-expand', { expand: true });\n }\n\n restrictSingleLine() {\n return EditorState.transactionFilter.of(tr =>\n tr.newDoc.lines > 1 ? [] : tr\n );\n }\n public render(): TemplateResult {\n const hasErrorMessage = !!this.errorMessage;\n const hasError = !!this.error;\n const noborder = !!this.noborder;\n return html`<div\n part=\"code-editor-base\"\n class=${classMap({\n 'code-mirror': true,\n noborder: noborder,\n error: hasError || hasErrorMessage,\n 'code-mirror__singleline': !this.multiline,\n })}\n >\n ${this.expandable\n ? html` <nile-icon\n name=\"expand-2\"\n class=\"code-editor__icon__container\"\n size=\"16\"\n color=\"black\"\n @click=\"${(e: CustomEvent) => this.expandCodeEditor()}\"\n ></nile-icon>`\n : ''}\n </div>\n ${hasErrorMessage\n ? html`\n <nile-form-error-message\n >${this.errorMessage}</nile-form-error-message\n >\n `\n : ``}`;\n }\n\n /* #endregion */\n}\n\nexport default NileCodeEditor;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-code-editor': NileCodeEditor;\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/nile-code-editor/theme.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,GAAG,EAAE;QACH,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,KAAK;KAClB;IACD,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAE;
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/nile-code-editor/theme.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,GAAG,EAAE;QACH,KAAK,EAAC,MAAM;QACZ,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,KAAK;KAClB;IACD,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC;CACrC,CAAC","sourcesContent":["export const Theme = {\n '&': {\n width:\"100%\",\n fontSize: '14px',\n fontFamily: 'Colfax-regular',\n fontWeight: '400',\n },\n '.cm-content': {},\n \".cm-scroller\": {overflow: \"hidden\"},\n};"]}
|