diff --git a/docs/styleGuide.md b/docs/styleGuide.md index e39bd0febf..77f5fb0363 100644 --- a/docs/styleGuide.md +++ b/docs/styleGuide.md @@ -5,7 +5,8 @@ #### Component 1. Must be written following the kebab-case style; -1. Must be prefixed with `kup-`. +2. Must be prefixed with `kup-`. +3. Being a web component, it must include a Shadow DOM. #### Interfaces and enums diff --git a/packages/ketchup-react/package.json b/packages/ketchup-react/package.json index b3e2a9eea4..0f8f335f4d 100644 --- a/packages/ketchup-react/package.json +++ b/packages/ketchup-react/package.json @@ -1,6 +1,6 @@ { "name": "@sme.up/ketchup-react", - "version": "9.5.2", + "version": "9.6.0", "module": "dist/index.js", "typings": "dist/index.d.ts", "keywords": [ @@ -20,7 +20,7 @@ "description": "Ketchup React Components library by smeup", "license": "Apache-2.0", "dependencies": { - "@sme.up/ketchup": "^9.5.2", + "@sme.up/ketchup": "^9.6.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/packages/ketchup-react/src/index.ts b/packages/ketchup-react/src/index.ts index 6a3c61ecac..f6b43e3781 100644 --- a/packages/ketchup-react/src/index.ts +++ b/packages/ketchup-react/src/index.ts @@ -32,6 +32,7 @@ export const KupDialog = /*@__PURE__*/createReactComponent('kup-drawer'); export const KupDropdownButton = /*@__PURE__*/createReactComponent('kup-dropdown-button'); export const KupEchart = /*@__PURE__*/createReactComponent('kup-echart'); +export const KupEditor = /*@__PURE__*/createReactComponent('kup-editor'); export const KupFamilyTree = /*@__PURE__*/createReactComponent('kup-family-tree'); export const KupForm = /*@__PURE__*/createReactComponent('kup-form'); export const KupGantt = /*@__PURE__*/createReactComponent('kup-gantt'); diff --git a/packages/ketchup-showcase/package.json b/packages/ketchup-showcase/package.json index 5d804ef8c3..bc47af9998 100644 --- a/packages/ketchup-showcase/package.json +++ b/packages/ketchup-showcase/package.json @@ -19,7 +19,7 @@ "lint": "vue-cli-service lint" }, "dependencies": { - "@sme.up/ketchup": "^9.5.2", + "@sme.up/ketchup": "^9.6.0", "core-js": "^3.30.2", "vue": "^2.6.14", "vue-router": "^3.5.1" diff --git a/packages/ketchup-showcase/src/App.vue b/packages/ketchup-showcase/src/App.vue index 9a504e9324..3b927f6637 100644 --- a/packages/ketchup-showcase/src/App.vue +++ b/packages/ketchup-showcase/src/App.vue @@ -55,8 +55,8 @@ @kup-tree-nodeselected="treeClick" > @@ -365,6 +365,16 @@ export default { value: 'EChart', visible: true, }, + { + cells: { + ROUTE: { + value: 'editor', + }, + }, + icon: 'mode_edit', + value: 'Editor', + visible: true, + }, { cells: { ROUTE: { diff --git a/packages/ketchup-showcase/src/plugins/router.ts b/packages/ketchup-showcase/src/plugins/router.ts index 89863225f6..cf18903b04 100644 --- a/packages/ketchup-showcase/src/plugins/router.ts +++ b/packages/ketchup-showcase/src/plugins/router.ts @@ -250,6 +250,11 @@ const advancedRoutes = [ name: 'planner', component: () => import(`@/views/components/advanced/planner/Planner.vue`), }, + { + path: `/editor`, + name: 'editor', + component: () => import(`@/views/components/advanced/editor/Editor.vue`), + }, ]; const thirdPartiesRoutes = [ diff --git a/packages/ketchup-showcase/src/views/components/advanced/editor/Editor.vue b/packages/ketchup-showcase/src/views/components/advanced/editor/Editor.vue new file mode 100644 index 0000000000..e85450c3e1 --- /dev/null +++ b/packages/ketchup-showcase/src/views/components/advanced/editor/Editor.vue @@ -0,0 +1,36 @@ + + + diff --git a/packages/ketchup-showcase/src/views/components/advanced/editor/examples/EditorBasic.vue b/packages/ketchup-showcase/src/views/components/advanced/editor/examples/EditorBasic.vue new file mode 100644 index 0000000000..7e43f8f29c --- /dev/null +++ b/packages/ketchup-showcase/src/views/components/advanced/editor/examples/EditorBasic.vue @@ -0,0 +1,26 @@ + + + diff --git a/packages/ketchup-showcase/src/views/components/advanced/editor/examples/EditorDemo.vue b/packages/ketchup-showcase/src/views/components/advanced/editor/examples/EditorDemo.vue new file mode 100644 index 0000000000..f3265cf1d5 --- /dev/null +++ b/packages/ketchup-showcase/src/views/components/advanced/editor/examples/EditorDemo.vue @@ -0,0 +1,170 @@ + + + diff --git a/packages/ketchup/package.json b/packages/ketchup/package.json index 08bdd9b327..83e2dd2955 100644 --- a/packages/ketchup/package.json +++ b/packages/ketchup/package.json @@ -1,6 +1,6 @@ { "name": "@sme.up/ketchup", - "version": "9.5.2", + "version": "9.6.0", "keywords": [ "smeup", "KetchUP", @@ -46,6 +46,7 @@ "@material/form-field": "^14.0.0", "@material/ripple": "^14.0.0", "@material/textfield": "^14.0.0", + "@toast-ui/editor": "^2.5.4", "d3-shape": "^3.2.0", "dayjs": "^1.11.7", "echarts": "^5.4.2", @@ -58,9 +59,9 @@ "vanilla-picker": "^2.12.1" }, "devDependencies": { - "@stencil/core": "^4.8.1", + "@stencil/core": "^4.12.0", "@stencil/react-output-target": "0.5.3", - "@stencil/sass": "^3.0.7", + "@stencil/sass": "^3.0.9", "jest": "^29.7.0", "jest-cli": "^29.7.0", "jest-html-reporter": "^3.10.2", diff --git a/packages/ketchup/src/assets/editor-example-1.js b/packages/ketchup/src/assets/editor-example-1.js new file mode 100644 index 0000000000..26244c13d6 --- /dev/null +++ b/packages/ketchup/src/assets/editor-example-1.js @@ -0,0 +1,52 @@ +let comp = document.getElementById('editor-html'); + +comp.addEventListener('kup-editor-autosave', (e) => { + console.log('kup-editor-autosave (html) ' + new Date().toISOString(), e); +}); + +let props = { + customStyle: '', + editorHeight: '400px', + initialEditType: 'wysiwyg', + initialValue: + '
prova prova 123456 56

e vado a capo

ancora

e ancora
', + isReadOnly: false, + previewStyle: 'tab', + showSaveButton: true, + showToolbar: true, + autosaveTimer: 5000, +}; + +if (props) { + for (const key in props) { + comp[key] = props[key]; + } +} + +comp = document.getElementById('editor-markdown'); + +comp.addEventListener('kup-editor-autosave', (e) => { + console.log( + 'kup-editor-autosave (markdown) ' + new Date().toISOString(), + e + ); +}); + +props = { + customStyle: '', + initialEditType: 'markdown', + initialValue: '# title 1 \n ## title2', + isReadOnly: false, + previewStyle: 'tab', + showSaveButton: false, + showToolbar: true, + autosaveTimer: 5000, +}; + +comp.style = '--kup-editor-height: 300px;'; + +if (props) { + for (const key in props) { + comp[key] = props[key]; + } +} diff --git a/packages/ketchup/src/assets/editor.js b/packages/ketchup/src/assets/editor.js new file mode 100644 index 0000000000..dc61c5ec1a --- /dev/null +++ b/packages/ketchup/src/assets/editor.js @@ -0,0 +1,60 @@ +const comp = document.getElementById('editor'); + +comp.addEventListener('kup-editor-ready', (e) => { + console.log('Editor ready', e); +}); + +comp.addEventListener('kup-editor-save', (e) => { + console.log('Editor saved', e); +}); + +comp.addEventListener('kup-editor-autosave', (e) => { + console.log('Editor auto saved', e); +}); + +const props = { + initialEditType: 'markdown', + initialValue: `

image

+

Awesome Editor!

+

It has been released as opensource in 2018 and has continually evolved to receive 10k GitHub ⭐️ Stars.

+

Create Instance

+

You can create an instance with the following code and use getHtml() and getMarkdown() of the Editor.

+
co
+
+    > See the table below for default options
+    > > More API information can be found in the document
+
+    | name | type | description |
+    | --- | --- | --- |
+    | el | HTMLElement | container element |
+
+    ## Featuress
+
+    * CommonMark + GFM Specifications
+       * Live Preview
+       * Scroll Sync
+       * Auto Indent
+       * Syntax Highlight
+            1. Markdown
+            2. Preview
+
+    ## Support Wrappers
+
+    > * Wrappers
+    >    1. [x] React
+    >    2. [x] Vue
+    >    3. [ ] Ember<p>My Custom value for editor</p>
+    
+ `, + isReadOnly: false, + previewStyle: 'vertical', + showSaveButton: true, + showToolbar: true, + // autosaveTimer: 2000 +}; + +if (props) { + for (const key in props) { + comp[key] = props[key]; + } +} diff --git a/packages/ketchup/src/assets/index.js b/packages/ketchup/src/assets/index.js index dbc1ef0de2..c142015c46 100644 --- a/packages/ketchup/src/assets/index.js +++ b/packages/ketchup/src/assets/index.js @@ -102,6 +102,14 @@ components.data = [ value: 'Echart', id: 'echart.html', }, + { + value: 'Editor', + id: 'editor.html', + }, + { + value: 'Editor example 1', + id: 'editor-example-1.html', + }, { value: 'Family tree', id: 'family-tree.html', diff --git a/packages/ketchup/src/components.d.ts b/packages/ketchup/src/components.d.ts index 0054222bb0..39deb1b65e 100644 --- a/packages/ketchup/src/components.d.ts +++ b/packages/ketchup/src/components.d.ts @@ -35,6 +35,7 @@ import { KupDropdownButtonEventPayload } from "./components/kup-dropdown-button/ import { KupEchartClickEventPayload, KupEchartLegendPlacement, KupEchartMaps, KupEchartTitle, KupEchartTypes } from "./components/kup-echart/kup-echart-declarations"; import { GeoJSON } from "geojson"; import { XAXisComponentOption, YAXisComponentOption } from "echarts"; +import { KupEditorEventPayload, KupEditorPreview, KupEditorType } from "./components/kup-editor/kup-editor-declarations"; import { KupFamilyTreeData, KupFamilyTreeEventPayload, KupFamilyTreeLayout, KupFamilyTreeNode } from "./components/kup-family-tree/kup-family-tree-declarations"; import { KupFormData, KupFormLabelPlacement, KupFormLayout } from "./components/kup-form/kup-form-declarations"; import { KupBadge } from "./components/kup-badge/kup-badge"; @@ -83,6 +84,7 @@ export { KupDropdownButtonEventPayload } from "./components/kup-dropdown-button/ export { KupEchartClickEventPayload, KupEchartLegendPlacement, KupEchartMaps, KupEchartTitle, KupEchartTypes } from "./components/kup-echart/kup-echart-declarations"; export { GeoJSON } from "geojson"; export { XAXisComponentOption, YAXisComponentOption } from "echarts"; +export { KupEditorEventPayload, KupEditorPreview, KupEditorType } from "./components/kup-editor/kup-editor-declarations"; export { KupFamilyTreeData, KupFamilyTreeEventPayload, KupFamilyTreeLayout, KupFamilyTreeNode } from "./components/kup-family-tree/kup-family-tree-declarations"; export { KupFormData, KupFormLabelPlacement, KupFormLayout } from "./components/kup-form/kup-form-declarations"; export { KupBadge } from "./components/kup-badge/kup-badge"; @@ -1832,6 +1834,71 @@ export namespace Components { */ "yAxis": YAXisComponentOption; } + interface KupEditor { + /** + * When specified, the component will emit the kup-editor-autosave event at regular intervals. + * @default null + */ + "autosaveTimer": number; + /** + * Sets the height of the component. + * @default "auto" + */ + "editorHeight": string; + /** + * Used to retrieve component's props values. + * @param descriptions - When provided and true, the result will be the list of props with their description. + * @returns List of props as object, each key will be a prop. + */ + "getProps": (descriptions?: boolean) => Promise; + /** + * Returns the component's internal value as html. + */ + "getValueAsHTML": () => Promise; + /** + * Returns the component's internal value as markdown. + */ + "getValueAsMarkdown": () => Promise; + /** + * The editor type. + * @default 'markdown' + */ + "initialEditType": KupEditorType; + /** + * The initial editor value. + * @default '' + */ + "initialValue": string; + /** + * Defines whether the editor is disabled or not. + * @default false + */ + "isReadOnly": boolean; + /** + * The editor preview style. + * @default 'vertical' + */ + "previewStyle": KupEditorPreview; + /** + * This method is used to trigger a new render of the component. + */ + "refresh": () => Promise; + /** + * Sets the props to the component. + * @param props - Object containing props that will be set to the component. + */ + "setProps": (props: GenericObject) => Promise; + /** + * Defines whether to show the save button in editor's toolbar or not. + * @default true + */ + "showSaveButton": boolean; + /** + * Defines whether to show the editor's toolbar or not. + * @default true + */ + "showToolbar": boolean; + } interface KupFamilyTree { /** * The component will autofit everytime a node is expanded. @@ -2212,7 +2279,7 @@ export namespace Components { "rtl": boolean; "scrollNumber": number; "svgWidth": number; - "taskGanttRef": HTMLDivElement; + "taskListTrueRef": HTMLKupTaskListElement; "taskListWidth": number; } interface KupIframe { @@ -3873,6 +3940,10 @@ export interface KupEchartCustomEvent extends CustomEvent { detail: T; target: HTMLKupEchartElement; } +export interface KupEditorCustomEvent extends CustomEvent { + detail: T; + target: HTMLKupEditorElement; +} export interface KupFamilyTreeCustomEvent extends CustomEvent { detail: T; target: HTMLKupFamilyTreeElement; @@ -4392,6 +4463,25 @@ declare global { prototype: HTMLKupEchartElement; new (): HTMLKupEchartElement; }; + interface HTMLKupEditorElementEventMap { + "kup-editor-autosave": KupEditorEventPayload; + "kup-editor-ready": KupEventPayload; + "kup-editor-save": KupEditorEventPayload; + } + interface HTMLKupEditorElement extends Components.KupEditor, HTMLStencilElement { + addEventListener(type: K, listener: (this: HTMLKupEditorElement, ev: KupEditorCustomEvent) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; + addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; + removeEventListener(type: K, listener: (this: HTMLKupEditorElement, ev: KupEditorCustomEvent) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void; + removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; + } + var HTMLKupEditorElement: { + prototype: HTMLKupEditorElement; + new (): HTMLKupEditorElement; + }; interface HTMLKupFamilyTreeElementEventMap { "kup-familytree-click": KupFamilyTreeEventPayload; "kup-familytree-contextmenu": KupFamilyTreeEventPayload; @@ -4926,6 +5016,7 @@ declare global { "kup-drawer": HTMLKupDrawerElement; "kup-dropdown-button": HTMLKupDropdownButtonElement; "kup-echart": HTMLKupEchartElement; + "kup-editor": HTMLKupEditorElement; "kup-family-tree": HTMLKupFamilyTreeElement; "kup-form": HTMLKupFormElement; "kup-gantt": HTMLKupGanttElement; @@ -6400,6 +6491,60 @@ declare namespace LocalJSX { */ "yAxis"?: YAXisComponentOption; } + interface KupEditor { + /** + * When specified, the component will emit the kup-editor-autosave event at regular intervals. + * @default null + */ + "autosaveTimer"?: number; + /** + * Sets the height of the component. + * @default "auto" + */ + "editorHeight"?: string; + /** + * The editor type. + * @default 'markdown' + */ + "initialEditType"?: KupEditorType; + /** + * The initial editor value. + * @default '' + */ + "initialValue"?: string; + /** + * Defines whether the editor is disabled or not. + * @default false + */ + "isReadOnly"?: boolean; + /** + * Triggered at regular intervals if autosaveTimer prop is initialised. + */ + "onKup-editor-autosave"?: (event: KupEditorCustomEvent) => void; + /** + * Triggered when the component is ready. + */ + "onKup-editor-ready"?: (event: KupEditorCustomEvent) => void; + /** + * Triggered when save button is clicked. + */ + "onKup-editor-save"?: (event: KupEditorCustomEvent) => void; + /** + * The editor preview style. + * @default 'vertical' + */ + "previewStyle"?: KupEditorPreview; + /** + * Defines whether to show the save button in editor's toolbar or not. + * @default true + */ + "showSaveButton"?: boolean; + /** + * Defines whether to show the editor's toolbar or not. + * @default true + */ + "showToolbar"?: boolean; + } interface KupFamilyTree { /** * The component will autofit everytime a node is expanded. @@ -6709,7 +6854,7 @@ declare namespace LocalJSX { "rtl"?: boolean; "scrollNumber"?: number; "svgWidth"?: number; - "taskGanttRef"?: HTMLDivElement; + "taskListTrueRef"?: HTMLKupTaskListElement; "taskListWidth"?: number; } interface KupIframe { @@ -8065,6 +8210,7 @@ declare namespace LocalJSX { "kup-drawer": KupDrawer; "kup-dropdown-button": KupDropdownButton; "kup-echart": KupEchart; + "kup-editor": KupEditor; "kup-family-tree": KupFamilyTree; "kup-form": KupForm; "kup-gantt": KupGantt; @@ -8134,6 +8280,7 @@ declare module "@stencil/core" { "kup-drawer": LocalJSX.KupDrawer & JSXBase.HTMLAttributes; "kup-dropdown-button": LocalJSX.KupDropdownButton & JSXBase.HTMLAttributes; "kup-echart": LocalJSX.KupEchart & JSXBase.HTMLAttributes; + "kup-editor": LocalJSX.KupEditor & JSXBase.HTMLAttributes; "kup-family-tree": LocalJSX.KupFamilyTree & JSXBase.HTMLAttributes; "kup-form": LocalJSX.KupForm & JSXBase.HTMLAttributes; "kup-gantt": LocalJSX.KupGantt & JSXBase.HTMLAttributes; diff --git a/packages/ketchup/src/components/kup-accordion/readme.md b/packages/ketchup/src/components/kup-accordion/readme.md index df465069f8..983dfff953 100644 --- a/packages/ketchup/src/components/kup-accordion/readme.md +++ b/packages/ketchup/src/components/kup-accordion/readme.md @@ -45,6 +45,12 @@ Type: `Promise` Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -65,6 +71,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` @@ -75,6 +87,12 @@ Type: `Promise` This method activates or deactivates an item +#### Parameters + +| Name | Type | Description | +| ---------- | -------- | ------------------- | +| `itemName` | `string` | - Name of the item. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-autocomplete/readme.md b/packages/ketchup/src/components/kup-autocomplete/readme.md index 140594c5c4..3f5eb0bddc 100644 --- a/packages/ketchup/src/components/kup-autocomplete/readme.md +++ b/packages/ketchup/src/components/kup-autocomplete/readme.md @@ -39,6 +39,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -79,6 +85,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` @@ -89,6 +101,12 @@ Type: `Promise` Sets the value of the component. +#### Parameters + +| Name | Type | Description | +| ------- | -------- | ------------------------- | +| `value` | `string` | - Value of the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-badge/readme.md b/packages/ketchup/src/components/kup-badge/readme.md index c2a5e81044..3ead4cc4ee 100644 --- a/packages/ketchup/src/components/kup-badge/readme.md +++ b/packages/ketchup/src/components/kup-badge/readme.md @@ -25,6 +25,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -45,6 +51,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-box/readme.md b/packages/ketchup/src/components/kup-box/readme.md index dc45af5bdc..41a595f7ab 100644 --- a/packages/ketchup/src/components/kup-box/readme.md +++ b/packages/ketchup/src/components/kup-box/readme.md @@ -56,6 +56,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -66,6 +72,13 @@ List of props as object, each key will be a prop. +#### Parameters + +| Name | Type | Description | +| --------- | -------------------- | ----------- | +| `row` | `KupBoxRow` | | +| `actions` | `KupDataRowAction[]` | | + #### Returns Type: `Promise` @@ -86,6 +99,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-box/styles/kup-box-main.scss b/packages/ketchup/src/components/kup-box/styles/kup-box-main.scss index 40c17c838d..70f6d8fc40 100644 --- a/packages/ketchup/src/components/kup-box/styles/kup-box-main.scss +++ b/packages/ketchup/src/components/kup-box/styles/kup-box-main.scss @@ -61,7 +61,7 @@ } } - * { + *:not(.progress-bar-percentage) { box-sizing: border-box; } diff --git a/packages/ketchup/src/components/kup-button-list/readme.md b/packages/ketchup/src/components/kup-button-list/readme.md index 0fea5ee6dc..3f6445bd6d 100644 --- a/packages/ketchup/src/components/kup-button-list/readme.md +++ b/packages/ketchup/src/components/kup-button-list/readme.md @@ -32,6 +32,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -52,6 +58,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-button/readme.md b/packages/ketchup/src/components/kup-button/readme.md index 6d3f8185ef..075e9e128a 100644 --- a/packages/ketchup/src/components/kup-button/readme.md +++ b/packages/ketchup/src/components/kup-button/readme.md @@ -35,6 +35,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -55,6 +61,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-calendar/readme.md b/packages/ketchup/src/components/kup-calendar/readme.md index 2ba1558836..85221c0dce 100644 --- a/packages/ketchup/src/components/kup-calendar/readme.md +++ b/packages/ketchup/src/components/kup-calendar/readme.md @@ -33,6 +33,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -63,6 +69,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-card-list/readme.md b/packages/ketchup/src/components/kup-card-list/readme.md index 5f516c8732..a416a6ea30 100644 --- a/packages/ketchup/src/components/kup-card-list/readme.md +++ b/packages/ketchup/src/components/kup-card-list/readme.md @@ -38,6 +38,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -58,6 +64,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-card/readme.md b/packages/ketchup/src/components/kup-card/readme.md index cbd3ed9a71..2222af06e7 100644 --- a/packages/ketchup/src/components/kup-card/readme.md +++ b/packages/ketchup/src/components/kup-card/readme.md @@ -33,6 +33,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -63,6 +69,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` @@ -106,6 +118,7 @@ Type: `Promise` - [kup-drawer](../kup-drawer) - [kup-dropdown-button](../kup-dropdown-button) - [kup-echart](../kup-echart) + - [kup-editor](../kup-editor) - [kup-family-tree](../kup-family-tree) - [kup-form](../kup-form) - [kup-gauge](../kup-gauge) @@ -199,6 +212,7 @@ graph TD; kup-dashboard --> kup-card kup-drawer --> kup-card kup-echart --> kup-card + kup-editor --> kup-card kup-family-tree --> kup-card kup-grid --> kup-card kup-iframe --> kup-card diff --git a/packages/ketchup/src/components/kup-cell/readme.md b/packages/ketchup/src/components/kup-cell/readme.md index ff4395117e..ef0ee0eee8 100644 --- a/packages/ketchup/src/components/kup-cell/readme.md +++ b/packages/ketchup/src/components/kup-cell/readme.md @@ -21,6 +21,12 @@ Adds the given CSS classes to the cell's data. +#### Parameters + +| Name | Type | Description | +| --------- | ---------- | ----------------------- | +| `classes` | `string[]` | - Array of CSS classes. | + #### Returns Type: `Promise` @@ -31,6 +37,12 @@ Type: `Promise` Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -51,6 +63,12 @@ Type: `Promise` Removes the given CSS classes from the cell's data. +#### Parameters + +| Name | Type | Description | +| --------- | ---------- | ----------------------- | +| `classes` | `string[]` | - Array of CSS classes. | + #### Returns Type: `Promise` @@ -61,6 +79,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-chart/readme.md b/packages/ketchup/src/components/kup-chart/readme.md index a380a395ae..9bbad25441 100644 --- a/packages/ketchup/src/components/kup-chart/readme.md +++ b/packages/ketchup/src/components/kup-chart/readme.md @@ -43,6 +43,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -73,6 +79,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-checkbox/readme.md b/packages/ketchup/src/components/kup-checkbox/readme.md index f3f2892868..835977965a 100644 --- a/packages/ketchup/src/components/kup-checkbox/readme.md +++ b/packages/ketchup/src/components/kup-checkbox/readme.md @@ -35,6 +35,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -55,6 +61,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-chip/readme.md b/packages/ketchup/src/components/kup-chip/readme.md index 916d9f25fd..27cf264aaf 100644 --- a/packages/ketchup/src/components/kup-chip/readme.md +++ b/packages/ketchup/src/components/kup-chip/readme.md @@ -31,6 +31,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -51,6 +57,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-color-picker/readme.md b/packages/ketchup/src/components/kup-color-picker/readme.md index fdea59c924..66e98d7dbe 100644 --- a/packages/ketchup/src/components/kup-color-picker/readme.md +++ b/packages/ketchup/src/components/kup-color-picker/readme.md @@ -29,6 +29,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -69,6 +75,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` @@ -79,6 +91,12 @@ Type: `Promise` Sets the component's value. +#### Parameters + +| Name | Type | Description | +| ------- | -------- | ------------------ | +| `value` | `string` | - Value to be set. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-combobox/readme.md b/packages/ketchup/src/components/kup-combobox/readme.md index 2c0a7256f1..51caba25fc 100644 --- a/packages/ketchup/src/components/kup-combobox/readme.md +++ b/packages/ketchup/src/components/kup-combobox/readme.md @@ -36,6 +36,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -76,6 +82,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` @@ -86,6 +98,12 @@ Type: `Promise` Sets the component's value. +#### Parameters + +| Name | Type | Description | +| ------- | -------- | ------------------ | +| `value` | `string` | - Value to be set. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-dashboard/readme.md b/packages/ketchup/src/components/kup-dashboard/readme.md index 67ab6a91b4..2055c88623 100644 --- a/packages/ketchup/src/components/kup-dashboard/readme.md +++ b/packages/ketchup/src/components/kup-dashboard/readme.md @@ -25,6 +25,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -45,6 +51,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-data-table/kup-data-table.tsx b/packages/ketchup/src/components/kup-data-table/kup-data-table.tsx index b5938bd8e8..5559887b9a 100644 --- a/packages/ketchup/src/components/kup-data-table/kup-data-table.tsx +++ b/packages/ketchup/src/components/kup-data-table/kup-data-table.tsx @@ -4368,7 +4368,7 @@ export class KupDataTable { totalMenu = ( - {this.#kupManager.openAI && this.#kupManager.openAI.url ? ( + {this.#kupManager.enableExperimentalFeatures && + this.#kupManager.openAI && + this.#kupManager.openAI.url ? ( ` +#### Parameters + +| Name | Type | Description | +| ---------------------- | ----------------- | ----------- | +| `columns` | `KupDataColumn[]` | | +| `receivingColumnIndex` | `number` | | +| `sortedColumnIndex` | `number` | | +| `useNewObject` | `boolean` | | + #### Returns Type: `Promise` @@ -170,6 +179,12 @@ Type: `Promise` This method will delete rows by id from the data table dataset. +#### Parameters + +| Name | Type | Description | +| ----- | ---------- | ----------------------------- | +| `ids` | `string[]` | - Array of row ids to delete. | + #### Returns Type: `Promise` @@ -210,6 +225,12 @@ Type: `Promise<{ groups: GroupObject[]; filters: GenericFilter; data: KupDataTab Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -230,6 +251,12 @@ Type: `Promise` Hides the given column. +#### Parameters + +| Name | Type | Description | +| -------- | --------------- | ----------------- | +| `column` | `KupDataColumn` | - Column to hide. | + #### Returns Type: `Promise` @@ -240,6 +267,12 @@ Type: `Promise` Adds a new row to the list data +#### Parameters + +| Name | Type | Description | +| ----- | ----------------- | ----------- | +| `row` | `KupDataTableRow` | new row | + #### Returns Type: `Promise` @@ -250,6 +283,13 @@ Type: `Promise` Invokes the KupData API for column creation, then refreshes the component in case no errors were catched. +#### Parameters + +| Name | Type | Description | +| --------- | ------------------------- | ------------------------------ | +| `type` | `KupDataNewColumnTypes` | - Type of the column creation. | +| `options` | `KupDataNewColumnOptions` | - Options of the creation. | + #### Returns Type: `Promise` @@ -260,6 +300,12 @@ Returns the new column created or a string containing the error message if somet Opens the column menu of the given column. +#### Parameters + +| Name | Type | Description | +| -------- | -------- | --------------------- | +| `column` | `string` | - Name of the column. | + #### Returns Type: `Promise` @@ -270,6 +316,12 @@ Type: `Promise` This method is used to trigger a new render of the component. +#### Parameters + +| Name | Type | Description | +| ------------ | --------- | ----------- | +| `recalcRows` | `boolean` | | + #### Returns Type: `Promise` @@ -290,6 +342,14 @@ Type: `Promise` Sets the cell value in a table cell. +#### Parameters + +| Name | Type | Description | +| ------------ | -------- | --------------------- | +| `columnName` | `string` | - Name of the column. | +| `rowId` | `string` | - Id of the row. | +| `value` | `string` | - Value to set. | + #### Returns Type: `Promise` @@ -300,6 +360,13 @@ Type: `Promise` Sets the focus on an editable table cell. +#### Parameters + +| Name | Type | Description | +| -------- | -------- | --------------------- | +| `column` | `string` | - Name of the column. | +| `rowId` | `string` | - Id of the row. | + #### Returns Type: `Promise` @@ -310,6 +377,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` @@ -320,6 +393,13 @@ Type: `Promise` This method will set the selected rows of the component. +#### Parameters + +| Name | Type | Description | +| ----------------- | ---------------------- | -------------------------------------------------------------------- | +| `rowsIdentifiers` | `string[] \| number[]` | - Array of ids (dataset) or indexes (rendered rows). | +| `emitEvent` | `boolean` | - The event will always be emitted unless emitEvent is set to false. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-date-picker/readme.md b/packages/ketchup/src/components/kup-date-picker/readme.md index 19c6b2ab64..afea304078 100644 --- a/packages/ketchup/src/components/kup-date-picker/readme.md +++ b/packages/ketchup/src/components/kup-date-picker/readme.md @@ -35,6 +35,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -75,6 +81,12 @@ Type: `Promise` Sets the component's value. +#### Parameters + +| Name | Type | Description | +| ------- | -------- | ------------------ | +| `value` | `string` | - Value to be set. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-dialog/kup-dialog.scss b/packages/ketchup/src/components/kup-dialog/kup-dialog.scss index 4860ff7ee6..a0b12b7367 100644 --- a/packages/ketchup/src/components/kup-dialog/kup-dialog.scss +++ b/packages/ketchup/src/components/kup-dialog/kup-dialog.scss @@ -8,11 +8,11 @@ box-sizing: border-box; display: block; height: var(--kup_dialog_height); - left: var(--kup_dialog_left); + left: var(--kup_dialog_left, -100%); min-height: var(--kup_dialog_height); min-width: var(--kup_dialog_width); position: absolute; - top: var(--kup_dialog_top); + top: var(--kup_dialog_top, -100%); transition: opacity 0.25s ease-in; width: var(--kup_dialog_width); } diff --git a/packages/ketchup/src/components/kup-dialog/kup-dialog.tsx b/packages/ketchup/src/components/kup-dialog/kup-dialog.tsx index 3be61d33a0..fbf1603f9b 100644 --- a/packages/ketchup/src/components/kup-dialog/kup-dialog.tsx +++ b/packages/ketchup/src/components/kup-dialog/kup-dialog.tsx @@ -136,7 +136,7 @@ export class KupDialog { @Method() async recalcPosition(): Promise { const rect = this.rootElement.getBoundingClientRect(); - if (!rect.x && !rect.y) { + if (!rect.x && !rect.y && !rect.height && !rect.width) { this.#kupManager.debug.logMessage( this, `recalcPosition() ran before the component finished being drawn. Running again (attempt #${ @@ -158,7 +158,7 @@ export class KupDialog { } this.#recalcSafeguard = 0; const left = window.innerWidth / 2 - rect.width / 2; - const top = window.innerHeight / 2 - rect.height / 2; + const top = window.innerHeight / 2 - rect.height / 2 + window.scrollY; this.rootElement.style.setProperty('--kup_dialog_left', left + 'px'); this.rootElement.style.setProperty('--kup_dialog_top', top + 'px'); this.rootElement.removeAttribute('fade-in'); diff --git a/packages/ketchup/src/components/kup-dialog/readme.md b/packages/ketchup/src/components/kup-dialog/readme.md index 47b25c9286..bac826b690 100644 --- a/packages/ketchup/src/components/kup-dialog/readme.md +++ b/packages/ketchup/src/components/kup-dialog/readme.md @@ -42,6 +42,12 @@ Type: `Promise` Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -72,6 +78,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` @@ -112,6 +124,7 @@ Type: `Promise` - [kup-drawer](../kup-drawer) - [kup-dropdown-button](../kup-dropdown-button) - [kup-echart](../kup-echart) + - [kup-editor](../kup-editor) - [kup-family-tree](../kup-family-tree) - [kup-form](../kup-form) - [kup-gauge](../kup-gauge) @@ -183,6 +196,7 @@ graph TD; kup-dashboard --> kup-dialog kup-drawer --> kup-dialog kup-echart --> kup-dialog + kup-editor --> kup-dialog kup-family-tree --> kup-dialog kup-grid --> kup-dialog kup-iframe --> kup-dialog diff --git a/packages/ketchup/src/components/kup-drawer/readme.md b/packages/ketchup/src/components/kup-drawer/readme.md index 7d4dc16f1a..fd16c69759 100644 --- a/packages/ketchup/src/components/kup-drawer/readme.md +++ b/packages/ketchup/src/components/kup-drawer/readme.md @@ -37,6 +37,12 @@ Type: `Promise` Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -77,6 +83,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-dropdown-button/readme.md b/packages/ketchup/src/components/kup-dropdown-button/readme.md index 1cc6451af1..c852f77be7 100644 --- a/packages/ketchup/src/components/kup-dropdown-button/readme.md +++ b/packages/ketchup/src/components/kup-dropdown-button/readme.md @@ -39,6 +39,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -69,6 +75,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` @@ -79,6 +91,12 @@ Type: `Promise` Sets the internal value of the component. +#### Parameters + +| Name | Type | Description | +| ------- | -------- | ----------- | +| `value` | `string` | | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-echart/readme.md b/packages/ketchup/src/components/kup-echart/readme.md index 010756ce44..4900838c55 100644 --- a/packages/ketchup/src/components/kup-echart/readme.md +++ b/packages/ketchup/src/components/kup-echart/readme.md @@ -38,6 +38,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -68,6 +74,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-editor/kup-editor-declarations.ts b/packages/ketchup/src/components/kup-editor/kup-editor-declarations.ts new file mode 100644 index 0000000000..7b0e31bdbe --- /dev/null +++ b/packages/ketchup/src/components/kup-editor/kup-editor-declarations.ts @@ -0,0 +1,25 @@ +import { KupEventPayload } from '../../types/GenericTypes'; + +/** + * Props of the kup-dropdown-button component. + * Used to export every prop in an object. + */ +export enum KupEditorProps { + autosaveTimer = 'When a number is specified, the component will emit the kup-editor-save event at regular intervals. The amount of time every interval will last is specified but the prop itself.', + editorHeight = 'Sets the height of the component.', + initialEditType = 'Initializes editor with the specified editor type. Suported values: "markdown", "wysiwyg".', + initialValue = 'Initializes editor with the specified string.', + isReadOnly = 'Defaults at false. When set, When set, the editor’s content can’t be changed..', + previewStyle = 'Initializes editor with the specified preview type. Suported values: "tab", "vertical".', + showSaveButton = 'When set, a save button shown in the editor’s toolbar.', + showToolbar = 'When set to false, the toolbar will not be shown.', +} + +export type KupEditorType = 'wysiwyg' | 'markdown'; + +export type KupEditorPreview = 'tab' | 'vertical'; + +export interface KupEditorEventPayload extends KupEventPayload { + htmlValue: string; + markdownValue: string; +} diff --git a/packages/ketchup/src/components/kup-editor/kup-editor.tsx b/packages/ketchup/src/components/kup-editor/kup-editor.tsx new file mode 100644 index 0000000000..5070ff88c2 --- /dev/null +++ b/packages/ketchup/src/components/kup-editor/kup-editor.tsx @@ -0,0 +1,560 @@ +import { + Component, + Element, + Event, + EventEmitter, + forceUpdate, + h, + Host, + Method, + Prop, + State, + Watch, +} from '@stencil/core'; +import { + KupManager, + kupManagerInstance, +} from '../../managers/kup-manager/kup-manager'; +import { componentWrapperId } from '../../variables/GenericVariables'; +import { + GenericObject, + KupComponent, + KupEventPayload, +} from '../../types/GenericTypes'; +import Editor, { EditorOptions } from '@toast-ui/editor'; +import { + KupEditorEventPayload, + KupEditorPreview, + KupEditorProps, + KupEditorType, +} from './kup-editor-declarations'; +import Viewer, { + ViewerOptions, +} from '@toast-ui/editor/dist/toastui-editor-viewer'; +import { getProps, setProps } from '../../utils/utils'; + +@Component({ + tag: 'kup-editor', + shadow: false, +}) +export class KupEditor { + /** + * References the root HTML element of the component (). + */ + @Element() rootElement: HTMLElement; + + /*-------------------------------------------------*/ + /* S t a t e s */ + /*-------------------------------------------------*/ + + /** + * The editor instance. + * @default null + */ + @State() editor: Editor = null; + + /** + * The editor html element instance. + * @default null + */ + @State() editorRef: HTMLDivElement; + + /** + * The viewer instance. + * @default null + */ + @State() viewer: Viewer = null; + + /*-------------------------------------------------*/ + /* P r o p s */ + /*-------------------------------------------------*/ + + /** + * When specified, the component will emit the kup-editor-autosave event at regular intervals. + * @default null + */ + @Prop() autosaveTimer: number; + + /** + * Sets the height of the component. + * @default "auto" + */ + @Prop() editorHeight: string = 'auto'; + + /** + * The editor type. + * @default 'markdown' + */ + @Prop() initialEditType: KupEditorType = 'markdown'; + + /** + * The initial editor value. + * @default '' + */ + @Prop({ mutable: false, reflect: false }) initialValue: string = ''; + + /** + * Defines whether the editor is disabled or not. + * @default false + */ + @Prop() isReadOnly: boolean = false; + + /** + * The editor preview style. + * @default 'vertical' + */ + @Prop() previewStyle: KupEditorPreview = 'vertical'; + + /** + * Defines whether to show the save button in editor's toolbar or not. + * @default true + */ + @Prop() showSaveButton: boolean = true; + + /** + * Defines whether to show the editor's toolbar or not. + * @default true + */ + @Prop() showToolbar: boolean = true; + + /*-------------------------------------------------*/ + /* I n t e r n a l V a r i a b l e s */ + /*-------------------------------------------------*/ + + #autosaveInterval: NodeJS.Timeout; + #hasChanges: boolean = false; + #initialContent: string = ''; + #kupManager: KupManager = kupManagerInstance(); + #unsavedChangesIndex = 0; + #unsavedChangesItem: toastui.ToolbarButton = { + options: { + className: 'kup-editor-unsaved-changes', + el: this.createUnsavedChanges(), + tooltip: 'There are unsaved changes.', + }, + type: 'button', + }; + + /*-------------------------------------------------*/ + /* E v e n t s */ + /*-------------------------------------------------*/ + + /** + * Triggered at regular intervals if autosaveTimer prop is initialised. + */ + @Event({ + eventName: 'kup-editor-autosave', + composed: true, + cancelable: false, + bubbles: true, + }) + kupAutoSave: EventEmitter; + + /** + * Triggered when the component is ready. + */ + @Event({ + eventName: 'kup-editor-ready', + composed: true, + cancelable: false, + bubbles: true, + }) + kupReady: EventEmitter; + + /** + * Triggered when save button is clicked. + */ + @Event({ + eventName: 'kup-editor-save', + composed: true, + cancelable: false, + bubbles: true, + }) + kupSave: EventEmitter; + + /*-------------------------------------------------*/ + /* W a t c h e r s */ + /*-------------------------------------------------*/ + + @Watch('editorRef') + onEditorRefUpdated() { + if (this.editorRef && !this.editor) { + if (!this.isReadOnly) { + this.createEditor(); + } else { + this.createViewer(); + } + } + } + + @Watch('editor') + onEditorUpdate() { + if (this.editor) { + // to give focus to editor + setTimeout(() => { + this.editor && this.editor.moveCursorToStart(); + }, 100); + } + } + + @Watch('initialEditType') + onInitialEditTypeChanged() { + if ( + (this.initialEditType != 'markdown' && + this.initialEditType != 'wysiwyg') || + !this.editor + ) + return; + this.editor.changeMode(this.initialEditType); + this.updateToolbarVisiblity(); + } + + @Watch('isReadOnly') + onIsReadOnlyChanged() { + if (this.isReadOnly) { + this.editor.remove(); + this.editor = null; + this.createViewer(); + } else { + this.viewer.remove(); + this.viewer = null; + this.createEditor(); + } + } + + @Watch('previewStyle') + onPreviewStyleChanged() { + if ( + (this.previewStyle != 'tab' && this.previewStyle != 'vertical') || + !this.editor + ) + return; + this.editor.changePreviewStyle(this.previewStyle); + + /* + this is a fix to a bug in editor, when editor is in tab style and preview tab is selected + all toolbar buttons are disabled so at that point if we change the preview style to vertical + the toolbar buttons still remains disabled, so we call the enable all button function manually + */ + if (this.previewStyle == 'vertical') { + this.editor.getUI().getToolbar().enableAllButton(); + } + + this.updateToolbarVisiblity(); + } + + @Watch('showSaveButton') + onShowSaveButtonChanged() { + if (this.editor) { + const toolbar = this.editor.getUI().getToolbar(); + if (this.showSaveButton) { + toolbar.insertItem(0, this.getToolBarWithSaveButton(false)[0]); + } else { + toolbar.removeItem(0); + } + } + } + + @Watch('showToolbar') + onShowToolBarChanged() { + if (this.editor) { + this.updateToolbarVisiblity(); + } + } + + @Watch('autosaveTimer') + onAutosaveTimerChanged() { + if (this.editor) { + this.#autosaveInterval && clearInterval(this.#autosaveInterval); + typeof this.autosaveTimer === 'number' && + this.autosaveTimer > 0 && + this.setAutosaveInterval(); + } + } + + /*-------------------------------------------------*/ + /* P u b l i c M e t h o d s */ + /*-------------------------------------------------*/ + + /** + * Used to retrieve component's props values. + * @param {boolean} descriptions - When provided and true, the result will be the list of props with their description. + * @returns {Promise} List of props as object, each key will be a prop. + */ + @Method() + async getProps(descriptions?: boolean): Promise { + return getProps(this, KupEditorProps, descriptions); + } + /** + * Returns the component's internal value as html. + */ + @Method() + async getValueAsHTML(): Promise { + return this.editor?.getHtml() ?? ''; + } + /** + * Returns the component's internal value as markdown. + */ + @Method() + async getValueAsMarkdown(): Promise { + return this.editor?.getMarkdown() ?? ''; + } + /** + * This method is used to trigger a new render of the component. + */ + @Method() + async refresh(): Promise { + forceUpdate(this); + } + /** + * Sets the props to the component. + * @param {GenericObject} props - Object containing props that will be set to the component. + */ + @Method() + async setProps(props: GenericObject): Promise { + setProps(this, KupEditorProps, props); + } + + /*-------------------------------------------------*/ + /* P r i v a t e M e t h o d s */ + /*-------------------------------------------------*/ + + createEditor() { + const editorProps: EditorOptions = { + el: this.editorRef, + events: { + change: () => { + if (this.#initialContent !== this.editor.getMarkdown()) { + if (!this.#hasChanges) { + this.#unsavedChangesIndex = + this.editor.getUI().getToolbar().getItems() + .length - 1; + this.editor + .getUI() + .getToolbar() + .insertItem( + this.#unsavedChangesIndex, + this.#unsavedChangesItem + ); + } + this.#hasChanges = true; + } else { + if (this.#hasChanges) { + this.editor + .getUI() + .getToolbar() + .removeItem(this.#unsavedChangesIndex); + } + this.#hasChanges = false; + } + }, + focus: () => { + if (!this.isReadOnly && !this.showToolbar) { + this.showToolbar = true; + } + }, + }, + height: this.editorHeight ?? 'auto', + hideModeSwitch: true, + initialEditType: this.initialEditType, + initialValue: this.initialValue, + placeholder: 'Type your text here...', + previewStyle: this.previewStyle, + usageStatistics: false, + }; + + if (this.showSaveButton) { + editorProps.toolbarItems = this.getToolBarWithSaveButton(); + } + + this.editor = new Editor(editorProps); + this.#initialContent = this.editor.getMarkdown(); + + if (!this.showToolbar) { + this.updateToolbarVisiblity(); + } + + typeof this.autosaveTimer === 'number' && + this.autosaveTimer > 0 && + this.setAutosaveInterval(); + } + + createViewer() { + const viewerProps: ViewerOptions = { + el: this.editorRef, + initialValue: this.initialValue, + }; + + this.viewer = new Viewer(viewerProps); + } + + createSaveButton() { + const button: HTMLElement = document.createElement('button'); + + button.className = 'kup-editor-save-button'; + button.innerHTML = ` + + + + + + + `; + button.addEventListener('click', this.onEditorSave.bind(this)); + + return button; + } + + createDivider() { + const el: HTMLElement = document.createElement('div'); + el.className = 'kup-editor-divider'; + const divider: toastui.ToolbarButton = { + options: { + className: 'kup-editor-divider', + el, + }, + type: 'button', + }; + return divider; + } + + createUnsavedChanges() { + const el: HTMLElement = document.createElement('span'); + el.className = 'kup-editor-unsaved-changes'; + el.innerText = 'Unsaved changes.'; + return el; + } + + updateToolbarVisiblity() { + const toolbarElement = this.editor.getUI().getToolbar().el; + const toolbarParentElement = toolbarElement.parentElement; + + toolbarElement.style.display = ''; + toolbarParentElement.style.display = ''; + + if (!this.showToolbar) { + toolbarElement.style.display = 'none'; + if ( + this.initialEditType != 'markdown' || + this.previewStyle != 'tab' + ) { + toolbarParentElement.style.display = 'none'; + } + } + } + + setAutosaveInterval() { + this.#autosaveInterval = setInterval(() => { + this.onEditorAutoSave(); + }, this.autosaveTimer); + } + + onEditorSave() { + this.kupSave.emit(this.getSaveAndAutoSaveProps()); + } + + onEditorAutoSave() { + this.kupAutoSave.emit(this.getSaveAndAutoSaveProps()); + } + + getToolBarWithSaveButton(includeDefaultItems: boolean = true) { + const options: Partial = { + toolbarItems: [ + { + options: { + el: this.createSaveButton(), + tooltip: 'Save', + }, + type: 'button', + }, + this.createDivider(), + ...(includeDefaultItems ? this.getDefaultToolBarItems() : []), + ], + }; + + return options.toolbarItems; + } + + getDefaultToolBarItems() { + const toolBarItems = [ + 'heading', + 'bold', + 'italic', + 'strike', + this.createDivider(), + 'hr', + 'quote', + this.createDivider(), + 'ul', + 'ol', + 'task', + 'indent', + 'outdent', + this.createDivider(), + 'table', + 'image', + 'link', + this.createDivider(), + 'code', + 'codeblock', + ]; + + if (this.initialEditType == 'markdown') { + toolBarItems.push('scrollSync'); + } + return toolBarItems; + } + + getSaveAndAutoSaveProps(): KupEditorEventPayload { + return { + comp: this, + id: this.rootElement.id, + htmlValue: this.editor.getHtml() ?? '', + markdownValue: this.editor.getMarkdown() ?? '', + }; + } + + /*-------------------------------------------------*/ + /* L i f e c y c l e H o o k s */ + /*-------------------------------------------------*/ + + componentWillLoad() { + this.#kupManager.debug.logLoad(this, false); + this.#kupManager.theme.register(this); + } + + componentDidLoad() { + this.kupReady.emit({ + comp: this, + id: this.rootElement.id, + }); + this.#kupManager.debug.logLoad(this, true); + } + + componentWillRender() { + this.#kupManager.debug.logRender(this, false); + } + + componentDidRender() { + this.#kupManager.debug.logRender(this, true); + } + + render() { + return ( + +
+
(this.editorRef = el)} + class="kup-editor" + >
+
+
+ ); + } + + disconnectedCallback() { + this.#kupManager.theme.unregister(this); + this.#autosaveInterval && clearInterval(this.#autosaveInterval); + } +} diff --git a/packages/ketchup/src/components/kup-editor/readme.md b/packages/ketchup/src/components/kup-editor/readme.md new file mode 100644 index 0000000000..fd7057f2c9 --- /dev/null +++ b/packages/ketchup/src/components/kup-editor/readme.md @@ -0,0 +1,256 @@ +# kup-editor + + + + + + +## Properties + +| Property | Attribute | Description | Type | Default | +| ----------------- | ------------------- | ------------------------------------------------------------------------------------------- | ------------------------- | ------------ | +| `autosaveTimer` | `autosave-timer` | When specified, the component will emit the kup-editor-autosave event at regular intervals. | `number` | `undefined` | +| `editorHeight` | `editor-height` | Sets the height of the component. | `string` | `'auto'` | +| `initialEditType` | `initial-edit-type` | The editor type. | `"markdown" \| "wysiwyg"` | `'markdown'` | +| `initialValue` | `initial-value` | The initial editor value. | `string` | `''` | +| `isReadOnly` | `is-read-only` | Defines whether the editor is disabled or not. | `boolean` | `false` | +| `previewStyle` | `preview-style` | The editor preview style. | `"tab" \| "vertical"` | `'vertical'` | +| `showSaveButton` | `show-save-button` | Defines whether to show the save button in editor's toolbar or not. | `boolean` | `true` | +| `showToolbar` | `show-toolbar` | Defines whether to show the editor's toolbar or not. | `boolean` | `true` | + + +## Events + +| Event | Description | Type | +| --------------------- | -------------------------------------------------------------------- | ------------------------------------ | +| `kup-editor-autosave` | Triggered at regular intervals if autosaveTimer prop is initialised. | `CustomEvent` | +| `kup-editor-ready` | Triggered when the component is ready. | `CustomEvent` | +| `kup-editor-save` | Triggered when save button is clicked. | `CustomEvent` | + + +## Methods + +### `getProps(descriptions?: boolean) => Promise` + +Used to retrieve component's props values. + +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + +#### Returns + +Type: `Promise` + +List of props as object, each key will be a prop. + +### `getValueAsHTML() => Promise` + +Returns the component's internal value as html. + +#### Returns + +Type: `Promise` + + + +### `getValueAsMarkdown() => Promise` + +Returns the component's internal value as markdown. + +#### Returns + +Type: `Promise` + + + +### `refresh() => Promise` + +This method is used to trigger a new render of the component. + +#### Returns + +Type: `Promise` + + + +### `setProps(props: GenericObject) => Promise` + +Sets the props to the component. + +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + +#### Returns + +Type: `Promise` + + + + +## Dependencies + +### Depends on + +- [kup-card](../kup-card) +- [kup-dialog](../kup-dialog) + +### Graph +```mermaid +graph TD; + kup-editor --> kup-card + kup-editor --> kup-dialog + kup-card --> kup-autocomplete + kup-card --> kup-chip + kup-card --> kup-text-field + kup-card --> kup-color-picker + kup-card --> kup-combobox + kup-card --> kup-date-picker + kup-card --> kup-rating + kup-card --> kup-time-picker + kup-card --> kup-image + kup-card --> kup-button-list + kup-card --> kup-chart + kup-card --> kup-gauge + kup-card --> kup-progress-bar + kup-card --> kup-badge + kup-card --> kup-button + kup-card --> kup-list + kup-card --> kup-spinner + kup-card --> kup-checkbox + kup-card --> kup-data-table + kup-card --> kup-tab-bar + kup-card --> kup-tree + kup-card --> kup-switch + kup-card --> kup-dropdown-button + kup-card --> kup-card + kup-card --> kup-dialog + kup-autocomplete --> kup-list + kup-autocomplete --> kup-card + kup-autocomplete --> kup-dialog + kup-list --> kup-list + kup-list --> kup-radio + kup-list --> kup-card + kup-list --> kup-dialog + kup-list --> kup-badge + kup-radio --> kup-card + kup-radio --> kup-dialog + kup-dialog --> kup-badge + kup-dialog --> kup-card + kup-dialog --> kup-dialog + kup-badge --> kup-badge + kup-badge --> kup-card + kup-badge --> kup-dialog + kup-chip --> kup-card + kup-chip --> kup-dialog + kup-chip --> kup-badge + kup-text-field --> kup-card + kup-text-field --> kup-dialog + kup-color-picker --> kup-card + kup-color-picker --> kup-dialog + kup-combobox --> kup-list + kup-combobox --> kup-card + kup-combobox --> kup-dialog + kup-date-picker --> kup-card + kup-date-picker --> kup-dialog + kup-rating --> kup-card + kup-rating --> kup-dialog + kup-time-picker --> kup-card + kup-time-picker --> kup-list + kup-time-picker --> kup-dialog + kup-image --> kup-spinner + kup-image --> kup-card + kup-image --> kup-dialog + kup-image --> kup-badge + kup-spinner --> kup-card + kup-spinner --> kup-dialog + kup-button-list --> kup-dropdown-button + kup-button-list --> kup-card + kup-button-list --> kup-dialog + kup-button-list --> kup-badge + kup-dropdown-button --> kup-list + kup-dropdown-button --> kup-card + kup-dropdown-button --> kup-dialog + kup-dropdown-button --> kup-badge + kup-chart --> kup-card + kup-chart --> kup-dialog + kup-gauge --> kup-card + kup-gauge --> kup-dialog + kup-progress-bar --> kup-card + kup-progress-bar --> kup-dialog + kup-button --> kup-card + kup-button --> kup-dialog + kup-button --> kup-badge + kup-checkbox --> kup-card + kup-checkbox --> kup-dialog + kup-data-table --> kup-card + kup-data-table --> kup-list + kup-data-table --> kup-switch + kup-data-table --> kup-button + kup-data-table --> kup-spinner + kup-data-table --> kup-form + kup-data-table --> kup-image + kup-data-table --> kup-dialog + kup-data-table --> kup-checkbox + kup-data-table --> kup-combobox + kup-data-table --> kup-badge + kup-data-table --> kup-autocomplete + kup-data-table --> kup-chip + kup-data-table --> kup-text-field + kup-data-table --> kup-color-picker + kup-data-table --> kup-date-picker + kup-data-table --> kup-rating + kup-data-table --> kup-time-picker + kup-data-table --> kup-button-list + kup-data-table --> kup-chart + kup-data-table --> kup-gauge + kup-data-table --> kup-progress-bar + kup-switch --> kup-card + kup-switch --> kup-dialog + kup-form --> kup-card + kup-form --> kup-dialog + kup-form --> kup-autocomplete + kup-form --> kup-chip + kup-form --> kup-text-field + kup-form --> kup-color-picker + kup-form --> kup-combobox + kup-form --> kup-date-picker + kup-form --> kup-rating + kup-form --> kup-time-picker + kup-form --> kup-image + kup-form --> kup-button-list + kup-form --> kup-chart + kup-form --> kup-gauge + kup-form --> kup-progress-bar + kup-form --> kup-badge + kup-tab-bar --> kup-card + kup-tab-bar --> kup-dialog + kup-tab-bar --> kup-badge + kup-tree --> kup-card + kup-tree --> kup-list + kup-tree --> kup-text-field + kup-tree --> kup-dialog + kup-tree --> kup-autocomplete + kup-tree --> kup-chip + kup-tree --> kup-color-picker + kup-tree --> kup-combobox + kup-tree --> kup-date-picker + kup-tree --> kup-rating + kup-tree --> kup-time-picker + kup-tree --> kup-image + kup-tree --> kup-button-list + kup-tree --> kup-chart + kup-tree --> kup-gauge + kup-tree --> kup-progress-bar + kup-tree --> kup-badge + style kup-editor fill:#f9f,stroke:#333,stroke-width:4px +``` + +---------------------------------------------- + +*Built with [StencilJS](https://stenciljs.com/)* diff --git a/packages/ketchup/src/components/kup-family-tree/readme.md b/packages/ketchup/src/components/kup-family-tree/readme.md index 2ed8318f90..1beda2058f 100644 --- a/packages/ketchup/src/components/kup-family-tree/readme.md +++ b/packages/ketchup/src/components/kup-family-tree/readme.md @@ -32,6 +32,12 @@ Collapses all nodes. +#### Parameters + +| Name | Type | Description | +| ------- | --------------------- | ----------- | +| `nodes` | `KupFamilyTreeNode[]` | | + #### Returns Type: `Promise` @@ -42,6 +48,12 @@ Type: `Promise` Expands all nodes. +#### Parameters + +| Name | Type | Description | +| ------- | --------------------- | ----------- | +| `nodes` | `KupFamilyTreeNode[]` | | + #### Returns Type: `Promise` @@ -52,6 +64,12 @@ Type: `Promise` Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -82,6 +100,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-form/readme.md b/packages/ketchup/src/components/kup-form/readme.md index 5a2cc83251..60913a56f9 100644 --- a/packages/ketchup/src/components/kup-form/readme.md +++ b/packages/ketchup/src/components/kup-form/readme.md @@ -30,6 +30,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -50,6 +56,13 @@ Type: `Promise` Sets the focus on an editable table cell. +#### Parameters + +| Name | Type | Description | +| -------- | -------- | --------------------- | +| `column` | `string` | - Name of the column. | +| `rowId` | `string` | - Id of the row. | + #### Returns Type: `Promise` @@ -60,6 +73,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-gauge/readme.md b/packages/ketchup/src/components/kup-gauge/readme.md index 541f16b200..18bec20b80 100644 --- a/packages/ketchup/src/components/kup-gauge/readme.md +++ b/packages/ketchup/src/components/kup-gauge/readme.md @@ -104,6 +104,12 @@ Fundamentally, the main problem here is that that if Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -124,6 +130,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-grid/readme.md b/packages/ketchup/src/components/kup-grid/readme.md index 9a2152d6c8..1ac0acb0b6 100644 --- a/packages/ketchup/src/components/kup-grid/readme.md +++ b/packages/ketchup/src/components/kup-grid/readme.md @@ -18,6 +18,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -38,6 +44,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-iframe/readme.md b/packages/ketchup/src/components/kup-iframe/readme.md index 3e66b80642..4b0ee21a72 100644 --- a/packages/ketchup/src/components/kup-iframe/readme.md +++ b/packages/ketchup/src/components/kup-iframe/readme.md @@ -28,6 +28,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -48,6 +54,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-image-list/readme.md b/packages/ketchup/src/components/kup-image-list/readme.md index 1d73a3bf09..3078d43eb7 100644 --- a/packages/ketchup/src/components/kup-image-list/readme.md +++ b/packages/ketchup/src/components/kup-image-list/readme.md @@ -32,6 +32,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -52,6 +58,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-image/readme.md b/packages/ketchup/src/components/kup-image/readme.md index 7979939f36..5c1d8e63ca 100644 --- a/packages/ketchup/src/components/kup-image/readme.md +++ b/packages/ketchup/src/components/kup-image/readme.md @@ -32,6 +32,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -52,6 +58,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-lazy/readme.md b/packages/ketchup/src/components/kup-lazy/readme.md index e2f40cee97..1c8436cc9e 100644 --- a/packages/ketchup/src/components/kup-lazy/readme.md +++ b/packages/ketchup/src/components/kup-lazy/readme.md @@ -39,6 +39,12 @@ Lazy loaded component. Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -59,6 +65,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-list/readme.md b/packages/ketchup/src/components/kup-list/readme.md index 322a9e93d3..4c262703e9 100644 --- a/packages/ketchup/src/components/kup-list/readme.md +++ b/packages/ketchup/src/components/kup-list/readme.md @@ -56,6 +56,12 @@ Type: `Promise` Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -86,6 +92,12 @@ Type: `Promise` Calls handleSelection internal method to select the given item. +#### Parameters + +| Name | Type | Description | +| ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `index` | `number` | - Based zero index of the item that must be selected, when not provided the list will attempt to select the focused element. | + #### Returns Type: `Promise` @@ -96,6 +108,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-magic-box/readme.md b/packages/ketchup/src/components/kup-magic-box/readme.md index e400562d1f..7b5e9ad05c 100644 --- a/packages/ketchup/src/components/kup-magic-box/readme.md +++ b/packages/ketchup/src/components/kup-magic-box/readme.md @@ -19,6 +19,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -39,6 +45,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-nav-bar/readme.md b/packages/ketchup/src/components/kup-nav-bar/readme.md index 66b98fa716..f325f36e70 100644 --- a/packages/ketchup/src/components/kup-nav-bar/readme.md +++ b/packages/ketchup/src/components/kup-nav-bar/readme.md @@ -25,6 +25,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -55,6 +61,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-numeric-picker/readme.md b/packages/ketchup/src/components/kup-numeric-picker/readme.md index b6d42f4515..01e1d5ee92 100644 --- a/packages/ketchup/src/components/kup-numeric-picker/readme.md +++ b/packages/ketchup/src/components/kup-numeric-picker/readme.md @@ -41,6 +41,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -81,6 +87,12 @@ Type: `Promise` Sets the component's value. +#### Parameters + +| Name | Type | Description | +| ------- | -------- | ------------------ | +| `value` | `string` | - Value to be set. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-photo-frame/readme.md b/packages/ketchup/src/components/kup-photo-frame/readme.md index 67f1aa42df..9edcc04d83 100644 --- a/packages/ketchup/src/components/kup-photo-frame/readme.md +++ b/packages/ketchup/src/components/kup-photo-frame/readme.md @@ -29,6 +29,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -49,6 +55,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-planner/readme.md b/packages/ketchup/src/components/kup-planner/readme.md index 30d65bb63e..126ab5492c 100644 --- a/packages/ketchup/src/components/kup-planner/readme.md +++ b/packages/ketchup/src/components/kup-planner/readme.md @@ -71,6 +71,13 @@ Add a list of phases to the project +#### Parameters + +| Name | Type | Description | +| -------- | ---------------- | -------------------------------------- | +| `taskId` | `string` | | +| `data` | `KupDataDataset` | - Matrix which contains project phases | + #### Returns Type: `Promise` @@ -81,6 +88,12 @@ Type: `Promise` Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -101,6 +114,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-planner/utils/kup-gantt/kup-gantt.tsx b/packages/ketchup/src/components/kup-planner/utils/kup-gantt/kup-gantt.tsx index 8f91d44056..c96958f73f 100644 --- a/packages/ketchup/src/components/kup-planner/utils/kup-gantt/kup-gantt.tsx +++ b/packages/ketchup/src/components/kup-planner/utils/kup-gantt/kup-gantt.tsx @@ -342,7 +342,7 @@ export class KupGantt { */ @Element() rootElement: HTMLElement; - + taskListTrueRef: HTMLKupTaskListElement = null; //---- Lifecycle hooks ---- componentWillLoad() { @@ -980,6 +980,7 @@ export class KupGantt { setDoubleView={this.setDoubleView} {...tableProps} class="tasks" + ref={(el) => (this.taskListTrueRef = el)} /> )} { + this.updateScrollX(); + this.updateScrollY(); + }, 75); } render() { diff --git a/packages/ketchup/src/components/kup-planner/utils/kup-task-list/kup-task-list.tsx b/packages/ketchup/src/components/kup-planner/utils/kup-task-list/kup-task-list.tsx index 7a99a15743..86e031cb1d 100644 --- a/packages/ketchup/src/components/kup-planner/utils/kup-task-list/kup-task-list.tsx +++ b/packages/ketchup/src/components/kup-planner/utils/kup-task-list/kup-task-list.tsx @@ -123,6 +123,11 @@ export class TaskList { componentDidLoad() { this.taskListRef.prepend(this.filter); + setTimeout(() => { + if (this.horizontalContainerRef) { + this.horizontalContainerRef.scrollTop = this.scrollY; + } + }, 75); } componentDidUpdate() { diff --git a/packages/ketchup/src/components/kup-planner/utils/kup-vertical-scroll/kup-vertical-scroll.scss b/packages/ketchup/src/components/kup-planner/utils/kup-vertical-scroll/kup-vertical-scroll.scss index ee3493f4d1..afa2105d71 100644 --- a/packages/ketchup/src/components/kup-planner/utils/kup-vertical-scroll/kup-vertical-scroll.scss +++ b/packages/ketchup/src/components/kup-planner/utils/kup-vertical-scroll/kup-vertical-scroll.scss @@ -2,8 +2,6 @@ overflow: hidden auto; width: 1rem; flex-shrink: 0; - /*firefox*/ - scrollbar-width: thin; } .scroll::-webkit-scrollbar { diff --git a/packages/ketchup/src/components/kup-progress-bar/kup-progress-bar.tsx b/packages/ketchup/src/components/kup-progress-bar/kup-progress-bar.tsx index 202f9ce2e6..7b02b123fb 100644 --- a/packages/ketchup/src/components/kup-progress-bar/kup-progress-bar.tsx +++ b/packages/ketchup/src/components/kup-progress-bar/kup-progress-bar.tsx @@ -2,7 +2,6 @@ import { Component, Element, forceUpdate, - getAssetPath, h, Host, Method, diff --git a/packages/ketchup/src/components/kup-progress-bar/readme.md b/packages/ketchup/src/components/kup-progress-bar/readme.md index 8d4109c0fe..6cf3ff4df7 100644 --- a/packages/ketchup/src/components/kup-progress-bar/readme.md +++ b/packages/ketchup/src/components/kup-progress-bar/readme.md @@ -22,6 +22,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -42,6 +48,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-radio/readme.md b/packages/ketchup/src/components/kup-radio/readme.md index 6f60591cd7..43ba8774ba 100644 --- a/packages/ketchup/src/components/kup-radio/readme.md +++ b/packages/ketchup/src/components/kup-radio/readme.md @@ -29,6 +29,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -49,6 +55,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-rating/readme.md b/packages/ketchup/src/components/kup-rating/readme.md index 2bea9c38c4..3ab6044d9f 100644 --- a/packages/ketchup/src/components/kup-rating/readme.md +++ b/packages/ketchup/src/components/kup-rating/readme.md @@ -28,6 +28,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -48,6 +54,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-snackbar/readme.md b/packages/ketchup/src/components/kup-snackbar/readme.md index 113a56356d..adf3ea5f31 100644 --- a/packages/ketchup/src/components/kup-snackbar/readme.md +++ b/packages/ketchup/src/components/kup-snackbar/readme.md @@ -33,6 +33,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -63,6 +69,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-spinner/readme.md b/packages/ketchup/src/components/kup-spinner/readme.md index 0361d580a1..f08a077f9c 100644 --- a/packages/ketchup/src/components/kup-spinner/readme.md +++ b/packages/ketchup/src/components/kup-spinner/readme.md @@ -30,6 +30,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -50,6 +56,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-switch/readme.md b/packages/ketchup/src/components/kup-switch/readme.md index 672de93ef2..92eb956a8e 100644 --- a/packages/ketchup/src/components/kup-switch/readme.md +++ b/packages/ketchup/src/components/kup-switch/readme.md @@ -29,6 +29,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -49,6 +55,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-tab-bar/readme.md b/packages/ketchup/src/components/kup-tab-bar/readme.md index fdf7756eff..1bcc9d4a72 100644 --- a/packages/ketchup/src/components/kup-tab-bar/readme.md +++ b/packages/ketchup/src/components/kup-tab-bar/readme.md @@ -27,6 +27,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -57,6 +63,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-text-field/readme.md b/packages/ketchup/src/components/kup-text-field/readme.md index 9f8acec058..0ac236d76f 100644 --- a/packages/ketchup/src/components/kup-text-field/readme.md +++ b/packages/ketchup/src/components/kup-text-field/readme.md @@ -59,6 +59,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -99,6 +105,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` @@ -109,6 +121,12 @@ Type: `Promise` Sets the internal value of the component. +#### Parameters + +| Name | Type | Description | +| ------- | -------- | ----------- | +| `value` | `string` | | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-time-picker/readme.md b/packages/ketchup/src/components/kup-time-picker/readme.md index eea44fcf8f..cc39195fa7 100644 --- a/packages/ketchup/src/components/kup-time-picker/readme.md +++ b/packages/ketchup/src/components/kup-time-picker/readme.md @@ -37,6 +37,12 @@ Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -77,6 +83,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` @@ -87,6 +99,12 @@ Type: `Promise` Sets the internal value of the component. +#### Parameters + +| Name | Type | Description | +| ------- | -------- | ----------- | +| `value` | `string` | | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/components/kup-tree/kup-tree.tsx b/packages/ketchup/src/components/kup-tree/kup-tree.tsx index 5c5710da91..a4689c4448 100644 --- a/packages/ketchup/src/components/kup-tree/kup-tree.tsx +++ b/packages/ketchup/src/components/kup-tree/kup-tree.tsx @@ -1853,7 +1853,7 @@ export class KupTree { totalMenu = ( ` Used to retrieve component's props values. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------------------------- | +| `descriptions` | `boolean` | - When provided and true, the result will be the list of props with their description. | + #### Returns Type: `Promise` @@ -163,6 +169,12 @@ Type: `Promise` Hides the given column. +#### Parameters + +| Name | Type | Description | +| -------- | --------------- | ----------------- | +| `column` | `KupDataColumn` | - Column to hide. | + #### Returns Type: `Promise` @@ -183,6 +195,12 @@ Type: `Promise` Opens the column menu of the given column. +#### Parameters + +| Name | Type | Description | +| -------- | -------- | --------------------- | +| `column` | `string` | - Name of the column. | + #### Returns Type: `Promise` @@ -213,6 +231,12 @@ Type: `Promise` Sets the props to the component. +#### Parameters + +| Name | Type | Description | +| ------- | --------------- | ------------------------------------------------------------ | +| `props` | `GenericObject` | - Object containing props that will be set to the component. | + #### Returns Type: `Promise` @@ -223,6 +247,13 @@ Type: `Promise` This method will set the selected rows of the component. +#### Parameters + +| Name | Type | Description | +| -------------- | --------- | -------------------------------------------------------------------- | +| `treeNodePath` | `string` | | +| `emitEvent` | `boolean` | - The event will always be emitted unless emitEvent is set to false. | + #### Returns Type: `Promise` diff --git a/packages/ketchup/src/debug.html b/packages/ketchup/src/debug.html index c443eee4be..447f6902c6 100644 --- a/packages/ketchup/src/debug.html +++ b/packages/ketchup/src/debug.html @@ -77,6 +77,7 @@ document.documentElement['ketchupInit'] = { debug: { active: true, logLimit: 20000 }, autoSetLocalization: true, + enableExperimentalFeatures: true, };

Debug component

diff --git a/packages/ketchup/src/editor-example-1.html b/packages/ketchup/src/editor-example-1.html new file mode 100644 index 0000000000..da6681b143 --- /dev/null +++ b/packages/ketchup/src/editor-example-1.html @@ -0,0 +1,48 @@ + + + + + + + + Ketchup editor (example 1) + + + + + + + + +

Editor html

+ +

Editor markdown

+ + + + + diff --git a/packages/ketchup/src/editor.html b/packages/ketchup/src/editor.html new file mode 100644 index 0000000000..7920bf84ec --- /dev/null +++ b/packages/ketchup/src/editor.html @@ -0,0 +1,41 @@ + + + + + + + + Ketchup editor + + + + + + + + + + + + + diff --git a/packages/ketchup/src/f-components/f-cell/f-cell.tsx b/packages/ketchup/src/f-components/f-cell/f-cell.tsx index ea93fdd484..ca63878332 100644 --- a/packages/ketchup/src/f-components/f-cell/f-cell.tsx +++ b/packages/ketchup/src/f-components/f-cell/f-cell.tsx @@ -532,6 +532,7 @@ function setEditableCell( onInput={onInput} type={type} value={value} + maxLength={column.cellData?.maxLength ?? -1} > ); } else { diff --git a/packages/ketchup/src/f-components/f-progress-bar/f-progress-bar.scss b/packages/ketchup/src/f-components/f-progress-bar/f-progress-bar.scss index 50512e6cb3..aa663658d5 100644 --- a/packages/ketchup/src/f-components/f-progress-bar/f-progress-bar.scss +++ b/packages/ketchup/src/f-components/f-progress-bar/f-progress-bar.scss @@ -55,6 +55,7 @@ .progress-bar-percentage { background: var(--kup_progressbar_primary_color); border-radius: var(--kup_progressbar_border_radius); + box-sizing: content-box; color: var(--kup_progressbar_text_color); height: var(--kup_progressbar_height); padding: 0.5em 0; diff --git a/packages/ketchup/src/managers/kup-manager/kup-manager-declarations.ts b/packages/ketchup/src/managers/kup-manager/kup-manager-declarations.ts index 9eb49dc6a9..24b0828592 100644 --- a/packages/ketchup/src/managers/kup-manager/kup-manager-declarations.ts +++ b/packages/ketchup/src/managers/kup-manager/kup-manager-declarations.ts @@ -38,6 +38,7 @@ export interface KupManager { dates: KupDates; debug: KupDebug; dynamicPosition: KupDynamicPosition; + enableExperimentalFeatures: boolean; interact: KupInteract; language: KupLanguage; magicBox: HTMLKupMagicBoxElement; @@ -89,6 +90,7 @@ export interface KupManagerInitialization { autoSetLocalization?: boolean; dates?: KupManagerDatesSettings; debug?: KupManagerDebugSettings; + enableExperimentalFeatures?: boolean; interact?: KupManagerInteractSettings; language?: KupManagerLanguageSettings; math?: KupManagerMathSettings; diff --git a/packages/ketchup/src/managers/kup-manager/kup-manager.ts b/packages/ketchup/src/managers/kup-manager/kup-manager.ts index a066ee912f..79ca8ec969 100644 --- a/packages/ketchup/src/managers/kup-manager/kup-manager.ts +++ b/packages/ketchup/src/managers/kup-manager/kup-manager.ts @@ -50,6 +50,7 @@ export class KupManager { dates: KupDates; debug: KupDebug; dynamicPosition: KupDynamicPosition; + enableExperimentalFeatures: boolean; interact: KupInteract; language: KupLanguage; magicBox: HTMLKupMagicBoxElement; @@ -86,6 +87,7 @@ export class KupManager { tooltipDelay: number = null, tooltipFCellCallbacks: KupTooltipCallbacks = null; + this.enableExperimentalFeatures = false; /** POI VIA */ let openAIUrl = 'https://kokosstaging.smeup.com'; @@ -93,6 +95,8 @@ export class KupManager { const assetsPath = overrides.assetsPath; const dates = overrides.dates; const debug = overrides.debug; + const enableExperimentalFeatures = + overrides.enableExperimentalFeatures; const interact = overrides.interact; const language = overrides.language; const objects = overrides.objects; @@ -113,6 +117,9 @@ export class KupManager { debugAutoprint = debug.autoPrint ? debug.autoPrint : null; debugLogLimit = debug.logLimit ? debug.logLimit : null; } + if (enableExperimentalFeatures) { + this.enableExperimentalFeatures = enableExperimentalFeatures; + } if (interact) { dialogRestrictContainer = interact.restrictContainer ? dialogRestrictContainer diff --git a/packages/ketchup/src/managers/kup-openai/kup-openai.ts b/packages/ketchup/src/managers/kup-openai/kup-openai.ts index 047e068f1f..2df2af020e 100644 --- a/packages/ketchup/src/managers/kup-openai/kup-openai.ts +++ b/packages/ketchup/src/managers/kup-openai/kup-openai.ts @@ -66,7 +66,7 @@ export class KupOpenAI { icons: { close: true }, }; this.dialog.id = 'openai'; - this.dialog.modal = { closeOnBackdropClick: false }; + this.dialog.modal = null; this.dialog.sizeX = '50vw'; this.dialog.sizeY = '50vh'; this.dialog.addEventListener('kup-dialog-close', () => this.hide()); @@ -169,19 +169,22 @@ export class KupOpenAI { show(data: KupDataTableDataset) { this.data = data; - // Creates the card or updates it with new options - this.#create(); + if (!this.card) { + this.#create(); + } } /** * Hides the component. */ hide() { - this.card.remove(); - this.card = null; - this.dialog.remove(); - this.dialog = null; - this.#disconnect(); + if (this.card) { + this.card.remove(); + this.card = null; + this.dialog.remove(); + this.dialog = null; + this.#disconnect(); + } } async auth(event: KupTextFieldCustomEvent) { diff --git a/packages/ketchup/src/managers/kup-theme/kup-theme-application.scss b/packages/ketchup/src/managers/kup-theme/kup-theme-application.scss index cd52644c18..801d3eb029 100644 --- a/packages/ketchup/src/managers/kup-theme/kup-theme-application.scss +++ b/packages/ketchup/src/managers/kup-theme/kup-theme-application.scss @@ -1,3 +1,2363 @@ +/*-------------------------------------------------*/ +/* E d i t o r */ +/*-------------------------------------------------*/ + +$editorFont: var( + --kup-font-family, + 'Open Sans', + 'Helvetica Neue', + 'Helvetica', + 'Arial', + '나눔바른고딕', + 'Nanum Barun Gothic', + '맑은고딕', + 'Malgun Gothic', + sans-serif +); +$editorFontMono: var( + --kup-font-family-monospace, + Consolas, + Courier, + 'Lucida Grande', + '나눔바른고딕', + 'Nanum Barun Gothic', + '맑은고딕', + 'Malgun Gothic', + sans-serif +); + +kup-editor { + display: block; + + pre { + white-space: pre-wrap; + } + + .kup-editor-save-button { + color: #585858; + font-weight: 600; + margin-top: 5px; + } + + .kup-editor-save-button:disabled { + opacity: 0.2; + } + + .kup-editor-unsaved-changes { + animation: pulsealert 0.75s infinite; + border-radius: 0; + box-sizing: border-box; + color: var(--kup-primary-color); + float: left; + height: 22px; + margin: 5px 3px; + padding: 3px; + width: max-content; + } + + /*! + * @toast-ui/editor + * @version 2.5.4 | Tue Nov 30 2021 + * @author NHN FE Development Lab + * @license MIT + */ + + /* height */ + .auto-height, + .auto-height .tui-editor-defaultUI { + height: auto; + } + + .auto-height .tui-editor { + position: relative; + } + + :not(.auto-height) > .tui-editor-defaultUI, + :not(.auto-height) > .tui-editor-defaultUI > .te-editor-section { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + } + + :not(.auto-height) > .tui-editor-defaultUI > .te-editor-section { + -ms-flex: 1; + flex: 1; + } + + /* tui editor */ + .tui-editor:after, + .tui-editor-defaultUI-toolbar:after { + content: ''; + display: block; + height: 0; + clear: both; + } + + .tui-editor { + position: absolute; + line-height: 1; + color: #222; + width: 100%; + height: inherit; + } + + .te-editor-section { + min-height: 0px; + position: relative; + height: inherit; + } + + .te-md-container { + display: none; + overflow: hidden; + height: 100%; + } + + .te-md-container .te-editor { + line-height: 1.5; + } + + .te-md-container .te-editor, + .te-md-container .te-preview { + box-sizing: border-box; + padding: 0; + height: inherit; + } + + .te-md-container .CodeMirror { + font-size: 13px; + height: inherit; + } + + .te-md-container .te-preview { + overflow: auto; + padding: 0 25px; + height: 100%; + } + + .te-md-container .te-preview > p:first-child { + margin-top: 0 !important; + } + + .te-md-container .te-preview .tui-editor-contents { + padding-top: 8px; + } + + .tui-editor .te-preview-style-tab > .te-editor, + .tui-editor .te-preview-style-tab > .te-preview { + float: left; + width: 100%; + display: none; + } + + .tui-editor .te-preview-style-tab > .te-tab-active { + display: block; + } + + .tui-editor .te-preview-style-vertical > .te-tab-section { + display: none; + } + + .tui-editor .te-preview-style-tab > .te-tab-section { + display: block; + } + + .tui-editor .te-preview-style-vertical .te-editor { + float: left; + width: 50%; + } + + .tui-editor .te-preview-style-vertical .te-preview { + float: left; + width: 50%; + } + + .tui-editor .te-md-splitter { + display: none; + position: absolute; + left: 50%; + top: 0; + height: 100%; + width: 1px; + border-left: 1px solid #e5e5e5; + } + + .tui-editor .te-preview-style-vertical .te-md-splitter { + display: block; + } + + .te-ww-container { + display: none; + overflow: hidden; + z-index: 10; + height: inherit; + background-color: #fff; + } + + .te-ww-container > .te-editor { + overflow: auto; + height: inherit; + } + + .te-ww-container .tui-editor-contents:focus { + outline: none; + } + + .te-ww-container .tui-editor-contents { + padding: 0 25px; + } + + .te-ww-container .tui-editor-contents:first-child { + box-sizing: border-box; + margin: 0px; + padding: 16px 25px 0px 25px; + height: inherit; + min-height: max-content !important; // Fix to prevent scrolling content even when there is nothing to scroll + } + + .te-ww-container .tui-editor-contents:last-child { + margin-bottom: 16px; + } + + .te-md-mode .te-md-container { + display: block; + z-index: 100; + } + + .te-ww-mode .te-ww-container { + display: block; + z-index: 100; + } + + .tui-editor.te-hide, + .tui-editor-defaultUI.te-hide { + display: none; + } + + .tui-editor-defaultUI .CodeMirror-lines { + padding-top: 18px; + padding-bottom: 18px; + } + + .tui-editor-defaultUI pre.CodeMirror-line { + padding-left: 25px; + padding-right: 25px; + } + + .tui-editor-defaultUI .CodeMirror pre.CodeMirror-placeholder { + margin: 0; + padding-left: 25px; + color: grey; + } + + .tui-editor-defaultUI .CodeMirror-scroll { + cursor: text; + } + + /* Essential element style */ + .tui-editor-contents td.te-cell-selected { + background-color: #d8dfec; + } + .tui-editor-contents td.te-cell-selected::selection { + background-color: #d8dfec; + } + .tui-editor-contents th.te-cell-selected { + background-color: #908f8f; + } + .tui-editor-contents th.te-cell-selected::selection { + background-color: #908f8f; + } + + /* default UI Styles */ + .tui-editor-defaultUI { + position: relative; + border: 1px solid #e5e5e5; + height: 100%; + font-family: $editorFont; + } + + .tui-editor-defaultUI button { + color: #fff; + padding: 0px 14px 0px 15px; + height: 28px; + font-size: 12px; + border: none; + cursor: pointer; + outline: none; + } + .tui-editor-defaultUI button.te-ok-button { + background-color: #4b96e6; + } + .tui-editor-defaultUI button.te-close-button { + background-color: #777; + } + + .tui-editor-defaultUI-toolbar { + padding: 0 25px; + height: 31px; + background-color: #fff; + border: 0; + overflow: hidden; + } + + .tui-toolbar-divider { + float: left; + display: inline-block; + width: 1px; + height: 14px; + background-color: #ddd; + margin: 9px 6px; + } + + .tui-toolbar-button-group { + height: 28px; + border-right: 1px solid #d9d9d9; + float: left; + } + + .te-toolbar-section { + height: 32px; + box-sizing: border-box; + border-bottom: 1px solid #e5e5e5; + } + + .tui-editor-defaultUI-toolbar button { + float: left; + box-sizing: border-box; + outline: none; + cursor: pointer; + background-color: #fff; + width: 22px; + height: 22px; + padding: 3px; + border-radius: 0; + margin: 5px 3px; + border: 1px solid #fff; + } + + .tui-editor-defaultUI-toolbar button:hover, + .tui-editor-defaultUI-toolbar button:active, + .tui-editor-defaultUI-toolbar button.active { + border: 1px solid #aaa; + background-color: #fff; + } + + .tui-editor-defaultUI-toolbar button:first-child { + margin-left: 0; + } + + .tui-editor-defaultUI-toolbar button:last-child { + margin-right: 0; + } + + .tui-editor-defaultUI-toolbar button.tui-scrollsync { + width: auto; + color: #777777; + border: 0; + } + + .tui-editor-defaultUI button.tui-scrollsync:after { + content: 'Scroll off'; + } + + .tui-editor-defaultUI button.tui-scrollsync.active { + color: #4b96e6; + font-weight: bold; + } + + .tui-editor-defaultUI button.tui-scrollsync.active:after { + content: 'Scroll on'; + } + + .tui-editor-defaultUI .te-mode-switch-section { + background-color: #f9f9f9; + border-top: 1px solid #e5e5e5; + height: 20px; + font-size: 12px; + } + + .tui-editor-defaultUI .te-mode-switch { + float: right; + height: 100%; + } + + .tui-editor-defaultUI .te-switch-button { + width: 92px; + height: inherit; + background: #e5e5e5; + outline: 0; + color: #a0aabf; + cursor: pointer; + border: 0; + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; + } + + .tui-editor-defaultUI .te-switch-button.active { + background-color: #fff; + color: #000; + } + + .tui-editor-defaultUI .te-markdown-tab-section { + float: left; + height: 31px; + background: #fff; + } + + .te-markdown-tab-section .te-tab { + margin: 0 -7px 0 24px; + background: #fff; + } + + .tui-editor-defaultUI .te-tab button { + box-sizing: border-box; + line-height: 100%; + position: relative; + cursor: pointer; + z-index: 1; + font-size: 13px; + background-color: #f9f9f9; + border: solid 1px #e5e5e5; + border-top: 0; + padding: 0 9px; + color: #777; + border-radius: 0; + outline: 0; + } + + .te-markdown-tab-section .te-tab button:last-child { + margin-left: -1px; + } + + .te-markdown-tab-section .te-tab button.te-tab-active, + .te-markdown-tab-section .te-tab button:hover.te-tab-active { + background-color: #fff; + color: #333; + border-bottom: 1px solid #fff; + z-index: 2; + } + + .te-markdown-tab-section .te-tab button:hover { + background-color: #fff; + color: #333; + } + + .tui-popup-modal-background { + background-color: rgba(202, 202, 202, 0.6); + position: fixed; + margin: 0px; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 9999; + } + + .tui-popup-wrapper.fit-window, + .tui-popup-modal-background.fit-window .tui-popup-wrapper { + width: 100%; + height: 100%; + } + + .tui-popup-wrapper { + width: 500px; + margin-right: auto; + border: 1px solid #cacaca; + background: white; + z-index: 9999; + } + + .tui-popup-modal-background .tui-popup-wrapper { + position: absolute; + margin: auto; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; + } + + .tui-popup-header { + padding: 10px; + height: auto; + line-height: normal; + position: relative; + border-bottom: 1px solid #cacaca; + } + + .tui-popup-header .tui-popup-header-buttons { + float: right; + } + + .tui-popup-header .tui-popup-header-buttons button { + padding: 0px; + background-color: transparent; + background-size: cover; + float: left; + } + + .tui-popup-header .tui-popup-close-button { + margin: 3px; + width: 13px; + height: 13px; + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMHB4IiBoZWlnaHQ9IjEwcHgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5GMjc2Qzc4MC0zM0JBLTQ3MTItQTM3OC04RkQwQUNDOTFDRTk8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImxuYi1mb2xkZXItZGVsIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGZpbGw9IiM3Nzc3NzciPiAgICAgICAgICAgIDxwYXRoIGQ9Ik01LDMuNTg1Nzg2NDQgTDEuNzA3MTA2NzgsMC4yOTI4OTMyMTkgTDAuMjkyODkzMjE5LDEuNzA3MTA2NzggTDMuNTg1Nzg2NDQsNSBMMC4yOTI4OTMyMTksOC4yOTI4OTMyMiBMMS43MDcxMDY3OCw5LjcwNzEwNjc4IEw1LDYuNDE0MjEzNTYgTDguMjkyODkzMjIsOS43MDcxMDY3OCBMOS43MDcxMDY3OCw4LjI5Mjg5MzIyIEw2LjQxNDIxMzU2LDUgTDkuNzA3MTA2NzgsMS43MDcxMDY3OCBMOC4yOTI4OTMyMiwwLjI5Mjg5MzIxOSBMNSwzLjU4NTc4NjQ0IFoiIGlkPSJDb21iaW5lZC1TaGFwZSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+); + } + + .tui-popup-header .tui-popup-title { + font-size: 13px; + font-weight: bold; + color: #333; + vertical-align: bottom; + } + + .tui-popup-body { + padding: 15px; + font-size: 12px; + } + + .tui-editor-popup { + position: absolute; + top: 30px; + left: 50%; + margin-left: -250px; + } + + .tui-editor-popup.tui-popup-modal-background { + position: fixed; + top: 0px; + left: 0px; + margin: 0px; + } + + .tui-editor-popup .tui-popup-body label { + font-weight: bold; + color: #666; + display: block; + margin: 10px 0 5px; + } + + .tui-editor-popup .tui-popup-body .te-button-section { + margin-top: 15px; + } + + .tui-editor-popup .tui-popup-body input[type='text'], + .tui-editor-popup .tui-popup-body input[type='file'] { + padding: 4px 10px; + border: 1px solid #bfbfbf; + box-sizing: border-box; + width: 100%; + } + + .tui-editor-popup .tui-popup-body input[type='text'].disabled { + border-color: #e5e5e5; + background-color: #eee; + color: #e5e5e5; + } + + .tui-editor-popup .tui-popup-body input.wrong { + border-color: #ff0000; + } + + .te-popup-add-link .tui-popup-wrapper { + height: 219px; + } + + .te-popup-add-image .tui-popup-wrapper { + height: 243px; + } + + .te-popup-add-image .te-tab { + display: block; + background: none; + border-bottom: 1px solid #ebebeb; + margin-bottom: 8px; + } + + .te-popup-add-image .te-url-type { + display: none; + } + + .te-popup-add-image .te-file-type { + display: none; + } + + .te-popup-add-image div.te-tab-active, + .te-popup-add-image form.te-tab-active { + display: block; + } + + .te-popup-add-image .te-tab button { + border: 1px solid #ccc; + background: #eee; + min-width: 100px; + margin-left: -1px; + border-bottom: 0px; + border-radius: 3px 3px 0px 0px; + } + + .te-popup-add-image .te-tab button.te-tab-active { + background: #fff; + } + + .te-popup-add-table .te-table-selection { + position: relative; + } + + .te-popup-add-table .te-table-body { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZmspKREMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgAMSwQgckFvTgAAAABJRU5ErkJggg=='); + } + + .te-popup-add-table .te-table-header { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAARCAYAAAAougcOAAAC7mlDQ1BJQ0MgUHJvZmlsZQAAeAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UXAeIuJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQ4EWO8e/fuPwYGBkYgphlgAZksLCxMMwtABjPR1HSo4aOWkBTKo8E1GlwkhQBJikdT1wgNLgDxKwPzTeWPdAAAAABJRU5ErkJggg=='); + } + + .te-popup-add-table .te-selection-area { + position: absolute; + top: 0; + left: 0; + background: #80d2ff; + opacity: 0.3; + z-index: 999; + } + + .te-popup-add-table .te-description { + margin: 10px 0 0 0; + text-align: center; + } + + .te-popup-table-utils { + width: auto; + min-width: 120px; + } + + .te-popup-table-utils .tui-popup-body { + padding: 0px; + } + + .te-popup-table-utils button { + display: block; + width: 100%; + background-color: #fff; + border: none; + outline: 0; + padding: 0px 10px 0px 10px; + font-size: 12px; + line-height: 28px; + text-align: left; + color: #777; + } + + .te-popup-table-utils button:hover { + background-color: #f4f4f4; + } + + .te-popup-table-utils hr { + margin: 0; + background-color: #cacaca; + border-style: none; + height: 1px; + } + + .te-popup-table-utils .te-context-menu-disabled { + color: #ccc; + } + + .te-popup-table-utils .te-context-menu-disabled:hover { + background-color: #fff; + } + + .te-heading-add { + width: auto; + } + + .te-heading-add .tui-popup-body { + padding: 0; + } + + .te-heading-add h1, + .te-heading-add h2, + .te-heading-add h3, + .te-heading-add h4, + .te-heading-add h5, + .te-heading-add h6, + .te-heading-add ul, + .te-heading-add p { + padding: 0; + margin: 0; + } + + .te-heading-add ul { + list-style: none; + } + + .te-heading-add ul li { + padding: 2px 10px; + cursor: pointer; + } + + .te-heading-add ul li:hover { + background-color: #eee; + } + + .te-heading-add h1 { + font-size: 24px; + } + + .te-heading-add h2 { + font-size: 22px; + } + + .te-heading-add h3 { + font-size: 20px; + } + + .te-heading-add h4 { + font-size: 18px; + } + + .te-heading-add h5 { + font-size: 16px; + } + + .te-heading-add h6 { + font-size: 14px; + } + + .te-dropdown-toolbar { + position: absolute; + width: auto; + } + + .te-dropdown-toolbar .tui-popup-body { + padding: 0px; + } + + .tui-popup-color { + padding: 0; + } + + .tui-popup-color .tui-colorpicker-container, + .tui-popup-color .tui-colorpicker-palette-container { + width: 144px; + } + + .tui-popup-color .tui-colorpicker-container ul { + width: 144px; + margin-bottom: 8px; + } + + .tui-popup-color .tui-colorpicker-container li { + padding: 0 1px 1px 0; + } + + .tui-popup-color + .tui-colorpicker-container + li + .tui-colorpicker-palette-button { + border: 0; + width: 17px; + height: 17px; + } + + .tui-popup-color .tui-popup-body { + padding: 10px; + } + + .tui-popup-color + .tui-colorpicker-container + .tui-colorpicker-palette-toggle-slider { + display: none; + } + + .tui-popup-color .te-apply-button, + .tui-popup-color .tui-colorpicker-palette-hex { + float: right; + } + + .tui-popup-color .te-apply-button { + height: 21px; + width: 35px; + background: #fff; + border: 1px solid #efefef; + position: absolute; + bottom: 135px; + right: 10px; + color: black; + } + + .tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-hex { + border: 1px solid #e1e1e1; + padding: 3px 14px; + margin-left: -1px; + } + + .tui-popup-color .tui-colorpicker-container div.tui-colorpicker-clearfix { + display: inline-block; + } + + .tui-popup-color .tui-colorpicker-container .tui-colorpicker-palette-preview { + width: 19px; + height: 19px; + } + + .tui-popup-color + .tui-colorpicker-slider-container + .tui-colorpicker-slider-right { + width: 22px; + } + + .tui-popup-color + .tui-colorpicker-slider-container + .tui-colorpicker-huebar-handle { + display: none; + } + + .tui-toolbar-icons { + background: url(data:image/png;base64,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); + background-size: 218px 188px; + display: inline-block; + } + + @media only screen and (-webkit-min-device-pixel-ratio: 2), + only screen and (min--moz-device-pixel-ratio: 2), + only screen and (-o-min-device-pixel-ratio: 2/1), + only screen and (min-device-pixel-ratio: 2), + only screen and (min-resolution: 192dpi), + only screen and (min-resolution: 2dppx) { + .tui-toolbar-icons { + background: url(data:image/png;base64,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Xqz8qBcJkED0BGIbcoxe1QtDor4qT80zFpNh01flYWg2e1Fo2C6Me5NnSQLFToAeWpFfITFmxbrCUdCJMeMKxyK/iageCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACQQgkA5QNlTRRYsWZbwEbNu2LTFdnPSAftc6pas06PesihdTmIurXdekOefi6qBfpJyD8rHrk+s4LM+gfHLpY8+P+r6Ngmc6nf7q1q1b6+26RnEcBc/S0tLmLVu2HI5Cn6Ay7Hxz3V9BywfVx17ezjfX/RW0vL29oMclQSuwPAmQAAnkS0A3ZrW1tR9Gh1ebr6w46unGrK6ubiz0GxdHO5QZD4HEDJo8aeBmmWk7jf2SnuspxFYnlkN50pg8efJLNuHdki67LZ2HJEACAQnYjVl/f/+PIeLxYjFqdmPW0dExC/rNpFELeKELWDwxgybn2NfXt1A/V9zg2/XjQsePHz8+StcBN/gZ/ZhxEiCB/Ai4GLMKSCvFXnCj5mTMYHDVNAiNWn6XPfFaZUm2iJt6YSZzfioN8e1Jtp+rLegzUi8Dfdv14yTiixcvbhw7duxdDQ0Nb/ppL2nvdsmSJZfMmzfvQH19fb9P/Qrq3SbNxw8Tvcxg9/6D8pVhRsMzE2OmthJslodJlRE2DMpXhhnFM9OMWVaFsrKyRB/+w573hVo/0YsEg7FQB42nou36caHj8CAtP6qamprEPTQwuq21tfX3GOa4vNA8nNoHo/G7d++eD/2qnPKZRgJuBFyMWQbGbHVTU9NDbvWSSvcwZvs3b958PCk92E7+BBIzaPJkDzVnaKrux0qi17XjgkbXrFkzDAroT43da9eu7SqQUmLMxKjVFah9z2Z7e3sr8TAyb+nSpTWeBZl5wRGQewKjDP/bfuLFYswwslAmhsuuH42ZncjgPE7MoHH+LPANMhw1HpUhyNWrV0u8qDZczxIYthnyoIJOIrH7qKggUBkLATFmuCf+E4k/xsPYCpVZTMZsx44dc86ePXvpypUrxyv9aMwUicEfJjaHxvmz/G4WYwjyOnQQizAf8LJdCpLPT0raMx2Og855OIiwJBlDkCOgx17I7rBk4gDpnu/32csHnfOw1w96HJSfXX7UPO3yg/Kz10+Kp2bMrsQ9m8LvvRG6pzCc2OowZ5b4MKN4ZmLMwCc7VI55sktg1ES/Ppc5s6IYZgx7f9rvh6iPw96fUeuT2JM1589CXToOQYbCx8pxE8CDzbUwYvNVO/i9l4hRKwZjJjrBmI2A8apU+kkoRq2YjZmuK+P+CCRi0Dh/5u9i5CqFDiKQN5ZLXtT55eXlRa1f1OdLeecJ4Msfv4ARq8U92qNSxaghrs9LO3pmGFavV3XiCuGpnsK87z4YNcs96rCacYBnhv5ralx6UW60BBIxaJw/C33RZKjxOnQaj4WWFIMALGnuxDXetX79+hMxiKfIQUIARuMJu1HTVHc1Zqhzr1YutuimTZtanYyaahD3saMxw709RZVhWNwEEplDw1Mb3z/L8z4Au8e83kuLew4nl9roIE7MnTvX9b20pOZwcunpll9ofm56qfRi56f0VCH0fQLzKrIg5HHs8tJ0doNn9En70nzxzJIyZkoPMWrQT16Ytny1qLKy8uCGDRssS/PFMyu0Mct1fxZ6ji3X/Zn0HFsiBg037UJ1Q0mITnC7flzoOG7agr9/5sDgTRizu4rVK8M17K+oqDhAr8zhyl3gSejkmtCRCYWsUYMx+wSM2TodSyGMmWof+p009MsaNcOYHVX5EhaDMdP1YdwfgdiHHDl/5u9C2EpxiNEGhIeDi4AYNWi83MmYyZkk7ZnZ6YlRQ9o+J2MmZQvtmdn15bE/ArF7aLgxFuqqwOvYrh8XOl5s32/MNcRYaF65hhgLrR/bLx4ChlErHoVsmhhGzZbKw8FMIHaDhg6a82cB7hAMMdYFKC7veVlWbeWqix+xzB/kvQX9ukvQMXTo92zeyjlUDMrHQYRnUlieQfl4KuOQGTVPexNx87W3F/Q4br5B9WH5eAnEPuTI+bN4LyClkwAJkAAJnCMQm4fm9uSGIch9yEuFfbINewHdntxaWlquMPSL1FMIqy/rkwAJkAAJeBOI3UPzbp65JEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFC8BNJRq7Zo0aKMLnPbtm2ebQQtr8vOJ472rtXrQb9n9WN7PGh5e/24j+38crWX63rkqh80384vV/1c1yNXfXt+UD72+rmOw/IMyieXPvb8qHkq+dB7TDqdvgPHtZlMZrak4/gVBE04fgjtnpI0tfm4Ds2ov728vPwLjz/++CFVL98Q7ZWWlZXV9Pf3j8M+TOSUlJR0YT/Z29t7HPr16bJzXQfI6oF+7T09PYdQt1uvG1fc0Om/bfLf5nRNX5xytaXftdVJvaX5j579sL28n+MVK1aM6OzsnKeXrays3LVhw4azeprEd065xtLv2vPnN//Bsx+2l3c7LnHLYDoJkAAJOBFYvHjxDUh/CYbrO9ivQ3ys7BKXNMkzyiDqe5uCuku7u7ufX758+TTftRwKrlq1ahQM0AIYrmkwZsNRpFR2iUua5EkZh6quSahXDmNWjQKXw9BUuBaMMAMG9E67OKc0e5mkjvv6+mrsbTml2cvEeUyDFiddyiaBIUYAnfn7YXh+jtPyMjrTpMySJUv+Zx6nPw6G4+/yqJetAmM4+uzZs7PFALnJkDwpI2Xdynikl8KL9Dp3j6r+s8B5pBh4ew1Jkzx7etLH0EEeEMbZ25U0ybOnJ3VMg5YUabZDAoOcwK233joFHkITTiM7hOd1Oij3Mzytv+BVxiPvfR55rlmrV68uh4c3C51qzuG10tLSthEjRnS4CvPIgFFJwqAsgwrZdsDy97IbKkma5BV6G4frm7UfGMZ9U3ZRyEgbYOiSUrYsqYbYTjgC+LEOb2trW7d169Y6XRLG03P+ePXyccXr6+tLdu3aNX3Lli2v6204jffr+XHHi4WP23kWmo+bXk7pMBb3ozOXYTd9a0Rn9nUM4x1D/v9Ax3sP9n9oamrapheyx+3XBU/15hwQ2phqL+/nuL29/WKUs3gHMFwnJkyY0NzS0tKLvJHQU4zykU2bNrV6ybRfF+hnzgF5eX9eMoPkQcc7wSFbBfHvSwTHMrwrc5UyFNkg8UJtuOYyP5ltHvFjEsHxDAklD0E2TY6T3GjQkqSdZ1v4MV3e2toqHcTl2OvyFBNbNehXtXv37ll4OqtEI6/H1hAFF4zAsmXLZmAocJGuADrW7+IB624t7V8Qlz3xbc2aNcNgtCzGtqKi4ohtgYksVJG9qDcxnjBe14iSYNwKQ7HFiH8X6dWSJ2XsRjepkzIWg8jcpGx9c+fOPSmRHTt2yFBsdq5SyjgtDpFycW4ccoyTbgSycePWQczvsYsxK7pt6dKlNXgKnoenVjFm3IYoAVzfJTg13fs5MHbs2HviOF104oeDyrUbM9Tv3rhx4xtB5fgpDy+vx0+5EGVWa3UbYbg6ZEdao5aul9GS44/iwdVcDCIeMEZn+mWXuGpdL6PSkghp0JKgnEcbMsSIlWKNqPoodvU0lIekeKrIECMm/S9BRzfDGDePpyFKLQoC8AoW2hS5v6GhIZaOHW1tt7WV8xALNSyrFmF0jsIwmsOYOQUEKIB7/kyA4oGK4gFWnyPL4Bz+SQkw4uqclhllVXYiIdq0LAbBMn1zaFGPw6ssyOKQOIYcxaUfkyfdJIYD5P0T/UkziKqWd1eCVAxSFjeNPsToWRVl1Q3uWU5l4kkv9Jwb2tSHGJVoxxBlzbkHxwK2xKiHUYLysamT8zAsz6B8cipkKxAhT8sIAZ7G/8vWVKBDj+siT/lfCCQMhTEcahkhgEFrDypDL+9xXaQPiMXzM9rXF4P8J+Yi9yi9JI6H3P+Ewb8JacrwZefS4njPTLVrC/XFIGcaGxs7Vb7Ea2trz8CYjTIecmVxSNbgRfWemWrLLYzDQ9uvN4YbI7tSR09TcYc8S11VLuKwW5cHHVyNm0Oepa4uJ6o42qyDLA4xRgWUcqIiYA4ziUB0WPISdZSbvFi9GfNeV8EIBzYYMLCWh/NLL720K0rlZJgRXqAsJHkZ+sXZD5hDieCRXQyin4ctzSyrl4kzbiz4yDYB5qZ3ptrU0/SyKj/u0HITRNEYgO/HE8SVShZOairie9SxHkoerLmZJHXNg/gicjNWKfFYuluOuKPnJXl4X0UVlTDOGznbDhgAXyCnS9cv9jh+1BmsZou9HTZAAhcaATzMymiGOaKBvvHHSLNg0PtLKSt1IvTCLW3ZD2yLQcQrnmXXD2lmNeg6POnFIXF4aC+aZ4QIOuf36cd63CHPUlcvG2Hc8u4JDJZl7F1vxyHPUlcvG1Ucq8Yeg6zrsL8clcwo5axfv/4Ens534YnVHGqIUj5lFS2B47pmeBKfrR9HEA/1pRDck7Is39xee+21nO/KmYV9RDBvlsSXQvLxuPKp4+OMBxYBY4uXPrDEwJR86gyU4j8lcg8NHV0jrPQXoUJ2KA9G69Ow0pvsSzgNa/9pTdU+lH1UO44lCq/rBAzVZCUc+k7EU8ZJPOVYvDSkybfgJuJGVkVTUtc8iDECXV7GopDr5L0zMLnNqymUTXvlx5GHNjuwKGSnvHeGG3a8Vxso+6xXftx5heAT5JwKzSeArvKANV2Vx3V/B+LPqOOgof264PemhiXUl0KWBZGJkYNO9DsVqg5+tzLVYRleUXl+Qvt1gX7Kc1JfCtnrR47fMpCv5sT8VlHlZHHI56BvqDlDJcwtRBuWxSBu5ezp8NJkcYh8/9LSv9rLRXUcuUHDC4uvYOLyb9ERf8VQ8vKurq7fYLLwHpzcHyUNQ41XI+2biJoTzRhq+1t4J68adWILZOISq/Oa8YOcIo3gxpfJ5LmA/kZ1dfWbkoZ3vmRV4UVGniSl8ETarE+AZhNj/IMVZKJLHVg+DZbrEC+qlY6yTBc6vb5y5cozGIIUwxaHtx8jYYoOQgC/z+24Dz+o1fksHrrWxbTS0XVUR2vfEoUxO4ME81NW+O1OhL6xrHSEXNd1ARalgh2IAc/KBesfoy/8mFd19As/gh4fNepI3Qav8hHk6YtB2rBA5TUvmejvL0V/P9boF8zFIV51osiLpRPCyd6Li/JVKJh1bwD+rTi5f8Vxs+wSlzTjBHqlrNQxjmMPNm/e3CwGSmtI5tQugyG7UnaJYzfn2aSs1NHKJxblEGRiqNmQBwGMVmxBtv6UPR0jCPJQGvmGvmFqUKGTJ0+WBRv6VoFPdV2kJ0QVh7GUefeoN3PoEA/8AxaD2BuzlTHr2stFdYz2zOFG3AsDFoPY29HL6HXt5aI+jsWgwUBl0BHXyzg74l+H0v8Xu6xi6pTdiP9K8qSMlEVcDTlEfY4D5Elb+ETTYfwIXkJmC/Z2XIAegM/ILnFJkzwpI2WT1A/tWja46y/De7wOOsj8WtFt0K8DXwvYiWuZyJBs0QG4ABTCyMt+3H/b9FOF4fkcRjYeladx+dAvvIZbsP8ax9aVDHqlmOJr167tMlYhmi1g5GCSvCspXxGRITPsY/AhgHn46km1WagIItBLhjOzQ5pgvAcPz0/lUkvKSFmjXHZxSK46+ebL9BCckOwIEfrHLrywLt6w5yZlpKwUkroiw7NCRJmRDznqehnf9VNDj3pWUcTlRwBFAi8RLoTyagjS3jZ+DIEeBGB8YplzU0OQDvplf6j2dLdj6BfpnFtQPm56uaWH5Wl0Zm7iQ6dHyRNL6j8LI/EnMGS6QahDh1Wnr3xF/rth2LYh/ATad3ya97ou6KgP53PiI0eOPIgRFhl2NF/FwZDXeHxFZLySB+9KorNg1FqlvNuQqdd1MR54lcgoQtPDwrl/H3vO37SUwYPD98H4e4YCIuPOKJSxywBD0zuDkTrmVz88PBzDvTFN5Bky8p7TtOvkdhyLh+bWGNNJgAQGLwE8dTejA63FGeR8xwvl/hQeu/n6TpCzRt3tQcqrsmKcYHT3yiiLSnML0cGOxeIwc1rBrZxTOoxiTg/FqZ5TGgynvhikA8x8j8IYZdXK61i+HAL9zMUgwhUjMb5HYaSsuhYwbIl8OSQyD83ricvpQuZKC/vka5fv9cRlL+vnOMonXz/tsQwJFAMB3PdPwvu6GUZnPfTJPn076HUIT/ErMULztENeriTpML+Qq5BbPj5GfBr/vPOVjo6OmW5zXeJhVVVV7XvkkUfyMUwyjxjlqI4s6FCLQbbk+i8A+nlLWVyLLbgWtxsyRFaDXiaCuLkYBNf0JEZisi6uH7lSFkO+J1F2PB4gxHmKfXEIPTQ/V4ZlSIAETAKY8xZDdQU6uLux/x7xNtkljv3zkmeUQdT3FupLIXorYqhgzHbAcB2ChyCrhcUI9RnxNyQvqDETIxjTl0LM4UboJ6uZA222OqasQEI8CkO+OdyI83ccPvaontLr6LK86jCPBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABCIhkI5EiiZk0aJFGe0wtW3btsjb0OUHjUO/a/U60O9Z/ZhxEiABEiCBwUmgZHCqTa1JgARIgARIwEqABs3Kg0ckQAIkQAKDlEDew4H2ocWg5x/3UKR9aDEP/TgUGRRaEZYPe5/mOqWw93HY+9SHfgW9j5csWXJJX1/fPkPP/eB1SS6dk8xfs2bNsJaWliuMNruh34tJts+2oiVADy1anpRGAiSgEYAxW6gO0+n0dhUvlvD48eOjlC6lpaVnVJzh4CRAgzY4rxu1JoGCE1i8eHG97F6KwIgtVPmZTGa7ikvop75ePmgc3uFU2b3qQaeRKh+6tqu4hH7q6+UZLzyBsnxV0IdaMGxSumDBgkx9fX2/XR7yfoC01Ub6najXYC8TxzHaMYdacNNmh1Zxw1pWYEq7y5Ytm9HT01Nj6HAA9Y7FoQ9lksBQIiDGCL+re+WcEE9t3bq13un8UGahSocHtF3F/dZX5YOGYozgHU6ReointmzZcthJBsqYHlpNTY3pofmt7ySTaYUjkLdB01WGoXhgx44d02C8lsMgWJ5ykDcbN7UqvltFkgzx47kY7VVAv33Qr09vGzf0MHU8atSoThVnODQJ4Po7zhvj3jBvUjlzv+WipoR2zQcxXTb08/W6ib2cLiOquG6MDJlfXrp06ZbNmzfv0tuAUZD5sxlG2n4YldcljrLzkP5lIz0lhtHLKKpyfkPdGEkdyJ9cV1d3srGx0fL7NubPKgy53WvXru2SOMpWdnR0TDbSU9B1ipdRVOUYFp5A6CHH2trau3DD3IVT+VPsvxGPRz8t5M1Rx2VlZZYbXqXHGa5YsWIi5E/APgb7XLmJ9fZKSkoq1TH0s9zwKp0hCZDAOQJ2Y4YH1h78xmvtxkxKwxAsPFcrlUK57SouZaWO1FVpOBajVq+O8w3txgy/7ww8w312Yyby3ebPpKzUkbpKD8OoeQ5fqrIMC0cgtIeGG/EiTf0rMXz3/+Gm+giexn6Lp8WrkKfy23AjH1Fljbw/qmMJcQNd1dTU9LyeFjbe2dlZrsmoOnr06Dy0/RqehNtXr149vLW1VeX3NTQ0mD8wI2++VjdVXV29E2Xe1NMYJ4ELhYCbMcNv6QknBjBYC9E/ZLMQbtfLSB38DsWoNSEv+xtEGMpTczNmmzZtatXbVnG05zp/JnXwcC5FZ/b392e9enpqilzxhqE9NIyd/xUM0W04xay7jnAiLvxT8NxWIv5xdeq4cX+q4kZYZztO4ca53Z4W9hg/nDeqqqpeV09baKMM8TkrV64cD2Om5s5SeCJr09s6ffr0eP1Y4k5p9jI8JoGhSCCoMRMGMBgLFQt9/kyliVFDmUg8taDGTHRAP+U4f6b0E6NGT03RGByh43xCPqrjhnoXbhB5UpMhPrV1I5Ido8aNcQ28tqxHBu+nHMbkDeTJUKC+HYMXdJHuKemZYeJ4GhwJQ3apGDQlR4ycevrSvS/8yNI4nyv1slIH5XtxDi/AOJtDEUpWVCH0jE226IhOJNQ1h36WuZyozlvJgX6Oc0gqP2hInuF55mPM8PuR+bN9xvXyfP8M1+gjuqcmdXD8VbeFJvZ7IB9jFuT9M3hq1TgX01OT9tGfNaMvcFxoYtfPzzEcgJvR3zRIWfQzqzFS9XO9Xth8XVY+cVyjMZiSmSF1e3t75Xqe0uWEzddlhYmH9tBU4zLEWF5e/nYcv6DSEKoJ118rYyZ5bW1tH0KgjJkYuayhkzQjD9FoN1yA9okTJ8ocXoeSrIwZjtv1ocTbb799jGbMpHy2jqRJnqrPkASGOoF8jJkwgQFYqNjAOG1XcacQv828PbV8jJno4DZ/5qRfEp6aYcymof1pRtyiSth8i7A8DsSYwZCVy64Mmy4mbL4uK0w8MoMmSuDC78eTy58halnpiONx+mIReEB1SFPbI4jIrrbbVCTqUFYxTZ48+TXoaHm9ABejTF8scvbsWXMosrKy8rjsShesfhowFKnyGJIACZwjACO2ULHA7327iruF8EpCjRy4yXVLh06u82dudZhe/AQiM2hYTTgCbudf4kniv3Da5s1iILjcWCzyLpSZgJv9FiO9C17d47LjWM3BfUjKGPmRBZBZiuXCk2RRCJ4eLeeNp45KY7HISBkOxY9rtDSMMHPppZeelF3ihjJjpExkilEQCRQxARn2k+E/pSIMQTmOm/B7+ohKcwpRbqFKxwPkdhV3CkUWym8R2Spf2vQz5CjDfjL8p+qh/0nL8KAME6o0pxBlPOfP9DpJDDmif1mNNg/JbsR1FbLDkGHyLcLyOJBhRjz398gucbuIsPl2efkeh34qwpDEt3EjvhUKvBe7uSQeN6R4QZuQt0hLF6P1H9hlyFHGybfgpl0qccjZjLJLJI7t0xiG+Idz0XB/ly9fPg2wh0PKSLnZbdLEUFWrdDFaiJ9GmeywIgxtK7zOvVIHN/UsGOXsjwQX9ZC+YtMmk4dFRACdpXoQyWqF+8p+D2TToy7nFwHatcxJQj/HOcSoy/nVT5ULMvSY5PyZ0i/I0GOxzZ+pc2AYnoDFU8lHHIzQ3aj3fuymMUNcnjRugrFagaenGxE/il02KZM1ZtmjVOphI5RAj9dp6aGi3d3dk2CkRimjJcLkKQMvUe9B57EP6XtgyHol3ShjzpHB4JpDjXocBpLDjgKM2wVDIIin5nf+DEY61GIQHX4QT83v/FkSnpl+DoyHJxDaoNlU2IGO/y9HjBgxGz+ApyXPZbFIthqM4ZPyZCy7xDVZVyFN3mGLdIMh68R82MG5c+e+9Mgjj5wR4TBqAxaLqEZhDGdDj2tll7hKR1gl76lpx4ySwJAn4NeooQ9YqGDgd71dxfUQv6nIjJmS69eoQSdzSgS62uf7s+JozBTVwRWGNmi4Ib6EU16O4bk5MA5X4KZ/wP5WviwWQZl3Y3/OLx7IjWpxyBtocx+M7A4ME+7YsGHDUfs3J41P3uxGOXMFZC49+U5aLkLMH4oE3IyafM5KnS8MxkIVd5o/wxL0+fh9my9US1kc+5ozU3LdQjejJp+zUnVyzZ/B2FbJPJw+qiPzdCJbyWBYnAQc5xPiUNXj3TO35mJ7J82pQfwIHd89cyoraTJMiRs81nfS3Npmun8C6Jwsc2j+a/oriYe4UL8h8f79tZRfKejnOCeXn7TztfQ5Nd0Y+Z0/c6t/voVwMX1OTTdGfufP3OqH04q14yZgvmQcd0O2d8+exA/tA05t4gf+70iXOTn1Tto/O5WLOk1/9wzG6gxebNzj1AaeLufgyU3m5NQ7aZYvjDjVYRoJDDUC4qnBKGVPS+Lq/PzOn7nVV3LChuJNwShlxeield/5M7f6YfVi/XgJJGbQ4AHVqVOBwXhExe2h5MFYiEGTT+fUIUjEoOnvnqF9czGI6KFvRl52ya9RhwZNB8T4BUNAN2TqpOGtuX6/UZVRoVN9lRdFqBsyJQ99Ss75M1XWqb7KY1icBELPofk5LXhd5rtnuOFb8cWOJ9zqSZ6UkXyEt0hdt7JRpevvnkFmH/63m6uRMvL6pG0Y39F8Jy2qq0A5Q4EADMZCdR5O82cqr1BhrvmzQunFdqMhEGr8368KGKb7NDyb7xnl/xHDjWu86sKIrUX+J6UMjMZnMPz3917lw+bJC9dYij/NkHMM+h3wkgn9piM/a2j5TpoXKeaRAAmQQHIEEvHQ9OFGPLW5Djeq09bL6HVVftSh/l4ZPlLsOtyo2tXL6HVVPkMSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESGKwE0oNV8aGq92uvvZaJ89wuvfTSUNd8//7918ap34wZM56NUz5lkwAJDF0CJUP31HhmJEACJEACFxIBGrQL6WrzXEmABEhgCBOgQRvCF5enRgIkQAIXEoGyOE520aJFEyD389jfg33Otm3barzaCVreS5afvNWrV5efPXt2Un9//8je3t5K6PecV72g5b1kRZF3+PDh1AMPPGAR9alPfSo1depUS1qhDg4cOOCo3/Tp0wulEtslARK4AAhEbtBqa2v/DIZiI9iN9MMvaHk/Mr3K1NXVjT19+vTMvr4+X95p0PJebUeV9+yzA9dNSFqxGLQ//OEPA05V0mjQBmBhAgmQQIQEIjVoixcvfi+M2VboVyE6ptPpdRUVFV930zdoeTc5ftNXrVo1Cp7ZLOioVvodq66ubnarH7S8m5wo02GIU889N9ChlLRbbrklVVpaGmVzgWX19PSkXnzxxQH1JO1DH/pQqry8fEAeE0iABLwJjFtx2HP188kNU1Wf5i0oZG4uPQaKT+8vSaV/MnbspHteXZvuGpgfbUpkBg3DhtKTPog9a8wQ/rapqemTMGqOFyJo+bCnnclk0suWLZuujFlZWdnZTZs2HXTTL2j5sPr5rb9r164UjHK2uPLIZAhS0iRvwYIFfkXFUk50OHXqVFa28shkCFLSJO8tb3lLLO1GJbS+vn6iyEJ4NCqZUcr5wQ9+kH0iuPPOO3uilEtZJBAPgcyM/lTmMydP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VSp27NgxTQnDMOHxMWPG7JIhQ5WmhximPIrjl5E/wDhDRzHI+6L8yr5qW7fqKo0hCZAACZBATATgVaXx+ag/QPxVWhP3whB9TR3Da6tAx38zvJp3I03iexD+BwyehPLVEFl08Uns02F85MXm38HA/Ezm4yQ/is3QU96Py3qQIhOGqhlf+zeNqXhtr7/+unx8eCSGJtNY/NGFMqcbGxuzhk7OA9tEyKrAufSgzFn8r7Y2mY+LQke7DBo0OxEekwAJkEDMBLCwYjbmop5BR69/eeNHMAir8RmpwC9Ew3B8ECr/GkaxPUrVjU9dzYNM8zNWMK5t8+fP3w+jZA59+m0TespnsdqhZ2QvU+ttm0rqiYyTAAmQAAnER+DFF188CU/lWXhWS9GK6ocvhxdzB9JHX3nllbteeuml7Ff43bQQD2r37t0LYVxkwUg9ZHVgWPBXbuXzSX/uued6r7766jfR1jhpT2QgrDx27NgE6FmKvevll1/2NE5S7+DBg6Og5wyc3xSsiOx/4YUXIjW86tzooSkSDEmABEggYQIYenwvOvxtaHaiQ9MvI+3XMFSHUOY4PCMZpqtCXIzLfKRfj/BirV4b3hObieE+c4Wilhcqavwjz1kwSOZ7bkqgzKNBl3bo143VjlmvDWkl0K0UexXSR8AbLVflEfbBEL6Uj4enyXCM0qA5YmEiCZAACSRDAP8j7WIYCvmnnjeFbHEf5q8+ijmuP4aU41hd5sNgnC6BrpbVio6FvRO78f7da1HO96nmaNAUCYYkQAIkUEAC8NZugFGThSHvCaIGvKPnUe8HMBIPyftsQermU1a8NXwJZCrqmv9ixqcc+Wr/Mby6cBw66++x+ayeuxgNWm5GLEECJEACiRFYvnz5NAzRfRBG6gPYZ6JhGY6cYChwCsbgOOIvYn8WHtm/RfmlDaMNX4F4bBhaHA19RmP14jAZjoQHp4YW+xDvRV4HzuEszuc0FoKY/4bGVwMsRAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKDgMD/D2WyCk5hENCOAAAAAElFTkSuQmCC); + background-size: 218px 188px; + display: inline-block; + } + } + + .tui-toolbar-icons.tui-heading { + background-position: -172px -48px; + } + + .tui-toolbar-icons.tui-heading:disabled { + background-position: -193px -48px; + } + + .tui-toolbar-icons.tui-bold { + background-position: -4px -4px; + } + + .tui-toolbar-icons.tui-bold:disabled { + background-position: -25px -4px; + } + + .tui-toolbar-icons.tui-italic { + background-position: -4px -48px; + } + + .tui-toolbar-icons.tui-italic:disabled { + background-position: -25px -48px; + } + + .tui-toolbar-icons.tui-color { + background-position: -172px -70px; + } + + .tui-toolbar-icons.tui-color:disabled { + background-position: -193px -70px; + } + + .tui-toolbar-icons.tui-strike { + background-position: -4px -26px; + } + + .tui-toolbar-icons.tui-strike:disabled { + background-position: -25px -26px; + } + + .tui-toolbar-icons.tui-hrline { + background-position: -46px -92px; + } + + .tui-toolbar-icons.tui-hrline:disabled { + background-position: -67px -92px; + } + + .tui-toolbar-icons.tui-quote { + background-position: -4px -114px; + } + + .tui-toolbar-icons.tui-quote:disabled { + background-position: -25px -114px; + } + + .tui-toolbar-icons.tui-ul { + background-position: -46px -4px; + } + + .tui-toolbar-icons.tui-ul:disabled { + background-position: -67px -4px; + } + + .tui-toolbar-icons.tui-ol { + background-position: -46px -26px; + } + + .tui-toolbar-icons.tui-ol:disabled { + background-position: -67px -26px; + } + + .tui-toolbar-icons.tui-task { + background-position: -130px -48px; + } + + .tui-toolbar-icons.tui-task:disabled { + background-position: -151px -48px; + } + + .tui-toolbar-icons.tui-indent { + background-position: -46px -48px; + } + + .tui-toolbar-icons.tui-indent:disabled { + background-position: -67px -48px; + } + + .tui-toolbar-icons.tui-outdent { + background-position: -46px -70px; + } + + .tui-toolbar-icons.tui-outdent:disabled { + background-position: -67px -70px; + } + + .tui-toolbar-icons.tui-table { + background-position: -88px -92px; + } + + .tui-toolbar-icons.tui-table:disabled { + background-position: -109px -92px; + } + + .tui-toolbar-icons.tui-image { + background-position: -130px -4px; + } + + .tui-toolbar-icons.tui-image:disabled { + background-position: -151px -4px; + } + + .tui-toolbar-icons.tui-link { + background-position: -130px -26px; + } + + .tui-toolbar-icons.tui-link:disabled { + background-position: -151px -26px; + } + + .tui-toolbar-icons.tui-code { + background-position: -130px -92px; + } + + .tui-toolbar-icons.tui-code:disabled { + background-position: -151px -92px; + } + + .tui-toolbar-icons.tui-codeblock { + background-position: -130px -70px; + } + + .tui-toolbar-icons.tui-codeblock:disabled { + background-position: -151px -70px; + } + + .tui-toolbar-icons.tui-more { + background-position: -172px -92px; + } + + .tui-toolbar-icons.tui-more:disabled { + background-position: -193px -92px; + } + .tui-colorpicker-svg-slider { + border: 1px solid #ebebeb; + } + .tui-colorpicker-vml-slider { + border: 1px solid #ebebeb; + } + .tui-colorpicker-svg-huebar { + border: 1px solid #ebebeb; + } + + .tui-editor-pseudo-clipboard { + position: fixed; + left: -1000px; + top: -1000px; + width: 100px; + height: 100px; + } + + .te-ww-block-overlay.code-block-header { + text-align: right; + font-family: $editorFont; + } + + .te-ww-block-overlay.code-block-header span { + font-size: 10px; + font-weight: 600; + padding: 0px 10px; + color: #333333; + cursor: default; + } + + .te-ww-block-overlay.code-block-header button { + margin: 8px; + font-size: 10px; + color: #333333; + background-color: #f9f9f9; + border: 1px solid #dddddd; + padding: 4px; + height: auto; + } + + .te-popup-code-block-languages { + position: fixed; + box-sizing: border-box; + width: 130px; + } + + .te-popup-code-block-languages .tui-popup-body { + max-height: 169px; + overflow: auto; + padding: 0px; + } + + .te-popup-code-block-languages button { + width: 100%; + background-color: #fff; + border: none; + outline: 0; + padding: 0px 10px 0px 10px; + font-size: 12px; + line-height: 24px; + text-align: left; + color: #777; + } + + .te-popup-code-block-languages button.active { + background-color: #f4f4f4; + } + + .tui-popup-code-block-editor .tui-popup-wrapper { + width: 70%; + height: 70%; + margin: auto; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + } + + .te-input-language { + position: relative; + margin-left: 15px; + cursor: pointer; + } + + .te-input-language input { + font-family: $editorFont; + font-size: 10px; + padding: 3px 5px; + border: 1px solid #dddddd; + background-color: #f9f9f9; + box-sizing: border-box; + width: 130px; + outline: none; + } + + .te-input-language input::-ms-clear { + display: none; + } + + .te-input-language::after { + content: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT42Q0NBRDk2QS0yMjYxLTRFNDAtOTk1RC1DRUUyQUREQUQ3NkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLWQtc2lkZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlJlY3RhbmdsZS03IiBwb2ludHM9IjIgNSAxMCA1IDYgMTAiPjwvcG9seWdvbj4gICAgICAgIDwvZz4gICAgPC9nPjwvc3ZnPg==); + position: absolute; + top: 1px; + right: 3px; + } + + .te-input-language.active::after { + content: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjE0cHgiIHZpZXdCb3g9IjAgMCAxMiAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5BNEZDRkIzMy0zNjdBLTREMjAtOEEyNC1DQ0I2ODFBMDZDODg8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbS10cmFuZ2xlLXVwLXNpZGUiIGZpbGw9IiM1NTU1NTUiPiAgICAgICAgICAgIDxwb2x5Z29uIGlkPSJSZWN0YW5nbGUtNyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4wMDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgxLCAtMSkgdHJhbnNsYXRlKC02LjAwMDAwMCwgLTYuNTAwMDAwKSAiIHBvaW50cz0iMiA0IDEwIDQgNiA5Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=); + } + + .tui-popup-code-block-editor button { + margin: -1px 3px; + } + + .tui-popup-code-block-editor .tui-popup-header-buttons { + height: 20px; + } + + .tui-popup-code-block-editor .popup-editor-toggle-preview::after { + content: 'Preview off'; + color: #777; + margin-right: 22px; + } + + .tui-popup-code-block-editor .popup-editor-toggle-preview.active::after { + content: 'Preview on'; + color: #4b96e6; + } + + .tui-popup-code-block-editor .popup-editor-toggle-scroll::after { + content: 'Scroll off'; + color: #777; + margin-right: 16px; + } + + .tui-popup-code-block-editor .popup-editor-toggle-scroll.active::after { + content: 'Scroll on'; + color: #4b96e6; + } + + .tui-popup-code-block-editor .popup-editor-toggle-fit { + width: 18px; + height: 18px; + margin-top: 4px; + margin-right: 14px; + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT40OUQ4RTYyMy1GRTAyLTQ1RUUtQkQ5Ri0xMjUyQjEzRTU1MkQ8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLWV4cGFuZCIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBhdGggZD0iTTMsMyBMOSwzIEw5LDUgTDUsNSBMNSw5IEwzLDkgTDMsMyBaIE0xNSwxNSBMOSwxNSBMOSwxMyBMMTMsMTMgTDEzLDkgTDE1LDkgTDE1LDE1IFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4wMDAwMDAsIDkuMDAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC05LjAwMDAwMCwgLTkuMDAwMDAwKSAiPjwvcGF0aD4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZSIgZmlsbC1ydWxlPSJub256ZXJvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMS41MDAwMDAsIDYuNTAwMDAwKSBzY2FsZSgtMSwgMSkgdHJhbnNsYXRlKC0xMS41MDAwMDAsIC02LjUwMDAwMCkgIiBwb2ludHM9IjkuMDg1Nzg2NDQgNS41IDEyLjUgOC45MTQyMTM1NiAxMy45MTQyMTM2IDcuNSAxMC41IDQuMDg1Nzg2NDQiPjwvcG9seWdvbj4gICAgICAgICAgICA8cG9seWdvbiBpZD0iTGluZS1Db3B5IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuNTAwMDAwLCAxMS41MDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTYuNTAwMDAwLCAtMTEuNTAwMDAwKSAiIHBvaW50cz0iNC4wODU3ODY0NCAxMC41IDcuNSAxMy45MTQyMTM2IDguOTE0MjEzNTYgMTIuNSA1LjUgOS4wODU3ODY0NCI+PC9wb2x5Z29uPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+); + } + + .tui-popup-code-block-editor .popup-editor-toggle-fit.active { + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxOHB4IiBoZWlnaHQ9IjE4cHgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT4wN0Q1MjlCRi1GNTIzLTREN0EtQTlGNi05NTUzNTU5RDNEMUE8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggc2tldGNodG9vbC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IlN5bWJvbHMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImNvbnRlbnRzLXJlZHVjZSIgZmlsbD0iIzU1NTU1NSI+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzIiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS41MDAwMDAsIDEyLjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtNS41MDAwMDAsIC0xMi41MDAwMDApICIgcG9pbnRzPSIzLjA4NTc4NjQ0IDExLjUgNi41IDE0LjkxNDIxMzYgNy45MTQyMTM1NiAxMy41IDQuNSAxMC4wODU3ODY0Ij48L3BvbHlnb24+ICAgICAgICAgICAgPHBhdGggZD0iTTksOSBMMTUsOSBMMTUsMTEgTDExLDExIEwxMSwxNSBMOSwxNSBMOSw5IFogTTksOSBMMyw5IEwzLDcgTDcsNyBMNywzIEw5LDMgTDksOSBaIiBpZD0iQ29tYmluZWQtU2hhcGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMDAwMDAwLCA5LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOS4wMDAwMDAsIC05LjAwMDAwMCkgIj48L3BhdGg+ICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMzMiIGZpbGwtcnVsZT0ibm9uemVybyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuNTAwMDAwLCA1LjUwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtMTIuNTAwMDAwLCAtNS41MDAwMDApICIgcG9pbnRzPSIxNC45MTQyMTM2IDYuNSAxMS41IDMuMDg1Nzg2NDQgMTAuMDg1Nzg2NCA0LjUgMTMuNSA3LjkxNDIxMzU2Ij48L3BvbHlnb24+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=); + } + + .tui-popup-code-block-editor .tui-popup-close-button { + margin-top: 6px; + } + + .tui-popup-code-block-editor .tui-popup-body { + z-index: -1; + padding: 0px; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex: 1; + flex: 1; + } + + .tui-popup-code-block-editor .popup-editor-body { + position: relative; + -ms-flex: 1; + flex: 1; + border-bottom: 1px solid #cacaca; + } + + .tui-popup-code-block-editor .te-button-section { + padding: 15px; + } + + .tui-popup-code-block-editor .te-button-section button { + float: left; + } + + .tui-popup-code-block-editor .tui-editor-contents pre { + margin: 0px; + background-color: transparent; + } + + .tui-popup-code-block-editor .CodeMirror { + height: auto; + } + + .tui-popup-code-block-editor .CodeMirror-line { + font-family: $editorFontMono; + font-size: 13px; + line-height: 160%; + letter-spacing: -0.3px; + } + + .tui-popup-code-block-editor .popup-editor-editor-wrapper { + min-height: 100%; + } + + .tui-split-scroll-wrapper { + position: relative; + } + + .tui-split-scroll { + position: absolute; + } + + .tui-split-scroll, + .tui-split-scroll-wrapper { + width: 100%; + height: 100%; + } + + .tui-split-scroll .tui-split-content-left, + .tui-split-scroll .tui-split-content-right { + position: absolute; + top: 0px; + width: 50%; + box-sizing: border-box; + } + + .tui-split-scroll .tui-split-content-left { + left: 0px; + } + + .tui-split-scroll .tui-split-content-right { + left: 50%; + } + + .tui-split-scroll .tui-splitter { + position: absolute; + left: 50%; + top: 0; + height: 100%; + width: 1px; + border-left: 1px solid #cacaca; + } + + .tui-split-scroll .tui-split-scroll-content { + width: 100%; + height: 100%; + overflow: hidden; + position: relative; + } + + .tui-split-scroll .tui-split-content-left, + .tui-split-scroll .tui-split-content-right { + height: 100%; + overflow-x: hidden; + overflow-y: auto; + } + + .tui-split-scroll button.tui-scrollsync { + top: 10px; + opacity: 0.2; + } + + .tui-split-scroll button.tui-scrollsync::after { + content: 'scroll off'; + } + + .tui-split-scroll.scroll-sync button.tui-scrollsync { + opacity: 0.5; + } + + .tui-split-scroll.scroll-sync .tui-split-content-left, + .tui-split-scroll.scroll-sync .tui-split-content-right { + height: auto; + overflow: initial; + } + + .tui-split-scroll.scroll-sync button.tui-scrollsync::after { + content: 'scroll on'; + } + + .tui-split-scroll.scroll-sync .tui-split-scroll-content { + overflow-y: auto; + } + + .tui-split-scroll.single-content .tui-splitter { + display: none; + } + + .tui-split-scroll.single-content .tui-split-content-left { + width: 100%; + } + + .tui-split-scroll.single-content .tui-split-content-right { + display: none; + } + + .tui-split-scroll.single-content button.tui-scrollsync { + display: none; + } + + @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { + /* IE10+ */ + .tui-split-scroll-wrapper .tui-splitter { + left: calc(50% - 9px); + } + } + + @supports (-ms-accelerator: true) { + /* IE Edge 12+ CSS styles go here */ + .tui-split-scroll-wrapper .tui-splitter { + left: calc(50% - 9px); + } + } + + @media screen and (max-width: 480px) { + .tui-popup-wrapper { + max-width: 300px; + } + + .tui-editor-popup { + margin-left: -150px; + } + + .te-dropdown-toolbar { + max-width: none; + } + } + + .tui-editor-contents { + margin: 0; + padding: 0; + font-size: 13px; + font-family: $editorFont; + } + + .tui-editor-contents *:not(table) { + line-height: 160%; + box-sizing: content-box; + } + + .tui-editor-contents i, + .tui-editor-contents cite, + .tui-editor-contents em, + .tui-editor-contents var, + .tui-editor-contents address, + .tui-editor-contents dfn { + font-style: italic; + } + + .tui-editor-contents strong { + font-weight: bold; + } + + .tui-editor-contents p { + margin: 10px 0; + color: #222; + } + + .tui-editor-contents > h1:first-of-type, + .tui-editor-contents > div > div:first-of-type h1 { + margin-top: 14px; + } + + .tui-editor-contents h1, + .tui-editor-contents h2, + .tui-editor-contents h3, + .tui-editor-contents h4, + .tui-editor-contents h5, + .tui-editor-contents h6 { + font-weight: bold; + color: #222; + } + + .tui-editor-contents h1 { + font-size: 24px; + line-height: 28px; + border-bottom: 3px double #999; + margin: 52px 0 15px 0; + padding-bottom: 7px; + } + + .tui-editor-contents h2 { + font-size: 22px; + line-height: 23px; + border-bottom: 1px solid #dbdbdb; + margin: 20px 0 13px 0; + padding-bottom: 7px; + } + + .tui-editor-contents h3 { + font-size: 20px; + margin: 18px 0 2px; + } + + .tui-editor-contents h4 { + font-size: 18px; + margin: 10px 0 2px; + } + + .tui-editor-contents h3, + .tui-editor-contents h4 { + line-height: 18px; + } + + .tui-editor-contents h5 { + font-size: 16px; + } + + .tui-editor-contents h6 { + font-size: 14px; + } + + .tui-editor-contents h5, + .tui-editor-contents h6 { + line-height: 17px; + margin: 9px 0 -4px; + } + + .tui-editor-contents del { + color: #999; + } + + .tui-editor-contents blockquote { + margin: 14px 0; + border-left: 4px solid #e5e5e5; + padding: 0 16px; + color: #999; + } + + .tui-editor-contents blockquote p, + .tui-editor-contents blockquote ul, + .tui-editor-contents blockquote ol { + color: #999; + } + + .tui-editor-contents blockquote > :first-child { + margin-top: 0; + } + + .tui-editor-contents blockquote > :last-child { + margin-bottom: 0; + } + + .tui-editor-contents pre, + .tui-editor-contents code { + font-family: $editorFontMono; + border: 0; + border-radius: 0; + } + + .tui-editor-contents pre { + margin: 2px 0 8px; + padding: 18px; + background-color: #f5f7f8; + } + + .tui-editor-contents code { + color: #c1798b; + background-color: #f9f2f4; + padding: 2px 3px; + letter-spacing: -0.3px; + border-radius: 2px; + } + + .tui-editor-contents pre code { + padding: 0; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + } + + .tui-editor-contents pre.addon { + border: 1px solid #e8ebed; + background-color: #fff; + } + + .tui-editor-contents img { + margin: 4px 0 10px; + box-sizing: border-box; + vertical-align: top; + max-width: 100%; + } + + .tui-editor-contents table { + border: 1px solid rgba(0, 0, 0, 0.1); + margin: 12px 0 14px; + color: #222; + width: auto; + border-collapse: collapse; + box-sizing: border-box; + } + + .tui-editor-contents table th, + .tui-editor-contents table td { + border: 1px solid rgba(0, 0, 0, 0.1); + padding: 5px 14px 5px 12px; + height: 32px; + } + + .tui-editor-contents table th { + background-color: #555; + font-weight: 300; + color: #fff; + padding-top: 6px; + } + + .tui-editor-contents ul, + .tui-editor-contents menu, + .tui-editor-contents ol, + .tui-editor-contents dir { + display: block; + list-style-type: none; + padding-left: 24px; + margin: 6px 0 10px; + color: #222; + } + + .tui-editor-contents ol { + list-style-type: none; + counter-reset: li; + } + + .tui-editor-contents ol > li { + counter-increment: li; + } + + .tui-editor-contents ul > li::before, + .tui-editor-contents ol > li::before { + display: inline-block; + position: absolute; + } + + .tui-editor-contents ul > li::before { + content: ''; + margin-top: 6px; + margin-left: -17px; + width: 5px; + height: 5px; + border-radius: 50%; + background-color: #ccc; + } + + .tui-editor-contents ol > li::before { + content: '.' counter(li); + margin-left: -28px; + width: 24px; + text-align: right; + direction: rtl; + color: #aaa; + } + + .tui-editor-contents ul ul, + .tui-editor-contents ul ol, + .tui-editor-contents ol ol, + .tui-editor-contents ol ul { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + + .tui-editor-contents ul li, + .tui-editor-contents ol li { + position: relative; + } + + .tui-editor-contents ul p, + .tui-editor-contents ol p { + margin: 0; + } + + .tui-editor-contents ul li.task-list-item::before, + .tui-editor-contents ol li.task-list-item::before, + .tui-editor-contents pre ul li::before { + content: ''; + } + + .tui-editor-contents th ol, + .tui-editor-contents th ul { + color: #fff; + } + + .tui-editor-contents hr { + border-top: 1px solid #eee; + margin: 16px 0; + } + + .tui-editor-contents a { + text-decoration: underline; + color: #4b96e6; + } + + .tui-editor-contents a:hover { + color: #1f70de; + } + + .tui-editor-contents a.image-link { + position: relative; + } + + .tui-editor-contents a.image-link::before { + content: ''; + position: absolute; + margin: 0; + width: 20px; + height: 20px; + top: 2px; + right: 2px; + background-repeat: no-repeat; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFKADAAQAAAABAAAAFAAAAACy3fD9AAAA/0lEQVQ4Ee2UIY6FQAyG/91wAQQJDg8SSwI3QIFAcQHuwFHQoOAEEFAELB6H4wIku+9vQgIP9zLyVbTTTufLtJ3MzzRNf1AoGlmu6ypBzvOMXyWkC+QLvDTjw6VM+Xr2OA6UZYmu67Dvu2zleX6zuq7D933EcQxNuyPu3usYYXVdw/M8mKYpIMMwxEZRJHbbNsmhkySJxE71APJmhGVZhnVdURQFlmU585GmKSzLEp+570Dlz+ZxQ/aGJVNYsm3bCIJA/LZtMY4jmqbBMAwIw1DiV/UAstEUltP3vawdxxFbVZVYDoWwM1eCp+LnoErIUt7DL/Ac1edWng1/WlXyD380myY5A34sAAAAAElFTkSuQmCC'); + cursor: pointer; + } + + .tui-editor-contents .task-list-item { + border: 0; + list-style: none; + padding-left: 24px; + margin-left: -24px; + } + + .tui-editor-contents .task-list-item::before { + background-repeat: no-repeat; + background-size: 18px 18px; + background-position: center; + content: ''; + margin-left: 0; + margin-top: 0; + border-radius: 0; + height: 18px; + width: 18px; + position: absolute; + left: 0; + top: 1px; + cursor: pointer; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEqADAAQAAAABAAAAEgAAAACaqbJVAAAAQklEQVQ4EWM8c+bMfwYqABaQGcbGxhQZdfbsWQYmikxA0jxqEFJg4GCOhhGOgEESHg0jpMDAwRx8YQQuj0DlCaUAAEdBCPJ7TaEPAAAAAElFTkSuQmCC'); + } + + .tui-editor-contents .task-list-item.checked::before { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAEqADAAQAAAABAAAAEgAAAACaqbJVAAAA1ElEQVQ4EWP0nvbsPwMVABMVzAAbMWoQIiT5OJgYvLS5EAJQFguGCB4BkCHt/kIM8kKsYFXbrn6DqyY6sJENefjuN8ORuz/ghoAYWA0COR2kEQbQDanc+I7h049/MGkwjVANFQYZkmXHD/YCyABiDAFpxQgjkJO9dbjA4QAKDxAAhQnIO9hcAlYAJDBcBHIySANII8gAYgwBGYZhEEgQZFjVJohhhFwCUg8CjPgyLT8nE8N/YJZGD1iIVlQSI4yQpT9+R40ZZDl0NlavoSsihj/4DAIAR+hZHUj727YAAAAASUVORK5CYII='); + } + + .tui-editor-contents .task-list-item input[type='checkbox'], + .tui-editor-contents .task-list-item .task-list-item-checkbox { + margin-left: -17px; + margin-right: 3.8px; + margin-top: 3px; + } + + .tui-editor-contents-placeholder::before { + content: attr(data-placeholder); + color: grey; + line-height: 160%; + position: absolute; + } + + .te-preview .tui-editor-contents h1 { + min-height: 28px; + } + + .te-preview .tui-editor-contents h2 { + min-height: 23px; + } + + .te-preview .tui-editor-contents blockquote { + min-height: 20px; + } + + .te-preview .tui-editor-contents li { + min-height: 22px; + } + + @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { + /* IE10+11 */ + .te-ww-container .tui-editor-contents li { + vertical-align: middle; + } + + .te-ww-container .tui-editor-contents ul > li::before, + .te-ww-container .tui-editor-contents ol > li::before, + .te-ww-container .tui-editor-contents .task-list-item:before { + position: static; + vertical-align: middle; + } + + .te-ww-container .tui-editor-contents ul > li::before { + margin-top: -3px; + margin-right: 12px; + } + + .te-ww-container .tui-editor-contents ol > li::before { + margin-right: 6px; + } + + .te-ww-container .tui-editor-contents .task-list-item { + padding-left: 2px; + } + } + + .tui-editor-contents .te-preview-highlight { + position: relative; + z-index: 0; + } + + .tui-editor-contents .te-preview-highlight::after { + content: ''; + background-color: rgba(255, 245, 131, 0.5); + border-radius: 4px; + z-index: -1; + position: absolute; + top: -4px; + right: -4px; + left: -4px; + bottom: -4px; + } + + .tui-editor-contents h1.te-preview-highlight::after, + .tui-editor-contents h2.te-preview-highlight::after { + bottom: 0; + } + + .tui-editor-contents td.te-preview-highlight::after, + .tui-editor-contents th.te-preview-highlight::after { + display: none; + } + + .tui-editor-contents th.te-preview-highlight, + .tui-editor-contents td.te-preview-highlight { + background-color: rgba(255, 245, 131, 0.5); + } + + .tui-editor-contents th.te-preview-highlight { + color: #222; + } + + .te-md-container .CodeMirror { + font-family: $editorFont; + color: #222; + } + + .tui-md-heading1 { + font-size: 24px; + } + + .tui-md-heading2 { + font-size: 22px; + } + + .tui-md-heading3 { + font-size: 20px; + } + + .tui-md-heading4 { + font-size: 18px; + } + + .tui-md-heading5 { + font-size: 16px; + } + + .tui-md-heading6 { + font-size: 14px; + } + + .tui-md-heading.tui-md-delimiter.setext { + line-height: 15px; + } + + .tui-md-strong, + .tui-md-heading, + .tui-md-list-item.tui-md-list-item-bullet, + .tui-md-list-item.tui-md-meta { + font-weight: bold; + } + + .tui-md-emph { + font-style: italic; + } + + .tui-md-strike { + text-decoration: line-through; + } + + .tui-md-strike.tui-md-delimiter { + text-decoration: none; + } + + .tui-md-delimiter, + .tui-md-thematic-break, + .tui-md-link, + .tui-md-table, + .tui-md-block-quote { + color: #ccc; + } + + .tui-md-code-block.tui-md-meta, + .tui-md-code.tui-md-delimiter { + color: #aaa; + } + + .tui-md-meta, + .tui-md-html, + .tui-md-link.tui-md-link-url.tui-md-marked-text { + color: #999; + } + + .tui-md-block-quote.tui-md-marked-text, + .tui-md-list-item.tui-md-meta { + color: #555; + } + + .tui-md-table.tui-md-marked-text { + color: #222; + } + + .tui-md-link.tui-md-link-desc.tui-md-marked-text, + .tui-md-list-item-odd.tui-md-list-item-bullet { + color: #4b96e6; + } + + .tui-md-list-item-even.tui-md-list-item-bullet { + color: #cb4848; + } + + .tui-md-code.tui-md-marked-text { + color: #c1798b; + } + + .tui-md-code { + background-color: rgba(243, 229, 233, 0.5); + padding: 2px 0; + letter-spacing: -0.3px; + } + + .tui-md-code.tui-md-delimiter.start { + padding-left: 2px; + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; + } + + .tui-md-code.tui-md-delimiter.end { + padding-right: 2px; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + } + + .tui-md-code-block.CodeMirror-linebackground { + left: 20px; + right: 20px; + background-color: #f5f7f8; + } + + .tui-md-code-block.CodeMirror-linebackground.start { + top: 2px; + } + + .tui-md-code-block.CodeMirror-linebackground.end { + bottom: 2px; + } + + .tui-md-code, + .tui-md-code-block { + font-family: $editorFontMono; + } + /* BASICS */ + + .CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: $editorFontMono; + height: 300px; + color: black; + direction: ltr; + } + + /* PADDING */ + + .CodeMirror-lines { + padding: 4px 0; /* Vertical padding around content */ + } + .CodeMirror pre.CodeMirror-line, + .CodeMirror pre.CodeMirror-line-like { + padding: 0 4px; /* Horizontal padding of content */ + } + + .CodeMirror-scrollbar-filler, + .CodeMirror-gutter-filler { + background-color: white; /* The little square between H and V scrollbars */ + } + + /* GUTTER */ + + .CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; + } + .CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + white-space: nowrap; + } + + .CodeMirror-guttermarker { + color: black; + } + .CodeMirror-guttermarker-subtle { + color: #999; + } + + /* CURSOR */ + + .CodeMirror-cursor { + border-left: 1px solid black; + border-right: none; + width: 0; + } + /* Shown when moving in bi-directional text */ + .CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; + } + .cm-fat-cursor .CodeMirror-cursor { + width: auto; + border: 0 !important; + background: #7e7; + } + .cm-fat-cursor div.CodeMirror-cursors { + z-index: 1; + } + .cm-fat-cursor .CodeMirror-line::selection, + .cm-fat-cursor .CodeMirror-line > span::selection, + .cm-fat-cursor .CodeMirror-line > span > span::selection { + background: transparent; + } + .cm-fat-cursor .CodeMirror-line::-moz-selection, + .cm-fat-cursor .CodeMirror-line > span::-moz-selection, + .cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { + background: transparent; + } + .cm-fat-cursor { + caret-color: transparent; + } + @-moz-keyframes blink { + 0% { + } + 50% { + background-color: transparent; + } + 100% { + } + } + @-webkit-keyframes blink { + 0% { + } + 50% { + background-color: transparent; + } + 100% { + } + } + @keyframes blink { + 0% { + } + 50% { + background-color: transparent; + } + 100% { + } + } + + .cm-tab { + display: inline-block; + text-decoration: inherit; + } + + .CodeMirror-rulers { + position: absolute; + left: 0; + right: 0; + top: -50px; + bottom: 0; + overflow: hidden; + } + .CodeMirror-ruler { + border-left: 1px solid #ccc; + top: 0; + bottom: 0; + position: absolute; + } + + /* DEFAULT THEME */ + + .cm-s-default .cm-header { + color: blue; + } + .cm-s-default .cm-quote { + color: #090; + } + .cm-negative { + color: #d44; + } + .cm-positive { + color: #292; + } + .cm-header, + .cm-strong { + font-weight: bold; + } + .cm-em { + font-style: italic; + } + .cm-link { + text-decoration: underline; + } + .cm-strikethrough { + text-decoration: line-through; + } + + .cm-s-default .cm-keyword { + color: #708; + } + .cm-s-default .cm-atom { + color: #219; + } + .cm-s-default .cm-number { + color: #164; + } + .cm-s-default .cm-def { + color: #00f; + } + .cm-s-default .cm-variable-2 { + color: #05a; + } + .cm-s-default .cm-variable-3, + .cm-s-default .cm-type { + color: #085; + } + .cm-s-default .cm-comment { + color: #a50; + } + .cm-s-default .cm-string { + color: #a11; + } + .cm-s-default .cm-string-2 { + color: #f50; + } + .cm-s-default .cm-meta { + color: #555; + } + .cm-s-default .cm-qualifier { + color: #555; + } + .cm-s-default .cm-builtin { + color: #30a; + } + .cm-s-default .cm-bracket { + color: #997; + } + .cm-s-default .cm-tag { + color: #170; + } + .cm-s-default .cm-attribute { + color: #00c; + } + .cm-s-default .cm-hr { + color: #999; + } + .cm-s-default .cm-link { + color: #00c; + } + + .cm-s-default .cm-error { + color: #f00; + } + .cm-invalidchar { + color: #f00; + } + + .CodeMirror-composing { + border-bottom: 2px solid; + } + + /* Default styles for common addons */ + + div.CodeMirror span.CodeMirror-matchingbracket { + color: #0b0; + } + div.CodeMirror span.CodeMirror-nonmatchingbracket { + color: #a22; + } + .CodeMirror-matchingtag { + background: rgba(255, 150, 0, 0.3); + } + .CodeMirror-activeline-background { + background: #e8f2ff; + } + + /* STOP */ + + /* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ + + .CodeMirror { + background: white; + min-height: auto !important; // Search "PHINDFIX" for the explanation + overflow: hidden; + position: relative; + } + + /* +PHINDFIX +ANSWER | PHIND V9 MODEL +Yes, Toast UI Editor applies an inline style of min-height: 200px; to the .CodeMirror class. +This is set by default in the library's CSS and it's intended to ensure that the editor has a minimum height of 200 pixels. + +This inline style is applied by the library itself and is not something that you should normally need to change. +However, if you find that it's causing issues with your layout, you can override it in your own CSS. + +Here's how you can do it: + +.CodeMirror { + min-height: auto !important; +} +This will override the min-height property set by Toast UI Editor and set it to auto, which means the height will adjust based on the content of the editor. + +Please note that using !important should generally be avoided if possible, as it increases the specificity of a rule and can make debugging and maintenance more difficult. However, in this case, it may be necessary to override the inline style set by the library 3. +*/ + + .CodeMirror-scroll { + overflow: scroll !important; /* Things will break if this is overridden */ + /* 50px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -50px; + margin-right: -50px; + padding-bottom: 50px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; + z-index: 0; + } + + .CodeMirror-sizer { + position: relative; + border-right: 50px solid transparent; + } + + /* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */ + .CodeMirror-vscrollbar, + .CodeMirror-hscrollbar, + .CodeMirror-scrollbar-filler, + .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; + outline: none; + } + .CodeMirror-vscrollbar { + right: 0; + top: 0; + overflow-x: hidden; + overflow-y: scroll; + } + .CodeMirror-hscrollbar { + bottom: 0; + left: 0; + overflow-y: hidden; + overflow-x: scroll; + } + .CodeMirror-scrollbar-filler { + right: 0; + bottom: 0; + } + .CodeMirror-gutter-filler { + left: 0; + bottom: 0; + } + + .CodeMirror-gutters { + position: absolute; + left: 0; + top: 0; + min-height: 100%; + z-index: 3; + } + .CodeMirror-gutter { + white-space: normal; + height: 100%; + display: inline-block; + vertical-align: top; + margin-bottom: -50px; + } + .CodeMirror-gutter-wrapper { + position: absolute; + z-index: 4; + background: none !important; + border: none !important; + } + .CodeMirror-gutter-background { + position: absolute; + top: 0; + bottom: 0; + z-index: 4; + } + .CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; + } + .CodeMirror-gutter-wrapper ::selection { + background-color: transparent; + } + .CodeMirror-gutter-wrapper ::-moz-selection { + background-color: transparent; + } + + .CodeMirror-lines { + cursor: text; + min-height: 1px; /* prevents collapsing before first draw */ + } + .CodeMirror pre.CodeMirror-line, + .CodeMirror pre.CodeMirror-line-like { + /* Reset some styles that the rest of the page might have set */ + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; + -webkit-tap-highlight-color: transparent; + -webkit-font-variant-ligatures: contextual; + font-variant-ligatures: contextual; + } + .CodeMirror-wrap pre.CodeMirror-line, + .CodeMirror-wrap pre.CodeMirror-line-like { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; + } + + .CodeMirror-linebackground { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + z-index: 0; + } + + .CodeMirror-linewidget { + position: relative; + z-index: 2; + padding: 0.1px; /* Force widget margins to stay inside of the container */ + } + + .CodeMirror-rtl pre { + direction: rtl; + } + + .CodeMirror-code { + outline: none; + } + + /* Force content-box sizing for the elements where we expect it */ + .CodeMirror-scroll, + .CodeMirror-sizer, + .CodeMirror-gutter, + .CodeMirror-gutters, + .CodeMirror-linenumber { + -moz-box-sizing: content-box; + box-sizing: content-box; + } + + .CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; + } + + .CodeMirror-cursor { + position: absolute; + pointer-events: none; + } + .CodeMirror-measure pre { + position: static; + } + + div.CodeMirror-cursors { + visibility: hidden; + position: relative; + z-index: 3; + } + div.CodeMirror-dragcursors { + visibility: visible; + } + + .CodeMirror-focused div.CodeMirror-cursors { + visibility: visible; + } + + .CodeMirror-selected { + background: #d9d9d9; + } + .CodeMirror-focused .CodeMirror-selected { + background: #d7d4f0; + } + .CodeMirror-crosshair { + cursor: crosshair; + } + .CodeMirror-line::selection, + .CodeMirror-line > span::selection, + .CodeMirror-line > span > span::selection { + background: #d7d4f0; + } + .CodeMirror-line::-moz-selection, + .CodeMirror-line > span::-moz-selection, + .CodeMirror-line > span > span::-moz-selection { + background: #d7d4f0; + } + + .cm-searching { + background-color: #ffa; + background-color: rgba(255, 255, 0, 0.4); + } + + /* Used to force a border model for a node */ + .cm-force-border { + padding-right: 0.1px; + } + + @media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursors { + visibility: hidden; + } + } + + /* See issue #2901 */ + .cm-tab-wrap-hack:after { + content: ''; + } + + /* Help users use markselection to safely style text background */ + span.CodeMirror-selectedtext { + background: none; + } +} + +.tui-tooltip { + position: absolute; + background-color: #222; + z-index: 999; + opacity: 0.8; + color: #fff; + padding: 2px 5px; + font-size: 10px; +} + +.tui-tooltip .arrow { + content: ''; + display: inline-block; + width: 10px; + height: 10px; + background-color: #222; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + top: -3px; + left: 6px; + z-index: -1; +} + /*-------------------------------------------------*/ /* D e b u g */ /*-------------------------------------------------*/ @@ -146,3 +2506,15 @@ transform: translate(-10px, -10px); } } + +@keyframes pulsealert { + 0% { + opacity: 0.5; + } + 50% { + opacity: 1; + } + 100% { + opacity: 0.5; + } +} diff --git a/packages/ketchup/src/managers/kup-theme/themes.json b/packages/ketchup/src/managers/kup-theme/themes.json index b0e91e52c7..399145e7e8 100644 --- a/packages/ketchup/src/managers/kup-theme/themes.json +++ b/packages/ketchup/src/managers/kup-theme/themes.json @@ -1,927 +1,927 @@ { - "octane": { - "cssVariables": { - "--kup-primary-color": "#068a9c", - "--kup-secondary-color": "#f4a22e", - "--kup-background-color": "#ffffff", - "--kup-navbar-background-color": "#068a9c", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#ffffff", - "--kup-drawer-color": "#535353", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "IBM Plex Sans, sans-serif", - "--kup-font-family-monospace": "IBM Plex Sans, sans-serif", - "--kup-font-size": "14px", - "--kup-text-color": "#474747", - "--kup-text-on-primary-color": "#e8e8e8", - "--kup-text-on-secondary-color": "#312c2c", - "--kup-disabled-background-color": "#d1d1d1", - "--kup-disabled-color": "#636363", - "--kup-hover-background-color": "#e8e8e8", - "--kup-hover-color": "#303030", - "--kup-title-background-color": "#068a9c", - "--kup-title-color": "#fff", - "--kup-icon-color": "#e8e8e8", - "--kup-border-color": "#d8d8d8", - "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", - "--kup-info-color": "#2592df", - "--kup-success-color": "#a4ba4c", - "--kup-warning-color": "#de8906", - "--kup-danger-color": "#a6192e", - "--kup-spinner-color": "#fddc69", - "--kup-chart-color-1": "#60c3fc", - "--kup-chart-color-2": "#e268d8", - "--kup-chart-color-3": "#860bb5", - "--kup-chart-color-4": "#1a83e4", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "imports": [], - "customStyles": {} + "octane": { + "cssVariables": { + "--kup-primary-color": "#068a9c", + "--kup-secondary-color": "#f4a22e", + "--kup-background-color": "#ffffff", + "--kup-navbar-background-color": "#068a9c", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#ffffff", + "--kup-drawer-color": "#535353", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "IBM Plex Sans, sans-serif", + "--kup-font-family-monospace": "IBM Plex Sans, sans-serif", + "--kup-font-size": "14px", + "--kup-text-color": "#474747", + "--kup-text-on-primary-color": "#e8e8e8", + "--kup-text-on-secondary-color": "#312c2c", + "--kup-disabled-background-color": "#d1d1d1", + "--kup-disabled-color": "#636363", + "--kup-hover-background-color": "#e8e8e8", + "--kup-hover-color": "#303030", + "--kup-title-background-color": "#068a9c", + "--kup-title-color": "#fff", + "--kup-icon-color": "#e8e8e8", + "--kup-border-color": "#d8d8d8", + "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", + "--kup-info-color": "#2592df", + "--kup-success-color": "#a4ba4c", + "--kup-warning-color": "#de8906", + "--kup-danger-color": "#a6192e", + "--kup-spinner-color": "#fddc69", + "--kup-chart-color-1": "#60c3fc", + "--kup-chart-color-2": "#e268d8", + "--kup-chart-color-3": "#860bb5", + "--kup-chart-color-4": "#1a83e4", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" }, - "bubbles": { - "cssVariables": { - "--kup-primary-color": "#c18f00", - "--kup-secondary-color": "#1d1d1d", - "--kup-background-color": "#ffffff", - "--kup-navbar-background-color": "#beb08d", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#ffffff", - "--kup-drawer-color": "#000000", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Lato, sans-serif", - "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", - "--kup-font-size": "14px", - "--kup-text-color": "#2e2e2e", - "--kup-text-on-primary-color": "#ffffff", - "--kup-text-on-secondary-color": "#ffffff", - "--kup-disabled-background-color": "#eaeaea", - "--kup-disabled-color": "#5c5c5c", - "--kup-hover-background-color": "#f0f0f0", - "--kup-hover-color": "#545454", - "--kup-title-background-color": "#f1f3f4", - "--kup-title-color": "#2e2e2e", - "--kup-icon-color": "#505050", - "--kup-border-color": "#e0e0e0", - "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#d91e18", - "--kup-spinner-color": "#1D1D1B", - "--kup-chart-color-1": "#ff5959", - "--kup-chart-color-2": "#e0a0a0", - "--kup-chart-color-3": "#8e1010", - "--kup-chart-color-4": "#f5f5dc", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "sort-ascending", - "--kup-descending-icon": "sort-descending", - "--kup-expanded-icon": "chevron-down", - "--kup-collapsed-icon": "chevron_right", - "--kup-dropdown-icon": "chevron-down", - "--kup-clear-icon": "clear", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "customStyles": {}, - "imports": [ - "@import url('https://fonts.googleapis.com/css2?family=Lato:wght@300;400&display=swap')" - ] + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" }, - "cobalt": { - "cssVariables": { - "--kup-primary-color": "#248aff", - "--kup-secondary-color": "#65cbe9", - "--kup-background-color": "#222222", - "--kup-navbar-background-color": "#131313", - "--kup-navbar-color": "#65cbe9", - "--kup-drawer-background-color": "#2e2e2e", - "--kup-drawer-color": "#65cbe9", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Blinker, sans-serif;", - "--kup-font-family-monospace": "Andalé Mono, monospace", - "--kup-font-size": "14px", - "--kup-text-color": "#65cbe9", - "--kup-text-on-primary-color": "#f1f7ff", - "--kup-text-on-secondary-color": "#000000", - "--kup-disabled-background-color": "#3c3c3c", - "--kup-disabled-color": "#7e7e7e", - "--kup-hover-background-color": "#383838", - "--kup-hover-color": "#96e7ff", - "--kup-title-background-color": "#2e2e2e", - "--kup-title-color": "#f5f5f5", - "--kup-icon-color": "#65cbe9", - "--kup-border-color": "#535353", - "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#d91e18", - "--kup-spinner-color": "#a4d9f7", - "--kup-chart-color-1": "#308aff", - "--kup-chart-color-2": "#5eb6d1", - "--kup-chart-color-3": "#b1eafb", - "--kup-chart-color-4": "#ffffff", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "imports": [ - "url('https://fonts.googleapis.com/css2?family=Blinker:wght@200;300;600&display=swap')" - ] + "imports": [], + "customStyles": {} + }, + "bubbles": { + "cssVariables": { + "--kup-primary-color": "#c18f00", + "--kup-secondary-color": "#1d1d1d", + "--kup-background-color": "#ffffff", + "--kup-navbar-background-color": "#beb08d", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#ffffff", + "--kup-drawer-color": "#000000", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Lato, sans-serif", + "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", + "--kup-font-size": "14px", + "--kup-text-color": "#2e2e2e", + "--kup-text-on-primary-color": "#ffffff", + "--kup-text-on-secondary-color": "#ffffff", + "--kup-disabled-background-color": "#eaeaea", + "--kup-disabled-color": "#5c5c5c", + "--kup-hover-background-color": "#f0f0f0", + "--kup-hover-color": "#545454", + "--kup-title-background-color": "#f1f3f4", + "--kup-title-color": "#2e2e2e", + "--kup-icon-color": "#505050", + "--kup-border-color": "#e0e0e0", + "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#d91e18", + "--kup-spinner-color": "#1D1D1B", + "--kup-chart-color-1": "#ff5959", + "--kup-chart-color-2": "#e0a0a0", + "--kup-chart-color-3": "#8e1010", + "--kup-chart-color-4": "#f5f5dc", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" }, - "dark": { - "cssVariables": { - "--kup-primary-color": "#82f0e2", - "--kup-secondary-color": "#f9ff00", - "--kup-background-color": "#2d2d2d", - "--kup-navbar-background-color": "#2d2d2d", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#1f1f1f", - "--kup-drawer-color": "#f5f5f5", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Lato, sans-serif", - "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", - "--kup-font-size": "14px", - "--kup-text-color": "#f5f5f5", - "--kup-text-on-primary-color": "#555555", - "--kup-text-on-secondary-color": "#000000", - "--kup-disabled-background-color": "#3c3c3c", - "--kup-disabled-color": "#7e7e7e", - "--kup-hover-background-color": "#3c3c3c", - "--kup-hover-color": "#dddddd", - "--kup-title-background-color": "#111111", - "--kup-title-color": "#f5f5f5", - "--kup-icon-color": "#e0e0e0", - "--kup-border-color": "#535353", - "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#d91e18", - "--kup-spinner-color": "#f2e114", - "--kup-chart-color-1": "#60c3fc", - "--kup-chart-color-2": "#e268d8", - "--kup-chart-color-3": "#860bb5", - "--kup-chart-color-4": "#1a83e4", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "imports": [ - "@import url('https://fonts.googleapis.com/css2?family=Lato:wght@300;400&display=swap')" - ] + "icons": { + "--kup-ascending-icon": "sort-ascending", + "--kup-descending-icon": "sort-descending", + "--kup-expanded-icon": "chevron-down", + "--kup-collapsed-icon": "chevron_right", + "--kup-dropdown-icon": "chevron-down", + "--kup-clear-icon": "clear", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" }, - "flamingo": { - "cssVariables": { - "--kup-primary-color": "#e88aab", - "--kup-secondary-color": "#7f00e7", - "--kup-background-color": "#222222", - "--kup-navbar-background-color": "#2d2d2d", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#1f1f1f", - "--kup-drawer-color": "#f5f5f5", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Mali, cursive;", - "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", - "--kup-font-size": "14px", - "--kup-text-color": "#f5f5f5", - "--kup-text-on-primary-color": "#000000", - "--kup-text-on-secondary-color": "#ffffff", - "--kup-disabled-background-color": "#3c3c3c", - "--kup-disabled-color": "#7e7e7e", - "--kup-hover-background-color": "#3c3c3c", - "--kup-hover-color": "#dddddd", - "--kup-title-background-color": "#111111", - "--kup-title-color": "#f5f5f5", - "--kup-icon-color": "#e0e0e0", - "--kup-border-color": "#535353", - "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#d91e18", - "--kup-spinner-color": "#ffd0d8", - "--kup-chart-color-1": "#e88aab", - "--kup-chart-color-2": "#dc5584", - "--kup-chart-color-3": "#c21350", - "--kup-chart-color-4": "#c88da1", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "imports": [ - "url('https://fonts.googleapis.com/css2?family=Mali:wght@300&display=swap')" - ] + "customStyles": {}, + "imports": [ + "@import url('https://fonts.googleapis.com/css2?family=Lato:wght@300;400&display=swap')" + ] + }, + "cobalt": { + "cssVariables": { + "--kup-primary-color": "#248aff", + "--kup-secondary-color": "#65cbe9", + "--kup-background-color": "#222222", + "--kup-navbar-background-color": "#131313", + "--kup-navbar-color": "#65cbe9", + "--kup-drawer-background-color": "#2e2e2e", + "--kup-drawer-color": "#65cbe9", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Blinker, sans-serif;", + "--kup-font-family-monospace": "Andalé Mono, monospace", + "--kup-font-size": "14px", + "--kup-text-color": "#65cbe9", + "--kup-text-on-primary-color": "#f1f7ff", + "--kup-text-on-secondary-color": "#000000", + "--kup-disabled-background-color": "#3c3c3c", + "--kup-disabled-color": "#7e7e7e", + "--kup-hover-background-color": "#383838", + "--kup-hover-color": "#96e7ff", + "--kup-title-background-color": "#2e2e2e", + "--kup-title-color": "#f5f5f5", + "--kup-icon-color": "#65cbe9", + "--kup-border-color": "#535353", + "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#d91e18", + "--kup-spinner-color": "#a4d9f7", + "--kup-chart-color-1": "#308aff", + "--kup-chart-color-2": "#5eb6d1", + "--kup-chart-color-3": "#b1eafb", + "--kup-chart-color-4": "#ffffff", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" }, - "graphite": { - "cssVariables": { - "--kup-primary-color": "#888888", - "--kup-secondary-color": "#d91e18", - "--kup-background-color": "#ffffff", - "--kup-navbar-background-color": "#535353", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#ffffff", - "--kup-drawer-color": "#545454", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Roboto, sans-serif", - "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", - "--kup-font-size": "13px", - "--kup-text-color": "#545454", - "--kup-text-on-primary-color": "#ffffff", - "--kup-text-on-secondary-color": "#ffffff", - "--kup-disabled-color": "#5c5c5c", - "--kup-disabled-background-color": "#eaeaea", - "--kup-hover-background-color": "#f0f0f0", - "--kup-hover-color": "#545454", - "--kup-title-background-color": "#f0f0f0", - "--kup-title-color": "#545454", - "--kup-icon-color": "#808080", - "--kup-border-color": "#e0e0e0", - "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#d91e18", - "--kup-spinner-color": "#eaa710", - "--kup-chart-color-1": "red", - "--kup-chart-color-2": "blue", - "--kup-chart-color-3": "orange", - "--kup-chart-color-4": "green", - "--kup-chart-color-5": "yellow", - "--kup-chart-color-6": "cyan", - "--kup-chart-color-7": "brown", - "--kup-chart-color-8": "magenta", - "--kup-chart-color-9": "grey", - "--kup-chart-color-10": "indigo", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "customStyles": { - "KUP-BUTTON": "#kup-component button {\ntext-transform: unset;\n}\n\n" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - } + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" }, - "ketchup": { - "cssVariables": { - "--kup-primary-color": "#d64325", - "--kup-secondary-color": "#a6192e", - "--kup-background-color": "#ffffff", - "--kup-navbar-background-color": "#2e2e2e", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#ffffff", - "--kup-drawer-color": "#595959", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Ubuntu, sans-serif", - "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", - "--kup-font-size": "14px", - "--kup-text-color": "#595959", - "--kup-text-on-primary-color": "#ffffff", - "--kup-text-on-secondary-color": "#ffffff", - "--kup-disabled-background-color": "#eaeaea", - "--kup-disabled-color": "#5c5c5c", - "--kup-hover-background-color": "#f0f0f0", - "--kup-hover-color": "#545454", - "--kup-title-background-color": "#f1f3f4", - "--kup-title-color": "#2e2e2e", - "--kup-icon-color": "#505050", - "--kup-border-color": "#e0e0e0", - "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#d91e18", - "--kup-spinner-color": "#eaa710", - "--kup-chart-color-1": "#ff5959", - "--kup-chart-color-2": "#e0a0a0", - "--kup-chart-color-3": "#8e1010", - "--kup-chart-color-4": "#f5f5dc", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "sort-ascending", - "--kup-descending-icon": "sort-descending", - "--kup-expanded-icon": "chevron-down", - "--kup-collapsed-icon": "chevron_right", - "--kup-dropdown-icon": "chevron-down", - "--kup-clear-icon": "clear", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key", - "--kup-search-icon": "search" - }, - "imports": [ - "url('https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;500&display=swap')" - ] + "imports": [ + "url('https://fonts.googleapis.com/css2?family=Blinker:wght@200;300;600&display=swap')" + ] + }, + "dark": { + "cssVariables": { + "--kup-primary-color": "#82f0e2", + "--kup-secondary-color": "#f9ff00", + "--kup-background-color": "#2d2d2d", + "--kup-navbar-background-color": "#2d2d2d", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#1f1f1f", + "--kup-drawer-color": "#f5f5f5", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Lato, sans-serif", + "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", + "--kup-font-size": "14px", + "--kup-text-color": "#f5f5f5", + "--kup-text-on-primary-color": "#555555", + "--kup-text-on-secondary-color": "#000000", + "--kup-disabled-background-color": "#3c3c3c", + "--kup-disabled-color": "#7e7e7e", + "--kup-hover-background-color": "#3c3c3c", + "--kup-hover-color": "#dddddd", + "--kup-title-background-color": "#111111", + "--kup-title-color": "#f5f5f5", + "--kup-icon-color": "#e0e0e0", + "--kup-border-color": "#535353", + "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#d91e18", + "--kup-spinner-color": "#f2e114", + "--kup-chart-color-1": "#60c3fc", + "--kup-chart-color-2": "#e268d8", + "--kup-chart-color-3": "#860bb5", + "--kup-chart-color-4": "#1a83e4", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" }, - "obsidian": { - "cssVariables": { - "--kup-primary-color": "#a6192e", - "--kup-secondary-color": "#f5f4f4", - "--kup-background-color": "#ffffff", - "--kup-navbar-background-color": "#000000", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#f5f4f4", - "--kup-drawer-color": "#4c4c4d", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Open Sans, arial, helvatica", - "--kup-font-family-monospace": "Courier New, Courier, monospace", - "--kup-font-size": "13px", - "--kup-text-color": "#4c4c4d", - "--kup-text-on-primary-color": "#ffffff", - "--kup-text-on-secondary-color": "#a6192e", - "--kup-disabled-background-color": "#ffffff", - "--kup-disabled-color": "#4c4c4d", - "--kup-hover-background-color": "#f5f4f4", - "--kup-hover-color": "#000000", - "--kup-title-background-color": "#068a9c", - "--kup-title-color": "#ffffff", - "--kup-icon-color": "#9d9d9d", - "--kup-border-color": "#ededed", - "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#A6192E", - "--kup-spinner-color": "#a6192e", - "--kup-chart-color-1": "#735DED", - "--kup-chart-color-2": "#00B2CB", - "--kup-chart-color-3": "#EDC900", - "--kup-chart-color-4": "green", - "--kup-chart-color-5": "yellow", - "--kup-chart-color-6": "cyan", - "--kup-chart-color-7": "brown", - "--kup-chart-color-8": "magenta", - "--kup-chart-color-9": "grey", - "--kup-chart-color-10": "indigo", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "imports": [ - "url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400&display=swap')" - ] + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" }, - "ocean": { - "cssVariables": { - "--kup-primary-color": "#0081c5", - "--kup-secondary-color": "#3a8ede", - "--kup-background-color": "#ffffff", - "--kup-navbar-background-color": "#001d3e", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#e6f1ff", - "--kup-drawer-color": "#1b1b1b", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Open Sans Condensed, sans-serif", - "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", - "--kup-font-size": "16px", - "--kup-text-color": "#1b1b1b", - "--kup-text-on-primary-color": "#ffffff", - "--kup-text-on-secondary-color": "#ffffff", - "--kup-disabled-background-color": "#eaeaea", - "--kup-disabled-color": "#5c5c5c", - "--kup-hover-background-color": "#cfe8ff", - "--kup-hover-color": "#545454", - "--kup-title-background-color": "#f1f3f4", - "--kup-title-color": "#1b1b1b", - "--kup-icon-color": "#505050", - "--kup-border-color": "#e0e0e0", - "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#d91e18", - "--kup-spinner-color": "#6edeff", - "--kup-chart-color-1": "#60c3fc", - "--kup-chart-color-2": "#e268d8", - "--kup-chart-color-3": "#e48b47", - "--kup-chart-color-4": "#81e447", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "imports": [ - "url('https://fonts.googleapis.com/css2?family=Open+Sans+Condensed:wght@300;700&display=swap')" - ] + "imports": [ + "@import url('https://fonts.googleapis.com/css2?family=Lato:wght@300;400&display=swap')" + ] + }, + "flamingo": { + "cssVariables": { + "--kup-primary-color": "#e88aab", + "--kup-secondary-color": "#7f00e7", + "--kup-background-color": "#222222", + "--kup-navbar-background-color": "#2d2d2d", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#1f1f1f", + "--kup-drawer-color": "#f5f5f5", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Mali, cursive;", + "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", + "--kup-font-size": "14px", + "--kup-text-color": "#f5f5f5", + "--kup-text-on-primary-color": "#000000", + "--kup-text-on-secondary-color": "#ffffff", + "--kup-disabled-background-color": "#3c3c3c", + "--kup-disabled-color": "#7e7e7e", + "--kup-hover-background-color": "#3c3c3c", + "--kup-hover-color": "#dddddd", + "--kup-title-background-color": "#111111", + "--kup-title-color": "#f5f5f5", + "--kup-icon-color": "#e0e0e0", + "--kup-border-color": "#535353", + "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#d91e18", + "--kup-spinner-color": "#ffd0d8", + "--kup-chart-color-1": "#e88aab", + "--kup-chart-color-2": "#dc5584", + "--kup-chart-color-3": "#c21350", + "--kup-chart-color-4": "#c88da1", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" }, - "print": { - "cssVariables": { - "--kup-primary-color": "#000000", - "--kup-secondary-color": "#cccccc", - "--kup-background-color": "#ffffff", - "--kup-navbar-background-color": "#000000", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#ffffff", - "--kup-drawer-color": "#000000", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Arial, Helvetica, sans-serif", - "--kup-font-family-monospace": "Courier New, Courier, monospace", - "--kup-font-size": "13px", - "--kup-text-color": "#000000", - "--kup-text-on-primary-color": "#ffffff", - "--kup-text-on-secondary-color": "#000000", - "--kup-disabled-background-color": "#ffffff", - "--kup-disabled-color": "#000000", - "--kup-hover-background-color": "#ffffff", - "--kup-hover-color": "#000000", - "--kup-title-background-color": "#f1f1f1", - "--kup-title-color": "#000000", - "--kup-icon-color": "#9d9d9d", - "--kup-border-color": "#ededed", - "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#A6192E", - "--kup-spinner-color": "#eaa710", - "--kup-chart-color-1": "#735DED", - "--kup-chart-color-2": "#00B2CB", - "--kup-chart-color-3": "#EDC900", - "--kup-chart-color-4": "green", - "--kup-chart-color-5": "yellow", - "--kup-chart-color-6": "cyan", - "--kup-chart-color-7": "brown", - "--kup-chart-color-8": "magenta", - "--kup-chart-color-9": "grey", - "--kup-chart-color-10": "indigo", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "customStyles": { - "MASTER": "#kup-component #global-filter {\ndisplay: none;\n}\n\n", - "KUP-BOX": "#kup-component #box-container .box-wrapper .box:hover {\nbox-shadow: none;\n}\n\n#kup-component #box-container .box-wrapper .box.selected {\nbackground-color: inherit;\n}", - "KUP-BUTTON": ":host(:not(.printable)) {\ndisplay: none;\n}\n\n", - "KUP-CARD": "", - "KUP-DATA-TABLE": "#kup-component sticky-header {\ndisplay: none;\n}\n\n#kup-component kup-paginator {\ndisplay: none;\n}\n\n:host(.cross-selection) #kup-component table tr.selected td.selected, \n#kup-component table td.selected, #kup-component tr.selected td {\nbackground-color: inherit;\nbackground-image: none;\n}\n\n#kup-component table,\n#kup-component .below-wrapper {\noverflow: hidden !important;\n}\n\n:host(.cross-selection) #kup-component tr.selected td:first-of-type,\n:host(.cross-selection) #kup-component th.selected { \nbox-shadow: none !important;\n}\n\n:host(.cross-selection) #kup-component table td.selected,\n:host(.cross-selection) #kup-component table tr.selected td {\nbackground-color: inherit;\n}\n\n:host(.cross-selection) #kup-component table tr.selected td.fixed-column.selected,\n:host(.cross-selection) #kup-component table td.selected.fixed-column, \n:host(.cross-selection) #kup-component table td.selected.fixed-row,\n:host(.cross-selection) #kup-component table tr.selected td.fixed-column, \n:host(.cross-selection) #kup-component table tr.selected td.fixed-row {\nbackground-color: inherit;\nbackground-image: none;\n}\n\n", - "KUP-FAMILY-TREE": "#kup-component .family-tree__item__expand {\ndisplay: none;\n}\n\n", - "KUP-PROGRESS-BAR": "#kup-component .progress-bar {\nbackground: #e7e7e7;\n}\n\n#kup-component .progress-bar-percentage span {\ntext-shadow: 0px 0px 0px hsl(0deg 0% 100%);\n}\n\n", - "KUP-TREE": "#kup-component .wrapper {\noverflow: hidden;\n}\n\n#kup-component tr.mdc-ripple-surface::before, \n#kup-component tr.mdc-ripple-surface::after,\n#kup-component td.mdc-ripple-surface::before, \n#kup-component td.mdc-ripple-surface::after,\n#kup-component .kup-tree__node--selected:not(.kup-tree__node--disabled) td {\nbackground-color: var(--kup-background-color);\n}" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - } + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" }, - "raj": { - "cssVariables": { - "--kup-primary-color": "rgb(187, 198, 5)", - "--kup-secondary-color": "#ffe600", - "--kup-background-color": "#000000", - "--kup-navbar-background-color": "#000000", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#000000", - "--kup-drawer-color": "#ffffff", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "'Rajdhani', sans-serif", - "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", - "--kup-font-size": "15px", - "--kup-text-color": "#ffffff", - "--kup-text-on-primary-color": "#000000", - "--kup-text-on-secondary-color": "#000000", - "--kup-disabled-background-color": "#151515", - "--kup-disabled-color": "#7b7b7b", - "--kup-hover-background-color": "#404040", - "--kup-hover-color": "#ffffff", - "--kup-title-background-color": "#ffe600", - "--kup-title-color": "#000000", - "--kup-icon-color": "#9d9d9d", - "--kup-border-color": "#9d9d9d", - "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#d91e18", - "--kup-spinner-color": "#ffe600", - "--kup-chart-color-1": "#ffffff", - "--kup-chart-color-2": "rgb(187, 198, 5)", - "--kup-chart-color-3": "#ffe600", - "--kup-chart-color-4": "#effd02", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "sort-ascending", - "--kup-descending-icon": "sort-descending", - "--kup-expanded-icon": "chevron-down", - "--kup-collapsed-icon": "chevron_right", - "--kup-dropdown-icon": "chevron-down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "imports": [ - "url('https://fonts.googleapis.com/css2?family=Rajdhani:wght@600&display=swap')" - ] + "imports": [ + "url('https://fonts.googleapis.com/css2?family=Mali:wght@300&display=swap')" + ] + }, + "graphite": { + "cssVariables": { + "--kup-primary-color": "#888888", + "--kup-secondary-color": "#d91e18", + "--kup-background-color": "#ffffff", + "--kup-navbar-background-color": "#535353", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#ffffff", + "--kup-drawer-color": "#545454", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Roboto, sans-serif", + "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", + "--kup-font-size": "13px", + "--kup-text-color": "#545454", + "--kup-text-on-primary-color": "#ffffff", + "--kup-text-on-secondary-color": "#ffffff", + "--kup-disabled-color": "#5c5c5c", + "--kup-disabled-background-color": "#eaeaea", + "--kup-hover-background-color": "#f0f0f0", + "--kup-hover-color": "#545454", + "--kup-title-background-color": "#f0f0f0", + "--kup-title-color": "#545454", + "--kup-icon-color": "#808080", + "--kup-border-color": "#e0e0e0", + "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#d91e18", + "--kup-spinner-color": "#eaa710", + "--kup-chart-color-1": "red", + "--kup-chart-color-2": "blue", + "--kup-chart-color-3": "orange", + "--kup-chart-color-4": "green", + "--kup-chart-color-5": "yellow", + "--kup-chart-color-6": "cyan", + "--kup-chart-color-7": "brown", + "--kup-chart-color-8": "magenta", + "--kup-chart-color-9": "grey", + "--kup-chart-color-10": "indigo", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" }, - "red": { - "cssVariables": { - "--kup-primary-color": "#a6192e", - "--kup-secondary-color": "#ffc107", - "--kup-background-color": "#ffffff", - "--kup-navbar-background-color": "#a6192e", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#f5f5f5", - "--kup-drawer-color": "#000000", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Open Sans, arial, helvatica", - "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", - "--kup-font-size": "13px", - "--kup-text-color": "#000000", - "--kup-text-on-primary-color": "#ffffff", - "--kup-text-on-secondary-color": "#ffffff", - "--kup-disabled-background-color": "#eaeaea", - "--kup-disabled-color": "#333333", - "--kup-hover-background-color": "#eeeeee", - "--kup-hover-color": "#000000", - "--kup-title-background-color": "#f1f3f4", - "--kup-title-color": "#2e2e2e", - "--kup-icon-color": "#808080", - "--kup-border-color": "#ededed", - "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#A6192E", - "--kup-spinner-color": "#1D1D1B", - "--kup-chart-color-1": "#735DED", - "--kup-chart-color-2": "#00B2CB", - "--kup-chart-color-3": "#EDC900", - "--kup-chart-color-4": "#a6192e", - "--kup-chart-color-5": "yellow", - "--kup-chart-color-6": "cyan", - "--kup-chart-color-7": "brown", - "--kup-chart-color-8": "magenta", - "--kup-chart-color-9": "grey", - "--kup-chart-color-10": "indigo", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "customStyles": {}, - "imports": [ - "url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400&display=swap')" - ] + "customStyles": { + "KUP-BUTTON": "#kup-component button {\ntext-transform: unset;\n}\n\n" }, - "sapphire": { - "cssVariables": { - "--kup-primary-color": "#003b77", - "--kup-secondary-color": "#ff1414", - "--kup-background-color": "#ffffff", - "--kup-navbar-background-color": "#003b77", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#002244", - "--kup-drawer-color": "#ffffff", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "20em", - "--kup-font-family": "Arial", - "--kup-font-family-monospace": "Arial", - "--kup-font-size": "13px", - "--kup-text-color": "#333333", - "--kup-text-on-primary-color": "#fafafa", - "--kup-text-on-secondary-color": "#ffffff", - "--kup-disabled-background-color": "#ddecf8", - "--kup-disabled-color": "#333333", - "--kup-hover-background-color": "#d8ecf6", - "--kup-hover-color": "#333333", - "--kup-title-background-color": "#003b77", - "--kup-title-color": "#ffffff", - "--kup-icon-color": "#808080", - "--kup-border-color": "#93c4ec", - "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#a94442", - "--kup-spinner-color": "#003b77", - "--kup-chart-color-1": "#0781fd", - "--kup-chart-color-2": "#002244", - "--kup-chart-color-3": "#c6cff8", - "--kup-chart-color-4": "#66bdda", - "--kup-chart-color-5": "yellow", - "--kup-chart-color-6": "cyan", - "--kup-chart-color-7": "brown", - "--kup-chart-color-8": "magenta", - "--kup-chart-color-9": "grey", - "--kup-chart-color-10": "indigo", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "customStyles": { - "KUP-DATA-TABLE": "#kup-component th { --kup_datatable_th_border: none; font-weight: normal; }" - } + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" + } + }, + "ketchup": { + "cssVariables": { + "--kup-primary-color": "#d64325", + "--kup-secondary-color": "#a6192e", + "--kup-background-color": "#ffffff", + "--kup-navbar-background-color": "#2e2e2e", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#ffffff", + "--kup-drawer-color": "#595959", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Ubuntu, sans-serif", + "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", + "--kup-font-size": "14px", + "--kup-text-color": "#595959", + "--kup-text-on-primary-color": "#ffffff", + "--kup-text-on-secondary-color": "#ffffff", + "--kup-disabled-background-color": "#eaeaea", + "--kup-disabled-color": "#5c5c5c", + "--kup-hover-background-color": "#f0f0f0", + "--kup-hover-color": "#545454", + "--kup-title-background-color": "#f1f3f4", + "--kup-title-color": "#2e2e2e", + "--kup-icon-color": "#505050", + "--kup-border-color": "#e0e0e0", + "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#d91e18", + "--kup-spinner-color": "#eaa710", + "--kup-chart-color-1": "#ff5959", + "--kup-chart-color-2": "#e0a0a0", + "--kup-chart-color-3": "#8e1010", + "--kup-chart-color-4": "#f5f5dc", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" + }, + "icons": { + "--kup-ascending-icon": "sort-ascending", + "--kup-descending-icon": "sort-descending", + "--kup-expanded-icon": "chevron-down", + "--kup-collapsed-icon": "chevron_right", + "--kup-dropdown-icon": "chevron-down", + "--kup-clear-icon": "clear", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key", + "--kup-search-icon": "search" + }, + "imports": [ + "url('https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;500&display=swap')" + ] + }, + "obsidian": { + "cssVariables": { + "--kup-primary-color": "#a6192e", + "--kup-secondary-color": "#f5f4f4", + "--kup-background-color": "#ffffff", + "--kup-navbar-background-color": "#000000", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#f5f4f4", + "--kup-drawer-color": "#4c4c4d", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Open Sans, arial, helvatica", + "--kup-font-family-monospace": "Courier New, Courier, monospace", + "--kup-font-size": "13px", + "--kup-text-color": "#4c4c4d", + "--kup-text-on-primary-color": "#ffffff", + "--kup-text-on-secondary-color": "#a6192e", + "--kup-disabled-background-color": "#ffffff", + "--kup-disabled-color": "#4c4c4d", + "--kup-hover-background-color": "#f5f4f4", + "--kup-hover-color": "#000000", + "--kup-title-background-color": "#068a9c", + "--kup-title-color": "#ffffff", + "--kup-icon-color": "#9d9d9d", + "--kup-border-color": "#ededed", + "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#A6192E", + "--kup-spinner-color": "#a6192e", + "--kup-chart-color-1": "#735DED", + "--kup-chart-color-2": "#00B2CB", + "--kup-chart-color-3": "#EDC900", + "--kup-chart-color-4": "green", + "--kup-chart-color-5": "yellow", + "--kup-chart-color-6": "cyan", + "--kup-chart-color-7": "brown", + "--kup-chart-color-8": "magenta", + "--kup-chart-color-9": "grey", + "--kup-chart-color-10": "indigo", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" + }, + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" + }, + "imports": [ + "url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400&display=swap')" + ] + }, + "ocean": { + "cssVariables": { + "--kup-primary-color": "#0081c5", + "--kup-secondary-color": "#3a8ede", + "--kup-background-color": "#ffffff", + "--kup-navbar-background-color": "#001d3e", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#e6f1ff", + "--kup-drawer-color": "#1b1b1b", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Open Sans Condensed, sans-serif", + "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", + "--kup-font-size": "16px", + "--kup-text-color": "#1b1b1b", + "--kup-text-on-primary-color": "#ffffff", + "--kup-text-on-secondary-color": "#ffffff", + "--kup-disabled-background-color": "#eaeaea", + "--kup-disabled-color": "#5c5c5c", + "--kup-hover-background-color": "#cfe8ff", + "--kup-hover-color": "#545454", + "--kup-title-background-color": "#f1f3f4", + "--kup-title-color": "#1b1b1b", + "--kup-icon-color": "#505050", + "--kup-border-color": "#e0e0e0", + "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#d91e18", + "--kup-spinner-color": "#6edeff", + "--kup-chart-color-1": "#60c3fc", + "--kup-chart-color-2": "#e268d8", + "--kup-chart-color-3": "#e48b47", + "--kup-chart-color-4": "#81e447", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" }, - "silver": { - "cssVariables": { - "--kup-primary-color": "#c0c0c0", - "--kup-secondary-color": "#c0c0c0", - "--kup-background-color": "#000000", - "--kup-navbar-background-color": "#ffffff", - "--kup-navbar-color": "#000000", - "--kup-drawer-background-color": "#ffffff", - "--kup-drawer-color": "#000000", - "--kup-navbar-height": "80px", - "--kup-drawer-width": "320px", - "--kup-font-family": "Oswald, sans-serif", - "--kup-font-family-monospace": "Xanh Mono, monospace", - "--kup-font-size": "16px", - "--kup-text-color": "#fefefe", - "--kup-text-on-primary-color": "#4a4a4a", - "--kup-text-on-secondary-color": "#4a4a4a", - "--kup-disabled-background-color": "#3c3c3c", - "--kup-disabled-color": "#7e7e7e", - "--kup-hover-background-color": "#3c3c3c", - "--kup-hover-color": "#dddddd", - "--kup-title-background-color": "#151515", - "--kup-title-color": "#d9d9d9", - "--kup-icon-color": "#c0c0c0", - "--kup-border-color": "#c0c0c0", - "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#d91e18", - "--kup-spinner-color": "#c0c0c0", - "--kup-chart-color-1": "#ffffff", - "--kup-chart-color-2": "#b0b0b0", - "--kup-chart-color-3": "#5c5c5c", - "--kup-chart-color-4": "#000000", - "--kup-chart-color-5": "#b35454", - "--kup-chart-color-6": "#59af57", - "--kup-chart-color-7": "#aeaa5d", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "imports": [ - "url('https://fonts.googleapis.com/css2?family=Oswald:wght@200;300;400;500;600;700&family=Xanh+Mono&display=swap')" - ], - "customStyles": {} + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" }, - "teal": { - "cssVariables": { - "--kup-primary-color": "#068A9C", - "--kup-secondary-color": "#ffc107", - "--kup-background-color": "#ffffff", - "--kup-navbar-background-color": "#068A9C", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#ffffff", - "--kup-drawer-color": "#000000", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Roboto, sans-serif", - "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", - "--kup-font-size": "13px", - "--kup-text-color": "#000000", - "--kup-text-on-primary-color": "#ffffff", - "--kup-text-on-secondary-color": "#ffffff", - "--kup-disabled-background-color": "#eaeaea", - "--kup-disabled-color": "#333333", - "--kup-hover-background-color": "#f0f0f0", - "--kup-hover-color": "#000000", - "--kup-title-background-color": "#f1f3f4", - "--kup-title-color": "#2e2e2e", - "--kup-icon-color": "#808080", - "--kup-border-color": "#ededed", - "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#A6192E", - "--kup-spinner-color": "#eaa710", - "--kup-chart-color-1": "#068A9C", - "--kup-chart-color-2": "#009643", - "--kup-chart-color-3": "#EDC900", - "--kup-chart-color-4": "#188F00", - "--kup-chart-color-5": "#758700", - "--kup-chart-color-6": "#7D2F00", - "--kup-chart-color-7": "#710008", - "--kup-chart-color-8": "#640056", - "--kup-chart-color-9": "#1C0056", - "--kup-chart-color-10": "#000046", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - } + "imports": [ + "url('https://fonts.googleapis.com/css2?family=Open+Sans+Condensed:wght@300;700&display=swap')" + ] + }, + "print": { + "cssVariables": { + "--kup-primary-color": "#000000", + "--kup-secondary-color": "#cccccc", + "--kup-background-color": "#ffffff", + "--kup-navbar-background-color": "#000000", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#ffffff", + "--kup-drawer-color": "#000000", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Arial, Helvetica, sans-serif", + "--kup-font-family-monospace": "Courier New, Courier, monospace", + "--kup-font-size": "13px", + "--kup-text-color": "#000000", + "--kup-text-on-primary-color": "#ffffff", + "--kup-text-on-secondary-color": "#000000", + "--kup-disabled-background-color": "#ffffff", + "--kup-disabled-color": "#000000", + "--kup-hover-background-color": "#ffffff", + "--kup-hover-color": "#000000", + "--kup-title-background-color": "#f1f1f1", + "--kup-title-color": "#000000", + "--kup-icon-color": "#9d9d9d", + "--kup-border-color": "#ededed", + "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#A6192E", + "--kup-spinner-color": "#eaa710", + "--kup-chart-color-1": "#735DED", + "--kup-chart-color-2": "#00B2CB", + "--kup-chart-color-3": "#EDC900", + "--kup-chart-color-4": "green", + "--kup-chart-color-5": "yellow", + "--kup-chart-color-6": "cyan", + "--kup-chart-color-7": "brown", + "--kup-chart-color-8": "magenta", + "--kup-chart-color-9": "grey", + "--kup-chart-color-10": "indigo", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" }, - "wildlife": { - "cssVariables": { - "--kup-primary-color": "#0fa918", - "--kup-secondary-color": "#739f5a", - "--kup-background-color": "#ffffff", - "--kup-navbar-background-color": "#095a1f", - "--kup-navbar-color": "#ffffff", - "--kup-drawer-background-color": "#dbfbd5", - "--kup-drawer-color": "#000000", - "--kup-navbar-height": "64px", - "--kup-drawer-width": "300px", - "--kup-font-family": "Abel, sans-serif", - "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", - "--kup-font-size": "16px", - "--kup-text-color": "#000000", - "--kup-text-on-primary-color": "#ffffff", - "--kup-text-on-secondary-color": "#ffffff", - "--kup-disabled-background-color": "#eaeaea", - "--kup-disabled-color": "#5c5c5c", - "--kup-hover-background-color": "#63ab46", - "--kup-hover-color": "#ffffff", - "--kup-title-background-color": "#f1f3f4", - "--kup-title-color": "#000000", - "--kup-icon-color": "#333333", - "--kup-border-color": "#e0e0e0", - "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", - "--kup-info-color": "#2592df", - "--kup-success-color": "#4d9f02", - "--kup-warning-color": "#ffc107", - "--kup-danger-color": "#d91e18", - "--kup-spinner-color": "#44b383", - "--kup-chart-color-1": "#60c3fc", - "--kup-chart-color-2": "#e268d8", - "--kup-chart-color-3": "#e48b47", - "--kup-chart-color-4": "#81e447", - "--kup-obj-cursor": "inherit", - "--kup-card-zindex": "900", - "--kup-drawer-zindex": "900", - "--kup-navbar-zindex": "900" - }, - "icons": { - "--kup-ascending-icon": "arrow_drop_up", - "--kup-descending-icon": "arrow_drop_down", - "--kup-expanded-icon": "arrow_drop_down", - "--kup-collapsed-icon": "menu-right", - "--kup-dropdown-icon": "arrow_drop_down", - "--kup-clear-icon": "cancel", - "--kup-filter-remove-icon": "filter-remove", - "--kup-key-icon": "key-variant", - "--kup-search-icon": "search" - }, - "imports": [ - "url('https://fonts.googleapis.com/css2?family=Abel&display=swap')" - ] + "customStyles": { + "MASTER": "#kup-component #global-filter {\ndisplay: none;\n}\n\n", + "KUP-BOX": "#kup-component #box-container .box-wrapper .box:hover {\nbox-shadow: none;\n}\n\n#kup-component #box-container .box-wrapper .box.selected {\nbackground-color: inherit;\n}", + "KUP-BUTTON": ":host(:not(.printable)) {\ndisplay: none;\n}\n\n", + "KUP-CARD": "", + "KUP-DATA-TABLE": "#kup-component sticky-header {\ndisplay: none;\n}\n\n#kup-component kup-paginator {\ndisplay: none;\n}\n\n:host(.cross-selection) #kup-component table tr.selected td.selected, \n#kup-component table td.selected, #kup-component tr.selected td {\nbackground-color: inherit;\nbackground-image: none;\n}\n\n#kup-component table,\n#kup-component .below-wrapper {\noverflow: hidden !important;\n}\n\n:host(.cross-selection) #kup-component tr.selected td:first-of-type,\n:host(.cross-selection) #kup-component th.selected { \nbox-shadow: none !important;\n}\n\n:host(.cross-selection) #kup-component table td.selected,\n:host(.cross-selection) #kup-component table tr.selected td {\nbackground-color: inherit;\n}\n\n:host(.cross-selection) #kup-component table tr.selected td.fixed-column.selected,\n:host(.cross-selection) #kup-component table td.selected.fixed-column, \n:host(.cross-selection) #kup-component table td.selected.fixed-row,\n:host(.cross-selection) #kup-component table tr.selected td.fixed-column, \n:host(.cross-selection) #kup-component table tr.selected td.fixed-row {\nbackground-color: inherit;\nbackground-image: none;\n}\n\n", + "KUP-FAMILY-TREE": "#kup-component .family-tree__item__expand {\ndisplay: none;\n}\n\n", + "KUP-PROGRESS-BAR": "#kup-component .progress-bar {\nbackground: #e7e7e7;\n}\n\n#kup-component .progress-bar-percentage span {\ntext-shadow: 0px 0px 0px hsl(0deg 0% 100%);\n}\n\n", + "KUP-TREE": "#kup-component .wrapper {\noverflow: hidden;\n}\n\n#kup-component tr.mdc-ripple-surface::before, \n#kup-component tr.mdc-ripple-surface::after,\n#kup-component td.mdc-ripple-surface::before, \n#kup-component td.mdc-ripple-surface::after,\n#kup-component .kup-tree__node--selected:not(.kup-tree__node--disabled) td {\nbackground-color: var(--kup-background-color);\n}" + }, + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" } -} + }, + "raj": { + "cssVariables": { + "--kup-primary-color": "rgb(187, 198, 5)", + "--kup-secondary-color": "#ffe600", + "--kup-background-color": "#000000", + "--kup-navbar-background-color": "#000000", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#000000", + "--kup-drawer-color": "#ffffff", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "'Rajdhani', sans-serif", + "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", + "--kup-font-size": "15px", + "--kup-text-color": "#ffffff", + "--kup-text-on-primary-color": "#000000", + "--kup-text-on-secondary-color": "#000000", + "--kup-disabled-background-color": "#151515", + "--kup-disabled-color": "#7b7b7b", + "--kup-hover-background-color": "#404040", + "--kup-hover-color": "#ffffff", + "--kup-title-background-color": "#ffe600", + "--kup-title-color": "#000000", + "--kup-icon-color": "#9d9d9d", + "--kup-border-color": "#9d9d9d", + "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#d91e18", + "--kup-spinner-color": "#ffe600", + "--kup-chart-color-1": "#ffffff", + "--kup-chart-color-2": "rgb(187, 198, 5)", + "--kup-chart-color-3": "#ffe600", + "--kup-chart-color-4": "#effd02", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" + }, + "icons": { + "--kup-ascending-icon": "sort-ascending", + "--kup-descending-icon": "sort-descending", + "--kup-expanded-icon": "chevron-down", + "--kup-collapsed-icon": "chevron_right", + "--kup-dropdown-icon": "chevron-down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" + }, + "imports": [ + "url('https://fonts.googleapis.com/css2?family=Rajdhani:wght@600&display=swap')" + ] + }, + "red": { + "cssVariables": { + "--kup-primary-color": "#a6192e", + "--kup-secondary-color": "#ffc107", + "--kup-background-color": "#ffffff", + "--kup-navbar-background-color": "#a6192e", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#f5f5f5", + "--kup-drawer-color": "#000000", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Open Sans, arial, helvatica", + "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", + "--kup-font-size": "13px", + "--kup-text-color": "#000000", + "--kup-text-on-primary-color": "#ffffff", + "--kup-text-on-secondary-color": "#ffffff", + "--kup-disabled-background-color": "#eaeaea", + "--kup-disabled-color": "#333333", + "--kup-hover-background-color": "#eeeeee", + "--kup-hover-color": "#000000", + "--kup-title-background-color": "#f1f3f4", + "--kup-title-color": "#2e2e2e", + "--kup-icon-color": "#808080", + "--kup-border-color": "#ededed", + "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#A6192E", + "--kup-spinner-color": "#1D1D1B", + "--kup-chart-color-1": "#735DED", + "--kup-chart-color-2": "#00B2CB", + "--kup-chart-color-3": "#EDC900", + "--kup-chart-color-4": "#a6192e", + "--kup-chart-color-5": "yellow", + "--kup-chart-color-6": "cyan", + "--kup-chart-color-7": "brown", + "--kup-chart-color-8": "magenta", + "--kup-chart-color-9": "grey", + "--kup-chart-color-10": "indigo", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" + }, + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" + }, + "customStyles": {}, + "imports": [ + "url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400&display=swap')" + ] + }, + "sapphire": { + "cssVariables": { + "--kup-primary-color": "#003b77", + "--kup-secondary-color": "#ff1414", + "--kup-background-color": "#ffffff", + "--kup-navbar-background-color": "#003b77", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#002244", + "--kup-drawer-color": "#ffffff", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "20em", + "--kup-font-family": "Arial", + "--kup-font-family-monospace": "Arial", + "--kup-font-size": "13px", + "--kup-text-color": "#333333", + "--kup-text-on-primary-color": "#fafafa", + "--kup-text-on-secondary-color": "#ffffff", + "--kup-disabled-background-color": "#ddecf8", + "--kup-disabled-color": "#333333", + "--kup-hover-background-color": "#d8ecf6", + "--kup-hover-color": "#333333", + "--kup-title-background-color": "#003b77", + "--kup-title-color": "#ffffff", + "--kup-icon-color": "#808080", + "--kup-border-color": "#93c4ec", + "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#a94442", + "--kup-spinner-color": "#003b77", + "--kup-chart-color-1": "#0781fd", + "--kup-chart-color-2": "#002244", + "--kup-chart-color-3": "#c6cff8", + "--kup-chart-color-4": "#66bdda", + "--kup-chart-color-5": "yellow", + "--kup-chart-color-6": "cyan", + "--kup-chart-color-7": "brown", + "--kup-chart-color-8": "magenta", + "--kup-chart-color-9": "grey", + "--kup-chart-color-10": "indigo", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" + }, + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" + }, + "customStyles": { + "KUP-DATA-TABLE": "#kup-component th { --kup_datatable_th_border: none; font-weight: normal; }" + } + }, + "silver": { + "cssVariables": { + "--kup-primary-color": "#c0c0c0", + "--kup-secondary-color": "#c0c0c0", + "--kup-background-color": "#000000", + "--kup-navbar-background-color": "#ffffff", + "--kup-navbar-color": "#000000", + "--kup-drawer-background-color": "#ffffff", + "--kup-drawer-color": "#000000", + "--kup-navbar-height": "80px", + "--kup-drawer-width": "320px", + "--kup-font-family": "Oswald, sans-serif", + "--kup-font-family-monospace": "Xanh Mono, monospace", + "--kup-font-size": "16px", + "--kup-text-color": "#fefefe", + "--kup-text-on-primary-color": "#4a4a4a", + "--kup-text-on-secondary-color": "#4a4a4a", + "--kup-disabled-background-color": "#3c3c3c", + "--kup-disabled-color": "#7e7e7e", + "--kup-hover-background-color": "#3c3c3c", + "--kup-hover-color": "#dddddd", + "--kup-title-background-color": "#151515", + "--kup-title-color": "#d9d9d9", + "--kup-icon-color": "#c0c0c0", + "--kup-border-color": "#c0c0c0", + "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#d91e18", + "--kup-spinner-color": "#c0c0c0", + "--kup-chart-color-1": "#ffffff", + "--kup-chart-color-2": "#b0b0b0", + "--kup-chart-color-3": "#5c5c5c", + "--kup-chart-color-4": "#000000", + "--kup-chart-color-5": "#b35454", + "--kup-chart-color-6": "#59af57", + "--kup-chart-color-7": "#aeaa5d", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" + }, + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" + }, + "imports": [ + "url('https://fonts.googleapis.com/css2?family=Oswald:wght@200;300;400;500;600;700&family=Xanh+Mono&display=swap')" + ], + "customStyles": {} + }, + "teal": { + "cssVariables": { + "--kup-primary-color": "#068A9C", + "--kup-secondary-color": "#ffc107", + "--kup-background-color": "#ffffff", + "--kup-navbar-background-color": "#068A9C", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#ffffff", + "--kup-drawer-color": "#000000", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Roboto, sans-serif", + "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", + "--kup-font-size": "13px", + "--kup-text-color": "#000000", + "--kup-text-on-primary-color": "#ffffff", + "--kup-text-on-secondary-color": "#ffffff", + "--kup-disabled-background-color": "#eaeaea", + "--kup-disabled-color": "#333333", + "--kup-hover-background-color": "#f0f0f0", + "--kup-hover-color": "#000000", + "--kup-title-background-color": "#f1f3f4", + "--kup-title-color": "#2e2e2e", + "--kup-icon-color": "#808080", + "--kup-border-color": "#ededed", + "--kup-box-shadow": "rgba(0, 0, 0, 0.2) 0px 5px 5px -3px, rgba(0, 0, 0, 0.14) 0px 8px 10px 1px, rgba(0, 0, 0, 0.12) 0px 3px 14px 2px", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#A6192E", + "--kup-spinner-color": "#eaa710", + "--kup-chart-color-1": "#068A9C", + "--kup-chart-color-2": "#009643", + "--kup-chart-color-3": "#EDC900", + "--kup-chart-color-4": "#188F00", + "--kup-chart-color-5": "#758700", + "--kup-chart-color-6": "#7D2F00", + "--kup-chart-color-7": "#710008", + "--kup-chart-color-8": "#640056", + "--kup-chart-color-9": "#1C0056", + "--kup-chart-color-10": "#000046", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" + }, + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" + } + }, + "wildlife": { + "cssVariables": { + "--kup-primary-color": "#0fa918", + "--kup-secondary-color": "#739f5a", + "--kup-background-color": "#ffffff", + "--kup-navbar-background-color": "#095a1f", + "--kup-navbar-color": "#ffffff", + "--kup-drawer-background-color": "#dbfbd5", + "--kup-drawer-color": "#000000", + "--kup-navbar-height": "64px", + "--kup-drawer-width": "300px", + "--kup-font-family": "Abel, sans-serif", + "--kup-font-family-monospace": "Roboto Mono, consolas, monospace", + "--kup-font-size": "16px", + "--kup-text-color": "#000000", + "--kup-text-on-primary-color": "#ffffff", + "--kup-text-on-secondary-color": "#ffffff", + "--kup-disabled-background-color": "#eaeaea", + "--kup-disabled-color": "#5c5c5c", + "--kup-hover-background-color": "#63ab46", + "--kup-hover-color": "#ffffff", + "--kup-title-background-color": "#f1f3f4", + "--kup-title-color": "#000000", + "--kup-icon-color": "#333333", + "--kup-border-color": "#e0e0e0", + "--kup-box-shadow": "0px 0px 7.5px 0px rgba(128, 128, 128, 0.5)", + "--kup-info-color": "#2592df", + "--kup-success-color": "#4d9f02", + "--kup-warning-color": "#ffc107", + "--kup-danger-color": "#d91e18", + "--kup-spinner-color": "#44b383", + "--kup-chart-color-1": "#60c3fc", + "--kup-chart-color-2": "#e268d8", + "--kup-chart-color-3": "#e48b47", + "--kup-chart-color-4": "#81e447", + "--kup-obj-cursor": "inherit", + "--kup-card-zindex": "900", + "--kup-drawer-zindex": "900", + "--kup-navbar-zindex": "900" + }, + "icons": { + "--kup-ascending-icon": "arrow_drop_up", + "--kup-descending-icon": "arrow_drop_down", + "--kup-expanded-icon": "arrow_drop_down", + "--kup-collapsed-icon": "menu-right", + "--kup-dropdown-icon": "arrow_drop_down", + "--kup-clear-icon": "cancel", + "--kup-filter-remove-icon": "filter-remove", + "--kup-key-icon": "key-variant", + "--kup-search-icon": "search" + }, + "imports": [ + "url('https://fonts.googleapis.com/css2?family=Abel&display=swap')" + ] + } +} \ No newline at end of file diff --git a/packages/ketchup/stencil.config.ts b/packages/ketchup/stencil.config.ts index d1286fd9e7..3e0959e3cc 100644 --- a/packages/ketchup/stencil.config.ts +++ b/packages/ketchup/stencil.config.ts @@ -69,6 +69,8 @@ export const config: Config = { { src: 'drawer.html' }, { src: 'dropdown-button.html' }, { src: 'echart.html' }, + { src: 'editor.html' }, + { src: 'editor-example-1.html' }, { src: 'family-tree.html' }, { src: 'form.html' }, { src: 'gantt.html' }, diff --git a/yarn.lock b/yarn.lock index b12a4753f7..bc69afe3a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2923,7 +2923,7 @@ __metadata: version: 0.0.0-use.local resolution: "@sme.up/ketchup-react@workspace:packages/ketchup-react" dependencies: - "@sme.up/ketchup": ^9.5.2 + "@sme.up/ketchup": ^9.6.0 "@types/geojson": ^7946.0.10 "@types/node": ^20.2.5 "@types/react": ^18.2.7 @@ -2956,7 +2956,7 @@ __metadata: version: 0.0.0-use.local resolution: "@sme.up/ketchup-showcase@workspace:packages/ketchup-showcase" dependencies: - "@sme.up/ketchup": ^9.5.2 + "@sme.up/ketchup": ^9.6.0 "@typescript-eslint/eslint-plugin": ^5.59.8 "@typescript-eslint/parser": ^5.59.8 "@vue/cli-plugin-babel": ~5.0.8 @@ -2980,7 +2980,7 @@ __metadata: languageName: unknown linkType: soft -"@sme.up/ketchup@^9.5.2, @sme.up/ketchup@workspace:packages/ketchup": +"@sme.up/ketchup@^9.6.0, @sme.up/ketchup@workspace:packages/ketchup": version: 0.0.0-use.local resolution: "@sme.up/ketchup@workspace:packages/ketchup" dependencies: @@ -2992,9 +2992,10 @@ __metadata: "@material/form-field": ^14.0.0 "@material/ripple": ^14.0.0 "@material/textfield": ^14.0.0 - "@stencil/core": ^4.8.1 + "@stencil/core": ^4.12.0 "@stencil/react-output-target": 0.5.3 - "@stencil/sass": ^3.0.7 + "@stencil/sass": ^3.0.9 + "@toast-ui/editor": ^2.5.4 d3-shape: ^3.2.0 dayjs: ^1.11.7 echarts: ^5.4.2 @@ -3043,12 +3044,12 @@ __metadata: languageName: node linkType: hard -"@stencil/core@npm:^4.8.1": - version: 4.8.2 - resolution: "@stencil/core@npm:4.8.2" +"@stencil/core@npm:^4.12.0": + version: 4.12.1 + resolution: "@stencil/core@npm:4.12.1" bin: stencil: bin/stencil - checksum: 74c89ceb40aa88756668e685303b0d3d8bc3ccee20c0fd91c857c68ddcbd1e13dd8c3a7e654f9ded95c722f1e678e8c51cc49c9a3eeee8c330ce2dba65274084 + checksum: 5d19ba883b36599205cbdd0e4bc7aa7f69640a80fa22e9340e88a02a1531da0145783b8f77ae4bcb3885bed7ddd468a700f44465dbeb906397591dbb60e238ce languageName: node linkType: hard @@ -3061,12 +3062,12 @@ __metadata: languageName: node linkType: hard -"@stencil/sass@npm:^3.0.7": - version: 3.0.7 - resolution: "@stencil/sass@npm:3.0.7" +"@stencil/sass@npm:^3.0.9": + version: 3.0.9 + resolution: "@stencil/sass@npm:3.0.9" peerDependencies: "@stencil/core": ">=2.0.0 || >=3.0.0-beta.0 || >= 4.0.0-beta.0 || >= 4.0.0" - checksum: 49930a1ac77375630a26ad20c35f0d91e90f961af47cc65adaa81f0d2e16eb60453076813663782bd095cc4ea2e0779222ca79879c62521e6a5b5af6d00f8f5f + checksum: 2265ac3af2db425b7be0b836ea52aabbd44f55cb97d869eceab5468e8a47dc1ff79e5ef19b2d40a99542f5c3d8a2f812f6829fef18b6f7d551ba6e886c333a3c languageName: node linkType: hard @@ -3082,6 +3083,16 @@ __metadata: languageName: node linkType: hard +"@toast-ui/editor@npm:^2.5.4": + version: 2.5.4 + resolution: "@toast-ui/editor@npm:2.5.4" + dependencies: + "@types/codemirror": 0.0.71 + codemirror: ^5.48.4 + checksum: 3396e34f881c667fa3766f206266c131d5e4eb1d5aff7fb6815601e7b7fbb0af5d93949368d6bb8ca0c915ddf57060249715f892fb428d228234e22243955580 + languageName: node + linkType: hard + "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -3180,6 +3191,15 @@ __metadata: languageName: node linkType: hard +"@types/codemirror@npm:0.0.71": + version: 0.0.71 + resolution: "@types/codemirror@npm:0.0.71" + dependencies: + "@types/tern": "*" + checksum: 185d7f62935e6e7f806d07f2e4cb5201fd9f35b2a68d10a3aa399c96f46dc66dcea7ad9b02a4f43a6286fe4e5fc16a46408cc8500d4687a07553ccdaaec69d9c + languageName: node + linkType: hard + "@types/connect-history-api-fallback@npm:^1.3.5": version: 1.5.4 resolution: "@types/connect-history-api-fallback@npm:1.5.4" @@ -3538,6 +3558,15 @@ __metadata: languageName: node linkType: hard +"@types/tern@npm:*": + version: 0.23.9 + resolution: "@types/tern@npm:0.23.9" + dependencies: + "@types/estree": "*" + checksum: 53f229c79edf9454011f5b37c8539e0e760a130beac953d4e2126823de1ac6b0e2a45612596679fb232ec861826584fcaa272e2254a890b410575683423d56a8 + languageName: node + linkType: hard + "@types/trusted-types@npm:^2.0.2": version: 2.0.7 resolution: "@types/trusted-types@npm:2.0.7" @@ -5623,6 +5652,13 @@ __metadata: languageName: node linkType: hard +"codemirror@npm:^5.48.4": + version: 5.65.16 + resolution: "codemirror@npm:5.65.16" + checksum: 1c5036bfffcce19b1ff91d8b158dcb45faba27047c4093f55ea7ad1165975179eb47c9ef604baa9c4f4ea6bf9817886c767f33e72fa9c62710404029be3c4744 + languageName: node + linkType: hard + "collect-v8-coverage@npm:^1.0.0": version: 1.0.2 resolution: "collect-v8-coverage@npm:1.0.2"