(
eGridDiv: HTMLElement,
providedOptions: GridOptions,
createUi: (context: Context) => void,
acceptChanges?: (context: Context) => void,
params?: GridParams
)
| 218 | // their own UI |
| 219 | export class GridCoreCreator { |
| 220 | public create( |
| 221 | eGridDiv: HTMLElement, |
| 222 | providedOptions: GridOptions, |
| 223 | createUi: (context: Context) => void, |
| 224 | acceptChanges?: (context: Context) => void, |
| 225 | params?: GridParams |
| 226 | ): GridApi { |
| 227 | let mergedGridOps: GridOptions = {}; |
| 228 | if (GlobalGridOptions.gridOptions) { |
| 229 | // Merge deep to avoid leaking changes to the global options |
| 230 | _mergeDeep(mergedGridOps, GlobalGridOptions.gridOptions, true, true); |
| 231 | // Shallow copy to ensure context reference is maintained |
| 232 | mergedGridOps = { ...mergedGridOps, ...providedOptions }; |
| 233 | } else { |
| 234 | mergedGridOps = providedOptions; |
| 235 | } |
| 236 | const gridOptions = getCoercedGridOptions(mergedGridOps); |
| 237 | |
| 238 | const gridId = gridOptions.gridId ?? String(nextGridId++); |
| 239 | |
| 240 | const registeredModules = this.getRegisteredModules(params, gridId); |
| 241 | |
| 242 | const beanClasses = this.createBeansList(gridOptions.rowModelType, registeredModules, gridId); |
| 243 | const providedBeanInstances = this.createProvidedBeans(eGridDiv, gridOptions, params); |
| 244 | |
| 245 | if (!beanClasses) { |
| 246 | // Detailed error message will have been printed by createBeansList |
| 247 | _errorOnce('Failed to create grid.'); |
| 248 | // Break typing so that the normal return type does not have to handle undefined. |
| 249 | return undefined as any; |
| 250 | } |
| 251 | |
| 252 | const contextParams: ContextParams = { |
| 253 | providedBeanInstances: providedBeanInstances, |
| 254 | beanClasses: beanClasses, |
| 255 | gridId: gridId, |
| 256 | beanInitComparator: gridBeanInitComparator, |
| 257 | beanDestroyComparator: gridBeanDestroyComparator, |
| 258 | derivedBeans: [createGridApi], |
| 259 | }; |
| 260 | |
| 261 | const context = new Context(contextParams); |
| 262 | this.registerModuleUserComponents(context, registeredModules); |
| 263 | this.registerControllers(context, registeredModules); |
| 264 | this.registerModuleApiFunctions(context, registeredModules); |
| 265 | |
| 266 | createUi(context); |
| 267 | |
| 268 | context.getBean('syncService').start(); |
| 269 | |
| 270 | if (acceptChanges) { |
| 271 | acceptChanges(context); |
| 272 | } |
| 273 | |
| 274 | return context.getBean('gridApi'); |
| 275 | } |
| 276 | |
| 277 | private registerControllers(context: Context, registeredModules: Module[]): void { |
no test coverage detected