deploy: current vibn theia state
Made-with: Cursor
This commit is contained in:
75
packages/toolbar/src/browser/toolbar-preference-schema.ts
Normal file
75
packages/toolbar/src/browser/toolbar-preference-schema.ts
Normal file
@@ -0,0 +1,75 @@
|
||||
// *****************************************************************************
|
||||
// Copyright (C) 2022 Ericsson and others.
|
||||
//
|
||||
// This program and the accompanying materials are made available under the
|
||||
// terms of the Eclipse Public License v. 2.0 which is available at
|
||||
// http://www.eclipse.org/legal/epl-2.0.
|
||||
//
|
||||
// This Source Code may also be made available under the following Secondary
|
||||
// Licenses when the conditions for such availability set forth in the Eclipse
|
||||
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
||||
// with the GNU Classpath Exception which is available at
|
||||
// https://www.gnu.org/software/classpath/license.html.
|
||||
//
|
||||
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
||||
// *****************************************************************************
|
||||
|
||||
import { IJSONSchema } from '@theia/core/lib/common/json-schema';
|
||||
import * as Ajv from '@theia/core/shared/ajv';
|
||||
import { DeflatedToolbarTree } from './toolbar-interfaces';
|
||||
|
||||
const toolbarColumnGroup: IJSONSchema = {
|
||||
'type': 'array',
|
||||
'description': 'Array of subgroups for right toolbar column',
|
||||
'items': {
|
||||
'type': 'array',
|
||||
'description': 'Grouping',
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'id': { 'type': 'string' },
|
||||
'command': { 'type': 'string' },
|
||||
'icon': { 'type': 'string' },
|
||||
'tooltip': { 'type': 'string' },
|
||||
'group': { 'enum': ['contributed'] },
|
||||
'when': { 'type': 'string' },
|
||||
},
|
||||
'required': [
|
||||
'id',
|
||||
],
|
||||
'additionalProperties': false,
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const toolbarSchemaId = 'vscode://schemas/toolbar';
|
||||
export const toolbarConfigurationSchema: IJSONSchema = {
|
||||
// '$schema': 'https://json-schema.org/draft/2019-09/schema',
|
||||
'$id': 'vscode://schemas/indexing-grid',
|
||||
'type': 'object',
|
||||
'title': 'Toolbar',
|
||||
'properties': {
|
||||
'items': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'left': toolbarColumnGroup,
|
||||
'center': toolbarColumnGroup,
|
||||
'right': toolbarColumnGroup,
|
||||
},
|
||||
'required': [
|
||||
'left',
|
||||
'center',
|
||||
'right'
|
||||
],
|
||||
'additionalProperties': false,
|
||||
}
|
||||
},
|
||||
'required': [
|
||||
'items'
|
||||
]
|
||||
};
|
||||
|
||||
const validator = new Ajv().compile(toolbarConfigurationSchema);
|
||||
export function isToolbarPreferences(candidate: unknown): candidate is DeflatedToolbarTree {
|
||||
return Boolean(validator(candidate));
|
||||
}
|
||||
Reference in New Issue
Block a user