@zentto/studio-core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/data-binding.test.d.ts +2 -0
- package/dist/__tests__/data-binding.test.d.ts.map +1 -0
- package/dist/__tests__/data-binding.test.js +86 -0
- package/dist/__tests__/data-binding.test.js.map +1 -0
- package/dist/__tests__/event-bus.test.d.ts +2 -0
- package/dist/__tests__/event-bus.test.d.ts.map +1 -0
- package/dist/__tests__/event-bus.test.js +70 -0
- package/dist/__tests__/event-bus.test.js.map +1 -0
- package/dist/__tests__/expression.test.d.ts +2 -0
- package/dist/__tests__/expression.test.d.ts.map +1 -0
- package/dist/__tests__/expression.test.js +173 -0
- package/dist/__tests__/expression.test.js.map +1 -0
- package/dist/__tests__/schema.test.d.ts +2 -0
- package/dist/__tests__/schema.test.d.ts.map +1 -0
- package/dist/__tests__/schema.test.js +91 -0
- package/dist/__tests__/schema.test.js.map +1 -0
- package/dist/__tests__/validation.test.d.ts +2 -0
- package/dist/__tests__/validation.test.d.ts.map +1 -0
- package/dist/__tests__/validation.test.js +70 -0
- package/dist/__tests__/validation.test.js.map +1 -0
- package/dist/app-types.d.ts +184 -0
- package/dist/app-types.d.ts.map +1 -0
- package/dist/app-types.js +4 -0
- package/dist/app-types.js.map +1 -0
- package/dist/data/data-source.d.ts +16 -0
- package/dist/data/data-source.d.ts.map +1 -0
- package/dist/data/data-source.js +139 -0
- package/dist/data/data-source.js.map +1 -0
- package/dist/data/data-transformer.d.ts +15 -0
- package/dist/data/data-transformer.d.ts.map +1 -0
- package/dist/data/data-transformer.js +58 -0
- package/dist/data/data-transformer.js.map +1 -0
- package/dist/engine/action-engine.d.ts +18 -0
- package/dist/engine/action-engine.d.ts.map +1 -0
- package/dist/engine/action-engine.js +97 -0
- package/dist/engine/action-engine.js.map +1 -0
- package/dist/engine/data-binding.d.ts +46 -0
- package/dist/engine/data-binding.d.ts.map +1 -0
- package/dist/engine/data-binding.js +198 -0
- package/dist/engine/data-binding.js.map +1 -0
- package/dist/engine/expression.d.ts +39 -0
- package/dist/engine/expression.d.ts.map +1 -0
- package/dist/engine/expression.js +630 -0
- package/dist/engine/expression.js.map +1 -0
- package/dist/engine/rule-engine.d.ts +23 -0
- package/dist/engine/rule-engine.d.ts.map +1 -0
- package/dist/engine/rule-engine.js +91 -0
- package/dist/engine/rule-engine.js.map +1 -0
- package/dist/engine/validation.d.ts +16 -0
- package/dist/engine/validation.d.ts.map +1 -0
- package/dist/engine/validation.js +116 -0
- package/dist/engine/validation.js.map +1 -0
- package/dist/events/event-bus.d.ts +16 -0
- package/dist/events/event-bus.d.ts.map +1 -0
- package/dist/events/event-bus.js +51 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/i18n/en.d.ts +29 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +29 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/es.d.ts +29 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +29 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/i18n.d.ts +14 -0
- package/dist/i18n/i18n.d.ts.map +1 -0
- package/dist/i18n/i18n.js +32 -0
- package/dist/i18n/i18n.js.map +1 -0
- package/dist/i18n/pt.d.ts +29 -0
- package/dist/i18n/pt.d.ts.map +1 -0
- package/dist/i18n/pt.js +29 -0
- package/dist/i18n/pt.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/grid-solver.d.ts +18 -0
- package/dist/layout/grid-solver.d.ts.map +1 -0
- package/dist/layout/grid-solver.js +72 -0
- package/dist/layout/grid-solver.js.map +1 -0
- package/dist/persistence/flavor-manager.d.ts +17 -0
- package/dist/persistence/flavor-manager.d.ts.map +1 -0
- package/dist/persistence/flavor-manager.js +63 -0
- package/dist/persistence/flavor-manager.js.map +1 -0
- package/dist/persistence/schema-store.d.ts +35 -0
- package/dist/persistence/schema-store.d.ts.map +1 -0
- package/dist/persistence/schema-store.js +142 -0
- package/dist/persistence/schema-store.js.map +1 -0
- package/dist/registry/field-registry.d.ts +12 -0
- package/dist/registry/field-registry.d.ts.map +1 -0
- package/dist/registry/field-registry.js +91 -0
- package/dist/registry/field-registry.js.map +1 -0
- package/dist/schema/studio-schema.d.ts +1196 -0
- package/dist/schema/studio-schema.d.ts.map +1 -0
- package/dist/schema/studio-schema.js +191 -0
- package/dist/schema/studio-schema.js.map +1 -0
- package/dist/templates/app-templates.d.ts +35 -0
- package/dist/templates/app-templates.d.ts.map +1 -0
- package/dist/templates/app-templates.js +306 -0
- package/dist/templates/app-templates.js.map +1 -0
- package/dist/types.d.ts +270 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pt.d.ts","sourceRoot":"","sources":["../../src/i18n/pt.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Bd,CAAC"}
|
package/dist/i18n/pt.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const pt = {
|
|
2
|
+
required: 'Campo obrigatorio',
|
|
3
|
+
invalidEmail: 'Email invalido',
|
|
4
|
+
invalidUrl: 'URL invalida',
|
|
5
|
+
invalidFormat: 'Formato invalido',
|
|
6
|
+
minValue: 'O valor minimo e {value}',
|
|
7
|
+
maxValue: 'O valor maximo e {value}',
|
|
8
|
+
minLength: 'Minimo {value} caracteres',
|
|
9
|
+
maxLength: 'Maximo {value} caracteres',
|
|
10
|
+
validationFailed: 'Validacao falhou',
|
|
11
|
+
submit: 'Enviar',
|
|
12
|
+
cancel: 'Cancelar',
|
|
13
|
+
reset: 'Redefinir',
|
|
14
|
+
save: 'Salvar',
|
|
15
|
+
next: 'Proximo',
|
|
16
|
+
previous: 'Anterior',
|
|
17
|
+
finish: 'Finalizar',
|
|
18
|
+
loading: 'Carregando...',
|
|
19
|
+
noData: 'Sem dados',
|
|
20
|
+
search: 'Buscar...',
|
|
21
|
+
selectOption: 'Selecione uma opcao',
|
|
22
|
+
fileUpload: 'Clique para enviar ou arraste o arquivo',
|
|
23
|
+
confirmAction: 'Tem certeza?',
|
|
24
|
+
yes: 'Sim',
|
|
25
|
+
no: 'Nao',
|
|
26
|
+
step: 'Passo',
|
|
27
|
+
of: 'de',
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=pt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pt.js","sourceRoot":"","sources":["../../src/i18n/pt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,QAAQ,EAAE,mBAAmB;IAC7B,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,cAAc;IAC1B,aAAa,EAAE,kBAAkB;IACjC,QAAQ,EAAE,0BAA0B;IACpC,QAAQ,EAAE,0BAA0B;IACpC,SAAS,EAAE,2BAA2B;IACtC,SAAS,EAAE,2BAA2B;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,YAAY,EAAE,qBAAqB;IACnC,UAAU,EAAE,yCAAyC;IACrD,aAAa,EAAE,cAAc;IAC7B,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,KAAK;IACT,IAAI,EAAE,OAAO;IACb,EAAE,EAAE,IAAI;CACT,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type { FieldType, LayoutType, LayoutConfig, ResponsiveBreakpoint, FieldConfig, SelectOption, LookupConfig, ValidationType, ValidationRule, DataSourceType, DataSourceConfig, PaginationConfig, ActionType, ActionConfig, RuleActionType, RuleAction, Rule, Section, FlavorOverride, Flavor, PermissionConfig, ThemeConfig, I18nConfig, StudioSchema, FieldState, FormState, StudioEventMap, StudioBindingContext, FieldCategory, FieldRendererMeta, } from './types.js';
|
|
2
|
+
export { studioSchemaValidator, validateSchema, safeValidateSchema, } from './schema/studio-schema.js';
|
|
3
|
+
export { evaluateExpression, safeEvaluateExpression, evaluateCondition, registerFunction, ExprError, } from './engine/expression.js';
|
|
4
|
+
export { DataModel, getDeepValue, setDeepValue, } from './engine/data-binding.js';
|
|
5
|
+
export { validateField, validateAllFields, } from './engine/validation.js';
|
|
6
|
+
export { evaluateRules, applyRulesToModel, } from './engine/rule-engine.js';
|
|
7
|
+
export type { RuleResult } from './engine/rule-engine.js';
|
|
8
|
+
export { isActionEnabled, executeAction, } from './engine/action-engine.js';
|
|
9
|
+
export type { ActionExecutionResult } from './engine/action-engine.js';
|
|
10
|
+
export { EventBus } from './events/event-bus.js';
|
|
11
|
+
export { registerField, getFieldMeta, getFieldTag, getAllFields, getFieldsByCategory, } from './registry/field-registry.js';
|
|
12
|
+
export { solveGridLayout, getResponsiveColumns, generateResponsiveCSS, } from './layout/grid-solver.js';
|
|
13
|
+
export type { GridLayoutResult } from './layout/grid-solver.js';
|
|
14
|
+
export { t, setLocale, getLocale, registerLocale } from './i18n/i18n.js';
|
|
15
|
+
export { fetchAllDataSources, setupPolling, } from './data/data-source.js';
|
|
16
|
+
export type { FetchedDataSources } from './data/data-source.js';
|
|
17
|
+
export { flattenObject, unflattenObject, pickFields, } from './data/data-transformer.js';
|
|
18
|
+
export { saveSchemaLocal, loadSchemaLocal, deleteSchemaLocal, listSchemasLocal, saveSchemaRemote, loadSchemaRemote, listSchemasRemote, loadSchemaWithSync, saveSchemaWithSync, } from './persistence/schema-store.js';
|
|
19
|
+
export type { RemoteStoreConfig } from './persistence/schema-store.js';
|
|
20
|
+
export { resolveFlavor, applyFlavor, applyFlavorToSchema, } from './persistence/flavor-manager.js';
|
|
21
|
+
export type { NavItem, NavItemKind, PageConfig, PageContentType, GridPageConfig, GridColumnDef, CrudConfig, ReportPageConfig, CardsPageConfig, CardItem, TabsPageConfig, SplitPageConfig, ChartPageConfig, BrandingConfig, UserContext, AppConfig, NotificationConfig, } from './app-types.js';
|
|
22
|
+
export { TEMPLATE_BLANK, TEMPLATE_CRM, TEMPLATE_ECOMMERCE, TEMPLATE_HR, APP_TEMPLATES, getAppTemplate, listAppTemplates, } from './templates/app-templates.js';
|
|
23
|
+
export type { AppTemplateId } from './templates/app-templates.js';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EACzD,WAAW,EAAE,YAAY,EAAE,YAAY,EACvC,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAClD,UAAU,EAAE,YAAY,EACxB,cAAc,EAAE,UAAU,EAAE,IAAI,EAChC,OAAO,EACP,cAAc,EAAE,MAAM,EAAE,gBAAgB,EACxC,WAAW,EAAE,UAAU,EACvB,YAAY,EACZ,UAAU,EAAE,SAAS,EACrB,cAAc,EAAE,oBAAoB,EACpC,aAAa,EAAE,iBAAiB,GACjC,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,GACb,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,EACL,eAAe,EACf,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGzE,OAAO,EACL,mBAAmB,EACnB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,GACX,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EACL,aAAa,EACb,WAAW,EACX,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,eAAe,EAC3B,cAAc,EAAE,aAAa,EAAE,UAAU,EACzC,gBAAgB,EAChB,eAAe,EAAE,QAAQ,EACzB,cAAc,EAAE,eAAe,EAAE,eAAe,EAChD,cAAc,EAAE,WAAW,EAC3B,SAAS,EAAE,kBAAkB,GAC9B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAC7D,aAAa,EAAE,cAAc,EAAE,gBAAgB,GAChD,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// @zentto/studio-core — Public API
|
|
2
|
+
// Schema validation
|
|
3
|
+
export { studioSchemaValidator, validateSchema, safeValidateSchema, } from './schema/studio-schema.js';
|
|
4
|
+
// Expression engine
|
|
5
|
+
export { evaluateExpression, safeEvaluateExpression, evaluateCondition, registerFunction, ExprError, } from './engine/expression.js';
|
|
6
|
+
// Data binding
|
|
7
|
+
export { DataModel, getDeepValue, setDeepValue, } from './engine/data-binding.js';
|
|
8
|
+
// Validation
|
|
9
|
+
export { validateField, validateAllFields, } from './engine/validation.js';
|
|
10
|
+
// Rule engine
|
|
11
|
+
export { evaluateRules, applyRulesToModel, } from './engine/rule-engine.js';
|
|
12
|
+
// Action engine
|
|
13
|
+
export { isActionEnabled, executeAction, } from './engine/action-engine.js';
|
|
14
|
+
// Event bus
|
|
15
|
+
export { EventBus } from './events/event-bus.js';
|
|
16
|
+
// Field registry
|
|
17
|
+
export { registerField, getFieldMeta, getFieldTag, getAllFields, getFieldsByCategory, } from './registry/field-registry.js';
|
|
18
|
+
// Layout
|
|
19
|
+
export { solveGridLayout, getResponsiveColumns, generateResponsiveCSS, } from './layout/grid-solver.js';
|
|
20
|
+
// i18n
|
|
21
|
+
export { t, setLocale, getLocale, registerLocale } from './i18n/i18n.js';
|
|
22
|
+
// Data sources
|
|
23
|
+
export { fetchAllDataSources, setupPolling, } from './data/data-source.js';
|
|
24
|
+
export { flattenObject, unflattenObject, pickFields, } from './data/data-transformer.js';
|
|
25
|
+
// Persistence
|
|
26
|
+
export { saveSchemaLocal, loadSchemaLocal, deleteSchemaLocal, listSchemasLocal, saveSchemaRemote, loadSchemaRemote, listSchemasRemote, loadSchemaWithSync, saveSchemaWithSync, } from './persistence/schema-store.js';
|
|
27
|
+
// Flavors
|
|
28
|
+
export { resolveFlavor, applyFlavor, applyFlavorToSchema, } from './persistence/flavor-manager.js';
|
|
29
|
+
// App templates
|
|
30
|
+
export { TEMPLATE_BLANK, TEMPLATE_CRM, TEMPLATE_ECOMMERCE, TEMPLATE_HR, APP_TEMPLATES, getAppTemplate, listAppTemplates, } from './templates/app-templates.js';
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAmBnC,oBAAoB;AACpB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,wBAAwB,CAAC;AAEhC,eAAe;AACf,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,GACb,MAAM,0BAA0B,CAAC;AAElC,aAAa;AACb,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,cAAc;AACd,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAGjC,gBAAgB;AAChB,OAAO,EACL,eAAe,EACf,aAAa,GACd,MAAM,2BAA2B,CAAC;AAGnC,YAAY;AACZ,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC,SAAS;AACT,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAGjC,OAAO;AACP,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEzE,eAAe;AACf,OAAO,EACL,mBAAmB,EACnB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,GACX,MAAM,4BAA4B,CAAC;AAEpC,cAAc;AACd,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAGvC,UAAU;AACV,OAAO,EACL,aAAa,EACb,WAAW,EACX,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AAczC,gBAAgB;AAChB,OAAO,EACL,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAC7D,aAAa,EAAE,cAAc,EAAE,gBAAgB,GAChD,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { LayoutConfig, Section } from '../types.js';
|
|
2
|
+
export interface GridLayoutResult {
|
|
3
|
+
containerStyle: Record<string, string>;
|
|
4
|
+
fieldStyles: Map<string, Record<string, string>>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Compute CSS Grid styles for a form layout.
|
|
8
|
+
*/
|
|
9
|
+
export declare function solveGridLayout(layout: LayoutConfig, sections: Section[]): GridLayoutResult;
|
|
10
|
+
/**
|
|
11
|
+
* Get the number of columns for a given viewport width.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getResponsiveColumns(layout: LayoutConfig, viewportWidth: number): number;
|
|
14
|
+
/**
|
|
15
|
+
* Generate CSS media query string for responsive breakpoints.
|
|
16
|
+
*/
|
|
17
|
+
export declare function generateResponsiveCSS(layout: LayoutConfig, containerSelector: string): string;
|
|
18
|
+
//# sourceMappingURL=grid-solver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid-solver.d.ts","sourceRoot":"","sources":["../../src/layout/grid-solver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,YAAY,EAAwB,OAAO,EAAE,MAAM,aAAa,CAAC;AAE5F,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAClD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,OAAO,EAAE,GAClB,gBAAgB,CAuClB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,GACpB,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,iBAAiB,EAAE,MAAM,GACxB,MAAM,CAiBR"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// @zentto/studio-core — CSS Grid layout solver
|
|
2
|
+
// Converts layout config + sections into CSS Grid template strings
|
|
3
|
+
/**
|
|
4
|
+
* Compute CSS Grid styles for a form layout.
|
|
5
|
+
*/
|
|
6
|
+
export function solveGridLayout(layout, sections) {
|
|
7
|
+
const columns = layout.columns ?? 1;
|
|
8
|
+
const gap = layout.gap ?? 16;
|
|
9
|
+
const containerStyle = {
|
|
10
|
+
display: 'grid',
|
|
11
|
+
'grid-template-columns': `repeat(${columns}, 1fr)`,
|
|
12
|
+
gap: `${gap}px`,
|
|
13
|
+
};
|
|
14
|
+
const fieldStyles = new Map();
|
|
15
|
+
for (const section of sections) {
|
|
16
|
+
for (const field of section.fields) {
|
|
17
|
+
const style = {};
|
|
18
|
+
// Column span
|
|
19
|
+
const span = Math.min(field.colSpan ?? 1, columns);
|
|
20
|
+
if (span > 1) {
|
|
21
|
+
style['grid-column'] = `span ${span}`;
|
|
22
|
+
}
|
|
23
|
+
// Full width for certain field types
|
|
24
|
+
if (['separator', 'heading', 'html', 'datagrid', 'report'].includes(field.type)) {
|
|
25
|
+
style['grid-column'] = `1 / -1`; // full width
|
|
26
|
+
}
|
|
27
|
+
// Custom width
|
|
28
|
+
if (field.width) {
|
|
29
|
+
style['width'] = typeof field.width === 'number' ? `${field.width}px` : field.width;
|
|
30
|
+
}
|
|
31
|
+
if (Object.keys(style).length > 0) {
|
|
32
|
+
fieldStyles.set(field.id, style);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return { containerStyle, fieldStyles };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get the number of columns for a given viewport width.
|
|
40
|
+
*/
|
|
41
|
+
export function getResponsiveColumns(layout, viewportWidth) {
|
|
42
|
+
const breakpoints = layout.responsive ?? [];
|
|
43
|
+
const columns = layout.columns ?? 1;
|
|
44
|
+
// Sort breakpoints ascending by maxWidth
|
|
45
|
+
const sorted = [...breakpoints].sort((a, b) => a.maxWidth - b.maxWidth);
|
|
46
|
+
for (const bp of sorted) {
|
|
47
|
+
if (viewportWidth <= bp.maxWidth) {
|
|
48
|
+
return bp.columns;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return columns;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Generate CSS media query string for responsive breakpoints.
|
|
55
|
+
*/
|
|
56
|
+
export function generateResponsiveCSS(layout, containerSelector) {
|
|
57
|
+
const breakpoints = layout.responsive ?? [];
|
|
58
|
+
if (breakpoints.length === 0)
|
|
59
|
+
return '';
|
|
60
|
+
const gap = layout.gap ?? 16;
|
|
61
|
+
let css = '';
|
|
62
|
+
for (const bp of breakpoints) {
|
|
63
|
+
css += `@media (max-width: ${bp.maxWidth}px) {\n`;
|
|
64
|
+
css += ` ${containerSelector} {\n`;
|
|
65
|
+
css += ` grid-template-columns: repeat(${bp.columns}, 1fr);\n`;
|
|
66
|
+
css += ` gap: ${gap}px;\n`;
|
|
67
|
+
css += ` }\n`;
|
|
68
|
+
css += `}\n`;
|
|
69
|
+
}
|
|
70
|
+
return css;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=grid-solver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid-solver.js","sourceRoot":"","sources":["../../src/layout/grid-solver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Flavor, PermissionConfig, Section, StudioSchema } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Find the applicable flavor for a user's roles.
|
|
4
|
+
* Returns the first matching flavor, or the default flavor.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveFlavor(permissions: PermissionConfig | undefined, userRoles: string[]): Flavor | null;
|
|
7
|
+
/**
|
|
8
|
+
* Apply flavor overrides to a schema's sections (immutable — returns new sections).
|
|
9
|
+
* Modifies field visibility, readOnly, disabled, defaultValue, label.
|
|
10
|
+
*/
|
|
11
|
+
export declare function applyFlavor(sections: Section[], flavor: Flavor | null): Section[];
|
|
12
|
+
/**
|
|
13
|
+
* Apply flavor to a full schema (convenience).
|
|
14
|
+
* Returns a new schema with flavor-adjusted sections.
|
|
15
|
+
*/
|
|
16
|
+
export declare function applyFlavorToSchema(schema: StudioSchema, userRoles: string[]): StudioSchema;
|
|
17
|
+
//# sourceMappingURL=flavor-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flavor-manager.d.ts","sourceRoot":"","sources":["../../src/persistence/flavor-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAA+B,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhH;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,gBAAgB,GAAG,SAAS,EACzC,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM,GAAG,IAAI,CAef;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,EAAE,CAwBX;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EAAE,GAClB,YAAY,CAQd"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// @zentto/studio-core — Flavor manager (role-based UI customization)
|
|
2
|
+
// SAP Screen Personas equivalent: different "views" per user role
|
|
3
|
+
/**
|
|
4
|
+
* Find the applicable flavor for a user's roles.
|
|
5
|
+
* Returns the first matching flavor, or the default flavor.
|
|
6
|
+
*/
|
|
7
|
+
export function resolveFlavor(permissions, userRoles) {
|
|
8
|
+
if (!permissions?.flavors || permissions.flavors.length === 0)
|
|
9
|
+
return null;
|
|
10
|
+
// Find first flavor matching any user role
|
|
11
|
+
for (const flavor of permissions.flavors) {
|
|
12
|
+
const matches = flavor.roles.some(role => userRoles.includes(role));
|
|
13
|
+
if (matches)
|
|
14
|
+
return flavor;
|
|
15
|
+
}
|
|
16
|
+
// Fallback to default flavor
|
|
17
|
+
if (permissions.defaultFlavorId) {
|
|
18
|
+
return permissions.flavors.find(f => f.id === permissions.defaultFlavorId) ?? null;
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Apply flavor overrides to a schema's sections (immutable — returns new sections).
|
|
24
|
+
* Modifies field visibility, readOnly, disabled, defaultValue, label.
|
|
25
|
+
*/
|
|
26
|
+
export function applyFlavor(sections, flavor) {
|
|
27
|
+
if (!flavor || flavor.overrides.length === 0)
|
|
28
|
+
return sections;
|
|
29
|
+
const overrideMap = new Map();
|
|
30
|
+
for (const override of flavor.overrides) {
|
|
31
|
+
overrideMap.set(override.fieldId, override);
|
|
32
|
+
}
|
|
33
|
+
return sections.map(section => ({
|
|
34
|
+
...section,
|
|
35
|
+
fields: section.fields.map(field => {
|
|
36
|
+
const override = overrideMap.get(field.id);
|
|
37
|
+
if (!override)
|
|
38
|
+
return field;
|
|
39
|
+
return {
|
|
40
|
+
...field,
|
|
41
|
+
hidden: override.hidden ?? field.hidden,
|
|
42
|
+
readOnly: override.readOnly ?? field.readOnly,
|
|
43
|
+
disabled: override.disabled ?? field.disabled,
|
|
44
|
+
defaultValue: override.defaultValue ?? field.defaultValue,
|
|
45
|
+
label: override.label ?? field.label,
|
|
46
|
+
};
|
|
47
|
+
}),
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Apply flavor to a full schema (convenience).
|
|
52
|
+
* Returns a new schema with flavor-adjusted sections.
|
|
53
|
+
*/
|
|
54
|
+
export function applyFlavorToSchema(schema, userRoles) {
|
|
55
|
+
const flavor = resolveFlavor(schema.permissions, userRoles);
|
|
56
|
+
if (!flavor)
|
|
57
|
+
return schema;
|
|
58
|
+
return {
|
|
59
|
+
...schema,
|
|
60
|
+
sections: applyFlavor(schema.sections, flavor),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=flavor-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flavor-manager.js","sourceRoot":"","sources":["../../src/persistence/flavor-manager.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,kEAAkE;AAIlE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,WAAyC,EACzC,SAAmB;IAEnB,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3E,2CAA2C;IAC3C,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,IAAI,OAAO;YAAE,OAAO,MAAM,CAAC;IAC7B,CAAC;IAED,6BAA6B;IAC7B,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC;IACrF,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,QAAmB,EACnB,MAAqB;IAErB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE9D,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;IACtD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACxC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9B,GAAG,OAAO;QACV,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACjC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAE5B,OAAO;gBACL,GAAG,KAAK;gBACR,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;gBACvC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ;gBAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ;gBAC7C,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY;gBACzD,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;aACrC,CAAC;QACJ,CAAC,CAAC;KACH,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAoB,EACpB,SAAmB;IAEnB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAE3B,OAAO;QACL,GAAG,MAAM;QACT,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { StudioSchema } from '../types.js';
|
|
2
|
+
/** Save schema to localStorage */
|
|
3
|
+
export declare function saveSchemaLocal(schemaId: string, schema: StudioSchema): void;
|
|
4
|
+
/** Load schema from localStorage */
|
|
5
|
+
export declare function loadSchemaLocal(schemaId: string): {
|
|
6
|
+
schema: StudioSchema;
|
|
7
|
+
updatedAt: string;
|
|
8
|
+
} | null;
|
|
9
|
+
/** Delete schema from localStorage */
|
|
10
|
+
export declare function deleteSchemaLocal(schemaId: string): void;
|
|
11
|
+
/** List all schema IDs in localStorage */
|
|
12
|
+
export declare function listSchemasLocal(): string[];
|
|
13
|
+
export interface RemoteStoreConfig {
|
|
14
|
+
baseUrl: string;
|
|
15
|
+
companyId: string;
|
|
16
|
+
userId?: string;
|
|
17
|
+
email?: string;
|
|
18
|
+
appKey?: string;
|
|
19
|
+
}
|
|
20
|
+
/** Save schema to remote cache */
|
|
21
|
+
export declare function saveSchemaRemote(config: RemoteStoreConfig, schemaId: string, schema: StudioSchema): Promise<boolean>;
|
|
22
|
+
/** Load schema from remote cache */
|
|
23
|
+
export declare function loadSchemaRemote(config: RemoteStoreConfig, schemaId: string): Promise<StudioSchema | null>;
|
|
24
|
+
/** List schemas from remote cache */
|
|
25
|
+
export declare function listSchemasRemote(config: RemoteStoreConfig): Promise<string[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Load schema with fallback: remote → local → null.
|
|
28
|
+
* Saves to localStorage if fetched from remote.
|
|
29
|
+
*/
|
|
30
|
+
export declare function loadSchemaWithSync(config: RemoteStoreConfig | null, schemaId: string): Promise<StudioSchema | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Save schema to both local and remote.
|
|
33
|
+
*/
|
|
34
|
+
export declare function saveSchemaWithSync(config: RemoteStoreConfig | null, schemaId: string, schema: StudioSchema): Promise<void>;
|
|
35
|
+
//# sourceMappingURL=schema-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-store.d.ts","sourceRoot":"","sources":["../../src/persistence/schema-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD,kCAAkC;AAClC,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAQ5E;AAED,oCAAoC;AACpC,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMpG;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIxD;AAED,0CAA0C;AAC1C,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAW3C;AAID,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,kCAAkC;AAClC,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED,oCAAoC;AACpC,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAkB9B;AAED,qCAAqC;AACrC,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBnB;AAID;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAChC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAa9B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// @zentto/studio-core — Schema persistence (localStorage + remote sync)
|
|
2
|
+
const LS_PREFIX = 'zentto-studio-schema:';
|
|
3
|
+
// ─── Local Storage ────────────────────────────────────────────────
|
|
4
|
+
/** Save schema to localStorage */
|
|
5
|
+
export function saveSchemaLocal(schemaId, schema) {
|
|
6
|
+
try {
|
|
7
|
+
const data = JSON.stringify({
|
|
8
|
+
schema,
|
|
9
|
+
updatedAt: new Date().toISOString(),
|
|
10
|
+
});
|
|
11
|
+
localStorage.setItem(LS_PREFIX + schemaId, data);
|
|
12
|
+
}
|
|
13
|
+
catch { /* quota exceeded or SSR */ }
|
|
14
|
+
}
|
|
15
|
+
/** Load schema from localStorage */
|
|
16
|
+
export function loadSchemaLocal(schemaId) {
|
|
17
|
+
try {
|
|
18
|
+
const raw = localStorage.getItem(LS_PREFIX + schemaId);
|
|
19
|
+
if (!raw)
|
|
20
|
+
return null;
|
|
21
|
+
return JSON.parse(raw);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** Delete schema from localStorage */
|
|
28
|
+
export function deleteSchemaLocal(schemaId) {
|
|
29
|
+
try {
|
|
30
|
+
localStorage.removeItem(LS_PREFIX + schemaId);
|
|
31
|
+
}
|
|
32
|
+
catch { /* SSR */ }
|
|
33
|
+
}
|
|
34
|
+
/** List all schema IDs in localStorage */
|
|
35
|
+
export function listSchemasLocal() {
|
|
36
|
+
try {
|
|
37
|
+
const ids = [];
|
|
38
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
39
|
+
const key = localStorage.key(i);
|
|
40
|
+
if (key?.startsWith(LS_PREFIX)) {
|
|
41
|
+
ids.push(key.slice(LS_PREFIX.length));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return ids;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** Save schema to remote cache */
|
|
51
|
+
export async function saveSchemaRemote(config, schemaId, schema) {
|
|
52
|
+
try {
|
|
53
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
54
|
+
if (config.appKey)
|
|
55
|
+
headers['X-App-Key'] = config.appKey;
|
|
56
|
+
const response = await fetch(`${config.baseUrl}/studio-schemas/${schemaId}`, {
|
|
57
|
+
method: 'PUT',
|
|
58
|
+
headers,
|
|
59
|
+
body: JSON.stringify({
|
|
60
|
+
companyId: config.companyId,
|
|
61
|
+
userId: config.userId,
|
|
62
|
+
email: config.email,
|
|
63
|
+
schemaId,
|
|
64
|
+
layout: schema,
|
|
65
|
+
}),
|
|
66
|
+
});
|
|
67
|
+
return response.ok;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** Load schema from remote cache */
|
|
74
|
+
export async function loadSchemaRemote(config, schemaId) {
|
|
75
|
+
try {
|
|
76
|
+
const params = new URLSearchParams({ companyId: config.companyId });
|
|
77
|
+
if (config.userId)
|
|
78
|
+
params.set('userId', config.userId);
|
|
79
|
+
if (config.email)
|
|
80
|
+
params.set('email', config.email);
|
|
81
|
+
const headers = {};
|
|
82
|
+
if (config.appKey)
|
|
83
|
+
headers['X-App-Key'] = config.appKey;
|
|
84
|
+
const response = await fetch(`${config.baseUrl}/studio-schemas/${schemaId}?${params}`, { headers });
|
|
85
|
+
if (!response.ok)
|
|
86
|
+
return null;
|
|
87
|
+
const data = await response.json();
|
|
88
|
+
return data.layout ?? data.schema ?? null;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** List schemas from remote cache */
|
|
95
|
+
export async function listSchemasRemote(config) {
|
|
96
|
+
try {
|
|
97
|
+
const params = new URLSearchParams({ companyId: config.companyId });
|
|
98
|
+
if (config.userId)
|
|
99
|
+
params.set('userId', config.userId);
|
|
100
|
+
if (config.email)
|
|
101
|
+
params.set('email', config.email);
|
|
102
|
+
const headers = {};
|
|
103
|
+
if (config.appKey)
|
|
104
|
+
headers['X-App-Key'] = config.appKey;
|
|
105
|
+
const response = await fetch(`${config.baseUrl}/studio-schemas?${params}`, { headers });
|
|
106
|
+
if (!response.ok)
|
|
107
|
+
return [];
|
|
108
|
+
const data = await response.json();
|
|
109
|
+
return data.schemaIds ?? data.ids ?? [];
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return [];
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// ─── Sync Strategy ────────────────────────────────────────────────
|
|
116
|
+
/**
|
|
117
|
+
* Load schema with fallback: remote → local → null.
|
|
118
|
+
* Saves to localStorage if fetched from remote.
|
|
119
|
+
*/
|
|
120
|
+
export async function loadSchemaWithSync(config, schemaId) {
|
|
121
|
+
// Try remote first
|
|
122
|
+
if (config) {
|
|
123
|
+
const remote = await loadSchemaRemote(config, schemaId);
|
|
124
|
+
if (remote) {
|
|
125
|
+
saveSchemaLocal(schemaId, remote);
|
|
126
|
+
return remote;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Fallback to local
|
|
130
|
+
const local = loadSchemaLocal(schemaId);
|
|
131
|
+
return local?.schema ?? null;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Save schema to both local and remote.
|
|
135
|
+
*/
|
|
136
|
+
export async function saveSchemaWithSync(config, schemaId, schema) {
|
|
137
|
+
saveSchemaLocal(schemaId, schema);
|
|
138
|
+
if (config) {
|
|
139
|
+
await saveSchemaRemote(config, schemaId, schema);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=schema-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-store.js","sourceRoot":"","sources":["../../src/persistence/schema-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FieldRendererMeta, FieldType } from '../types.js';
|
|
2
|
+
/** Register a field renderer for a given type */
|
|
3
|
+
export declare function registerField(meta: FieldRendererMeta): void;
|
|
4
|
+
/** Get renderer metadata for a field type */
|
|
5
|
+
export declare function getFieldMeta(type: FieldType): FieldRendererMeta | undefined;
|
|
6
|
+
/** Get the web component tag name for a field type */
|
|
7
|
+
export declare function getFieldTag(type: FieldType): string;
|
|
8
|
+
/** Get all registered field types */
|
|
9
|
+
export declare function getAllFields(): FieldRendererMeta[];
|
|
10
|
+
/** Get fields by category */
|
|
11
|
+
export declare function getFieldsByCategory(category: string): FieldRendererMeta[];
|
|
12
|
+
//# sourceMappingURL=field-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-registry.d.ts","sourceRoot":"","sources":["../../src/registry/field-registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIhE,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAE3D;AAED,6CAA6C;AAC7C,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAE3E;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEnD;AAED,qCAAqC;AACrC,wBAAgB,YAAY,IAAI,iBAAiB,EAAE,CAElD;AAED,6BAA6B;AAC7B,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAEzE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// @zentto/studio-core — Field type registry
|
|
2
|
+
// Maps FieldType to web component tag name and metadata
|
|
3
|
+
const registry = new Map();
|
|
4
|
+
/** Register a field renderer for a given type */
|
|
5
|
+
export function registerField(meta) {
|
|
6
|
+
registry.set(meta.type, meta);
|
|
7
|
+
}
|
|
8
|
+
/** Get renderer metadata for a field type */
|
|
9
|
+
export function getFieldMeta(type) {
|
|
10
|
+
return registry.get(type);
|
|
11
|
+
}
|
|
12
|
+
/** Get the web component tag name for a field type */
|
|
13
|
+
export function getFieldTag(type) {
|
|
14
|
+
return registry.get(type)?.tagName ?? `zs-field-${type}`;
|
|
15
|
+
}
|
|
16
|
+
/** Get all registered field types */
|
|
17
|
+
export function getAllFields() {
|
|
18
|
+
return Array.from(registry.values());
|
|
19
|
+
}
|
|
20
|
+
/** Get fields by category */
|
|
21
|
+
export function getFieldsByCategory(category) {
|
|
22
|
+
return Array.from(registry.values()).filter(m => m.category === category);
|
|
23
|
+
}
|
|
24
|
+
// ─── Default Registrations ────────────────────────────────────────
|
|
25
|
+
const defaults = [
|
|
26
|
+
{ type: 'text', tagName: 'zs-field-text', label: 'Text', icon: 'text', category: 'basic' },
|
|
27
|
+
{ type: 'textarea', tagName: 'zs-field-textarea', label: 'Textarea', icon: 'textarea', category: 'basic' },
|
|
28
|
+
{ type: 'number', tagName: 'zs-field-number', label: 'Number', icon: 'number', category: 'basic' },
|
|
29
|
+
{ type: 'currency', tagName: 'zs-field-number', label: 'Currency', icon: 'currency', category: 'basic',
|
|
30
|
+
defaultProps: { isCurrency: true } },
|
|
31
|
+
{ type: 'percentage', tagName: 'zs-field-number', label: 'Percentage', icon: 'percentage', category: 'basic',
|
|
32
|
+
defaultProps: { isPercentage: true } },
|
|
33
|
+
{ type: 'date', tagName: 'zs-field-date', label: 'Date', icon: 'calendar', category: 'basic' },
|
|
34
|
+
{ type: 'time', tagName: 'zs-field-date', label: 'Time', icon: 'clock', category: 'basic',
|
|
35
|
+
defaultProps: { mode: 'time' } },
|
|
36
|
+
{ type: 'datetime', tagName: 'zs-field-date', label: 'Date & Time', icon: 'calendar-clock', category: 'basic',
|
|
37
|
+
defaultProps: { mode: 'datetime' } },
|
|
38
|
+
{ type: 'select', tagName: 'zs-field-select', label: 'Select', icon: 'dropdown', category: 'basic' },
|
|
39
|
+
{ type: 'multiselect', tagName: 'zs-field-select', label: 'Multi-Select', icon: 'multi-select', category: 'basic',
|
|
40
|
+
defaultProps: { multiple: true } },
|
|
41
|
+
{ type: 'radio', tagName: 'zs-field-checkbox', label: 'Radio', icon: 'radio', category: 'basic',
|
|
42
|
+
defaultProps: { mode: 'radio' } },
|
|
43
|
+
{ type: 'checkbox', tagName: 'zs-field-checkbox', label: 'Checkbox', icon: 'checkbox', category: 'basic' },
|
|
44
|
+
{ type: 'switch', tagName: 'zs-field-switch', label: 'Switch', icon: 'toggle', category: 'basic' },
|
|
45
|
+
{ type: 'file', tagName: 'zs-field-file', label: 'File Upload', icon: 'upload', category: 'media' },
|
|
46
|
+
{ type: 'image', tagName: 'zs-field-file', label: 'Image', icon: 'image', category: 'media',
|
|
47
|
+
defaultProps: { accept: 'image/*' } },
|
|
48
|
+
{ type: 'color', tagName: 'zs-field-text', label: 'Color Picker', icon: 'palette', category: 'advanced',
|
|
49
|
+
defaultProps: { inputType: 'color' } },
|
|
50
|
+
{ type: 'richtext', tagName: 'zs-field-richtext', label: 'Rich Text', icon: 'richtext', category: 'advanced' },
|
|
51
|
+
{ type: 'code', tagName: 'zs-field-code', label: 'Code Editor', icon: 'code', category: 'advanced' },
|
|
52
|
+
{ type: 'signature', tagName: 'zs-field-signature', label: 'Signature', icon: 'signature', category: 'advanced' },
|
|
53
|
+
{ type: 'email', tagName: 'zs-field-text', label: 'Email', icon: 'email', category: 'basic',
|
|
54
|
+
defaultProps: { inputType: 'email' },
|
|
55
|
+
defaultValidation: [{ type: 'email', message: 'Email invalido' }] },
|
|
56
|
+
{ type: 'url', tagName: 'zs-field-text', label: 'URL', icon: 'link', category: 'basic',
|
|
57
|
+
defaultProps: { inputType: 'url' },
|
|
58
|
+
defaultValidation: [{ type: 'url', message: 'URL invalida' }] },
|
|
59
|
+
{ type: 'password', tagName: 'zs-field-text', label: 'Password', icon: 'lock', category: 'basic',
|
|
60
|
+
defaultProps: { inputType: 'password' } },
|
|
61
|
+
{ type: 'phone', tagName: 'zs-field-text', label: 'Phone', icon: 'phone', category: 'basic',
|
|
62
|
+
defaultProps: { inputType: 'tel' } },
|
|
63
|
+
{ type: 'slider', tagName: 'zs-field-number', label: 'Slider', icon: 'slider', category: 'advanced',
|
|
64
|
+
defaultProps: { mode: 'slider' } },
|
|
65
|
+
{ type: 'rating', tagName: 'zs-field-number', label: 'Rating', icon: 'star', category: 'advanced',
|
|
66
|
+
defaultProps: { mode: 'rating' } },
|
|
67
|
+
{ type: 'tags', tagName: 'zs-field-select', label: 'Tags', icon: 'tags', category: 'advanced',
|
|
68
|
+
defaultProps: { mode: 'tags' } },
|
|
69
|
+
{ type: 'lookup', tagName: 'zs-field-lookup', label: 'Lookup', icon: 'search', category: 'data' },
|
|
70
|
+
{ type: 'datagrid', tagName: 'zs-field-datagrid', label: 'Data Grid', icon: 'table', category: 'data' },
|
|
71
|
+
{ type: 'report', tagName: 'zs-field-report', label: 'Report', icon: 'report', category: 'data' },
|
|
72
|
+
{ type: 'chart', tagName: 'zs-field-chart', label: 'Chart', icon: 'chart', category: 'data' },
|
|
73
|
+
{ type: 'html', tagName: 'zs-field-html', label: 'HTML', icon: 'html', category: 'layout' },
|
|
74
|
+
{ type: 'separator', tagName: 'zs-field-separator', label: 'Separator', icon: 'minus', category: 'layout' },
|
|
75
|
+
{ type: 'heading', tagName: 'zs-field-heading', label: 'Heading', icon: 'heading', category: 'layout' },
|
|
76
|
+
{ type: 'media', tagName: 'zs-field-media', label: 'Media', icon: 'play', category: 'media' },
|
|
77
|
+
{ type: 'address', tagName: 'zs-field-address', label: 'Address', icon: 'map-pin', category: 'advanced' },
|
|
78
|
+
{ type: 'custom', tagName: 'zs-field-custom', label: 'Custom', icon: 'puzzle', category: 'custom' },
|
|
79
|
+
// Modern suite
|
|
80
|
+
{ type: 'chips', tagName: 'zs-field-chips', label: 'Chips', icon: 'chips', category: 'advanced' },
|
|
81
|
+
{ type: 'treeview', tagName: 'zs-field-treeview', label: 'Tree View', icon: 'tree', category: 'data' },
|
|
82
|
+
// Extended suite
|
|
83
|
+
{ type: 'qr-scanner', tagName: 'zs-field-text', label: 'QR Scanner', icon: 'qr', category: 'advanced',
|
|
84
|
+
defaultProps: { inputType: 'text', placeholder: 'Escanear QR...' } },
|
|
85
|
+
{ type: 'barcode-scanner', tagName: 'zs-field-text', label: 'Barcode Scanner', icon: 'barcode', category: 'advanced',
|
|
86
|
+
defaultProps: { inputType: 'text', placeholder: 'Escanear codigo...' } },
|
|
87
|
+
];
|
|
88
|
+
for (const d of defaults) {
|
|
89
|
+
registerField(d);
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=field-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-registry.js","sourceRoot":"","sources":["../../src/registry/field-registry.ts"],"names":[],"mappings":"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"}
|