@genesislcap/foundation-layout 14.96.1 → 14.98.0

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -277,8 +277,9 @@ This section concerns the behaviour of elements inside the layout. If you are us
277
277
 
278
278
  There are actions that the user can perform with items in the layout which will run the component lifecycle functions (`connectedCallback` and `disconnectedCallback`) at times when you don't want them to run:
279
279
  - When an item is dragged around the layout.
280
- - Potentially, when another item is removed from the layout
280
+ - Potentially, when another item is removed from the layout.
281
281
  - Potentially, when new items are added to the layout.
282
+ - When an item is maximised or minimised.
282
283
 
283
284
  For example, if you have a component with a loaded resource on the layout (such as a grid with a `grid-pro-genesis-datasource`) and you add a new item to the layout with the JavaScript API, then the component with the loaded resource will have to reload too. It is important that any such element accounts for this, including such requirements as caching data, or resizing correctly.
284
285
 
@@ -137,167 +137,47 @@
137
137
  },
138
138
  {
139
139
  "kind": "javascript-module",
140
- "path": "src/utils/constants.ts",
141
- "declarations": [
142
- {
143
- "kind": "variable",
144
- "name": "DEFAULT_RELOAD_BUFFER",
145
- "type": {
146
- "text": "number"
147
- },
148
- "default": "500",
149
- "description": "Default time in milliseconds for the layout to buffer calls to reloading\nthe layout while the declarative API is loading.\n\nDuring the first load of the layout, a loading spinner will be shown.",
150
- "privacy": "public"
151
- }
152
- ],
153
- "exports": [
154
- {
155
- "kind": "js",
156
- "name": "DEFAULT_RELOAD_BUFFER",
157
- "declaration": {
158
- "name": "DEFAULT_RELOAD_BUFFER",
159
- "module": "src/utils/constants.ts"
160
- }
161
- }
162
- ]
163
- },
164
- {
165
- "kind": "javascript-module",
166
- "path": "src/utils/error.ts",
167
- "declarations": [
168
- {
169
- "kind": "class",
170
- "description": "",
171
- "name": "LayoutUsageError",
172
- "superclass": {
173
- "name": "Error",
174
- "module": "src/utils/error.ts"
175
- }
176
- },
177
- {
178
- "kind": "class",
179
- "description": "",
180
- "name": "LayoutRegistrationError",
181
- "superclass": {
182
- "name": "Error",
183
- "module": "src/utils/error.ts"
184
- }
185
- }
186
- ],
187
- "exports": [
188
- {
189
- "kind": "js",
190
- "name": "LayoutUsageError",
191
- "declaration": {
192
- "name": "LayoutUsageError",
193
- "module": "src/utils/error.ts"
194
- }
195
- },
196
- {
197
- "kind": "js",
198
- "name": "LayoutRegistrationError",
199
- "declaration": {
200
- "name": "LayoutRegistrationError",
201
- "module": "src/utils/error.ts"
202
- }
203
- }
204
- ]
205
- },
206
- {
207
- "kind": "javascript-module",
208
- "path": "src/utils/events.ts",
209
- "declarations": [
210
- {
211
- "kind": "variable",
212
- "name": "LayoutEmitEvents",
213
- "type": {
214
- "text": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n}"
215
- },
216
- "default": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n}",
217
- "description": "Defines events that the layout system emits\n\n'firstLoaded' - emitted when the layout has finished loading the first time\nusing the declarative API after DEFAULT_RELOAD_BUFFER ms.\n<br/>\n'itemAdded' - emitted when an item is added to the layout'\n<br/>\n'itemRemoved' - emitted when an item is removed from the layout'\n<br/>\n'itemResized' - emitted when the user drags the divider to resize elements",
218
- "privacy": "public"
219
- },
220
- {
221
- "kind": "variable",
222
- "name": "LayoutReceiveEvents",
223
- "type": {
224
- "text": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}"
225
- },
226
- "default": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}",
227
- "description": "Defines events that the layout system listens for\n\n'changeTitle' - emit this from a contained item to update the title of the window that contains it.\n'autosave' - emit this from a contained item to hint to the layout system that it should autosave the layout. A contained item should do this if it has just changed some state it would like to persist. See LayoutComponentWithState.",
228
- "privacy": "public"
229
- }
230
- ],
231
- "exports": [
232
- {
233
- "kind": "js",
234
- "name": "LayoutEmitEvents",
235
- "declaration": {
236
- "name": "LayoutEmitEvents",
237
- "module": "src/utils/events.ts"
238
- }
239
- },
240
- {
241
- "kind": "js",
242
- "name": "LayoutReceiveEvents",
243
- "declaration": {
244
- "name": "LayoutReceiveEvents",
245
- "module": "src/utils/events.ts"
246
- }
247
- }
248
- ]
249
- },
250
- {
251
- "kind": "javascript-module",
252
- "path": "src/utils/index.ts",
140
+ "path": "src/main/index.ts",
253
141
  "declarations": [],
254
142
  "exports": [
255
143
  {
256
144
  "kind": "js",
257
- "name": "*",
258
- "declaration": {
259
- "name": "*",
260
- "package": "./constants"
261
- }
262
- },
263
- {
264
- "kind": "js",
265
- "name": "*",
145
+ "name": "FoundationLayoutItem",
266
146
  "declaration": {
267
- "name": "*",
268
- "package": "./error"
147
+ "name": "FoundationLayoutItem",
148
+ "module": "./layout-item"
269
149
  }
270
150
  },
271
151
  {
272
152
  "kind": "js",
273
- "name": "*",
153
+ "name": "FoundationLayoutRegion",
274
154
  "declaration": {
275
- "name": "*",
276
- "package": "./events"
155
+ "name": "FoundationLayoutRegion",
156
+ "module": "./layout-region"
277
157
  }
278
158
  },
279
159
  {
280
160
  "kind": "js",
281
- "name": "*",
161
+ "name": "FoundationLayout",
282
162
  "declaration": {
283
- "name": "*",
284
- "package": "./misc"
163
+ "name": "FoundationLayout",
164
+ "module": "./layout-main"
285
165
  }
286
166
  },
287
167
  {
288
168
  "kind": "js",
289
- "name": "*",
169
+ "name": "layoutStyles",
290
170
  "declaration": {
291
- "name": "*",
292
- "package": "./templates"
171
+ "name": "layoutStyles",
172
+ "module": "./layout-main"
293
173
  }
294
174
  },
295
175
  {
296
176
  "kind": "js",
297
- "name": "*",
177
+ "name": "layoutTemplate",
298
178
  "declaration": {
299
- "name": "*",
300
- "package": "./types"
179
+ "name": "layoutTemplate",
180
+ "module": "./layout-main"
301
181
  }
302
182
  },
303
183
  {
@@ -305,251 +185,40 @@
305
185
  "name": "*",
306
186
  "declaration": {
307
187
  "name": "*",
308
- "package": "./error"
309
- }
310
- }
311
- ]
312
- },
313
- {
314
- "kind": "javascript-module",
315
- "path": "src/utils/logger.ts",
316
- "declarations": [
317
- {
318
- "kind": "variable",
319
- "name": "logger"
320
- }
321
- ],
322
- "exports": [
323
- {
324
- "kind": "js",
325
- "name": "logger",
326
- "declaration": {
327
- "name": "logger",
328
- "module": "src/utils/logger.ts"
188
+ "package": "./layout-components"
329
189
  }
330
190
  }
331
191
  ]
332
192
  },
333
193
  {
334
194
  "kind": "javascript-module",
335
- "path": "src/utils/misc.ts",
336
- "declarations": [],
337
- "exports": []
338
- },
339
- {
340
- "kind": "javascript-module",
341
- "path": "src/utils/templates.ts",
342
- "declarations": [],
343
- "exports": []
344
- },
345
- {
346
- "kind": "javascript-module",
347
- "path": "src/utils/types.ts",
348
- "declarations": [],
349
- "exports": []
350
- },
351
- {
352
- "kind": "javascript-module",
353
- "path": "src/styles/constants.ts",
195
+ "path": "src/main/layout-components.ts",
354
196
  "declarations": [
355
197
  {
356
198
  "kind": "variable",
357
- "name": "glVisualConfig",
358
- "type": {
359
- "text": "Omit<LayoutConfig, 'root'>"
360
- },
361
- "default": "{\n dimensions: {\n headerHeight: 38,\n borderWidth: 12,\n },\n header: {\n maximise: 'maximise',\n minimise: 'minimise',\n popout: false,\n },\n}"
362
- },
363
- {
364
- "kind": "variable",
365
- "name": "LAYOUT_ICONS",
199
+ "name": "foundationLayoutComponents",
366
200
  "type": {
367
- "text": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n}"
201
+ "text": "object"
368
202
  },
369
- "default": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n}",
370
- "description": "A collection of SVG icons in base64 format.",
203
+ "default": "{\n foundationLayout,\n foundationLayoutRegion,\n foundationLayoutItem,\n register(container?: Container, ...rest: any[]) {\n if (!container) {\n // preserve backward compatibility with code that loops through\n // the values of this object and calls them as funcs with no args\n return;\n }\n for (const key in this) {\n if (key === 'register') {\n continue;\n }\n this[key]().register(container, ...rest);\n }\n },\n}",
204
+ "description": "Registration object to register the layout with your design system.",
371
205
  "privacy": "public"
372
206
  }
373
207
  ],
374
208
  "exports": [
375
209
  {
376
210
  "kind": "js",
377
- "name": "glVisualConfig",
378
- "declaration": {
379
- "name": "glVisualConfig",
380
- "module": "src/styles/constants.ts"
381
- }
382
- },
383
- {
384
- "kind": "js",
385
- "name": "LAYOUT_ICONS",
211
+ "name": "foundationLayoutComponents",
386
212
  "declaration": {
387
- "name": "LAYOUT_ICONS",
388
- "module": "src/styles/constants.ts"
213
+ "name": "foundationLayoutComponents",
214
+ "module": "src/main/layout-components.ts"
389
215
  }
390
216
  }
391
217
  ]
392
218
  },
393
219
  {
394
220
  "kind": "javascript-module",
395
- "path": "src/styles/dragging.styles.ts",
396
- "declarations": [
397
- {
398
- "kind": "variable",
399
- "name": "globalDraggingStyles",
400
- "default": "`\n .lm_dragProxy .lm_content {\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.9);\n }\n .lm_dropTargetIndicator {\n box-shadow: inset 0 0 30px #000000;\n outline: 1px dashed #cccccc;\n transition: all 200ms ease;\n }\n .lm_dropTargetIndicator .lm_inner {\n background: var(${neutralFillStealthRest.cssCustomProperty});\n opacity: 0.2;\n }\n .lm_dragProxy.lm_left .lm_header,\n .lm_dragProxy.lm_right .lm_header {\n width: 20px;\n float: left;\n vertical-align: top;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_dragProxy.lm_right .lm_header .lm_tabs {\n transform-origin: left top;\n top: 0;\n width: 1000px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_controls,\n .lm_dragProxy.lm_right .lm_header .lm_controls {\n bottom: 0;\n }\n .lm_dragProxy.lm_left .lm_items,\n .lm_dragProxy.lm_right .lm_items {\n float: left;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs {\n transform: rotate(-90deg) scaleX(-1);\n left: 0;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs .lm_tab {\n transform: scaleX(-1);\n margin-top: 1px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabdropdown_list {\n top: initial;\n right: initial;\n left: 20px;\n }\n .lm_dragProxy.lm_right .lm_content {\n float: left;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabs {\n transform: rotate(90deg) scaleX(1);\n left: 100%;\n margin-left: 0;\n }\n .lm_dragProxy.lm_right .lm_header .lm_controls {\n left: 3px;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabdropdown_list {\n top: initial;\n right: 20px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tab {\n margin-top: 0;\n border-top: none;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_controls,\n .lm_stack.lm_bottom .lm_header .lm_controls {\n top: 3px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_bottom .lm_header .lm_tabdropdown_list {\n top: initial;\n bottom: 20px;\n }\n .lm_dragProxy {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 30;\n }\n .lm_dragProxy .lm_header {\n background: transparent;\n }\n .lm_dragProxy .lm_content {\n border-top: none;\n overflow: hidden;\n }\n .lm_dropTargetIndicator {\n display: none;\n position: absolute;\n z-index: 20;\n }\n .lm_dropTargetIndicator .lm_inner {\n width: 100%;\n height: 100%;\n position: relative;\n top: 0;\n left: 0;\n }\n .lm_transition_indicator {\n display: none;\n width: 20px;\n height: 20px;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 20;\n }\n`",
401
- "description": "This is defined as a string rather than a css template\nbecause it is applied to a CSSStyleSheet object rather than\nused as a FAST template"
402
- }
403
- ],
404
- "exports": [
405
- {
406
- "kind": "js",
407
- "name": "globalDraggingStyles",
408
- "declaration": {
409
- "name": "globalDraggingStyles",
410
- "module": "src/styles/dragging.styles.ts"
411
- }
412
- }
413
- ]
414
- },
415
- {
416
- "kind": "javascript-module",
417
- "path": "src/styles/index.ts",
418
- "declarations": [],
419
- "exports": [
420
- {
421
- "kind": "js",
422
- "name": "*",
423
- "declaration": {
424
- "name": "*",
425
- "package": "./constants"
426
- }
427
- },
428
- {
429
- "kind": "js",
430
- "name": "*",
431
- "declaration": {
432
- "name": "*",
433
- "package": "./dragging.styles"
434
- }
435
- },
436
- {
437
- "kind": "js",
438
- "name": "*",
439
- "declaration": {
440
- "name": "*",
441
- "package": "./layout.styles"
442
- }
443
- }
444
- ]
445
- },
446
- {
447
- "kind": "javascript-module",
448
- "path": "src/styles/layout.styles.ts",
449
- "declarations": [
450
- {
451
- "kind": "variable",
452
- "name": "layoutStyles",
453
- "default": "css`\n ${containerStyles}\n ${loadingSpinnerStyles}\n\n .lm_goldenlayout {\n padding: 1px;\n background: ${neutralLayer1};\n border-radius: calc(${controlCornerRadius} * 1.5px);\n }\n\n .lm_stack.lm_item {\n background-color: ${neutralLayer4};\n border-radius: calc(${controlCornerRadius} * 1.5px);\n }\n .lm_maximised .lm_header {\n background-color: ${neutralLayer4};\n border-radius: calc(${controlCornerRadius} * 1.5px);\n position: unset;\n }\n\n .lm_maximised .lm_header .lm_tabs {\n z-index: 3;\n }\n\n .lm_content {\n background-color: ${neutralLayer3};\n border-radius: calc(${controlCornerRadius} * 1.5px);\n border: 1px solid;\n border-color: #2e3339;\n box-sizing: border-box;\n }\n\n .lm-header {\n z-index: 1;\n }\n .lm_header .lm_tabs {\n padding: 0 16px;\n }\n\n .lm_stack > .lm_items {\n z-index: 2;\n box-shadow: 0px -1px 15px rgba(0, 0, 0, 0.35);\n }\n\n .lm_header .lm_tab.lm_active.lm_focused {\n background-color: ${neutralLayer3};\n }\n .lm_header .lm_tab.lm_active {\n background-color: ${neutralLayer3};\n border: 1px solid;\n border-color: #2e3339;\n border-bottom: 0;\n color: ${accentFillRest};\n }\n\n .lm_header .lm_tab {\n align-items: center;\n background-color: ${neutralLayer4};\n border: 1px solid;\n border-bottom-color: #2e3339;\n border-bottom: 0px solid;\n border-color: rgba(0, 0, 0, 0.35);\n border-radius: calc(${controlCornerRadius} * 1.5px) calc(${controlCornerRadius} * 1.5px) 0 0;\n box-shadow: 1px -1px 2px rgba(0, 0, 0, 0.35);\n color: rgba(255, 255, 255, 0.3);\n display: flex;\n font-family: inherit;\n font-size: 13px;\n font-weight: 700;\n height: 30px;\n margin-right: 2px;\n margin-top: 3px;\n padding: 2px 16px;\n }\n\n .lm_header .lm_tab:not(.lm_active):hover {\n background-color: rgba(255, 255, 255, 0.1);\n color: #f1f1f1;\n }\n\n .lm_header .lm_controls {\n top: 4px;\n display: flex;\n }\n .lm_header .lm_controls > * {\n width: 30px;\n height: 30px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: 16px;\n background-color: rgba(255, 255, 255, 0.03);\n border-radius: calc(${controlCornerRadius} * 1.5px);\n margin-right: 4px;\n top: 3px;\n opacity: 1;\n }\n .lm_header .lm_controls > *:hover {\n background-color: rgba(255, 255, 255, 0.1);\n cursor: pointer;\n }\n\n .lm_controls .lm_maximise {\n background-image: url('${LAYOUT_ICONS.maximiseSVG}');\n }\n .lm_maximised .lm_controls .lm_maximise {\n background-image: url('${LAYOUT_ICONS.minimiseSVG}');\n }\n .lm_controls .lm_close {\n background-image: url('${LAYOUT_ICONS.closeSVG}');\n }\n .lm_header .lm_tab .lm_close_tab {\n background-image: url('${LAYOUT_ICONS.closeSVG}');\n background-size: 10px;\n background-repeat: no-repeat;\n margin-left: 12px;\n position: relative;\n top: 0;\n right: 0;\n }\n\n .lm_header .lm_tab.lm_active {\n padding: 4px 25px 3px 10px;\n }\n\n .lm_header .lm_tab:not(.lm_active) .lm_title {\n color: ${accentFillRest};\n opacity: 0.7;\n }\n\n .lm_header .lm_controls .lm_tabdropdown::before {\n content: none;\n }\n .lm_header .lm_controls .lm_tabdropdown {\n background-image: url('${LAYOUT_ICONS.tabDropdownSVG}');\n }\n .lm_header .lm_tabdropdown_list {\n top: 38px;\n right: 108px;\n background-color: ${neutralLayer3};\n border: 1px solid;\n border-color: #2e3339;\n border-radius: calc(${controlCornerRadius} * 1.5px);\n box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.35);\n }\n .lm_header .lm_tabdropdown_list > .lm_tab {\n box-shadow: none;\n padding: 0 16px;\n white-space: nowrap;\n background-color: transparent;\n color: #c9c9c9;\n height: 36px;\n border-radius: 0;\n overflow: visible;\n text-overflow: normal;\n }\n .lm_header .lm_tabdropdown_list > .lm_tab:last-child {\n border-bottom: 0;\n }\n\n /* gl base styles start */\n .lm_root {\n position: relative;\n }\n .lm_row > .lm_item {\n float: left;\n }\n .lm_content {\n overflow: hidden;\n position: relative;\n }\n .lm_dragging,\n .lm_dragging * {\n cursor: move !important;\n user-select: none;\n }\n .lm_maximised {\n left: 0;\n padding: 1px;\n position: absolute;\n top: 0;\n z-index: 40;\n }\n .lm_maximise_placeholder {\n display: none;\n }\n .lm_splitter {\n position: relative;\n z-index: 20;\n }\n .lm_splitter:hover,\n .lm_splitter.lm_dragging {\n background: ${accentFillRest};\n border-radius: calc(${controlCornerRadius} * 4px);\n }\n .lm_splitter.lm_vertical .lm_drag_handle {\n width: 100%;\n height: 15px;\n position: absolute;\n top: -5px;\n cursor: ns-resize;\n }\n .lm_splitter.lm_horizontal {\n float: left;\n height: 100%;\n }\n .lm_splitter.lm_horizontal .lm_drag_handle {\n width: 15px;\n height: 100%;\n position: absolute;\n left: -5px;\n cursor: ew-resize;\n }\n .lm_header {\n overflow: visible;\n position: relative;\n z-index: 1;\n }\n .lm_header [class^='lm_'] {\n box-sizing: content-box !important;\n }\n .lm_header .lm_controls {\n position: absolute;\n right: 3px;\n }\n .lm_header .lm_controls > li {\n cursor: pointer;\n float: left;\n width: 18px;\n height: 18px;\n text-align: center;\n }\n .lm_header ul {\n margin: 0;\n padding: 0;\n list-style-type: none;\n }\n .lm_header .lm_tabs {\n position: absolute;\n }\n .lm_header .lm_tab {\n cursor: pointer;\n float: left;\n margin-top: 1px;\n padding: 3px 25px 3px 10px;\n position: relative;\n }\n .lm_header .lm_tab i {\n width: 2px;\n height: 19px;\n position: absolute;\n }\n .lm_header .lm_tab i.lm_left {\n top: 0;\n left: -2px;\n }\n .lm_header .lm_tab i.lm_right {\n top: 0;\n right: -2px;\n }\n .lm_header .lm_tab .lm_title {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .lm_header .lm_tab .lm_title:only-child {\n padding-left: 10px;\n }\n .lm_header .lm_tab .lm_close_tab {\n width: 14px;\n height: 14px;\n position: absolute;\n top: 11px;\n right: 0;\n text-align: center;\n }\n .lm_stack.lm_left .lm_header,\n .lm_stack.lm_right .lm_header {\n height: 100%;\n }\n .lm_dragProxy.lm_left .lm_header,\n .lm_dragProxy.lm_right .lm_header,\n .lm_stack.lm_left .lm_header,\n .lm_stack.lm_right .lm_header {\n width: 20px;\n float: left;\n vertical-align: top;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_dragProxy.lm_right .lm_header .lm_tabs,\n .lm_stack.lm_left .lm_header .lm_tabs,\n .lm_stack.lm_right .lm_header .lm_tabs {\n transform-origin: left top;\n top: 0;\n width: 1000px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_controls,\n .lm_dragProxy.lm_right .lm_header .lm_controls,\n .lm_stack.lm_left .lm_header .lm_controls,\n .lm_stack.lm_right .lm_header .lm_controls {\n bottom: 0;\n }\n .lm_dragProxy.lm_left .lm_items,\n .lm_dragProxy.lm_right .lm_items,\n .lm_stack.lm_left .lm_items,\n .lm_stack.lm_right .lm_items {\n float: left;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_stack.lm_left .lm_header .lm_tabs {\n transform: rotate(-90deg) scaleX(-1);\n left: 0;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs .lm_tab,\n .lm_stack.lm_left .lm_header .lm_tabs .lm_tab {\n transform: scaleX(-1);\n margin-top: 1px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_left .lm_header .lm_tabdropdown_list {\n top: initial;\n right: initial;\n left: 20px;\n }\n .lm_dragProxy.lm_right .lm_content {\n float: left;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabs,\n .lm_stack.lm_right .lm_header .lm_tabs {\n transform: rotate(90deg) scaleX(1);\n left: 100%;\n margin-left: 0;\n }\n .lm_dragProxy.lm_right .lm_header .lm_controls,\n .lm_stack.lm_right .lm_header .lm_controls {\n left: 3px;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_right .lm_header .lm_tabdropdown_list {\n top: initial;\n right: 20px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tab,\n .lm_stack.lm_bottom .lm_header .lm_tab {\n margin-top: 0;\n border-top: none;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_controls,\n .lm_stack.lm_bottom .lm_header .lm_controls {\n top: 3px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_bottom .lm_header .lm_tabdropdown_list {\n top: initial;\n bottom: 20px;\n }\n .lm_drop_tab_placeholder {\n float: left;\n width: 100px;\n height: 10px;\n visibility: hidden;\n }\n .lm_header .lm_tabdropdown_list {\n position: absolute;\n top: 20px;\n right: 0;\n z-index: 5;\n overflow: hidden;\n }\n .lm_header .lm_tabdropdown_list .lm_tab {\n clear: both;\n padding-right: 10px;\n margin: 0;\n }\n .lm_header .lm_tabdropdown_list .lm_tab .lm_title {\n width: 100px;\n }\n .lm_header .lm_tabdropdown_list .lm_close_tab {\n display: none !important;\n }\n .lm_dragProxy {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 30;\n }\n .lm_dragProxy .lm_header {\n background: transparent;\n }\n .lm_dragProxy .lm_content {\n border-top: none;\n overflow: hidden;\n }\n .lm_dropTargetIndicator {\n display: none;\n position: absolute;\n z-index: 20;\n }\n .lm_dropTargetIndicator .lm_inner {\n width: 100%;\n height: 100%;\n position: relative;\n top: 0;\n left: 0;\n }\n .lm_transition_indicator {\n display: none;\n width: 20px;\n height: 20px;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 20;\n }\n .lm_popin {\n width: 20px;\n height: 20px;\n position: absolute;\n bottom: 0;\n right: 0;\n z-index: 9999;\n }\n .lm_popin > * {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n }\n .lm_popin > .lm_bg {\n z-index: 10;\n }\n .lm_popin > .lm_icon {\n z-index: 20;\n } /*# sourceMappingURL=goldenlayout-base.css.map */\n`",
454
- "description": "`ElementStyles` which defines the css for FoundationLayout.",
455
- "privacy": "public"
456
- }
457
- ],
458
- "exports": [
459
- {
460
- "kind": "js",
461
- "name": "layoutStyles",
462
- "declaration": {
463
- "name": "layoutStyles",
464
- "module": "src/styles/layout.styles.ts"
465
- }
466
- }
467
- ]
468
- },
469
- {
470
- "kind": "javascript-module",
471
- "path": "src/main/index.ts",
472
- "declarations": [],
473
- "exports": [
474
- {
475
- "kind": "js",
476
- "name": "FoundationLayoutItem",
477
- "declaration": {
478
- "name": "FoundationLayoutItem",
479
- "module": "./layout-item"
480
- }
481
- },
482
- {
483
- "kind": "js",
484
- "name": "FoundationLayoutRegion",
485
- "declaration": {
486
- "name": "FoundationLayoutRegion",
487
- "module": "./layout-region"
488
- }
489
- },
490
- {
491
- "kind": "js",
492
- "name": "FoundationLayout",
493
- "declaration": {
494
- "name": "FoundationLayout",
495
- "module": "./layout-main"
496
- }
497
- },
498
- {
499
- "kind": "js",
500
- "name": "layoutStyles",
501
- "declaration": {
502
- "name": "layoutStyles",
503
- "module": "./layout-main"
504
- }
505
- },
506
- {
507
- "kind": "js",
508
- "name": "layoutTemplate",
509
- "declaration": {
510
- "name": "layoutTemplate",
511
- "module": "./layout-main"
512
- }
513
- },
514
- {
515
- "kind": "js",
516
- "name": "*",
517
- "declaration": {
518
- "name": "*",
519
- "package": "./layout-components"
520
- }
521
- }
522
- ]
523
- },
524
- {
525
- "kind": "javascript-module",
526
- "path": "src/main/layout-components.ts",
527
- "declarations": [
528
- {
529
- "kind": "variable",
530
- "name": "foundationLayoutComponents",
531
- "type": {
532
- "text": "object"
533
- },
534
- "default": "{\n foundationLayout,\n foundationLayoutRegion,\n foundationLayoutItem,\n register(container?: Container, ...rest: any[]) {\n if (!container) {\n // preserve backward compatibility with code that loops through\n // the values of this object and calls them as funcs with no args\n return;\n }\n for (const key in this) {\n if (key === 'register') {\n continue;\n }\n this[key]().register(container, ...rest);\n }\n },\n}",
535
- "description": "Registration object to register the layout with your design system.",
536
- "privacy": "public"
537
- }
538
- ],
539
- "exports": [
540
- {
541
- "kind": "js",
542
- "name": "foundationLayoutComponents",
543
- "declaration": {
544
- "name": "foundationLayoutComponents",
545
- "module": "src/main/layout-components.ts"
546
- }
547
- }
548
- ]
549
- },
550
- {
551
- "kind": "javascript-module",
552
- "path": "src/main/layout-item.ts",
221
+ "path": "src/main/layout-item.ts",
553
222
  "declarations": [
554
223
  {
555
224
  "kind": "class",
@@ -953,6 +622,14 @@
953
622
  "text": "'placeholder' | 'error'"
954
623
  },
955
624
  "description": "what to do if the layout contains items that are not currently registered with the layout system. Defaults to 'error' which will throw an error. If set to 'placeholder' then any missing items will be replaced with a placeholder element. You can control the text of the placeholder element with {@link FoundationLayout.missingItemPlaceholder}.\n * "
625
+ },
626
+ {
627
+ "name": "disableCache",
628
+ "default": "false",
629
+ "type": {
630
+ "text": "boolean"
631
+ },
632
+ "description": "if set to true then the layout will give you a new instance of every item, even if it has a currently cached item to use. Using this will not stop you from saving and loading state via the {@link LayoutComponentWithState}interface. Defaults to false.\n * "
956
633
  }
957
634
  ],
958
635
  "privacy": "public"
@@ -1016,6 +693,25 @@
1016
693
  },
1017
694
  "description": "The `LifecycleMixin` can use the lifecycleUpdateToken to determine if it needs to gate\nlifecycle methods from running when other items have been added or deleted.\nThis key is updated every time one of these actions are performed, so you can check if the key has changed and know you potentially need to gate some of your lifecycle functionality.\nThis method should be called whenever we are about to perform an action which will cause a lifecycle update, should as adding or removing an item from the layout"
1018
695
  },
696
+ {
697
+ "kind": "method",
698
+ "name": "removeConfigCacheInformation",
699
+ "privacy": "private",
700
+ "return": {
701
+ "type": {
702
+ "text": "LayoutConfig"
703
+ }
704
+ },
705
+ "parameters": [
706
+ {
707
+ "name": "config",
708
+ "type": {
709
+ "text": "LayoutConfig"
710
+ }
711
+ }
712
+ ],
713
+ "description": "Recursively remove the instance key from the config which will mean that when the config is loaded it will instantiate a new instance for every item, even if they're in the cache."
714
+ },
1019
715
  {
1020
716
  "kind": "field",
1021
717
  "name": "_presentation",
@@ -1367,6 +1063,337 @@
1367
1063
  }
1368
1064
  }
1369
1065
  ]
1066
+ },
1067
+ {
1068
+ "kind": "javascript-module",
1069
+ "path": "src/styles/constants.ts",
1070
+ "declarations": [
1071
+ {
1072
+ "kind": "variable",
1073
+ "name": "glVisualConfig",
1074
+ "type": {
1075
+ "text": "Omit<LayoutConfig, 'root'>"
1076
+ },
1077
+ "default": "{\n dimensions: {\n headerHeight: 38,\n borderWidth: 12,\n },\n header: {\n maximise: 'maximise',\n minimise: 'minimise',\n popout: false,\n },\n}"
1078
+ },
1079
+ {
1080
+ "kind": "variable",
1081
+ "name": "LAYOUT_ICONS",
1082
+ "type": {
1083
+ "text": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n}"
1084
+ },
1085
+ "default": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n}",
1086
+ "description": "A collection of SVG icons in base64 format.",
1087
+ "privacy": "public"
1088
+ }
1089
+ ],
1090
+ "exports": [
1091
+ {
1092
+ "kind": "js",
1093
+ "name": "glVisualConfig",
1094
+ "declaration": {
1095
+ "name": "glVisualConfig",
1096
+ "module": "src/styles/constants.ts"
1097
+ }
1098
+ },
1099
+ {
1100
+ "kind": "js",
1101
+ "name": "LAYOUT_ICONS",
1102
+ "declaration": {
1103
+ "name": "LAYOUT_ICONS",
1104
+ "module": "src/styles/constants.ts"
1105
+ }
1106
+ }
1107
+ ]
1108
+ },
1109
+ {
1110
+ "kind": "javascript-module",
1111
+ "path": "src/styles/dragging.styles.ts",
1112
+ "declarations": [
1113
+ {
1114
+ "kind": "variable",
1115
+ "name": "globalDraggingStyles",
1116
+ "default": "`\n .lm_dragProxy .lm_content {\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.9);\n }\n .lm_dropTargetIndicator {\n box-shadow: inset 0 0 30px #000000;\n outline: 1px dashed #cccccc;\n transition: all 200ms ease;\n }\n .lm_dropTargetIndicator .lm_inner {\n background: var(${neutralFillStealthRest.cssCustomProperty});\n opacity: 0.2;\n }\n .lm_dragProxy.lm_left .lm_header,\n .lm_dragProxy.lm_right .lm_header {\n width: 20px;\n float: left;\n vertical-align: top;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_dragProxy.lm_right .lm_header .lm_tabs {\n transform-origin: left top;\n top: 0;\n width: 1000px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_controls,\n .lm_dragProxy.lm_right .lm_header .lm_controls {\n bottom: 0;\n }\n .lm_dragProxy.lm_left .lm_items,\n .lm_dragProxy.lm_right .lm_items {\n float: left;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs {\n transform: rotate(-90deg) scaleX(-1);\n left: 0;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs .lm_tab {\n transform: scaleX(-1);\n margin-top: 1px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabdropdown_list {\n top: initial;\n right: initial;\n left: 20px;\n }\n .lm_dragProxy.lm_right .lm_content {\n float: left;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabs {\n transform: rotate(90deg) scaleX(1);\n left: 100%;\n margin-left: 0;\n }\n .lm_dragProxy.lm_right .lm_header .lm_controls {\n left: 3px;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabdropdown_list {\n top: initial;\n right: 20px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tab {\n margin-top: 0;\n border-top: none;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_controls,\n .lm_stack.lm_bottom .lm_header .lm_controls {\n top: 3px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_bottom .lm_header .lm_tabdropdown_list {\n top: initial;\n bottom: 20px;\n }\n .lm_dragProxy {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 30;\n }\n .lm_dragProxy .lm_header {\n background: transparent;\n }\n .lm_dragProxy .lm_content {\n border-top: none;\n overflow: hidden;\n }\n .lm_dropTargetIndicator {\n display: none;\n position: absolute;\n z-index: 20;\n }\n .lm_dropTargetIndicator .lm_inner {\n width: 100%;\n height: 100%;\n position: relative;\n top: 0;\n left: 0;\n }\n .lm_transition_indicator {\n display: none;\n width: 20px;\n height: 20px;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 20;\n }\n`",
1117
+ "description": "This is defined as a string rather than a css template\nbecause it is applied to a CSSStyleSheet object rather than\nused as a FAST template"
1118
+ }
1119
+ ],
1120
+ "exports": [
1121
+ {
1122
+ "kind": "js",
1123
+ "name": "globalDraggingStyles",
1124
+ "declaration": {
1125
+ "name": "globalDraggingStyles",
1126
+ "module": "src/styles/dragging.styles.ts"
1127
+ }
1128
+ }
1129
+ ]
1130
+ },
1131
+ {
1132
+ "kind": "javascript-module",
1133
+ "path": "src/styles/index.ts",
1134
+ "declarations": [],
1135
+ "exports": [
1136
+ {
1137
+ "kind": "js",
1138
+ "name": "*",
1139
+ "declaration": {
1140
+ "name": "*",
1141
+ "package": "./constants"
1142
+ }
1143
+ },
1144
+ {
1145
+ "kind": "js",
1146
+ "name": "*",
1147
+ "declaration": {
1148
+ "name": "*",
1149
+ "package": "./dragging.styles"
1150
+ }
1151
+ },
1152
+ {
1153
+ "kind": "js",
1154
+ "name": "*",
1155
+ "declaration": {
1156
+ "name": "*",
1157
+ "package": "./layout.styles"
1158
+ }
1159
+ }
1160
+ ]
1161
+ },
1162
+ {
1163
+ "kind": "javascript-module",
1164
+ "path": "src/styles/layout.styles.ts",
1165
+ "declarations": [
1166
+ {
1167
+ "kind": "variable",
1168
+ "name": "layoutStyles",
1169
+ "default": "css`\n ${containerStyles}\n ${loadingSpinnerStyles}\n\n .lm_goldenlayout {\n padding: 1px;\n background: ${neutralLayer1};\n border-radius: calc(${controlCornerRadius} * 1.5px);\n }\n\n .lm_stack.lm_item {\n background-color: ${neutralLayer4};\n border-radius: calc(${controlCornerRadius} * 1.5px);\n }\n .lm_maximised .lm_header {\n background-color: ${neutralLayer4};\n border-radius: calc(${controlCornerRadius} * 1.5px);\n position: unset;\n }\n\n .lm_maximised .lm_header .lm_tabs {\n z-index: 3;\n }\n\n .lm_content {\n background-color: ${neutralLayer3};\n border-radius: calc(${controlCornerRadius} * 1.5px);\n border: 1px solid;\n border-color: #2e3339;\n box-sizing: border-box;\n }\n\n .lm-header {\n z-index: 1;\n }\n .lm_header .lm_tabs {\n padding: 0 16px;\n }\n\n .lm_stack > .lm_items {\n z-index: 2;\n box-shadow: 0px -1px 15px rgba(0, 0, 0, 0.35);\n }\n\n .lm_header .lm_tab.lm_active.lm_focused {\n background-color: ${neutralLayer3};\n }\n .lm_header .lm_tab.lm_active {\n background-color: ${neutralLayer3};\n border: 1px solid;\n border-color: #2e3339;\n border-bottom: 0;\n color: ${accentFillRest};\n }\n\n .lm_header .lm_tab {\n align-items: center;\n background-color: ${neutralLayer4};\n border: 1px solid;\n border-bottom-color: #2e3339;\n border-bottom: 0px solid;\n border-color: rgba(0, 0, 0, 0.35);\n border-radius: calc(${controlCornerRadius} * 1.5px) calc(${controlCornerRadius} * 1.5px) 0 0;\n box-shadow: 1px -1px 2px rgba(0, 0, 0, 0.35);\n color: rgba(255, 255, 255, 0.3);\n display: flex;\n font-family: inherit;\n font-size: 13px;\n font-weight: 700;\n height: 30px;\n margin-right: 2px;\n margin-top: 3px;\n padding: 2px 16px;\n }\n\n .lm_header .lm_tab:not(.lm_active):hover {\n background-color: rgba(255, 255, 255, 0.1);\n color: #f1f1f1;\n }\n\n .lm_header .lm_controls {\n top: 4px;\n display: flex;\n }\n .lm_header .lm_controls > * {\n width: 30px;\n height: 30px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: 16px;\n background-color: rgba(255, 255, 255, 0.03);\n border-radius: calc(${controlCornerRadius} * 1.5px);\n margin-right: 4px;\n top: 3px;\n opacity: 1;\n }\n .lm_header .lm_controls > *:hover {\n background-color: rgba(255, 255, 255, 0.1);\n cursor: pointer;\n }\n\n .lm_controls .lm_maximise {\n background-image: url('${LAYOUT_ICONS.maximiseSVG}');\n }\n .lm_maximised .lm_controls .lm_maximise {\n background-image: url('${LAYOUT_ICONS.minimiseSVG}');\n }\n .lm_controls .lm_close {\n background-image: url('${LAYOUT_ICONS.closeSVG}');\n }\n .lm_header .lm_tab .lm_close_tab {\n background-image: url('${LAYOUT_ICONS.closeSVG}');\n background-size: 10px;\n background-repeat: no-repeat;\n margin-left: 12px;\n position: relative;\n top: 0;\n right: 0;\n }\n\n .lm_header .lm_tab.lm_active {\n padding: 4px 25px 3px 10px;\n }\n\n .lm_header .lm_tab:not(.lm_active) .lm_title {\n color: ${accentFillRest};\n opacity: 0.7;\n }\n\n .lm_header .lm_controls .lm_tabdropdown::before {\n content: none;\n }\n .lm_header .lm_controls .lm_tabdropdown {\n background-image: url('${LAYOUT_ICONS.tabDropdownSVG}');\n }\n .lm_header .lm_tabdropdown_list {\n top: 38px;\n right: 108px;\n background-color: ${neutralLayer3};\n border: 1px solid;\n border-color: #2e3339;\n border-radius: calc(${controlCornerRadius} * 1.5px);\n box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.35);\n }\n .lm_header .lm_tabdropdown_list > .lm_tab {\n box-shadow: none;\n padding: 0 16px;\n white-space: nowrap;\n background-color: transparent;\n color: #c9c9c9;\n height: 36px;\n border-radius: 0;\n overflow: visible;\n text-overflow: normal;\n }\n .lm_header .lm_tabdropdown_list > .lm_tab:last-child {\n border-bottom: 0;\n }\n\n /* gl base styles start */\n .lm_root {\n position: relative;\n }\n .lm_row > .lm_item {\n float: left;\n }\n .lm_content {\n overflow: hidden;\n position: relative;\n }\n .lm_dragging,\n .lm_dragging * {\n cursor: move !important;\n user-select: none;\n }\n .lm_maximised {\n left: 0;\n padding: 1px;\n position: absolute;\n top: 0;\n z-index: 40;\n }\n .lm_maximise_placeholder {\n display: none;\n }\n .lm_splitter {\n position: relative;\n z-index: 20;\n }\n .lm_splitter:hover,\n .lm_splitter.lm_dragging {\n background: ${accentFillRest};\n border-radius: calc(${controlCornerRadius} * 4px);\n }\n .lm_splitter.lm_vertical .lm_drag_handle {\n width: 100%;\n height: 15px;\n position: absolute;\n top: -5px;\n cursor: ns-resize;\n }\n .lm_splitter.lm_horizontal {\n float: left;\n height: 100%;\n }\n .lm_splitter.lm_horizontal .lm_drag_handle {\n width: 15px;\n height: 100%;\n position: absolute;\n left: -5px;\n cursor: ew-resize;\n }\n .lm_header {\n overflow: visible;\n position: relative;\n z-index: 1;\n }\n .lm_header [class^='lm_'] {\n box-sizing: content-box !important;\n }\n .lm_header .lm_controls {\n position: absolute;\n right: 3px;\n }\n .lm_header .lm_controls > li {\n cursor: pointer;\n float: left;\n width: 18px;\n height: 18px;\n text-align: center;\n }\n .lm_header ul {\n margin: 0;\n padding: 0;\n list-style-type: none;\n }\n .lm_header .lm_tabs {\n position: absolute;\n }\n .lm_header .lm_tab {\n cursor: pointer;\n float: left;\n margin-top: 1px;\n padding: 3px 25px 3px 10px;\n position: relative;\n }\n .lm_header .lm_tab i {\n width: 2px;\n height: 19px;\n position: absolute;\n }\n .lm_header .lm_tab i.lm_left {\n top: 0;\n left: -2px;\n }\n .lm_header .lm_tab i.lm_right {\n top: 0;\n right: -2px;\n }\n .lm_header .lm_tab .lm_title {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .lm_header .lm_tab .lm_title:only-child {\n padding-left: 10px;\n }\n .lm_header .lm_tab .lm_close_tab {\n width: 14px;\n height: 14px;\n position: absolute;\n top: 11px;\n right: 0;\n text-align: center;\n }\n .lm_stack.lm_left .lm_header,\n .lm_stack.lm_right .lm_header {\n height: 100%;\n }\n .lm_dragProxy.lm_left .lm_header,\n .lm_dragProxy.lm_right .lm_header,\n .lm_stack.lm_left .lm_header,\n .lm_stack.lm_right .lm_header {\n width: 20px;\n float: left;\n vertical-align: top;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_dragProxy.lm_right .lm_header .lm_tabs,\n .lm_stack.lm_left .lm_header .lm_tabs,\n .lm_stack.lm_right .lm_header .lm_tabs {\n transform-origin: left top;\n top: 0;\n width: 1000px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_controls,\n .lm_dragProxy.lm_right .lm_header .lm_controls,\n .lm_stack.lm_left .lm_header .lm_controls,\n .lm_stack.lm_right .lm_header .lm_controls {\n bottom: 0;\n }\n .lm_dragProxy.lm_left .lm_items,\n .lm_dragProxy.lm_right .lm_items,\n .lm_stack.lm_left .lm_items,\n .lm_stack.lm_right .lm_items {\n float: left;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_stack.lm_left .lm_header .lm_tabs {\n transform: rotate(-90deg) scaleX(-1);\n left: 0;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs .lm_tab,\n .lm_stack.lm_left .lm_header .lm_tabs .lm_tab {\n transform: scaleX(-1);\n margin-top: 1px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_left .lm_header .lm_tabdropdown_list {\n top: initial;\n right: initial;\n left: 20px;\n }\n .lm_dragProxy.lm_right .lm_content {\n float: left;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabs,\n .lm_stack.lm_right .lm_header .lm_tabs {\n transform: rotate(90deg) scaleX(1);\n left: 100%;\n margin-left: 0;\n }\n .lm_dragProxy.lm_right .lm_header .lm_controls,\n .lm_stack.lm_right .lm_header .lm_controls {\n left: 3px;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_right .lm_header .lm_tabdropdown_list {\n top: initial;\n right: 20px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tab,\n .lm_stack.lm_bottom .lm_header .lm_tab {\n margin-top: 0;\n border-top: none;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_controls,\n .lm_stack.lm_bottom .lm_header .lm_controls {\n top: 3px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_bottom .lm_header .lm_tabdropdown_list {\n top: initial;\n bottom: 20px;\n }\n .lm_drop_tab_placeholder {\n float: left;\n width: 100px;\n height: 10px;\n visibility: hidden;\n }\n .lm_header .lm_tabdropdown_list {\n position: absolute;\n top: 20px;\n right: 0;\n z-index: 5;\n overflow: hidden;\n }\n .lm_header .lm_tabdropdown_list .lm_tab {\n clear: both;\n padding-right: 10px;\n margin: 0;\n }\n .lm_header .lm_tabdropdown_list .lm_tab .lm_title {\n width: 100px;\n }\n .lm_header .lm_tabdropdown_list .lm_close_tab {\n display: none !important;\n }\n .lm_dragProxy {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 30;\n }\n .lm_dragProxy .lm_header {\n background: transparent;\n }\n .lm_dragProxy .lm_content {\n border-top: none;\n overflow: hidden;\n }\n .lm_dropTargetIndicator {\n display: none;\n position: absolute;\n z-index: 20;\n }\n .lm_dropTargetIndicator .lm_inner {\n width: 100%;\n height: 100%;\n position: relative;\n top: 0;\n left: 0;\n }\n .lm_transition_indicator {\n display: none;\n width: 20px;\n height: 20px;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 20;\n }\n .lm_popin {\n width: 20px;\n height: 20px;\n position: absolute;\n bottom: 0;\n right: 0;\n z-index: 9999;\n }\n .lm_popin > * {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n }\n .lm_popin > .lm_bg {\n z-index: 10;\n }\n .lm_popin > .lm_icon {\n z-index: 20;\n } /*# sourceMappingURL=goldenlayout-base.css.map */\n`",
1170
+ "description": "`ElementStyles` which defines the css for FoundationLayout.",
1171
+ "privacy": "public"
1172
+ }
1173
+ ],
1174
+ "exports": [
1175
+ {
1176
+ "kind": "js",
1177
+ "name": "layoutStyles",
1178
+ "declaration": {
1179
+ "name": "layoutStyles",
1180
+ "module": "src/styles/layout.styles.ts"
1181
+ }
1182
+ }
1183
+ ]
1184
+ },
1185
+ {
1186
+ "kind": "javascript-module",
1187
+ "path": "src/utils/constants.ts",
1188
+ "declarations": [
1189
+ {
1190
+ "kind": "variable",
1191
+ "name": "DEFAULT_RELOAD_BUFFER",
1192
+ "type": {
1193
+ "text": "number"
1194
+ },
1195
+ "default": "500",
1196
+ "description": "Default time in milliseconds for the layout to buffer calls to reloading\nthe layout while the declarative API is loading.\n\nDuring the first load of the layout, a loading spinner will be shown.",
1197
+ "privacy": "public"
1198
+ }
1199
+ ],
1200
+ "exports": [
1201
+ {
1202
+ "kind": "js",
1203
+ "name": "DEFAULT_RELOAD_BUFFER",
1204
+ "declaration": {
1205
+ "name": "DEFAULT_RELOAD_BUFFER",
1206
+ "module": "src/utils/constants.ts"
1207
+ }
1208
+ }
1209
+ ]
1210
+ },
1211
+ {
1212
+ "kind": "javascript-module",
1213
+ "path": "src/utils/error.ts",
1214
+ "declarations": [
1215
+ {
1216
+ "kind": "class",
1217
+ "description": "",
1218
+ "name": "LayoutUsageError",
1219
+ "superclass": {
1220
+ "name": "Error",
1221
+ "module": "src/utils/error.ts"
1222
+ }
1223
+ },
1224
+ {
1225
+ "kind": "class",
1226
+ "description": "",
1227
+ "name": "LayoutRegistrationError",
1228
+ "superclass": {
1229
+ "name": "Error",
1230
+ "module": "src/utils/error.ts"
1231
+ }
1232
+ }
1233
+ ],
1234
+ "exports": [
1235
+ {
1236
+ "kind": "js",
1237
+ "name": "LayoutUsageError",
1238
+ "declaration": {
1239
+ "name": "LayoutUsageError",
1240
+ "module": "src/utils/error.ts"
1241
+ }
1242
+ },
1243
+ {
1244
+ "kind": "js",
1245
+ "name": "LayoutRegistrationError",
1246
+ "declaration": {
1247
+ "name": "LayoutRegistrationError",
1248
+ "module": "src/utils/error.ts"
1249
+ }
1250
+ }
1251
+ ]
1252
+ },
1253
+ {
1254
+ "kind": "javascript-module",
1255
+ "path": "src/utils/events.ts",
1256
+ "declarations": [
1257
+ {
1258
+ "kind": "variable",
1259
+ "name": "LayoutEmitEvents",
1260
+ "type": {
1261
+ "text": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n}"
1262
+ },
1263
+ "default": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n}",
1264
+ "description": "Defines events that the layout system emits\n\n'firstLoaded' - emitted when the layout has finished loading the first time\nusing the declarative API after DEFAULT_RELOAD_BUFFER ms.\n<br/>\n'itemAdded' - emitted when an item is added to the layout'\n<br/>\n'itemRemoved' - emitted when an item is removed from the layout'\n<br/>\n'itemResized' - emitted when the user drags the divider to resize elements",
1265
+ "privacy": "public"
1266
+ },
1267
+ {
1268
+ "kind": "variable",
1269
+ "name": "LayoutReceiveEvents",
1270
+ "type": {
1271
+ "text": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}"
1272
+ },
1273
+ "default": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}",
1274
+ "description": "Defines events that the layout system listens for\n\n'changeTitle' - emit this from a contained item to update the title of the window that contains it.\n'autosave' - emit this from a contained item to hint to the layout system that it should autosave the layout. A contained item should do this if it has just changed some state it would like to persist. See LayoutComponentWithState.",
1275
+ "privacy": "public"
1276
+ }
1277
+ ],
1278
+ "exports": [
1279
+ {
1280
+ "kind": "js",
1281
+ "name": "LayoutEmitEvents",
1282
+ "declaration": {
1283
+ "name": "LayoutEmitEvents",
1284
+ "module": "src/utils/events.ts"
1285
+ }
1286
+ },
1287
+ {
1288
+ "kind": "js",
1289
+ "name": "LayoutReceiveEvents",
1290
+ "declaration": {
1291
+ "name": "LayoutReceiveEvents",
1292
+ "module": "src/utils/events.ts"
1293
+ }
1294
+ }
1295
+ ]
1296
+ },
1297
+ {
1298
+ "kind": "javascript-module",
1299
+ "path": "src/utils/index.ts",
1300
+ "declarations": [],
1301
+ "exports": [
1302
+ {
1303
+ "kind": "js",
1304
+ "name": "*",
1305
+ "declaration": {
1306
+ "name": "*",
1307
+ "package": "./constants"
1308
+ }
1309
+ },
1310
+ {
1311
+ "kind": "js",
1312
+ "name": "*",
1313
+ "declaration": {
1314
+ "name": "*",
1315
+ "package": "./error"
1316
+ }
1317
+ },
1318
+ {
1319
+ "kind": "js",
1320
+ "name": "*",
1321
+ "declaration": {
1322
+ "name": "*",
1323
+ "package": "./events"
1324
+ }
1325
+ },
1326
+ {
1327
+ "kind": "js",
1328
+ "name": "*",
1329
+ "declaration": {
1330
+ "name": "*",
1331
+ "package": "./misc"
1332
+ }
1333
+ },
1334
+ {
1335
+ "kind": "js",
1336
+ "name": "*",
1337
+ "declaration": {
1338
+ "name": "*",
1339
+ "package": "./templates"
1340
+ }
1341
+ },
1342
+ {
1343
+ "kind": "js",
1344
+ "name": "*",
1345
+ "declaration": {
1346
+ "name": "*",
1347
+ "package": "./types"
1348
+ }
1349
+ },
1350
+ {
1351
+ "kind": "js",
1352
+ "name": "*",
1353
+ "declaration": {
1354
+ "name": "*",
1355
+ "package": "./error"
1356
+ }
1357
+ }
1358
+ ]
1359
+ },
1360
+ {
1361
+ "kind": "javascript-module",
1362
+ "path": "src/utils/logger.ts",
1363
+ "declarations": [
1364
+ {
1365
+ "kind": "variable",
1366
+ "name": "logger"
1367
+ }
1368
+ ],
1369
+ "exports": [
1370
+ {
1371
+ "kind": "js",
1372
+ "name": "logger",
1373
+ "declaration": {
1374
+ "name": "logger",
1375
+ "module": "src/utils/logger.ts"
1376
+ }
1377
+ }
1378
+ ]
1379
+ },
1380
+ {
1381
+ "kind": "javascript-module",
1382
+ "path": "src/utils/misc.ts",
1383
+ "declarations": [],
1384
+ "exports": []
1385
+ },
1386
+ {
1387
+ "kind": "javascript-module",
1388
+ "path": "src/utils/templates.ts",
1389
+ "declarations": [],
1390
+ "exports": []
1391
+ },
1392
+ {
1393
+ "kind": "javascript-module",
1394
+ "path": "src/utils/types.ts",
1395
+ "declarations": [],
1396
+ "exports": []
1370
1397
  }
1371
1398
  ]
1372
1399
  }
@@ -109,6 +109,10 @@ export declare class FoundationLayout extends FoundationElement implements Layou
109
109
  private onPostItemResized;
110
110
  /** @internal */
111
111
  private onAutosaveRequest;
112
+ /** @internal */
113
+ private onPreItemMaximised;
114
+ /** @internal */
115
+ private onPreItemMinimised;
112
116
  /**
113
117
  * JS API, public
114
118
  */
@@ -152,6 +156,7 @@ export declare class FoundationLayout extends FoundationElement implements Layou
152
156
  * the JavaScript API then you don't need to call this function. If you *are* calling {@link FoundationLayout.registerItem} then you should call this function immediately afterwards.
153
157
  *
154
158
  * Will load the layout with `handleMissingItem = 'placeholder` so placeholder text will be shown for any missing items.
159
+ * Loads layout config with the cache disabled (this will likely only be called after the page has refreshed anyway, so there would have been no cached elements to try and recover).
155
160
  * @returns boolean - true if a layout was loaded, false if not
156
161
  * @public
157
162
  */
@@ -165,10 +170,11 @@ export declare class FoundationLayout extends FoundationElement implements Layou
165
170
  *
166
171
  * @param layout - any version of {@link SerialisedLayout} object describing the layout
167
172
  * @param handleMissingItem - what to do if the layout contains items that are not currently registered with the layout system. Defaults to 'error' which will throw an error. If set to 'placeholder' then any missing items will be replaced with a placeholder element. You can control the text of the placeholder element with {@link FoundationLayout.missingItemPlaceholder}.
173
+ * @param disableCache - if set to true then the layout will give you a new instance of every item, even if it has a currently cached item to use. Using this will not stop you from saving and loading state via the {@link LayoutComponentWithState} interface. Defaults to false.
168
174
  * @throws {@link LayoutUsageError} if you attempt to load a layout with registered items that are not currently registered with the layout system, and handleMissingItem is set to 'error' (default).
169
175
  * @throws various errors if the layout string is malformed and cannot be parsed
170
176
  */
171
- loadLayout(layout: SerialisedLayout, handleMissingItem?: 'placeholder' | 'error'): void;
177
+ loadLayout(layout: SerialisedLayout, handleMissingItem?: 'placeholder' | 'error', disableCache?: boolean): void;
172
178
  /**
173
179
  * @public
174
180
  * Dynamically add a new item to the layout. The user can move the new plane to whenever they want once it has been added.
@@ -287,6 +293,10 @@ export declare class FoundationLayout extends FoundationElement implements Layou
287
293
  * @internal
288
294
  */
289
295
  private getLayoutComponents;
296
+ /**
297
+ * Recursively remove the instance key from the config which will mean that when the config is loaded it will instantiate a new instance for every item, even if they're in the cache.
298
+ */
299
+ private removeConfigCacheInformation;
290
300
  }
291
301
  /**
292
302
  * `ViewTemplate` which defines the html for {@link FoundationLayout}.
@@ -1 +1 @@
1
- {"version":3,"file":"layout-main.d.ts","sourceRoot":"","sources":["../../../src/main/layout-main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout-main.d.ts","sourceRoot":"","sources":["../../../src/main/layout-main.ts"],"names":[],"mappings":"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"}
@@ -95,6 +95,8 @@ export class FoundationLayout extends FoundationElement {
95
95
  this.onPostItemRemoved = this.onPostItemRemoved.bind(this);
96
96
  this.onPreItemRemoved = this.onPreItemRemoved.bind(this);
97
97
  this.onAutosaveRequest = this.onAutosaveRequest.bind(this);
98
+ this.onPreItemMaximised = this.onPreItemMaximised.bind(this);
99
+ this.onPreItemMinimised = this.onPreItemMinimised.bind(this);
98
100
  }
99
101
  /** @internal */
100
102
  connectedCallback() {
@@ -115,6 +117,8 @@ export class FoundationLayout extends FoundationElement {
115
117
  this.shadowRoot.addEventListener('dragStop', this.onDragStop, true);
116
118
  this.shadowRoot.addEventListener('closeButtonPre', this.onPreItemRemoved, true);
117
119
  this.shadowRoot.addEventListener('closeButtonPressed', this.onPostItemRemoved, true);
120
+ this.shadowRoot.addEventListener('maximised', this.onPreItemMaximised, true);
121
+ this.shadowRoot.addEventListener('minimised', this.onPreItemMinimised, true);
118
122
  // events.ts events
119
123
  this.shadowRoot.addEventListener(LayoutReceiveEvents.autosave, this.onAutosaveRequest, true);
120
124
  this.setupCustomButtons();
@@ -126,6 +130,8 @@ export class FoundationLayout extends FoundationElement {
126
130
  this.shadowRoot.removeEventListener('dragStop', this.onDragStop);
127
131
  this.shadowRoot.removeEventListener('closeButtonPre', this.onPreItemRemoved);
128
132
  this.shadowRoot.removeEventListener('closeButtonPressed', this.onPostItemRemoved);
133
+ this.shadowRoot.removeEventListener('maximised', this.onPreItemMaximised);
134
+ this.shadowRoot.removeEventListener('minimised', this.onPreItemMinimised);
129
135
  // events.ts events
130
136
  this.shadowRoot.addEventListener(LayoutReceiveEvents.autosave, this.onAutosaveRequest);
131
137
  }
@@ -162,6 +168,14 @@ export class FoundationLayout extends FoundationElement {
162
168
  onAutosaveRequest() {
163
169
  this.cacheAndSaveLayout();
164
170
  }
171
+ /** @internal */
172
+ onPreItemMaximised() {
173
+ this.updateLifecycleToken();
174
+ }
175
+ /** @internal */
176
+ onPreItemMinimised() {
177
+ this.updateLifecycleToken();
178
+ }
165
179
  /**
166
180
  * JS API, public
167
181
  */
@@ -233,6 +247,7 @@ export class FoundationLayout extends FoundationElement {
233
247
  * the JavaScript API then you don't need to call this function. If you *are* calling {@link FoundationLayout.registerItem} then you should call this function immediately afterwards.
234
248
  *
235
249
  * Will load the layout with `handleMissingItem = 'placeholder` so placeholder text will be shown for any missing items.
250
+ * Loads layout config with the cache disabled (this will likely only be called after the page has refreshed anyway, so there would have been no cached elements to try and recover).
236
251
  * @returns boolean - true if a layout was loaded, false if not
237
252
  * @public
238
253
  */
@@ -243,7 +258,7 @@ export class FoundationLayout extends FoundationElement {
243
258
  if (!(this.autoSaveKey in existingLayouts))
244
259
  return false;
245
260
  const layout = JSON.parse(existingLayouts[this.autoSaveKey]);
246
- this.loadLayout(layout, 'placeholder');
261
+ this.loadLayout(layout, 'placeholder', true);
247
262
  return true;
248
263
  }
249
264
  /**
@@ -255,10 +270,11 @@ export class FoundationLayout extends FoundationElement {
255
270
  *
256
271
  * @param layout - any version of {@link SerialisedLayout} object describing the layout
257
272
  * @param handleMissingItem - what to do if the layout contains items that are not currently registered with the layout system. Defaults to 'error' which will throw an error. If set to 'placeholder' then any missing items will be replaced with a placeholder element. You can control the text of the placeholder element with {@link FoundationLayout.missingItemPlaceholder}.
273
+ * @param disableCache - if set to true then the layout will give you a new instance of every item, even if it has a currently cached item to use. Using this will not stop you from saving and loading state via the {@link LayoutComponentWithState} interface. Defaults to false.
258
274
  * @throws {@link LayoutUsageError} if you attempt to load a layout with registered items that are not currently registered with the layout system, and handleMissingItem is set to 'error' (default).
259
275
  * @throws various errors if the layout string is malformed and cannot be parsed
260
276
  */
261
- loadLayout(layout, handleMissingItem = 'error') {
277
+ loadLayout(layout, handleMissingItem = 'error', disableCache = false) {
262
278
  const alreadyRegistered = this.registeredItems();
263
279
  const wantedRegistered = FoundationLayout.layoutRequiredRegistrations(layout);
264
280
  const missingRegisteredItems = getMissingArrayItems(wantedRegistered, alreadyRegistered);
@@ -268,6 +284,8 @@ export class FoundationLayout extends FoundationElement {
268
284
  ]}"`);
269
285
  }
270
286
  const layoutConfig = LayoutConfig.fromResolved(ResolvedLayoutConfig.unminifyConfig(layout.c));
287
+ if (disableCache)
288
+ this.removeConfigCacheInformation(layoutConfig);
271
289
  if (missingRegisteredItems.length !== 0 && handleMissingItem === 'placeholder') {
272
290
  this.registerPlaceholdersAndSetClosable(layoutConfig, missingRegisteredItems);
273
291
  }
@@ -610,6 +628,20 @@ export class FoundationLayout extends FoundationElement {
610
628
  ...container.children,
611
629
  ]);
612
630
  }
631
+ /**
632
+ * Recursively remove the instance key from the config which will mean that when the config is loaded it will instantiate a new instance for every item, even if they're in the cache.
633
+ */
634
+ removeConfigCacheInformation(config) {
635
+ const traverse = (node) => {
636
+ var _b;
637
+ (_b = node.content) === null || _b === void 0 ? void 0 : _b.forEach((n) => traverse(n));
638
+ if (node.type === 'component') {
639
+ delete node.componentState['instance'];
640
+ }
641
+ };
642
+ traverse(config.root);
643
+ return config;
644
+ }
613
645
  }
614
646
  _FoundationLayout__boundDragListener = new WeakMap(), _a = componentType;
615
647
  __decorate([
@@ -668,7 +668,7 @@
668
668
  {
669
669
  "kind": "Method",
670
670
  "canonicalReference": "@genesislcap/foundation-layout!FoundationLayout#loadLayout:member(1)",
671
- "docComment": "/**\n * Restores a layout described in the config from {@link FoundationLayout.getLayout | getLayout()}\n *\n * @remarks\n *\n * In order to restore a layout you must have registered all of the required panes with the layout system before restoring it. If you are just setting the layout using the declarative API then all of the same components will be registered. If you have added any elements using {@link FoundationLayout.registerItem} then you must ensure all of the same items have been added again. To make tracking what items are registered easier it is recommended in this case you explicitly name your registrations using the `id` parameter available on the {@link RegisteredElementConfig} and `foundation-layout-item` APIs. You can use {@link FoundationLayout.layoutRequiredRegistrations} to check which items are registered in a current layout in order to dynamically add any missing items before you can restore the layout\n *\n * @param layout - any version of {@link SerialisedLayout} object describing the layout\n *\n * @param handleMissingItem - what to do if the layout contains items that are not currently registered with the layout system. Defaults to 'error' which will throw an error. If set to 'placeholder' then any missing items will be replaced with a placeholder element. You can control the text of the placeholder element with {@link FoundationLayout.missingItemPlaceholder}.\n *\n * @throws\n *\n * {@link LayoutUsageError} if you attempt to load a layout with registered items that are not currently registered with the layout system, and handleMissingItem is set to 'error' (default).\n *\n * @throws\n *\n * various errors if the layout string is malformed and cannot be parsed\n *\n * @public\n */\n",
671
+ "docComment": "/**\n * Restores a layout described in the config from {@link FoundationLayout.getLayout | getLayout()}\n *\n * @remarks\n *\n * In order to restore a layout you must have registered all of the required panes with the layout system before restoring it. If you are just setting the layout using the declarative API then all of the same components will be registered. If you have added any elements using {@link FoundationLayout.registerItem} then you must ensure all of the same items have been added again. To make tracking what items are registered easier it is recommended in this case you explicitly name your registrations using the `id` parameter available on the {@link RegisteredElementConfig} and `foundation-layout-item` APIs. You can use {@link FoundationLayout.layoutRequiredRegistrations} to check which items are registered in a current layout in order to dynamically add any missing items before you can restore the layout\n *\n * @param layout - any version of {@link SerialisedLayout} object describing the layout\n *\n * @param handleMissingItem - what to do if the layout contains items that are not currently registered with the layout system. Defaults to 'error' which will throw an error. If set to 'placeholder' then any missing items will be replaced with a placeholder element. You can control the text of the placeholder element with {@link FoundationLayout.missingItemPlaceholder}.\n *\n * @param disableCache - if set to true then the layout will give you a new instance of every item, even if it has a currently cached item to use. Using this will not stop you from saving and loading state via the {@link LayoutComponentWithState} interface. Defaults to false.\n *\n * @throws\n *\n * {@link LayoutUsageError} if you attempt to load a layout with registered items that are not currently registered with the layout system, and handleMissingItem is set to 'error' (default).\n *\n * @throws\n *\n * various errors if the layout string is malformed and cannot be parsed\n *\n * @public\n */\n",
672
672
  "excerptTokens": [
673
673
  {
674
674
  "kind": "Content",
@@ -687,6 +687,14 @@
687
687
  "kind": "Content",
688
688
  "text": "'placeholder' | 'error'"
689
689
  },
690
+ {
691
+ "kind": "Content",
692
+ "text": ", disableCache?: "
693
+ },
694
+ {
695
+ "kind": "Content",
696
+ "text": "boolean"
697
+ },
690
698
  {
691
699
  "kind": "Content",
692
700
  "text": "): "
@@ -702,8 +710,8 @@
702
710
  ],
703
711
  "isStatic": false,
704
712
  "returnTypeTokenRange": {
705
- "startIndex": 5,
706
- "endIndex": 6
713
+ "startIndex": 7,
714
+ "endIndex": 8
707
715
  },
708
716
  "releaseTag": "Public",
709
717
  "isProtected": false,
@@ -724,6 +732,14 @@
724
732
  "endIndex": 4
725
733
  },
726
734
  "isOptional": true
735
+ },
736
+ {
737
+ "parameterName": "disableCache",
738
+ "parameterTypeTokenRange": {
739
+ "startIndex": 5,
740
+ "endIndex": 6
741
+ },
742
+ "isOptional": true
727
743
  }
728
744
  ],
729
745
  "isOptional": false,
@@ -893,7 +909,7 @@
893
909
  {
894
910
  "kind": "Method",
895
911
  "canonicalReference": "@genesislcap/foundation-layout!FoundationLayout#tryLoadLayoutFromLocalStorage:member(1)",
896
- "docComment": "/**\n * Try to load a layout from local storage, or return false. Only required if manually calling {@link FoundationLayout.registerItem}\n *\n * @remarks\n *\n * Attempt to load an autosaved layout from local storage, keyed on the `auto-save-key` attribute. If `auto-save-key` attribute is not set or there is no autosaved layout yet, this will return false. Else, true.\n *\n * This function is automatically called when loading the layout via the declarative API so if you're not registering components via the JavaScript API then you don't need to call this function. If you *are* calling {@link FoundationLayout.registerItem} then you should call this function immediately afterwards.\n *\n * Will load the layout with `handleMissingItem = 'placeholder` so placeholder text will be shown for any missing items.\n *\n * @returns boolean - true if a layout was loaded, false if not\n *\n * @public\n */\n",
912
+ "docComment": "/**\n * Try to load a layout from local storage, or return false. Only required if manually calling {@link FoundationLayout.registerItem}\n *\n * @remarks\n *\n * Attempt to load an autosaved layout from local storage, keyed on the `auto-save-key` attribute. If `auto-save-key` attribute is not set or there is no autosaved layout yet, this will return false. Else, true.\n *\n * This function is automatically called when loading the layout via the declarative API so if you're not registering components via the JavaScript API then you don't need to call this function. If you *are* calling {@link FoundationLayout.registerItem} then you should call this function immediately afterwards.\n *\n * Will load the layout with `handleMissingItem = 'placeholder` so placeholder text will be shown for any missing items. Loads layout config with the cache disabled (this will likely only be called after the page has refreshed anyway, so there would have been no cached elements to try and recover).\n *\n * @returns boolean - true if a layout was loaded, false if not\n *\n * @public\n */\n",
897
913
  "excerptTokens": [
898
914
  {
899
915
  "kind": "Content",
@@ -145,6 +145,10 @@ export declare class FoundationLayout extends FoundationElement implements Layou
145
145
  private onPostItemResized;
146
146
  /** @internal */
147
147
  private onAutosaveRequest;
148
+ /** @internal */
149
+ private onPreItemMaximised;
150
+ /** @internal */
151
+ private onPreItemMinimised;
148
152
  /**
149
153
  * JS API, public
150
154
  */
@@ -188,6 +192,7 @@ export declare class FoundationLayout extends FoundationElement implements Layou
188
192
  * the JavaScript API then you don't need to call this function. If you *are* calling {@link FoundationLayout.registerItem} then you should call this function immediately afterwards.
189
193
  *
190
194
  * Will load the layout with `handleMissingItem = 'placeholder` so placeholder text will be shown for any missing items.
195
+ * Loads layout config with the cache disabled (this will likely only be called after the page has refreshed anyway, so there would have been no cached elements to try and recover).
191
196
  * @returns boolean - true if a layout was loaded, false if not
192
197
  * @public
193
198
  */
@@ -201,10 +206,11 @@ export declare class FoundationLayout extends FoundationElement implements Layou
201
206
  *
202
207
  * @param layout - any version of {@link SerialisedLayout} object describing the layout
203
208
  * @param handleMissingItem - what to do if the layout contains items that are not currently registered with the layout system. Defaults to 'error' which will throw an error. If set to 'placeholder' then any missing items will be replaced with a placeholder element. You can control the text of the placeholder element with {@link FoundationLayout.missingItemPlaceholder}.
209
+ * @param disableCache - if set to true then the layout will give you a new instance of every item, even if it has a currently cached item to use. Using this will not stop you from saving and loading state via the {@link LayoutComponentWithState} interface. Defaults to false.
204
210
  * @throws {@link LayoutUsageError} if you attempt to load a layout with registered items that are not currently registered with the layout system, and handleMissingItem is set to 'error' (default).
205
211
  * @throws various errors if the layout string is malformed and cannot be parsed
206
212
  */
207
- loadLayout(layout: SerialisedLayout, handleMissingItem?: 'placeholder' | 'error'): void;
213
+ loadLayout(layout: SerialisedLayout, handleMissingItem?: 'placeholder' | 'error', disableCache?: boolean): void;
208
214
  /**
209
215
  * @public
210
216
  * Dynamically add a new item to the layout. The user can move the new plane to whenever they want once it has been added.
@@ -323,6 +329,10 @@ export declare class FoundationLayout extends FoundationElement implements Layou
323
329
  * @internal
324
330
  */
325
331
  private getLayoutComponents;
332
+ /**
333
+ * Recursively remove the instance key from the config which will mean that when the config is loaded it will instantiate a new instance for every item, even if they're in the cache.
334
+ */
335
+ private removeConfigCacheInformation;
326
336
  }
327
337
 
328
338
  /**
@@ -9,7 +9,7 @@ Restores a layout described in the config from [getLayout()](./foundation-layout
9
9
  **Signature:**
10
10
 
11
11
  ```typescript
12
- loadLayout(layout: SerialisedLayout, handleMissingItem?: 'placeholder' | 'error'): void;
12
+ loadLayout(layout: SerialisedLayout, handleMissingItem?: 'placeholder' | 'error', disableCache?: boolean): void;
13
13
  ```
14
14
 
15
15
  ## Parameters
@@ -18,6 +18,7 @@ loadLayout(layout: SerialisedLayout, handleMissingItem?: 'placeholder' | 'error'
18
18
  | --- | --- | --- |
19
19
  | layout | [SerialisedLayout](./foundation-layout.serialisedlayout.md) | any version of [SerialisedLayout](./foundation-layout.serialisedlayout.md) object describing the layout |
20
20
  | handleMissingItem | 'placeholder' \| 'error' | _(Optional)_ what to do if the layout contains items that are not currently registered with the layout system. Defaults to 'error' which will throw an error. If set to 'placeholder' then any missing items will be replaced with a placeholder element. You can control the text of the placeholder element with [FoundationLayout.missingItemPlaceholder](./foundation-layout.foundationlayout.missingitemplaceholder.md)<!-- -->. |
21
+ | disableCache | boolean | _(Optional)_ if set to true then the layout will give you a new instance of every item, even if it has a currently cached item to use. Using this will not stop you from saving and loading state via the [LayoutComponentWithState](./foundation-layout.layoutcomponentwithstate.md) interface. Defaults to false. |
21
22
 
22
23
  **Returns:**
23
24
 
@@ -42,7 +42,7 @@ The constructor for this class is marked as internal. Third-party code should no
42
42
  | [addItem(config, placement)](./foundation-layout.foundationlayout.additem.md) | | Dynamically add a new item to the layout. The user can move the new plane to whenever they want once it has been added. |
43
43
  | [getLayout()](./foundation-layout.foundationlayout.getlayout.md) | | Gets a minified string containing the config describing the current layout of the layout object to later restore in [function](./foundation-layout.foundationlayout.loadlayout.md) |
44
44
  | [layoutRequiredRegistrations(layout)](./foundation-layout.foundationlayout.layoutrequiredregistrations.md) | <code>static</code> | Gets all of the required element registry function names for a set of config |
45
- | [loadLayout(layout, handleMissingItem)](./foundation-layout.foundationlayout.loadlayout.md) | | Restores a layout described in the config from [getLayout()](./foundation-layout.foundationlayout.getlayout.md) |
45
+ | [loadLayout(layout, handleMissingItem, disableCache)](./foundation-layout.foundationlayout.loadlayout.md) | | Restores a layout described in the config from [getLayout()](./foundation-layout.foundationlayout.getlayout.md) |
46
46
  | [registeredItems()](./foundation-layout.foundationlayout.registereditems.md) | | Gets all of the currently registered names |
47
47
  | [registerItem(registration, elements)](./foundation-layout.foundationlayout.registeritem.md) | | Register a collection of <code>Element</code> and associate them with an <code>ID</code> with the layout system for later use. |
48
48
  | [tryLoadLayoutFromLocalStorage()](./foundation-layout.foundationlayout.tryloadlayoutfromlocalstorage.md) | | Try to load a layout from local storage, or return false. Only required if manually calling [FoundationLayout.registerItem()](./foundation-layout.foundationlayout.registeritem.md) |
@@ -23,5 +23,5 @@ Attempt to load an autosaved layout from local storage, keyed on the `auto-save-
23
23
 
24
24
  This function is automatically called when loading the layout via the declarative API so if you're not registering components via the JavaScript API then you don't need to call this function. If you \*are\* calling [FoundationLayout.registerItem()](./foundation-layout.foundationlayout.registeritem.md) then you should call this function immediately afterwards.
25
25
 
26
- Will load the layout with `handleMissingItem = 'placeholder` so placeholder text will be shown for any missing items.
26
+ Will load the layout with `handleMissingItem = 'placeholder` so placeholder text will be shown for any missing items. Loads layout config with the cache disabled (this will likely only be called after the page has refreshed anyway, so there would have been no cached elements to try and recover).
27
27
 
@@ -51,7 +51,7 @@ export class FoundationLayout extends FoundationElement implements LayoutCompone
51
51
  layoutElement: HTMLElement;
52
52
  static layoutRequiredRegistrations(layout: SerialisedLayout): string[];
53
53
  lifecycleUpdateToken: string | undefined;
54
- loadLayout(layout: SerialisedLayout, handleMissingItem?: 'placeholder' | 'error'): void;
54
+ loadLayout(layout: SerialisedLayout, handleMissingItem?: 'placeholder' | 'error', disableCache?: boolean): void;
55
55
  missingItemPlaceholder: (missingItem: string) => string;
56
56
  registeredItems(): string[];
57
57
  registerItem(registration: string, elements: Element[]): string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/foundation-layout",
3
3
  "description": "Genesis Foundation UI App Layout",
4
- "version": "14.96.1",
4
+ "version": "14.98.0",
5
5
  "license": "SEE LICENSE IN license.txt",
6
6
  "main": "dist/esm/index.js",
7
7
  "types": "dist/foundation-layout.d.ts",
@@ -27,15 +27,15 @@
27
27
  "test:debug": "genx test --debug"
28
28
  },
29
29
  "devDependencies": {
30
- "@genesislcap/foundation-testing": "14.96.1",
31
- "@genesislcap/genx": "14.96.1",
30
+ "@genesislcap/foundation-testing": "14.98.0",
31
+ "@genesislcap/genx": "14.98.0",
32
32
  "rimraf": "^3.0.2"
33
33
  },
34
34
  "dependencies": {
35
- "@genesis-community/golden-layout": "^2.10.1",
36
- "@genesislcap/foundation-comms": "14.96.1",
37
- "@genesislcap/foundation-logger": "14.96.1",
38
- "@genesislcap/foundation-utils": "14.96.1",
35
+ "@genesis-community/golden-layout": "^2.11.0",
36
+ "@genesislcap/foundation-comms": "14.98.0",
37
+ "@genesislcap/foundation-logger": "14.98.0",
38
+ "@genesislcap/foundation-utils": "14.98.0",
39
39
  "@microsoft/fast-components": "^2.21.3",
40
40
  "@microsoft/fast-element": "^1.7.0",
41
41
  "@microsoft/fast-foundation": "^2.33.2",
@@ -50,5 +50,5 @@
50
50
  "access": "public"
51
51
  },
52
52
  "customElements": "dist/custom-elements.json",
53
- "gitHead": "48d09fe0db8cfe16fa806a5f098a0fb0405ffcbb"
53
+ "gitHead": "07afc08d7c91080168b8ef63b71825edccf65635"
54
54
  }