@plotinus/matrix-package-calculator
Version:
Calculator components for the Matrix framework - basic arithmetic operations with UI
66 lines (54 loc) • 2.07 kB
JavaScript
// Browser bundle for @matrix/package-calculator
import { componentSources } from './browser/component-sources.js';
import {
CalculatorPresentationElement
} from './presentation/index.js';
// Export everything needed for browser use
export {
componentSources,
CalculatorPresentationElement
};
// Auto-register function for convenience
export function registerCalculatorComponents(Matrix) {
if (!Matrix || !Matrix.BaseCommunicationComponent) {
throw new Error('Matrix framework not found');
}
// Register communication components from sources
const components = {
calculator: {
name: 'CalculatorComponent',
source: componentSources.calculatorCommunication,
tag: 'calculator'
}
};
Object.values(components).forEach(comp => {
try {
const ComponentClass = new Function('BaseCommunicationComponent',
comp.source + '\nreturn ' + comp.name
)(Matrix.BaseCommunicationComponent);
ComponentClass.dslTag = comp.tag;
ComponentClass.isMatrixComponent = true;
if (!window.MatrixComponents) {
window.MatrixComponents = {};
}
window.MatrixComponents[comp.name] = ComponentClass;
Matrix.register(ComponentClass);
console.log('Registered communication component:', comp.tag);
} catch (error) {
console.error('Failed to register component:', comp.name, error);
}
});
// Register presentation elements
if (!customElements.get('calculator-presentation')) {
customElements.define('calculator-presentation', CalculatorPresentationElement);
}
console.log('All calculator components registered');
}
// Make available on window for easy access
if (typeof window !== 'undefined') {
window.MatrixPackageCalculator = {
componentSources,
CalculatorPresentationElement,
registerCalculatorComponents
};
}