@genesislcap/foundation-layout 15.75.0 → 15.76.1-alpha-aff9783af4.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.
Files changed (2) hide show
  1. package/dist/custom-elements.json +1313 -1313
  2. package/package.json +13 -13
@@ -187,88 +187,47 @@
187
187
  },
188
188
  {
189
189
  "kind": "javascript-module",
190
- "path": "src/styles/constants.ts",
191
- "declarations": [
192
- {
193
- "kind": "function",
194
- "name": "glVisualConfig",
195
- "return": {
196
- "type": {
197
- "text": "Omit<LayoutConfig, 'root'>"
198
- }
199
- }
200
- },
201
- {
202
- "kind": "variable",
203
- "name": "LAYOUT_ICONS",
204
- "type": {
205
- "text": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n popoutSVG,\n}"
206
- },
207
- "default": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n popoutSVG,\n}",
208
- "description": "A collection of SVG icons in base64 format.",
209
- "privacy": "public"
210
- }
211
- ],
190
+ "path": "src/main/index.ts",
191
+ "declarations": [],
212
192
  "exports": [
213
193
  {
214
194
  "kind": "js",
215
- "name": "glVisualConfig",
195
+ "name": "FoundationLayoutItem",
216
196
  "declaration": {
217
- "name": "glVisualConfig",
218
- "module": "src/styles/constants.ts"
197
+ "name": "FoundationLayoutItem",
198
+ "module": "./layout-item"
219
199
  }
220
200
  },
221
201
  {
222
202
  "kind": "js",
223
- "name": "LAYOUT_ICONS",
203
+ "name": "FoundationLayoutRegion",
224
204
  "declaration": {
225
- "name": "LAYOUT_ICONS",
226
- "module": "src/styles/constants.ts"
205
+ "name": "FoundationLayoutRegion",
206
+ "module": "./layout-region"
227
207
  }
228
- }
229
- ]
230
- },
231
- {
232
- "kind": "javascript-module",
233
- "path": "src/styles/dragging.styles.ts",
234
- "declarations": [
235
- {
236
- "kind": "variable",
237
- "name": "globalDraggingStyles",
238
- "default": "`\n .lm_dragProxy .lm_content {\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.9);\n }\n .lm_dropTargetIndicator {\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 cursor: move;\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_title {\n color: white;\n padding-left: 10px;\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`",
239
- "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"
240
- }
241
- ],
242
- "exports": [
208
+ },
243
209
  {
244
210
  "kind": "js",
245
- "name": "globalDraggingStyles",
211
+ "name": "FoundationLayout",
246
212
  "declaration": {
247
- "name": "globalDraggingStyles",
248
- "module": "src/styles/dragging.styles.ts"
213
+ "name": "FoundationLayout",
214
+ "module": "./layout-main"
249
215
  }
250
- }
251
- ]
252
- },
253
- {
254
- "kind": "javascript-module",
255
- "path": "src/styles/index.ts",
256
- "declarations": [],
257
- "exports": [
216
+ },
258
217
  {
259
218
  "kind": "js",
260
- "name": "*",
219
+ "name": "layoutStyles",
261
220
  "declaration": {
262
- "name": "*",
263
- "package": "./constants"
221
+ "name": "layoutStyles",
222
+ "module": "./layout-main"
264
223
  }
265
224
  },
266
225
  {
267
226
  "kind": "js",
268
- "name": "*",
227
+ "name": "layoutTemplate",
269
228
  "declaration": {
270
- "name": "*",
271
- "package": "./dragging.styles"
229
+ "name": "layoutTemplate",
230
+ "module": "./layout-main"
272
231
  }
273
232
  },
274
233
  {
@@ -276,629 +235,593 @@
276
235
  "name": "*",
277
236
  "declaration": {
278
237
  "name": "*",
279
- "package": "./layout.styles"
280
- }
281
- }
282
- ]
283
- },
284
- {
285
- "kind": "javascript-module",
286
- "path": "src/styles/layout.styles.ts",
287
- "declarations": [
288
- {
289
- "kind": "variable",
290
- "name": "layoutStyles",
291
- "default": "css`\n ${containerStyles}\n ${loadingSpinnerStyles}\n\n :host {\n --foundation-tab-height: calc(\n (((var(--base-height-multiplier) + var(--density)) * var(--design-unit)) - 4) * 1px\n );\n }\n\n .lm_goldenlayout {\n border-radius: calc(var(--control-corner-radius) * 1.5px);\n font-family: var(--body-font);\n box-sizing: border-box;\n }\n\n .lm_goldenlayout * {\n box-sizing: border-box;\n }\n\n .lm_stack.lm_item {\n background-color: var(--rapid-layout-item-background, var(--neutral-layer-3));\n border-style: solid;\n border-width: var(--rapid-layout-item-border-width, 0);\n border-color: var(--rapid-layout-item-border-color, var(--neutral-stroke-rest));\n border-radius: var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px));\n box-sizing: border-box;\n }\n\n .lm_maximised .lm_header {\n border-bottom: var(--card-border, 0);\n position: unset;\n }\n\n .lm_maximised .lm_header .lm_tabs {\n z-index: 3;\n }\n\n .lm_content {\n background-color: var(--neutral-layer-card-container);\n border-radius: calc(var(--control-corner-radius) * 1.5px) calc(var(--control-corner-radius) * 1.5px)\n var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px))\n var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px));\n border: var(--rapid-layout-item-inner-border, 1px solid var(--neutral-stroke-rest));\n box-sizing: border-box;\n color: var(--neutral-foreground-rest);\n }\n\n .lm_header .lm_tabs {\n padding: 0 16px;\n }\n\n .lm_header .lm_tab.lm_active {\n background: var(--tab-active-background-color, var(--neutral-layer-card-container));\n color: var(--accent-foreground-rest);\n border-style: solid;\n border-width: var(--tab-active-border-width, 1px 1px 0 1px);\n border-color: var(--tab-active-border-color, var(--neutral-stroke-rest));\n }\n\n .lm_header .lm_tab {\n align-items: center;\n background: var(--tab-rest-background-color, var(--neutral-layer-4));\n border-style: solid;\n border-width: var(--tab-rest-border-width, 1px);\n border-color: var(--tab-rest-border-color, transparent);\n border-radius: calc(var(--control-corner-radius) * 1.5px)\n calc(var(--control-corner-radius) * 1.5px) 0 0;\n color: var(--accent-foreground-rest);\n display: flex;\n font-family: inherit;\n font-size: var(--type-ramp-minus-1-font-size);\n font-weight: 400;\n height: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n margin-right: 2px;\n padding: 0 calc((12 + var(--design-unit) * 2 * var(--density)) * 1px);\n float: left;\n cursor: pointer;\n position: relative;\n }\n\n .lm_header .lm_tab:not(.lm_active):hover {\n background-color: var(--neutral-layer-card-container);\n color: var(--accent-foreground-rest);\n }\n\n .lm_header .lm_controls {\n top: 4px;\n display: flex;\n }\n .lm_header .lm_controls > * {\n width: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) - 8px);\n height: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) - 8px);\n background-repeat: no-repeat;\n background-position: center;\n background-size: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.45);\n background-color: var(\n --icon-button-background,\n color-mix(in srgb, var(--neutral-fill-strong-rest), transparent 90%)\n );\n border-radius: calc(var(--control-corner-radius) * 1.5px);\n margin-right: 4px;\n top: 3px;\n opacity: 1;\n }\n .lm_header .lm_controls > *:hover {\n background-color: color-mix(in srgb, var(--neutral-fill-strong-hover), transparent 75%);\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: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.2777);\n background-repeat: no-repeat;\n background-position: center;\n margin-left: calc((12 + var(--design-unit) * 2 * var(--density)) * 1px);\n position: relative;\n }\n\n .lm_header .lm_tab:not(.lm_active) .lm_title {\n color: var(--neutral-foreground-hint);\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: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n right: 108px;\n background-color: var(--neutral-layer-3);\n border: 1px solid;\n border-color: var(--neutral-stroke-rest);\n border-radius: calc(var(--control-corner-radius) * 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: var(--neutral-foreground-rest);\n height: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n border-radius: 0;\n overflow: visible;\n text-overflow: unset;\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: 0;\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: var(--accent-fill-rest);\n border-radius: calc(var(--control-corner-radius) * 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 !important;\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 !important;\n }\n .lm_header {\n overflow: visible;\n position: relative;\n border-bottom: var(--card-border, 0);\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 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 user-select: none;\n }\n .lm_header .lm_tab .lm_close_tab {\n width: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.3888);\n height: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.3888);\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 box-shadow: none;\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`",
292
- "description": "`ElementStyles` which defines the css for FoundationLayout.",
293
- "privacy": "public"
294
- }
295
- ],
296
- "exports": [
297
- {
298
- "kind": "js",
299
- "name": "layoutStyles",
300
- "declaration": {
301
- "name": "layoutStyles",
302
- "module": "src/styles/layout.styles.ts"
238
+ "package": "./layout-components"
303
239
  }
304
240
  }
305
241
  ]
306
242
  },
307
243
  {
308
244
  "kind": "javascript-module",
309
- "path": "src/utils/constants.ts",
245
+ "path": "src/main/layout-components.ts",
310
246
  "declarations": [
311
247
  {
312
248
  "kind": "variable",
313
- "name": "DEFAULT_RELOAD_BUFFER",
249
+ "name": "foundationLayoutComponents",
314
250
  "type": {
315
- "text": "number"
251
+ "text": "object"
316
252
  },
317
- "default": "500",
318
- "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.",
253
+ "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}",
254
+ "description": "Registration object to register the layout with your design system.",
319
255
  "privacy": "public"
320
- },
321
- {
322
- "kind": "variable",
323
- "name": "LAYOUT_POPOUT_CONTROL_KEY",
324
- "type": {
325
- "text": "string"
326
- },
327
- "default": "'f-layout-key'",
328
- "description": "Key to be used for controlling popout behaviour"
329
- },
330
- {
331
- "kind": "variable",
332
- "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
333
- "type": {
334
- "text": "number"
335
- },
336
- "default": "1000",
337
- "description": "How often a popout window should check to broadcast its\ngeometry"
338
- },
339
- {
340
- "kind": "variable",
341
- "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
342
- "type": {
343
- "text": "string"
344
- },
345
- "default": "'f-layout-popout'",
346
- "description": "Put this classname on an element which is a DOM parent of the layout, and\nif the layout goes into popout mode then it will place itself as the only child\nfor the popout container you set."
347
- },
348
- {
349
- "kind": "variable",
350
- "name": "DEFAULT_TAB_HEIGHT",
351
- "type": {
352
- "text": "string"
353
- },
354
- "default": "'36px'"
355
- },
356
- {
357
- "kind": "function",
358
- "name": "getLayoutHeaderHeight"
359
- },
360
- {
361
- "kind": "variable",
362
- "name": "DEFAULT_BORDER_WIDTH",
363
- "type": {
364
- "text": "number"
365
- },
366
- "default": "0"
367
- },
368
- {
369
- "kind": "function",
370
- "name": "getItemBorderWidth"
371
256
  }
372
257
  ],
373
258
  "exports": [
374
259
  {
375
260
  "kind": "js",
376
- "name": "DEFAULT_RELOAD_BUFFER",
377
- "declaration": {
378
- "name": "DEFAULT_RELOAD_BUFFER",
379
- "module": "src/utils/constants.ts"
380
- }
381
- },
382
- {
383
- "kind": "js",
384
- "name": "LAYOUT_POPOUT_CONTROL_KEY",
385
- "declaration": {
386
- "name": "LAYOUT_POPOUT_CONTROL_KEY",
387
- "module": "src/utils/constants.ts"
388
- }
389
- },
390
- {
391
- "kind": "js",
392
- "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
393
- "declaration": {
394
- "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
395
- "module": "src/utils/constants.ts"
396
- }
397
- },
398
- {
399
- "kind": "js",
400
- "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
401
- "declaration": {
402
- "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
403
- "module": "src/utils/constants.ts"
404
- }
405
- },
406
- {
407
- "kind": "js",
408
- "name": "DEFAULT_TAB_HEIGHT",
409
- "declaration": {
410
- "name": "DEFAULT_TAB_HEIGHT",
411
- "module": "src/utils/constants.ts"
412
- }
413
- },
414
- {
415
- "kind": "js",
416
- "name": "getLayoutHeaderHeight",
417
- "declaration": {
418
- "name": "getLayoutHeaderHeight",
419
- "module": "src/utils/constants.ts"
420
- }
421
- },
422
- {
423
- "kind": "js",
424
- "name": "DEFAULT_BORDER_WIDTH",
425
- "declaration": {
426
- "name": "DEFAULT_BORDER_WIDTH",
427
- "module": "src/utils/constants.ts"
428
- }
429
- },
430
- {
431
- "kind": "js",
432
- "name": "getItemBorderWidth",
261
+ "name": "foundationLayoutComponents",
433
262
  "declaration": {
434
- "name": "getItemBorderWidth",
435
- "module": "src/utils/constants.ts"
263
+ "name": "foundationLayoutComponents",
264
+ "module": "src/main/layout-components.ts"
436
265
  }
437
266
  }
438
267
  ]
439
268
  },
440
269
  {
441
270
  "kind": "javascript-module",
442
- "path": "src/utils/error.ts",
271
+ "path": "src/main/layout-item.ts",
443
272
  "declarations": [
444
273
  {
445
274
  "kind": "class",
446
275
  "description": "",
447
- "name": "LayoutUsageError",
448
- "superclass": {
449
- "name": "Error",
450
- "module": "src/utils/error.ts"
451
- }
452
- },
453
- {
454
- "kind": "class",
455
- "description": "",
456
- "name": "LayoutRegistrationError",
457
- "superclass": {
458
- "name": "Error",
459
- "module": "src/utils/error.ts"
460
- }
461
- }
462
- ],
463
- "exports": [
464
- {
465
- "kind": "js",
466
- "name": "LayoutUsageError",
467
- "declaration": {
468
- "name": "LayoutUsageError",
469
- "module": "src/utils/error.ts"
470
- }
471
- },
472
- {
473
- "kind": "js",
474
- "name": "LayoutRegistrationError",
475
- "declaration": {
476
- "name": "LayoutRegistrationError",
477
- "module": "src/utils/error.ts"
478
- }
479
- }
480
- ]
481
- },
482
- {
483
- "kind": "javascript-module",
484
- "path": "src/utils/events.ts",
485
- "declarations": [
486
- {
487
- "kind": "variable",
488
- "name": "LayoutEmitEvents",
489
- "type": {
490
- "text": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n stateChanged: 'state-changed',\n}"
491
- },
492
- "default": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n stateChanged: 'state-changed',\n}",
493
- "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\n<br/>\n'stateChanged' - emitted on every persisted layout change. This is the broadest\nevent: it fires wherever the layout caches/saves its state, which includes item\nadd/remove/resize but ALSO the changes the granular events miss — dragging a pane\nto a new position, loading a whole layout via FoundationLayout.loadLayout,\nreverting to the default, and contained-item autosave requests. Prefer this when\nyou need to mirror the layout to your own store and must not miss any change.",
494
- "privacy": "public"
495
- },
496
- {
497
- "kind": "variable",
498
- "name": "LayoutReceiveEvents",
499
- "type": {
500
- "text": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}"
276
+ "name": "FoundationLayoutItem",
277
+ "members": [
278
+ {
279
+ "kind": "field",
280
+ "name": "title",
281
+ "type": {
282
+ "text": "string"
283
+ },
284
+ "description": "Sets the title of the item which is displayed on the tab.",
285
+ "privacy": "public"
286
+ },
287
+ {
288
+ "kind": "field",
289
+ "name": "closable",
290
+ "type": {
291
+ "text": "boolean"
292
+ },
293
+ "default": "false",
294
+ "description": "Boolean attribute controls whether the window can be closed in the GUI.\nDefaults to `false`.",
295
+ "privacy": "public"
296
+ },
297
+ {
298
+ "kind": "field",
299
+ "name": "size",
300
+ "type": {
301
+ "text": "string"
302
+ },
303
+ "description": "optional string describing the size of the new item (see the written documentation for more info)",
304
+ "privacy": "public"
305
+ },
306
+ {
307
+ "kind": "field",
308
+ "name": "registration",
309
+ "type": {
310
+ "text": "string"
311
+ },
312
+ "description": "Sets the registration name for the item, which can be used later to add the item via the JavaScript API using FoundationLayout.addItem.",
313
+ "privacy": "public"
314
+ },
315
+ {
316
+ "kind": "field",
317
+ "name": "_presentation",
318
+ "type": {
319
+ "text": "ComponentPresentation | null | undefined"
320
+ },
321
+ "privacy": "private",
322
+ "default": "void 0",
323
+ "inheritedFrom": {
324
+ "name": "FoundationElement",
325
+ "module": "src/foundation-element/foundation-element.ts"
326
+ }
327
+ },
328
+ {
329
+ "kind": "field",
330
+ "name": "$presentation",
331
+ "type": {
332
+ "text": "ComponentPresentation | null"
333
+ },
334
+ "privacy": "public",
335
+ "description": "A property which resolves the ComponentPresentation instance\nfor the current component.",
336
+ "inheritedFrom": {
337
+ "name": "FoundationElement",
338
+ "module": "src/foundation-element/foundation-element.ts"
339
+ }
340
+ },
341
+ {
342
+ "kind": "field",
343
+ "name": "template",
344
+ "type": {
345
+ "text": "ElementViewTemplate | void | null"
346
+ },
347
+ "privacy": "public",
348
+ "description": "Sets the template of the element instance. When undefined,\nthe element will attempt to resolve the template from\nthe associated presentation or custom element definition.",
349
+ "inheritedFrom": {
350
+ "name": "FoundationElement",
351
+ "module": "src/foundation-element/foundation-element.ts"
352
+ }
353
+ },
354
+ {
355
+ "kind": "method",
356
+ "name": "templateChanged",
357
+ "privacy": "protected",
358
+ "return": {
359
+ "type": {
360
+ "text": "void"
361
+ }
362
+ },
363
+ "inheritedFrom": {
364
+ "name": "FoundationElement",
365
+ "module": "src/foundation-element/foundation-element.ts"
366
+ }
367
+ },
368
+ {
369
+ "kind": "field",
370
+ "name": "styles",
371
+ "type": {
372
+ "text": "ElementStyles | void | null"
373
+ },
374
+ "privacy": "public",
375
+ "description": "Sets the default styles for the element instance. When undefined,\nthe element will attempt to resolve default styles from\nthe associated presentation or custom element definition.",
376
+ "inheritedFrom": {
377
+ "name": "FoundationElement",
378
+ "module": "src/foundation-element/foundation-element.ts"
379
+ }
380
+ },
381
+ {
382
+ "kind": "method",
383
+ "name": "stylesChanged",
384
+ "privacy": "protected",
385
+ "return": {
386
+ "type": {
387
+ "text": "void"
388
+ }
389
+ },
390
+ "inheritedFrom": {
391
+ "name": "FoundationElement",
392
+ "module": "src/foundation-element/foundation-element.ts"
393
+ }
394
+ },
395
+ {
396
+ "kind": "method",
397
+ "name": "compose",
398
+ "privacy": "public",
399
+ "static": true,
400
+ "return": {
401
+ "type": {
402
+ "text": "(\n overrideDefinition?: OverrideFoundationElementDefinition<T>\n ) => FoundationElementRegistry<T, K>"
403
+ }
404
+ },
405
+ "parameters": [
406
+ {
407
+ "name": "this",
408
+ "type": {
409
+ "text": "K"
410
+ }
411
+ },
412
+ {
413
+ "name": "elementDefinition",
414
+ "type": {
415
+ "text": "T"
416
+ },
417
+ "description": "The definition of the element to create the registry\nfunction for."
418
+ }
419
+ ],
420
+ "description": "Defines an element registry function with a set of element definition defaults.",
421
+ "inheritedFrom": {
422
+ "name": "FoundationElement",
423
+ "module": "src/foundation-element/foundation-element.ts"
424
+ }
425
+ }
426
+ ],
427
+ "attributes": [
428
+ {
429
+ "name": "title",
430
+ "type": {
431
+ "text": "string"
432
+ },
433
+ "description": "Sets the title of the item which is displayed on the tab.",
434
+ "fieldName": "title"
435
+ },
436
+ {
437
+ "type": {
438
+ "text": "boolean"
439
+ },
440
+ "default": "false",
441
+ "description": "Boolean attribute controls whether the window can be closed in the GUI.\nDefaults to `false`.",
442
+ "fieldName": "closable"
443
+ },
444
+ {
445
+ "name": "size",
446
+ "type": {
447
+ "text": "string"
448
+ },
449
+ "description": "optional string describing the size of the new item (see the written documentation for more info)",
450
+ "fieldName": "size"
451
+ },
452
+ {
453
+ "name": "registration",
454
+ "type": {
455
+ "text": "string"
456
+ },
457
+ "description": "Sets the registration name for the item, which can be used later to add the item via the JavaScript API using FoundationLayout.addItem.",
458
+ "fieldName": "registration"
459
+ }
460
+ ],
461
+ "superclass": {
462
+ "name": "FoundationElement",
463
+ "package": "@microsoft/fast-foundation"
501
464
  },
502
- "default": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}",
503
- "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.",
504
- "privacy": "public"
465
+ "tagName": "%%prefix%%-layout-item",
466
+ "customElement": true
505
467
  }
506
468
  ],
507
469
  "exports": [
508
470
  {
509
471
  "kind": "js",
510
- "name": "LayoutEmitEvents",
511
- "declaration": {
512
- "name": "LayoutEmitEvents",
513
- "module": "src/utils/events.ts"
514
- }
515
- },
516
- {
517
- "kind": "js",
518
- "name": "LayoutReceiveEvents",
472
+ "name": "FoundationLayoutItem",
519
473
  "declaration": {
520
- "name": "LayoutReceiveEvents",
521
- "module": "src/utils/events.ts"
474
+ "name": "FoundationLayoutItem",
475
+ "module": "src/main/layout-item.ts"
522
476
  }
523
477
  }
524
478
  ]
525
479
  },
526
480
  {
527
481
  "kind": "javascript-module",
528
- "path": "src/utils/factory-registry.ts",
482
+ "path": "src/main/layout-main.ts",
529
483
  "declarations": [
530
484
  {
531
- "kind": "function",
532
- "name": "registerFactory",
533
- "return": {
534
- "type": {
535
- "text": "void"
536
- }
537
- },
538
- "parameters": [
485
+ "kind": "class",
486
+ "description": "",
487
+ "name": "FoundationLayout",
488
+ "members": [
539
489
  {
540
- "name": "key",
490
+ "kind": "field",
491
+ "name": "layout",
541
492
  "type": {
542
- "text": "string"
493
+ "text": "GoldenLayout"
543
494
  },
544
- "description": "Unique identifier for the factory. Should be descriptive and unique across the application."
495
+ "privacy": "private"
545
496
  },
546
497
  {
547
- "name": "factory",
548
- "type": {
549
- "text": "ComponentFactory"
550
- },
551
- "description": "The factory function that creates the component."
552
- }
553
- ],
554
- "description": "Registers a factory function with a unique key.\nThis allows framework components to be used in the declarative layout API\nwithout needing to pass function references through HTML attributes.",
555
- "privacy": "public"
556
- },
557
- {
558
- "kind": "function",
559
- "name": "getFactory",
560
- "return": {
561
- "type": {
562
- "text": ""
563
- }
564
- },
565
- "parameters": [
566
- {
567
- "name": "key",
498
+ "kind": "field",
499
+ "name": "layoutConfig",
568
500
  "type": {
569
- "text": "string"
501
+ "text": "LayoutConfig"
570
502
  },
571
- "description": "The unique identifier for the factory."
572
- }
573
- ],
574
- "description": "Retrieves a factory function by its key.",
575
- "privacy": "public"
576
- },
577
- {
578
- "kind": "function",
579
- "name": "unregisterFactory",
580
- "return": {
581
- "type": {
582
- "text": ""
583
- }
584
- },
585
- "parameters": [
503
+ "privacy": "private",
504
+ "default": "{ root: undefined }"
505
+ },
586
506
  {
587
- "name": "key",
507
+ "kind": "field",
508
+ "name": "defaultLayoutConfig",
588
509
  "type": {
589
- "text": "string"
590
- },
591
- "description": "The unique identifier for the factory to remove."
592
- }
593
- ],
594
- "description": "Removes a factory from the registry.\nThis is useful for cleanup when a component is unmounted or no longer needed.",
595
- "privacy": "public"
596
- }
597
- ],
598
- "exports": [
599
- {
600
- "kind": "js",
601
- "name": "registerFactory",
602
- "declaration": {
603
- "name": "registerFactory",
604
- "module": "src/utils/factory-registry.ts"
605
- }
606
- },
607
- {
608
- "kind": "js",
609
- "name": "getFactory",
610
- "declaration": {
611
- "name": "getFactory",
612
- "module": "src/utils/factory-registry.ts"
613
- }
614
- },
615
- {
616
- "kind": "js",
617
- "name": "unregisterFactory",
618
- "declaration": {
619
- "name": "unregisterFactory",
620
- "module": "src/utils/factory-registry.ts"
621
- }
622
- }
623
- ]
624
- },
625
- {
626
- "kind": "javascript-module",
627
- "path": "src/utils/index.ts",
628
- "declarations": [],
629
- "exports": [
630
- {
631
- "kind": "js",
632
- "name": "*",
633
- "declaration": {
634
- "name": "*",
635
- "package": "./constants"
636
- }
637
- },
638
- {
639
- "kind": "js",
640
- "name": "*",
641
- "declaration": {
642
- "name": "*",
643
- "package": "./error"
644
- }
645
- },
646
- {
647
- "kind": "js",
648
- "name": "*",
649
- "declaration": {
650
- "name": "*",
651
- "package": "./events"
652
- }
653
- },
654
- {
655
- "kind": "js",
656
- "name": "*",
657
- "declaration": {
658
- "name": "*",
659
- "package": "./factory-registry"
660
- }
661
- },
662
- {
663
- "kind": "js",
664
- "name": "*",
665
- "declaration": {
666
- "name": "*",
667
- "package": "./misc"
668
- }
669
- },
670
- {
671
- "kind": "js",
672
- "name": "*",
673
- "declaration": {
674
- "name": "*",
675
- "package": "./templates"
676
- }
677
- },
678
- {
679
- "kind": "js",
680
- "name": "*",
681
- "declaration": {
682
- "name": "*",
683
- "package": "./popout-events"
684
- }
685
- },
686
- {
687
- "kind": "js",
688
- "name": "*",
689
- "declaration": {
690
- "name": "*",
691
- "package": "./types"
692
- }
693
- },
694
- {
695
- "kind": "js",
696
- "name": "*",
697
- "declaration": {
698
- "name": "*",
699
- "package": "./error"
700
- }
701
- }
702
- ]
703
- },
704
- {
705
- "kind": "javascript-module",
706
- "path": "src/utils/logger.ts",
707
- "declarations": [
708
- {
709
- "kind": "variable",
710
- "name": "logger"
711
- }
712
- ],
713
- "exports": [
714
- {
715
- "kind": "js",
716
- "name": "logger",
717
- "declaration": {
718
- "name": "logger",
719
- "module": "src/utils/logger.ts"
720
- }
721
- }
722
- ]
723
- },
724
- {
725
- "kind": "javascript-module",
726
- "path": "src/utils/misc.ts",
727
- "declarations": [],
728
- "exports": []
729
- },
730
- {
731
- "kind": "javascript-module",
732
- "path": "src/utils/popout-events.ts",
733
- "declarations": [
734
- {
735
- "kind": "variable",
736
- "name": "LAYOUT_POPOUT_CHANNEL_NAME",
737
- "type": {
738
- "text": "string"
739
- },
740
- "default": "'f-layout-popout-channel'",
741
- "description": "Name of the default broadcast channel used for layout popouts",
742
- "privacy": "public"
743
- }
744
- ],
745
- "exports": [
746
- {
747
- "kind": "js",
748
- "name": "LAYOUT_POPOUT_CHANNEL_NAME",
749
- "declaration": {
750
- "name": "LAYOUT_POPOUT_CHANNEL_NAME",
751
- "module": "src/utils/popout-events.ts"
752
- }
753
- },
754
- {
755
- "kind": "js",
756
- "name": "PopoutGeometry",
757
- "declaration": {
758
- "name": "PopoutGeometry",
759
- "module": "src/utils/popout-events.ts"
760
- }
761
- }
762
- ]
763
- },
764
- {
765
- "kind": "javascript-module",
766
- "path": "src/utils/templates.ts",
767
- "declarations": [],
768
- "exports": []
769
- },
770
- {
771
- "kind": "javascript-module",
772
- "path": "src/utils/types.ts",
773
- "declarations": [],
774
- "exports": []
775
- },
776
- {
777
- "kind": "javascript-module",
778
- "path": "src/main/index.ts",
779
- "declarations": [],
780
- "exports": [
781
- {
782
- "kind": "js",
783
- "name": "FoundationLayoutItem",
784
- "declaration": {
785
- "name": "FoundationLayoutItem",
786
- "module": "./layout-item"
787
- }
788
- },
789
- {
790
- "kind": "js",
791
- "name": "FoundationLayoutRegion",
792
- "declaration": {
793
- "name": "FoundationLayoutRegion",
794
- "module": "./layout-region"
795
- }
796
- },
797
- {
798
- "kind": "js",
799
- "name": "FoundationLayout",
800
- "declaration": {
801
- "name": "FoundationLayout",
802
- "module": "./layout-main"
803
- }
804
- },
805
- {
806
- "kind": "js",
807
- "name": "layoutStyles",
808
- "declaration": {
809
- "name": "layoutStyles",
810
- "module": "./layout-main"
811
- }
812
- },
813
- {
814
- "kind": "js",
815
- "name": "layoutTemplate",
816
- "declaration": {
817
- "name": "layoutTemplate",
818
- "module": "./layout-main"
819
- }
820
- },
821
- {
822
- "kind": "js",
823
- "name": "*",
824
- "declaration": {
825
- "name": "*",
826
- "package": "./layout-components"
827
- }
828
- }
829
- ]
830
- },
831
- {
832
- "kind": "javascript-module",
833
- "path": "src/main/layout-components.ts",
834
- "declarations": [
835
- {
836
- "kind": "variable",
837
- "name": "foundationLayoutComponents",
838
- "type": {
839
- "text": "object"
840
- },
841
- "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}",
842
- "description": "Registration object to register the layout with your design system.",
843
- "privacy": "public"
844
- }
845
- ],
846
- "exports": [
847
- {
848
- "kind": "js",
849
- "name": "foundationLayoutComponents",
850
- "declaration": {
851
- "name": "foundationLayoutComponents",
852
- "module": "src/main/layout-components.ts"
853
- }
854
- }
855
- ]
856
- },
857
- {
858
- "kind": "javascript-module",
859
- "path": "src/main/layout-item.ts",
860
- "declarations": [
861
- {
862
- "kind": "class",
863
- "description": "",
864
- "name": "FoundationLayoutItem",
865
- "members": [
510
+ "text": "LayoutConfig"
511
+ },
512
+ "privacy": "private",
513
+ "default": "{ root: undefined }"
514
+ },
866
515
  {
867
516
  "kind": "field",
868
- "name": "title",
517
+ "name": "reloadBuffer",
869
518
  "type": {
870
- "text": "string"
519
+ "text": "number"
871
520
  },
872
- "description": "Sets the title of the item which is displayed on the tab.",
521
+ "default": "DEFAULT_RELOAD_BUFFER",
522
+ "description": "Number describing how long to wait in ms before reloading the config when adding items\ndeclaratively by the html API. Default 500 (ms).",
873
523
  "privacy": "public"
874
524
  },
875
525
  {
876
526
  "kind": "field",
877
- "name": "closable",
527
+ "name": "reloadPending",
528
+ "type": {
529
+ "text": "boolean"
530
+ },
531
+ "privacy": "private",
532
+ "default": "false"
533
+ },
534
+ {
535
+ "kind": "field",
536
+ "name": "registeredComponents",
537
+ "type": {
538
+ "text": "number"
539
+ },
540
+ "privacy": "private",
541
+ "default": "0"
542
+ },
543
+ {
544
+ "kind": "field",
545
+ "name": "autoSaveKey",
546
+ "type": {
547
+ "text": "string | undefined"
548
+ },
549
+ "description": "Attribute which if set will auto save and load the layout as the user changes it.\nOmit this attribute to disable this feature.\nSet attribute using `auto-save-key`.",
550
+ "privacy": "public"
551
+ },
552
+ {
553
+ "kind": "field",
554
+ "name": "missingItemPlaceholder",
555
+ "description": "Function which is used to generate the placeholder text when a layout is loaded\nwith a missing item.",
556
+ "privacy": "public"
557
+ },
558
+ {
559
+ "kind": "field",
560
+ "name": "dimensionsConfig",
561
+ "type": {
562
+ "text": "LayoutConfig.Dimensions | undefined"
563
+ },
564
+ "description": "Apply dimensions config to the layout, such as setting the size of the drag handles.",
565
+ "privacy": "public"
566
+ },
567
+ {
568
+ "kind": "field",
569
+ "name": "hasFirstLoaded",
878
570
  "type": {
879
571
  "text": "boolean"
880
572
  },
881
573
  "default": "false",
882
- "description": "Boolean attribute controls whether the window can be closed in the GUI.\nDefaults to `false`.",
574
+ "description": "Boolean signifies whether the layout has loaded for the first time or not.",
575
+ "privacy": "public"
576
+ },
577
+ {
578
+ "kind": "field",
579
+ "name": "customButtons",
580
+ "type": {
581
+ "text": "CustomButton[]"
582
+ },
583
+ "default": "[]",
584
+ "description": "Set custom button definition on this property to add them to the layout header controls",
585
+ "privacy": "public"
586
+ },
587
+ {
588
+ "kind": "field",
589
+ "name": "dragging",
590
+ "type": {
591
+ "text": "boolean"
592
+ },
593
+ "default": "false",
594
+ "privacy": "public"
595
+ },
596
+ {
597
+ "kind": "field",
598
+ "name": "class",
599
+ "privacy": "public",
600
+ "default": "'FoundationLayoutMain'",
601
+ "type": {
602
+ "text": "'FoundationLayoutMain'"
603
+ }
604
+ },
605
+ {
606
+ "kind": "field",
607
+ "name": "lifecycleUpdateToken",
608
+ "type": {
609
+ "text": "string | undefined"
610
+ },
611
+ "privacy": "public",
612
+ "default": "undefined",
613
+ "description": "Used to calculate whether a layout item should run its lifecycle methods or not"
614
+ },
615
+ {
616
+ "kind": "field",
617
+ "name": "popoutConfig",
618
+ "type": {
619
+ "text": "LayoutPopoutConfig | undefined"
620
+ },
621
+ "default": "undefined",
622
+ "description": "Controls whether popout functionality is enabled on the layout. Defaults to disabled.\nPass an empty object `{}` to use default configurations, or a LayoutPopoutConfig object to further customise."
623
+ },
624
+ {
625
+ "kind": "method",
626
+ "name": "layoutRequiredRegistrations",
627
+ "static": true,
628
+ "return": {
629
+ "type": {
630
+ "text": ""
631
+ }
632
+ },
633
+ "parameters": [
634
+ {
635
+ "name": "layout",
636
+ "type": {
637
+ "text": "SerialisedLayout"
638
+ },
639
+ "description": "any version of {@link SerialisedLayout}object describing the layout\n * "
640
+ }
641
+ ],
642
+ "description": "JS API, public",
643
+ "privacy": "public"
644
+ },
645
+ {
646
+ "kind": "method",
647
+ "name": "registeredItems",
648
+ "return": {
649
+ "type": {
650
+ "text": ""
651
+ }
652
+ },
653
+ "privacy": "public"
654
+ },
655
+ {
656
+ "kind": "method",
657
+ "name": "getLayout",
658
+ "return": {
659
+ "type": {
660
+ "text": ""
661
+ }
662
+ },
663
+ "privacy": "public"
664
+ },
665
+ {
666
+ "kind": "method",
667
+ "name": "tryActivatePopoutMode",
668
+ "return": {
669
+ "type": {
670
+ "text": "boolean"
671
+ }
672
+ },
673
+ "description": "If in a popout window from the dynamic layout, this function will run the flow to put the component in popout mode.\nThis function is automatically called if using the declarative HTML API, but if only using the JavaScript API then you will need to call this function manually."
674
+ },
675
+ {
676
+ "kind": "method",
677
+ "name": "tryLoadLayoutFromLocalStorage",
678
+ "return": {
679
+ "type": {
680
+ "text": ""
681
+ }
682
+ },
683
+ "description": "Try to load a layout from local storage, or return false. Only required if manually calling FoundationLayout.registerItem",
684
+ "privacy": "public"
685
+ },
686
+ {
687
+ "kind": "method",
688
+ "name": "clearAutosaveAndRevertToDefault",
689
+ "return": {
690
+ "type": {
691
+ "text": ""
692
+ }
693
+ },
694
+ "privacy": "public"
695
+ },
696
+ {
697
+ "kind": "method",
698
+ "name": "loadLayout",
699
+ "parameters": [
700
+ {
701
+ "name": "layout",
702
+ "type": {
703
+ "text": "SerialisedLayout"
704
+ },
705
+ "description": "any version of {@link SerialisedLayout}object describing the layout\n * "
706
+ },
707
+ {
708
+ "name": "handleMissingItem",
709
+ "default": "'error'",
710
+ "type": {
711
+ "text": "'placeholder' | 'error'"
712
+ },
713
+ "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 * "
714
+ },
715
+ {
716
+ "name": "disableCache",
717
+ "default": "false",
718
+ "type": {
719
+ "text": "boolean"
720
+ },
721
+ "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 * "
722
+ }
723
+ ],
724
+ "privacy": "public"
725
+ },
726
+ {
727
+ "kind": "method",
728
+ "name": "addItem",
729
+ "parameters": [
730
+ {
731
+ "name": "config",
732
+ "type": {
733
+ "text": "RegisteredElementConfig | RegisteredElementConfig[]"
734
+ },
735
+ "description": "{@link RegisteredElementConfig}configuration items for the new items(s). Pass an array of {@link RegisteredElementConfig}to add multiple items at once.\n * "
736
+ },
737
+ {
738
+ "name": "placement",
739
+ "default": "defaultAddItemPlacement",
740
+ "type": {
741
+ "text": "Placement"
742
+ },
743
+ "description": "where and how to add the new items to the layout. For more info and defaults see {@link Placement}.\n * "
744
+ }
745
+ ],
746
+ "privacy": "public"
747
+ },
748
+ {
749
+ "kind": "method",
750
+ "name": "removeItems",
751
+ "return": {
752
+ "type": {
753
+ "text": ""
754
+ }
755
+ },
756
+ "parameters": [
757
+ {
758
+ "name": "registration",
759
+ "type": {
760
+ "text": "string"
761
+ },
762
+ "description": "string of the registration ID"
763
+ },
764
+ {
765
+ "name": "force",
766
+ "default": "false",
767
+ "type": {
768
+ "text": "boolean"
769
+ },
770
+ "description": "if set to true then the item will be removed even if it is not closable. Defaults to false, which is the same behaviour as the close button on the header."
771
+ }
772
+ ],
883
773
  "privacy": "public"
884
774
  },
885
775
  {
886
- "kind": "field",
887
- "name": "size",
888
- "type": {
889
- "text": "string"
776
+ "kind": "method",
777
+ "name": "registerItem",
778
+ "return": {
779
+ "type": {
780
+ "text": ""
781
+ }
890
782
  },
891
- "description": "optional string describing the size of the new item (see the written documentation for more info)",
783
+ "parameters": [
784
+ {
785
+ "name": "registration",
786
+ "type": {
787
+ "text": "string"
788
+ },
789
+ "description": "string of the registration ID"
790
+ },
791
+ {
792
+ "name": "elementsOrFactory",
793
+ "type": {
794
+ "text": "Element[] | ComponentFactory"
795
+ },
796
+ "description": "Either Elements[] containing the reference to the elements to register, or a ComponentFactory function"
797
+ }
798
+ ],
892
799
  "privacy": "public"
893
800
  },
894
801
  {
895
- "kind": "field",
896
- "name": "registration",
897
- "type": {
898
- "text": "string"
802
+ "kind": "method",
803
+ "name": "updateLifecycleToken",
804
+ "privacy": "private",
805
+ "return": {
806
+ "type": {
807
+ "text": "void"
808
+ }
899
809
  },
900
- "description": "Sets the registration name for the item, which can be used later to add the item via the JavaScript API using FoundationLayout.addItem.",
901
- "privacy": "public"
810
+ "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"
811
+ },
812
+ {
813
+ "kind": "method",
814
+ "name": "handleGLRunErrors",
815
+ "privacy": "private",
816
+ "parameters": [
817
+ {
818
+ "name": "e",
819
+ "type": {
820
+ "text": "Error"
821
+ }
822
+ }
823
+ ],
824
+ "description": "For specific golden layout errors we can provide better information to the caller. Else re-throw the original error"
902
825
  },
903
826
  {
904
827
  "kind": "field",
@@ -1012,404 +935,375 @@
1012
935
  }
1013
936
  }
1014
937
  ],
1015
- "attributes": [
938
+ "events": [
1016
939
  {
1017
- "name": "title",
1018
- "type": {
1019
- "text": "string"
1020
- },
1021
- "description": "Sets the title of the item which is displayed on the tab.",
1022
- "fieldName": "title"
940
+ "description": "emitted when the layout has finished loading the first time",
941
+ "name": "first-loaded"
1023
942
  },
1024
943
  {
1025
- "type": {
1026
- "text": "boolean"
1027
- },
1028
- "default": "false",
1029
- "description": "Boolean attribute controls whether the window can be closed in the GUI.\nDefaults to `false`.",
1030
- "fieldName": "closable"
944
+ "description": "emitted when an item is added to the layout",
945
+ "name": "item-added"
1031
946
  },
1032
947
  {
1033
- "name": "size",
948
+ "description": "emitted when an item is removed from the layout",
949
+ "name": "item-removed"
950
+ },
951
+ {
952
+ "description": "emitted when the user drags the divider to resize elements",
953
+ "name": "item-resized"
954
+ },
955
+ {
956
+ "description": "emitted on every persisted layout change (add/remove/resize, drag-move, loadLayout, revert-to-default, autosave request); use this to mirror the layout without missing any change",
957
+ "name": "state-changed"
958
+ }
959
+ ],
960
+ "attributes": [
961
+ {
962
+ "name": "reload-buffer",
1034
963
  "type": {
1035
- "text": "string"
964
+ "text": "number"
1036
965
  },
1037
- "description": "optional string describing the size of the new item (see the written documentation for more info)",
1038
- "fieldName": "size"
966
+ "default": "DEFAULT_RELOAD_BUFFER",
967
+ "description": "Number describing how long to wait in ms before reloading the config when adding items\ndeclaratively by the html API. Default 500 (ms).",
968
+ "resolveInitializer": {
969
+ "module": "/src/utils"
970
+ },
971
+ "fieldName": "reloadBuffer"
1039
972
  },
1040
973
  {
1041
- "name": "registration",
974
+ "name": "auto-save-key",
1042
975
  "type": {
1043
- "text": "string"
976
+ "text": "string | undefined"
1044
977
  },
1045
- "description": "Sets the registration name for the item, which can be used later to add the item via the JavaScript API using FoundationLayout.addItem.",
1046
- "fieldName": "registration"
978
+ "description": "Attribute which if set will auto save and load the layout as the user changes it.\nOmit this attribute to disable this feature.\nSet attribute using `auto-save-key`.",
979
+ "fieldName": "autoSaveKey"
1047
980
  }
1048
981
  ],
1049
982
  "superclass": {
1050
983
  "name": "FoundationElement",
1051
984
  "package": "@microsoft/fast-foundation"
1052
985
  },
1053
- "tagName": "%%prefix%%-layout-item",
986
+ "tagName": "%%prefix%%-layout",
1054
987
  "customElement": true
988
+ },
989
+ {
990
+ "kind": "variable",
991
+ "name": "layoutTemplate",
992
+ "default": "html<FoundationLayout>`\n <template>\n ${when(\n (x) => Boolean(x.popoutConfig),\n html<FoundationLayout>`\n <foundation-layout-popout-controller\n ${ref('popoutController')}\n :parentLayout=\"${(x) => x}\"\n channel-name=\"${(x) => x.popoutConfig?.channelName}\"\n ></foundation-layout-popout-controller>\n `,\n )}\n ${when((x) => !x.hasFirstLoaded && x.usingDeclerativeAPI, loadingTemplate)}\n <div class=\"layout-container\" ${ref('layoutElement')}></div>\n </template>\n`",
993
+ "description": "`ViewTemplate` which defines the html for FoundationLayout.",
994
+ "privacy": "public"
1055
995
  }
1056
996
  ],
1057
997
  "exports": [
1058
998
  {
1059
999
  "kind": "js",
1060
- "name": "FoundationLayoutItem",
1000
+ "name": "layoutStyles",
1061
1001
  "declaration": {
1062
- "name": "FoundationLayoutItem",
1063
- "module": "src/main/layout-item.ts"
1002
+ "name": "layoutStyles",
1003
+ "module": "../styles"
1004
+ }
1005
+ },
1006
+ {
1007
+ "kind": "js",
1008
+ "name": "FoundationLayout",
1009
+ "declaration": {
1010
+ "name": "FoundationLayout",
1011
+ "module": "src/main/layout-main.ts"
1012
+ }
1013
+ },
1014
+ {
1015
+ "kind": "js",
1016
+ "name": "layoutTemplate",
1017
+ "declaration": {
1018
+ "name": "layoutTemplate",
1019
+ "module": "src/main/layout-main.ts"
1064
1020
  }
1065
1021
  }
1066
1022
  ]
1067
1023
  },
1068
1024
  {
1069
1025
  "kind": "javascript-module",
1070
- "path": "src/main/layout-main.ts",
1026
+ "path": "src/main/layout-popout-controller.ts",
1071
1027
  "declarations": [
1072
1028
  {
1073
1029
  "kind": "class",
1074
1030
  "description": "",
1075
- "name": "FoundationLayout",
1031
+ "name": "FoundationLayoutPopoutController",
1076
1032
  "members": [
1077
1033
  {
1078
1034
  "kind": "field",
1079
- "name": "layout",
1080
- "type": {
1081
- "text": "GoldenLayout"
1082
- },
1083
- "privacy": "private"
1084
- },
1085
- {
1086
- "kind": "field",
1087
- "name": "layoutConfig",
1088
- "type": {
1089
- "text": "LayoutConfig"
1090
- },
1091
- "privacy": "private",
1092
- "default": "{ root: undefined }"
1093
- },
1094
- {
1095
- "kind": "field",
1096
- "name": "defaultLayoutConfig",
1097
- "type": {
1098
- "text": "LayoutConfig"
1099
- },
1100
- "privacy": "private",
1101
- "default": "{ root: undefined }"
1102
- },
1103
- {
1104
- "kind": "field",
1105
- "name": "reloadBuffer",
1106
- "type": {
1107
- "text": "number"
1108
- },
1109
- "default": "DEFAULT_RELOAD_BUFFER",
1110
- "description": "Number describing how long to wait in ms before reloading the config when adding items\ndeclaratively by the html API. Default 500 (ms).",
1111
- "privacy": "public"
1112
- },
1113
- {
1114
- "kind": "field",
1115
- "name": "reloadPending",
1116
- "type": {
1117
- "text": "boolean"
1118
- },
1119
- "privacy": "private",
1120
- "default": "false"
1121
- },
1122
- {
1123
- "kind": "field",
1124
- "name": "registeredComponents",
1125
- "type": {
1126
- "text": "number"
1127
- },
1128
- "privacy": "private",
1129
- "default": "0"
1130
- },
1131
- {
1132
- "kind": "field",
1133
- "name": "autoSaveKey",
1035
+ "name": "channelName",
1134
1036
  "type": {
1135
- "text": "string | undefined"
1136
- },
1137
- "description": "Attribute which if set will auto save and load the layout as the user changes it.\nOmit this attribute to disable this feature.\nSet attribute using `auto-save-key`.",
1138
- "privacy": "public"
1139
- },
1140
- {
1141
- "kind": "field",
1142
- "name": "missingItemPlaceholder",
1143
- "description": "Function which is used to generate the placeholder text when a layout is loaded\nwith a missing item.",
1144
- "privacy": "public"
1037
+ "text": "string"
1038
+ }
1145
1039
  },
1146
1040
  {
1147
1041
  "kind": "field",
1148
- "name": "dimensionsConfig",
1042
+ "name": "layoutKey",
1149
1043
  "type": {
1150
- "text": "LayoutConfig.Dimensions | undefined"
1044
+ "text": "string"
1151
1045
  },
1152
- "description": "Apply dimensions config to the layout, such as setting the size of the drag handles.",
1153
- "privacy": "public"
1046
+ "privacy": "private"
1154
1047
  },
1155
1048
  {
1156
1049
  "kind": "field",
1157
- "name": "hasFirstLoaded",
1050
+ "name": "channel",
1158
1051
  "type": {
1159
- "text": "boolean"
1052
+ "text": "TypedBroadcastChannel<LayoutPopoutEvents>"
1160
1053
  },
1161
- "default": "false",
1162
- "description": "Boolean signifies whether the layout has loaded for the first time or not.",
1163
- "privacy": "public"
1054
+ "privacy": "private"
1164
1055
  },
1165
1056
  {
1166
1057
  "kind": "field",
1167
- "name": "customButtons",
1058
+ "name": "pollInterval",
1168
1059
  "type": {
1169
- "text": "CustomButton[]"
1060
+ "text": "any"
1170
1061
  },
1171
- "default": "[]",
1172
- "description": "Set custom button definition on this property to add them to the layout header controls",
1173
- "privacy": "public"
1062
+ "privacy": "private"
1174
1063
  },
1175
1064
  {
1176
1065
  "kind": "field",
1177
- "name": "dragging",
1066
+ "name": "unloadHandler",
1178
1067
  "type": {
1179
- "text": "boolean"
1068
+ "text": "() => void"
1180
1069
  },
1181
- "default": "false",
1182
- "privacy": "public"
1183
- },
1184
- {
1185
- "kind": "field",
1186
- "name": "class",
1187
- "privacy": "public",
1188
- "default": "'FoundationLayoutMain'",
1189
- "type": {
1190
- "text": "'FoundationLayoutMain'"
1191
- }
1070
+ "privacy": "private"
1192
1071
  },
1193
1072
  {
1194
1073
  "kind": "field",
1195
- "name": "lifecycleUpdateToken",
1074
+ "name": "lastUpdate",
1196
1075
  "type": {
1197
- "text": "string | undefined"
1198
- },
1199
- "privacy": "public",
1200
- "default": "undefined",
1201
- "description": "Used to calculate whether a layout item should run its lifecycle methods or not"
1076
+ "text": "string"
1077
+ },
1078
+ "privacy": "private"
1202
1079
  },
1203
1080
  {
1204
1081
  "kind": "field",
1205
- "name": "popoutConfig",
1082
+ "name": "popoutRegistry",
1206
1083
  "type": {
1207
- "text": "LayoutPopoutConfig | undefined"
1084
+ "text": "Map<\n string,\n { geometry: PopoutGeometry; state?: unknown; window?: Window }\n >"
1208
1085
  },
1209
- "default": "undefined",
1210
- "description": "Controls whether popout functionality is enabled on the layout. Defaults to disabled.\nPass an empty object `{}` to use default configurations, or a LayoutPopoutConfig object to further customise."
1086
+ "privacy": "private",
1087
+ "default": "new Map()"
1211
1088
  },
1212
1089
  {
1213
1090
  "kind": "method",
1214
- "name": "layoutRequiredRegistrations",
1215
- "static": true,
1216
- "return": {
1217
- "type": {
1218
- "text": ""
1219
- }
1220
- },
1091
+ "name": "setupChannel",
1092
+ "privacy": "private"
1093
+ },
1094
+ {
1095
+ "kind": "method",
1096
+ "name": "setupListener",
1097
+ "privacy": "private"
1098
+ },
1099
+ {
1100
+ "kind": "method",
1101
+ "name": "applyStateToParent",
1102
+ "privacy": "private",
1221
1103
  "parameters": [
1222
1104
  {
1223
- "name": "layout",
1105
+ "name": "state",
1224
1106
  "type": {
1225
- "text": "SerialisedLayout"
1226
- },
1227
- "description": "any version of {@link SerialisedLayout}object describing the layout\n * "
1107
+ "text": "unknown"
1108
+ }
1228
1109
  }
1229
- ],
1230
- "description": "JS API, public",
1231
- "privacy": "public"
1110
+ ]
1232
1111
  },
1233
1112
  {
1234
1113
  "kind": "method",
1235
- "name": "registeredItems",
1236
- "return": {
1237
- "type": {
1238
- "text": ""
1239
- }
1240
- },
1241
- "privacy": "public"
1114
+ "name": "setupUnloadListener",
1115
+ "privacy": "private"
1242
1116
  },
1243
1117
  {
1244
1118
  "kind": "method",
1245
- "name": "getLayout",
1246
- "return": {
1247
- "type": {
1248
- "text": ""
1249
- }
1250
- },
1251
- "privacy": "public"
1119
+ "name": "teardownUnloadListener",
1120
+ "privacy": "private"
1252
1121
  },
1253
1122
  {
1254
1123
  "kind": "method",
1255
- "name": "tryActivatePopoutMode",
1256
- "return": {
1257
- "type": {
1258
- "text": "boolean"
1259
- }
1260
- },
1261
- "description": "If in a popout window from the dynamic layout, this function will run the flow to put the component in popout mode.\nThis function is automatically called if using the declarative HTML API, but if only using the JavaScript API then you will need to call this function manually."
1124
+ "name": "emitAutosave",
1125
+ "privacy": "private"
1262
1126
  },
1263
1127
  {
1264
1128
  "kind": "method",
1265
- "name": "tryLoadLayoutFromLocalStorage",
1129
+ "name": "startPolling",
1130
+ "privacy": "private"
1131
+ },
1132
+ {
1133
+ "kind": "method",
1134
+ "name": "stopPolling",
1135
+ "privacy": "private"
1136
+ },
1137
+ {
1138
+ "kind": "method",
1139
+ "name": "getGeometry",
1140
+ "privacy": "private",
1266
1141
  "return": {
1267
1142
  "type": {
1268
- "text": ""
1143
+ "text": "Promise<PopoutGeometry>"
1269
1144
  }
1270
- },
1271
- "description": "Try to load a layout from local storage, or return false. Only required if manually calling FoundationLayout.registerItem",
1272
- "privacy": "public"
1145
+ }
1273
1146
  },
1274
1147
  {
1275
1148
  "kind": "method",
1276
- "name": "clearAutosaveAndRevertToDefault",
1149
+ "name": "getComponentState",
1150
+ "privacy": "private",
1277
1151
  "return": {
1278
1152
  "type": {
1279
- "text": ""
1153
+ "text": "unknown"
1280
1154
  }
1281
- },
1282
- "privacy": "public"
1155
+ }
1283
1156
  },
1284
1157
  {
1285
1158
  "kind": "method",
1286
- "name": "loadLayout",
1159
+ "name": "broadcastUpdate",
1160
+ "privacy": "private",
1287
1161
  "parameters": [
1288
1162
  {
1289
- "name": "layout",
1290
- "type": {
1291
- "text": "SerialisedLayout"
1292
- },
1293
- "description": "any version of {@link SerialisedLayout}object describing the layout\n * "
1294
- },
1295
- {
1296
- "name": "handleMissingItem",
1297
- "default": "'error'",
1163
+ "name": "geometry",
1298
1164
  "type": {
1299
- "text": "'placeholder' | 'error'"
1300
- },
1301
- "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 * "
1165
+ "text": "PopoutGeometry"
1166
+ }
1302
1167
  },
1303
1168
  {
1304
- "name": "disableCache",
1305
- "default": "false",
1169
+ "name": "state",
1170
+ "optional": true,
1306
1171
  "type": {
1307
- "text": "boolean"
1308
- },
1309
- "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 * "
1172
+ "text": "unknown"
1173
+ }
1310
1174
  }
1311
- ],
1312
- "privacy": "public"
1175
+ ]
1313
1176
  },
1314
1177
  {
1315
1178
  "kind": "method",
1316
- "name": "addItem",
1179
+ "name": "openPopout",
1180
+ "privacy": "public",
1317
1181
  "parameters": [
1318
1182
  {
1319
- "name": "config",
1183
+ "name": "registration",
1320
1184
  "type": {
1321
- "text": "RegisteredElementConfig | RegisteredElementConfig[]"
1185
+ "text": "string"
1322
1186
  },
1323
- "description": "{@link RegisteredElementConfig}configuration items for the new items(s). Pass an array of {@link RegisteredElementConfig}to add multiple items at once.\n * "
1187
+ "description": "The registration ID of the component to pop out."
1324
1188
  },
1325
1189
  {
1326
- "name": "placement",
1327
- "default": "defaultAddItemPlacement",
1328
- "type": {
1329
- "text": "Placement"
1330
- },
1331
- "description": "where and how to add the new items to the layout. For more info and defaults see {@link Placement}.\n * "
1332
- }
1333
- ],
1334
- "privacy": "public"
1335
- },
1336
- {
1337
- "kind": "method",
1338
- "name": "removeItems",
1339
- "return": {
1340
- "type": {
1341
- "text": ""
1342
- }
1343
- },
1344
- "parameters": [
1345
- {
1346
- "name": "registration",
1190
+ "name": "popoutState",
1191
+ "optional": true,
1347
1192
  "type": {
1348
- "text": "string"
1193
+ "text": "PopoutState"
1349
1194
  },
1350
- "description": "string of the registration ID"
1195
+ "description": "Optional state (geometry and component state) to use for the new window."
1351
1196
  },
1352
1197
  {
1353
- "name": "force",
1354
- "default": "false",
1198
+ "name": "uuid",
1199
+ "optional": true,
1355
1200
  "type": {
1356
- "text": "boolean"
1201
+ "text": "any"
1357
1202
  },
1358
- "description": "if set to true then the item will be removed even if it is not closable. Defaults to false, which is the same behaviour as the close button on the header."
1203
+ "description": "UUID generator from parent layout"
1359
1204
  }
1360
1205
  ],
1361
- "privacy": "public"
1206
+ "description": "Opens a component in a popout window."
1362
1207
  },
1363
1208
  {
1364
1209
  "kind": "method",
1365
- "name": "registerItem",
1210
+ "name": "getRegistry",
1211
+ "privacy": "public",
1366
1212
  "return": {
1367
1213
  "type": {
1368
- "text": ""
1214
+ "text": "{ [layoutKey: string]: PopoutState }"
1369
1215
  }
1370
- },
1216
+ }
1217
+ },
1218
+ {
1219
+ "kind": "method",
1220
+ "name": "restorePopouts",
1221
+ "privacy": "public",
1371
1222
  "parameters": [
1372
1223
  {
1373
- "name": "registration",
1224
+ "name": "registry",
1374
1225
  "type": {
1375
- "text": "string"
1376
- },
1377
- "description": "string of the registration ID"
1226
+ "text": "{ [layoutKey: string]: PopoutState }"
1227
+ }
1378
1228
  },
1379
1229
  {
1380
- "name": "elementsOrFactory",
1230
+ "name": "uuid",
1381
1231
  "type": {
1382
- "text": "Element[] | ComponentFactory"
1383
- },
1384
- "description": "Either Elements[] containing the reference to the elements to register, or a ComponentFactory function"
1232
+ "text": "any"
1233
+ }
1385
1234
  }
1386
1235
  ],
1387
- "privacy": "public"
1236
+ "description": "Restores popouts from a registry"
1388
1237
  },
1389
1238
  {
1390
1239
  "kind": "method",
1391
- "name": "updateLifecycleToken",
1392
- "privacy": "private",
1393
- "return": {
1394
- "type": {
1395
- "text": "void"
1396
- }
1240
+ "name": "closeAllPopouts",
1241
+ "privacy": "public"
1242
+ }
1243
+ ],
1244
+ "attributes": [
1245
+ {
1246
+ "name": "channel-name",
1247
+ "type": {
1248
+ "text": "string"
1249
+ },
1250
+ "fieldName": "channelName"
1251
+ }
1252
+ ],
1253
+ "superclass": {
1254
+ "name": "FASTElement",
1255
+ "package": "@microsoft/fast-element"
1256
+ },
1257
+ "tagName": "foundation-layout-popout-controller",
1258
+ "customElement": true
1259
+ }
1260
+ ],
1261
+ "exports": [
1262
+ {
1263
+ "kind": "js",
1264
+ "name": "FoundationLayoutPopoutController",
1265
+ "declaration": {
1266
+ "name": "FoundationLayoutPopoutController",
1267
+ "module": "src/main/layout-popout-controller.ts"
1268
+ }
1269
+ },
1270
+ {
1271
+ "kind": "custom-element-definition",
1272
+ "name": "foundation-layout-popout-controller",
1273
+ "declaration": {
1274
+ "name": "FoundationLayoutPopoutController",
1275
+ "module": "src/main/layout-popout-controller.ts"
1276
+ }
1277
+ }
1278
+ ]
1279
+ },
1280
+ {
1281
+ "kind": "javascript-module",
1282
+ "path": "src/main/layout-region.ts",
1283
+ "declarations": [
1284
+ {
1285
+ "kind": "class",
1286
+ "description": "",
1287
+ "name": "FoundationLayoutRegion",
1288
+ "members": [
1289
+ {
1290
+ "kind": "field",
1291
+ "name": "size",
1292
+ "type": {
1293
+ "text": "string"
1397
1294
  },
1398
- "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"
1295
+ "description": "optional string describing the size of the new item (see the written documentation for more info)",
1296
+ "privacy": "public"
1399
1297
  },
1400
1298
  {
1401
- "kind": "method",
1402
- "name": "handleGLRunErrors",
1403
- "privacy": "private",
1404
- "parameters": [
1405
- {
1406
- "name": "e",
1407
- "type": {
1408
- "text": "Error"
1409
- }
1410
- }
1411
- ],
1412
- "description": "For specific golden layout errors we can provide better information to the caller. Else re-throw the original error"
1299
+ "kind": "field",
1300
+ "name": "type",
1301
+ "type": {
1302
+ "text": "LayoutRegionType"
1303
+ },
1304
+ "default": "layoutRegionValue[0]",
1305
+ "description": "Defines the LayoutRegionType| type of the region.\nDefaults to `horizontal`.",
1306
+ "privacy": "public"
1413
1307
  },
1414
1308
  {
1415
1309
  "kind": "field",
@@ -1523,528 +1417,634 @@
1523
1417
  }
1524
1418
  }
1525
1419
  ],
1526
- "events": [
1527
- {
1528
- "description": "emitted when the layout has finished loading the first time",
1529
- "name": "first-loaded"
1530
- },
1531
- {
1532
- "description": "emitted when an item is added to the layout",
1533
- "name": "item-added"
1534
- },
1535
- {
1536
- "description": "emitted when an item is removed from the layout",
1537
- "name": "item-removed"
1538
- },
1539
- {
1540
- "description": "emitted when the user drags the divider to resize elements",
1541
- "name": "item-resized"
1542
- },
1543
- {
1544
- "description": "emitted on every persisted layout change (add/remove/resize, drag-move, loadLayout, revert-to-default, autosave request); use this to mirror the layout without missing any change",
1545
- "name": "state-changed"
1546
- }
1547
- ],
1548
1420
  "attributes": [
1549
1421
  {
1550
- "name": "reload-buffer",
1422
+ "name": "size",
1551
1423
  "type": {
1552
- "text": "number"
1553
- },
1554
- "default": "DEFAULT_RELOAD_BUFFER",
1555
- "description": "Number describing how long to wait in ms before reloading the config when adding items\ndeclaratively by the html API. Default 500 (ms).",
1556
- "resolveInitializer": {
1557
- "module": "/src/utils"
1424
+ "text": "string"
1558
1425
  },
1559
- "fieldName": "reloadBuffer"
1426
+ "description": "optional string describing the size of the new item (see the written documentation for more info)",
1427
+ "fieldName": "size"
1560
1428
  },
1561
1429
  {
1562
- "name": "auto-save-key",
1430
+ "name": "type",
1563
1431
  "type": {
1564
- "text": "string | undefined"
1432
+ "text": "LayoutRegionType"
1565
1433
  },
1566
- "description": "Attribute which if set will auto save and load the layout as the user changes it.\nOmit this attribute to disable this feature.\nSet attribute using `auto-save-key`.",
1567
- "fieldName": "autoSaveKey"
1434
+ "default": "defaultLayoutType",
1435
+ "description": "Defines the LayoutRegionType| type of the region.\nDefaults to `horizontal`.",
1436
+ "resolveInitializer": {
1437
+ "module": "src/main/layout-region.ts"
1438
+ },
1439
+ "fieldName": "type"
1568
1440
  }
1569
1441
  ],
1570
1442
  "superclass": {
1571
1443
  "name": "FoundationElement",
1572
1444
  "package": "@microsoft/fast-foundation"
1573
1445
  },
1574
- "tagName": "%%prefix%%-layout",
1446
+ "tagName": "%%prefix%%-layout-region",
1575
1447
  "customElement": true
1448
+ }
1449
+ ],
1450
+ "exports": [
1451
+ {
1452
+ "kind": "js",
1453
+ "name": "FoundationLayoutRegion",
1454
+ "declaration": {
1455
+ "name": "FoundationLayoutRegion",
1456
+ "module": "src/main/layout-region.ts"
1457
+ }
1458
+ }
1459
+ ]
1460
+ },
1461
+ {
1462
+ "kind": "javascript-module",
1463
+ "path": "src/styles/constants.ts",
1464
+ "declarations": [
1465
+ {
1466
+ "kind": "function",
1467
+ "name": "glVisualConfig",
1468
+ "return": {
1469
+ "type": {
1470
+ "text": "Omit<LayoutConfig, 'root'>"
1471
+ }
1472
+ }
1473
+ },
1474
+ {
1475
+ "kind": "variable",
1476
+ "name": "LAYOUT_ICONS",
1477
+ "type": {
1478
+ "text": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n popoutSVG,\n}"
1479
+ },
1480
+ "default": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n popoutSVG,\n}",
1481
+ "description": "A collection of SVG icons in base64 format.",
1482
+ "privacy": "public"
1483
+ }
1484
+ ],
1485
+ "exports": [
1486
+ {
1487
+ "kind": "js",
1488
+ "name": "glVisualConfig",
1489
+ "declaration": {
1490
+ "name": "glVisualConfig",
1491
+ "module": "src/styles/constants.ts"
1492
+ }
1493
+ },
1494
+ {
1495
+ "kind": "js",
1496
+ "name": "LAYOUT_ICONS",
1497
+ "declaration": {
1498
+ "name": "LAYOUT_ICONS",
1499
+ "module": "src/styles/constants.ts"
1500
+ }
1501
+ }
1502
+ ]
1503
+ },
1504
+ {
1505
+ "kind": "javascript-module",
1506
+ "path": "src/styles/dragging.styles.ts",
1507
+ "declarations": [
1508
+ {
1509
+ "kind": "variable",
1510
+ "name": "globalDraggingStyles",
1511
+ "default": "`\n .lm_dragProxy .lm_content {\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.9);\n }\n .lm_dropTargetIndicator {\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 cursor: move;\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_title {\n color: white;\n padding-left: 10px;\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`",
1512
+ "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"
1513
+ }
1514
+ ],
1515
+ "exports": [
1516
+ {
1517
+ "kind": "js",
1518
+ "name": "globalDraggingStyles",
1519
+ "declaration": {
1520
+ "name": "globalDraggingStyles",
1521
+ "module": "src/styles/dragging.styles.ts"
1522
+ }
1523
+ }
1524
+ ]
1525
+ },
1526
+ {
1527
+ "kind": "javascript-module",
1528
+ "path": "src/styles/index.ts",
1529
+ "declarations": [],
1530
+ "exports": [
1531
+ {
1532
+ "kind": "js",
1533
+ "name": "*",
1534
+ "declaration": {
1535
+ "name": "*",
1536
+ "package": "./constants"
1537
+ }
1538
+ },
1539
+ {
1540
+ "kind": "js",
1541
+ "name": "*",
1542
+ "declaration": {
1543
+ "name": "*",
1544
+ "package": "./dragging.styles"
1545
+ }
1546
+ },
1547
+ {
1548
+ "kind": "js",
1549
+ "name": "*",
1550
+ "declaration": {
1551
+ "name": "*",
1552
+ "package": "./layout.styles"
1553
+ }
1554
+ }
1555
+ ]
1556
+ },
1557
+ {
1558
+ "kind": "javascript-module",
1559
+ "path": "src/styles/layout.styles.ts",
1560
+ "declarations": [
1561
+ {
1562
+ "kind": "variable",
1563
+ "name": "layoutStyles",
1564
+ "default": "css`\n ${containerStyles}\n ${loadingSpinnerStyles}\n\n :host {\n --foundation-tab-height: calc(\n (((var(--base-height-multiplier) + var(--density)) * var(--design-unit)) - 4) * 1px\n );\n }\n\n .lm_goldenlayout {\n border-radius: calc(var(--control-corner-radius) * 1.5px);\n font-family: var(--body-font);\n box-sizing: border-box;\n }\n\n .lm_goldenlayout * {\n box-sizing: border-box;\n }\n\n .lm_stack.lm_item {\n background-color: var(--rapid-layout-item-background, var(--neutral-layer-3));\n border-style: solid;\n border-width: var(--rapid-layout-item-border-width, 0);\n border-color: var(--rapid-layout-item-border-color, var(--neutral-stroke-rest));\n border-radius: var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px));\n box-sizing: border-box;\n }\n\n .lm_maximised .lm_header {\n border-bottom: var(--card-border, 0);\n position: unset;\n }\n\n .lm_maximised .lm_header .lm_tabs {\n z-index: 3;\n }\n\n .lm_content {\n background-color: var(--neutral-layer-card-container);\n border-radius: calc(var(--control-corner-radius) * 1.5px) calc(var(--control-corner-radius) * 1.5px)\n var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px))\n var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px));\n border: var(--rapid-layout-item-inner-border, 1px solid var(--neutral-stroke-rest));\n box-sizing: border-box;\n color: var(--neutral-foreground-rest);\n }\n\n .lm_header .lm_tabs {\n padding: 0 16px;\n }\n\n .lm_header .lm_tab.lm_active {\n background: var(--tab-active-background-color, var(--neutral-layer-card-container));\n color: var(--accent-foreground-rest);\n border-style: solid;\n border-width: var(--tab-active-border-width, 1px 1px 0 1px);\n border-color: var(--tab-active-border-color, var(--neutral-stroke-rest));\n }\n\n .lm_header .lm_tab {\n align-items: center;\n background: var(--tab-rest-background-color, var(--neutral-layer-4));\n border-style: solid;\n border-width: var(--tab-rest-border-width, 1px);\n border-color: var(--tab-rest-border-color, transparent);\n border-radius: calc(var(--control-corner-radius) * 1.5px)\n calc(var(--control-corner-radius) * 1.5px) 0 0;\n color: var(--accent-foreground-rest);\n display: flex;\n font-family: inherit;\n font-size: var(--type-ramp-minus-1-font-size);\n font-weight: 400;\n height: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n margin-right: 2px;\n padding: 0 calc((12 + var(--design-unit) * 2 * var(--density)) * 1px);\n float: left;\n cursor: pointer;\n position: relative;\n }\n\n .lm_header .lm_tab:not(.lm_active):hover {\n background-color: var(--neutral-layer-card-container);\n color: var(--accent-foreground-rest);\n }\n\n .lm_header .lm_controls {\n top: 4px;\n display: flex;\n }\n .lm_header .lm_controls > * {\n width: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) - 8px);\n height: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) - 8px);\n background-repeat: no-repeat;\n background-position: center;\n background-size: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.45);\n background-color: var(\n --icon-button-background,\n color-mix(in srgb, var(--neutral-fill-strong-rest), transparent 90%)\n );\n border-radius: calc(var(--control-corner-radius) * 1.5px);\n margin-right: 4px;\n top: 3px;\n opacity: 1;\n }\n .lm_header .lm_controls > *:hover {\n background-color: color-mix(in srgb, var(--neutral-fill-strong-hover), transparent 75%);\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: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.2777);\n background-repeat: no-repeat;\n background-position: center;\n margin-left: calc((12 + var(--design-unit) * 2 * var(--density)) * 1px);\n position: relative;\n }\n\n .lm_header .lm_tab:not(.lm_active) .lm_title {\n color: var(--neutral-foreground-hint);\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: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n right: 108px;\n background-color: var(--neutral-layer-3);\n border: 1px solid;\n border-color: var(--neutral-stroke-rest);\n border-radius: calc(var(--control-corner-radius) * 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: var(--neutral-foreground-rest);\n height: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n border-radius: 0;\n overflow: visible;\n text-overflow: unset;\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: 0;\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: var(--accent-fill-rest);\n border-radius: calc(var(--control-corner-radius) * 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 !important;\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 !important;\n }\n .lm_header {\n overflow: visible;\n position: relative;\n border-bottom: var(--card-border, 0);\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 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 user-select: none;\n }\n .lm_header .lm_tab .lm_close_tab {\n width: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.3888);\n height: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.3888);\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 box-shadow: none;\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`",
1565
+ "description": "`ElementStyles` which defines the css for FoundationLayout.",
1566
+ "privacy": "public"
1567
+ }
1568
+ ],
1569
+ "exports": [
1570
+ {
1571
+ "kind": "js",
1572
+ "name": "layoutStyles",
1573
+ "declaration": {
1574
+ "name": "layoutStyles",
1575
+ "module": "src/styles/layout.styles.ts"
1576
+ }
1577
+ }
1578
+ ]
1579
+ },
1580
+ {
1581
+ "kind": "javascript-module",
1582
+ "path": "src/utils/constants.ts",
1583
+ "declarations": [
1584
+ {
1585
+ "kind": "variable",
1586
+ "name": "DEFAULT_RELOAD_BUFFER",
1587
+ "type": {
1588
+ "text": "number"
1589
+ },
1590
+ "default": "500",
1591
+ "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.",
1592
+ "privacy": "public"
1593
+ },
1594
+ {
1595
+ "kind": "variable",
1596
+ "name": "LAYOUT_POPOUT_CONTROL_KEY",
1597
+ "type": {
1598
+ "text": "string"
1599
+ },
1600
+ "default": "'f-layout-key'",
1601
+ "description": "Key to be used for controlling popout behaviour"
1602
+ },
1603
+ {
1604
+ "kind": "variable",
1605
+ "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
1606
+ "type": {
1607
+ "text": "number"
1608
+ },
1609
+ "default": "1000",
1610
+ "description": "How often a popout window should check to broadcast its\ngeometry"
1611
+ },
1612
+ {
1613
+ "kind": "variable",
1614
+ "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
1615
+ "type": {
1616
+ "text": "string"
1617
+ },
1618
+ "default": "'f-layout-popout'",
1619
+ "description": "Put this classname on an element which is a DOM parent of the layout, and\nif the layout goes into popout mode then it will place itself as the only child\nfor the popout container you set."
1620
+ },
1621
+ {
1622
+ "kind": "variable",
1623
+ "name": "DEFAULT_TAB_HEIGHT",
1624
+ "type": {
1625
+ "text": "string"
1626
+ },
1627
+ "default": "'36px'"
1628
+ },
1629
+ {
1630
+ "kind": "function",
1631
+ "name": "getLayoutHeaderHeight"
1576
1632
  },
1577
1633
  {
1578
1634
  "kind": "variable",
1579
- "name": "layoutTemplate",
1580
- "default": "html<FoundationLayout>`\n <template>\n ${when(\n (x) => Boolean(x.popoutConfig),\n html<FoundationLayout>`\n <foundation-layout-popout-controller\n ${ref('popoutController')}\n :parentLayout=\"${(x) => x}\"\n channel-name=\"${(x) => x.popoutConfig?.channelName}\"\n ></foundation-layout-popout-controller>\n `,\n )}\n ${when((x) => !x.hasFirstLoaded && x.usingDeclerativeAPI, loadingTemplate)}\n <div class=\"layout-container\" ${ref('layoutElement')}></div>\n </template>\n`",
1581
- "description": "`ViewTemplate` which defines the html for FoundationLayout.",
1582
- "privacy": "public"
1635
+ "name": "DEFAULT_BORDER_WIDTH",
1636
+ "type": {
1637
+ "text": "number"
1638
+ },
1639
+ "default": "0"
1640
+ },
1641
+ {
1642
+ "kind": "function",
1643
+ "name": "getItemBorderWidth"
1583
1644
  }
1584
1645
  ],
1585
1646
  "exports": [
1586
1647
  {
1587
1648
  "kind": "js",
1588
- "name": "layoutStyles",
1649
+ "name": "DEFAULT_RELOAD_BUFFER",
1589
1650
  "declaration": {
1590
- "name": "layoutStyles",
1591
- "module": "../styles"
1651
+ "name": "DEFAULT_RELOAD_BUFFER",
1652
+ "module": "src/utils/constants.ts"
1592
1653
  }
1593
1654
  },
1594
1655
  {
1595
1656
  "kind": "js",
1596
- "name": "FoundationLayout",
1657
+ "name": "LAYOUT_POPOUT_CONTROL_KEY",
1597
1658
  "declaration": {
1598
- "name": "FoundationLayout",
1599
- "module": "src/main/layout-main.ts"
1659
+ "name": "LAYOUT_POPOUT_CONTROL_KEY",
1660
+ "module": "src/utils/constants.ts"
1600
1661
  }
1601
1662
  },
1602
1663
  {
1603
1664
  "kind": "js",
1604
- "name": "layoutTemplate",
1665
+ "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
1605
1666
  "declaration": {
1606
- "name": "layoutTemplate",
1607
- "module": "src/main/layout-main.ts"
1667
+ "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
1668
+ "module": "src/utils/constants.ts"
1608
1669
  }
1609
- }
1610
- ]
1611
- },
1612
- {
1613
- "kind": "javascript-module",
1614
- "path": "src/main/layout-popout-controller.ts",
1615
- "declarations": [
1670
+ },
1616
1671
  {
1617
- "kind": "class",
1618
- "description": "",
1619
- "name": "FoundationLayoutPopoutController",
1620
- "members": [
1621
- {
1622
- "kind": "field",
1623
- "name": "channelName",
1624
- "type": {
1625
- "text": "string"
1626
- }
1627
- },
1628
- {
1629
- "kind": "field",
1630
- "name": "layoutKey",
1631
- "type": {
1632
- "text": "string"
1633
- },
1634
- "privacy": "private"
1635
- },
1636
- {
1637
- "kind": "field",
1638
- "name": "channel",
1639
- "type": {
1640
- "text": "TypedBroadcastChannel<LayoutPopoutEvents>"
1641
- },
1642
- "privacy": "private"
1643
- },
1644
- {
1645
- "kind": "field",
1646
- "name": "pollInterval",
1647
- "type": {
1648
- "text": "any"
1649
- },
1650
- "privacy": "private"
1651
- },
1652
- {
1653
- "kind": "field",
1654
- "name": "unloadHandler",
1655
- "type": {
1656
- "text": "() => void"
1657
- },
1658
- "privacy": "private"
1659
- },
1660
- {
1661
- "kind": "field",
1662
- "name": "lastUpdate",
1663
- "type": {
1664
- "text": "string"
1665
- },
1666
- "privacy": "private"
1667
- },
1668
- {
1669
- "kind": "field",
1670
- "name": "popoutRegistry",
1671
- "type": {
1672
- "text": "Map<\n string,\n { geometry: PopoutGeometry; state?: unknown; window?: Window }\n >"
1673
- },
1674
- "privacy": "private",
1675
- "default": "new Map()"
1676
- },
1677
- {
1678
- "kind": "method",
1679
- "name": "setupChannel",
1680
- "privacy": "private"
1681
- },
1682
- {
1683
- "kind": "method",
1684
- "name": "setupListener",
1685
- "privacy": "private"
1686
- },
1687
- {
1688
- "kind": "method",
1689
- "name": "applyStateToParent",
1690
- "privacy": "private",
1691
- "parameters": [
1692
- {
1693
- "name": "state",
1694
- "type": {
1695
- "text": "unknown"
1696
- }
1697
- }
1698
- ]
1699
- },
1700
- {
1701
- "kind": "method",
1702
- "name": "setupUnloadListener",
1703
- "privacy": "private"
1704
- },
1705
- {
1706
- "kind": "method",
1707
- "name": "teardownUnloadListener",
1708
- "privacy": "private"
1709
- },
1710
- {
1711
- "kind": "method",
1712
- "name": "emitAutosave",
1713
- "privacy": "private"
1714
- },
1715
- {
1716
- "kind": "method",
1717
- "name": "startPolling",
1718
- "privacy": "private"
1719
- },
1720
- {
1721
- "kind": "method",
1722
- "name": "stopPolling",
1723
- "privacy": "private"
1724
- },
1725
- {
1726
- "kind": "method",
1727
- "name": "getGeometry",
1728
- "privacy": "private",
1729
- "return": {
1730
- "type": {
1731
- "text": "Promise<PopoutGeometry>"
1732
- }
1733
- }
1734
- },
1735
- {
1736
- "kind": "method",
1737
- "name": "getComponentState",
1738
- "privacy": "private",
1739
- "return": {
1740
- "type": {
1741
- "text": "unknown"
1742
- }
1743
- }
1744
- },
1745
- {
1746
- "kind": "method",
1747
- "name": "broadcastUpdate",
1748
- "privacy": "private",
1749
- "parameters": [
1750
- {
1751
- "name": "geometry",
1752
- "type": {
1753
- "text": "PopoutGeometry"
1754
- }
1755
- },
1756
- {
1757
- "name": "state",
1758
- "optional": true,
1759
- "type": {
1760
- "text": "unknown"
1761
- }
1762
- }
1763
- ]
1764
- },
1765
- {
1766
- "kind": "method",
1767
- "name": "openPopout",
1768
- "privacy": "public",
1769
- "parameters": [
1770
- {
1771
- "name": "registration",
1772
- "type": {
1773
- "text": "string"
1774
- },
1775
- "description": "The registration ID of the component to pop out."
1776
- },
1777
- {
1778
- "name": "popoutState",
1779
- "optional": true,
1780
- "type": {
1781
- "text": "PopoutState"
1782
- },
1783
- "description": "Optional state (geometry and component state) to use for the new window."
1784
- },
1785
- {
1786
- "name": "uuid",
1787
- "optional": true,
1788
- "type": {
1789
- "text": "any"
1790
- },
1791
- "description": "UUID generator from parent layout"
1792
- }
1793
- ],
1794
- "description": "Opens a component in a popout window."
1795
- },
1796
- {
1797
- "kind": "method",
1798
- "name": "getRegistry",
1799
- "privacy": "public",
1800
- "return": {
1801
- "type": {
1802
- "text": "{ [layoutKey: string]: PopoutState }"
1803
- }
1804
- }
1805
- },
1672
+ "kind": "js",
1673
+ "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
1674
+ "declaration": {
1675
+ "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
1676
+ "module": "src/utils/constants.ts"
1677
+ }
1678
+ },
1679
+ {
1680
+ "kind": "js",
1681
+ "name": "DEFAULT_TAB_HEIGHT",
1682
+ "declaration": {
1683
+ "name": "DEFAULT_TAB_HEIGHT",
1684
+ "module": "src/utils/constants.ts"
1685
+ }
1686
+ },
1687
+ {
1688
+ "kind": "js",
1689
+ "name": "getLayoutHeaderHeight",
1690
+ "declaration": {
1691
+ "name": "getLayoutHeaderHeight",
1692
+ "module": "src/utils/constants.ts"
1693
+ }
1694
+ },
1695
+ {
1696
+ "kind": "js",
1697
+ "name": "DEFAULT_BORDER_WIDTH",
1698
+ "declaration": {
1699
+ "name": "DEFAULT_BORDER_WIDTH",
1700
+ "module": "src/utils/constants.ts"
1701
+ }
1702
+ },
1703
+ {
1704
+ "kind": "js",
1705
+ "name": "getItemBorderWidth",
1706
+ "declaration": {
1707
+ "name": "getItemBorderWidth",
1708
+ "module": "src/utils/constants.ts"
1709
+ }
1710
+ }
1711
+ ]
1712
+ },
1713
+ {
1714
+ "kind": "javascript-module",
1715
+ "path": "src/utils/error.ts",
1716
+ "declarations": [
1717
+ {
1718
+ "kind": "class",
1719
+ "description": "",
1720
+ "name": "LayoutUsageError",
1721
+ "superclass": {
1722
+ "name": "Error",
1723
+ "module": "src/utils/error.ts"
1724
+ }
1725
+ },
1726
+ {
1727
+ "kind": "class",
1728
+ "description": "",
1729
+ "name": "LayoutRegistrationError",
1730
+ "superclass": {
1731
+ "name": "Error",
1732
+ "module": "src/utils/error.ts"
1733
+ }
1734
+ }
1735
+ ],
1736
+ "exports": [
1737
+ {
1738
+ "kind": "js",
1739
+ "name": "LayoutUsageError",
1740
+ "declaration": {
1741
+ "name": "LayoutUsageError",
1742
+ "module": "src/utils/error.ts"
1743
+ }
1744
+ },
1745
+ {
1746
+ "kind": "js",
1747
+ "name": "LayoutRegistrationError",
1748
+ "declaration": {
1749
+ "name": "LayoutRegistrationError",
1750
+ "module": "src/utils/error.ts"
1751
+ }
1752
+ }
1753
+ ]
1754
+ },
1755
+ {
1756
+ "kind": "javascript-module",
1757
+ "path": "src/utils/events.ts",
1758
+ "declarations": [
1759
+ {
1760
+ "kind": "variable",
1761
+ "name": "LayoutEmitEvents",
1762
+ "type": {
1763
+ "text": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n stateChanged: 'state-changed',\n}"
1764
+ },
1765
+ "default": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n stateChanged: 'state-changed',\n}",
1766
+ "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\n<br/>\n'stateChanged' - emitted on every persisted layout change. This is the broadest\nevent: it fires wherever the layout caches/saves its state, which includes item\nadd/remove/resize but ALSO the changes the granular events miss — dragging a pane\nto a new position, loading a whole layout via FoundationLayout.loadLayout,\nreverting to the default, and contained-item autosave requests. Prefer this when\nyou need to mirror the layout to your own store and must not miss any change.",
1767
+ "privacy": "public"
1768
+ },
1769
+ {
1770
+ "kind": "variable",
1771
+ "name": "LayoutReceiveEvents",
1772
+ "type": {
1773
+ "text": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}"
1774
+ },
1775
+ "default": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}",
1776
+ "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.",
1777
+ "privacy": "public"
1778
+ }
1779
+ ],
1780
+ "exports": [
1781
+ {
1782
+ "kind": "js",
1783
+ "name": "LayoutEmitEvents",
1784
+ "declaration": {
1785
+ "name": "LayoutEmitEvents",
1786
+ "module": "src/utils/events.ts"
1787
+ }
1788
+ },
1789
+ {
1790
+ "kind": "js",
1791
+ "name": "LayoutReceiveEvents",
1792
+ "declaration": {
1793
+ "name": "LayoutReceiveEvents",
1794
+ "module": "src/utils/events.ts"
1795
+ }
1796
+ }
1797
+ ]
1798
+ },
1799
+ {
1800
+ "kind": "javascript-module",
1801
+ "path": "src/utils/factory-registry.ts",
1802
+ "declarations": [
1803
+ {
1804
+ "kind": "function",
1805
+ "name": "registerFactory",
1806
+ "return": {
1807
+ "type": {
1808
+ "text": "void"
1809
+ }
1810
+ },
1811
+ "parameters": [
1806
1812
  {
1807
- "kind": "method",
1808
- "name": "restorePopouts",
1809
- "privacy": "public",
1810
- "parameters": [
1811
- {
1812
- "name": "registry",
1813
- "type": {
1814
- "text": "{ [layoutKey: string]: PopoutState }"
1815
- }
1816
- },
1817
- {
1818
- "name": "uuid",
1819
- "type": {
1820
- "text": "any"
1821
- }
1822
- }
1823
- ],
1824
- "description": "Restores popouts from a registry"
1813
+ "name": "key",
1814
+ "type": {
1815
+ "text": "string"
1816
+ },
1817
+ "description": "Unique identifier for the factory. Should be descriptive and unique across the application."
1825
1818
  },
1826
1819
  {
1827
- "kind": "method",
1828
- "name": "closeAllPopouts",
1829
- "privacy": "public"
1820
+ "name": "factory",
1821
+ "type": {
1822
+ "text": "ComponentFactory"
1823
+ },
1824
+ "description": "The factory function that creates the component."
1830
1825
  }
1831
1826
  ],
1832
- "attributes": [
1827
+ "description": "Registers a factory function with a unique key.\nThis allows framework components to be used in the declarative layout API\nwithout needing to pass function references through HTML attributes.",
1828
+ "privacy": "public"
1829
+ },
1830
+ {
1831
+ "kind": "function",
1832
+ "name": "getFactory",
1833
+ "return": {
1834
+ "type": {
1835
+ "text": ""
1836
+ }
1837
+ },
1838
+ "parameters": [
1833
1839
  {
1834
- "name": "channel-name",
1840
+ "name": "key",
1835
1841
  "type": {
1836
1842
  "text": "string"
1837
1843
  },
1838
- "fieldName": "channelName"
1844
+ "description": "The unique identifier for the factory."
1839
1845
  }
1840
1846
  ],
1841
- "superclass": {
1842
- "name": "FASTElement",
1843
- "package": "@microsoft/fast-element"
1847
+ "description": "Retrieves a factory function by its key.",
1848
+ "privacy": "public"
1849
+ },
1850
+ {
1851
+ "kind": "function",
1852
+ "name": "unregisterFactory",
1853
+ "return": {
1854
+ "type": {
1855
+ "text": ""
1856
+ }
1844
1857
  },
1845
- "tagName": "foundation-layout-popout-controller",
1846
- "customElement": true
1858
+ "parameters": [
1859
+ {
1860
+ "name": "key",
1861
+ "type": {
1862
+ "text": "string"
1863
+ },
1864
+ "description": "The unique identifier for the factory to remove."
1865
+ }
1866
+ ],
1867
+ "description": "Removes a factory from the registry.\nThis is useful for cleanup when a component is unmounted or no longer needed.",
1868
+ "privacy": "public"
1847
1869
  }
1848
1870
  ],
1849
1871
  "exports": [
1850
1872
  {
1851
1873
  "kind": "js",
1852
- "name": "FoundationLayoutPopoutController",
1874
+ "name": "registerFactory",
1875
+ "declaration": {
1876
+ "name": "registerFactory",
1877
+ "module": "src/utils/factory-registry.ts"
1878
+ }
1879
+ },
1880
+ {
1881
+ "kind": "js",
1882
+ "name": "getFactory",
1883
+ "declaration": {
1884
+ "name": "getFactory",
1885
+ "module": "src/utils/factory-registry.ts"
1886
+ }
1887
+ },
1888
+ {
1889
+ "kind": "js",
1890
+ "name": "unregisterFactory",
1891
+ "declaration": {
1892
+ "name": "unregisterFactory",
1893
+ "module": "src/utils/factory-registry.ts"
1894
+ }
1895
+ }
1896
+ ]
1897
+ },
1898
+ {
1899
+ "kind": "javascript-module",
1900
+ "path": "src/utils/index.ts",
1901
+ "declarations": [],
1902
+ "exports": [
1903
+ {
1904
+ "kind": "js",
1905
+ "name": "*",
1906
+ "declaration": {
1907
+ "name": "*",
1908
+ "package": "./constants"
1909
+ }
1910
+ },
1911
+ {
1912
+ "kind": "js",
1913
+ "name": "*",
1914
+ "declaration": {
1915
+ "name": "*",
1916
+ "package": "./error"
1917
+ }
1918
+ },
1919
+ {
1920
+ "kind": "js",
1921
+ "name": "*",
1922
+ "declaration": {
1923
+ "name": "*",
1924
+ "package": "./events"
1925
+ }
1926
+ },
1927
+ {
1928
+ "kind": "js",
1929
+ "name": "*",
1930
+ "declaration": {
1931
+ "name": "*",
1932
+ "package": "./factory-registry"
1933
+ }
1934
+ },
1935
+ {
1936
+ "kind": "js",
1937
+ "name": "*",
1938
+ "declaration": {
1939
+ "name": "*",
1940
+ "package": "./misc"
1941
+ }
1942
+ },
1943
+ {
1944
+ "kind": "js",
1945
+ "name": "*",
1853
1946
  "declaration": {
1854
- "name": "FoundationLayoutPopoutController",
1855
- "module": "src/main/layout-popout-controller.ts"
1947
+ "name": "*",
1948
+ "package": "./templates"
1856
1949
  }
1857
1950
  },
1858
1951
  {
1859
- "kind": "custom-element-definition",
1860
- "name": "foundation-layout-popout-controller",
1952
+ "kind": "js",
1953
+ "name": "*",
1861
1954
  "declaration": {
1862
- "name": "FoundationLayoutPopoutController",
1863
- "module": "src/main/layout-popout-controller.ts"
1955
+ "name": "*",
1956
+ "package": "./popout-events"
1957
+ }
1958
+ },
1959
+ {
1960
+ "kind": "js",
1961
+ "name": "*",
1962
+ "declaration": {
1963
+ "name": "*",
1964
+ "package": "./types"
1965
+ }
1966
+ },
1967
+ {
1968
+ "kind": "js",
1969
+ "name": "*",
1970
+ "declaration": {
1971
+ "name": "*",
1972
+ "package": "./error"
1864
1973
  }
1865
1974
  }
1866
1975
  ]
1867
1976
  },
1868
1977
  {
1869
1978
  "kind": "javascript-module",
1870
- "path": "src/main/layout-region.ts",
1979
+ "path": "src/utils/logger.ts",
1871
1980
  "declarations": [
1872
1981
  {
1873
- "kind": "class",
1874
- "description": "",
1875
- "name": "FoundationLayoutRegion",
1876
- "members": [
1877
- {
1878
- "kind": "field",
1879
- "name": "size",
1880
- "type": {
1881
- "text": "string"
1882
- },
1883
- "description": "optional string describing the size of the new item (see the written documentation for more info)",
1884
- "privacy": "public"
1885
- },
1886
- {
1887
- "kind": "field",
1888
- "name": "type",
1889
- "type": {
1890
- "text": "LayoutRegionType"
1891
- },
1892
- "default": "layoutRegionValue[0]",
1893
- "description": "Defines the LayoutRegionType| type of the region.\nDefaults to `horizontal`.",
1894
- "privacy": "public"
1895
- },
1896
- {
1897
- "kind": "field",
1898
- "name": "_presentation",
1899
- "type": {
1900
- "text": "ComponentPresentation | null | undefined"
1901
- },
1902
- "privacy": "private",
1903
- "default": "void 0",
1904
- "inheritedFrom": {
1905
- "name": "FoundationElement",
1906
- "module": "src/foundation-element/foundation-element.ts"
1907
- }
1908
- },
1909
- {
1910
- "kind": "field",
1911
- "name": "$presentation",
1912
- "type": {
1913
- "text": "ComponentPresentation | null"
1914
- },
1915
- "privacy": "public",
1916
- "description": "A property which resolves the ComponentPresentation instance\nfor the current component.",
1917
- "inheritedFrom": {
1918
- "name": "FoundationElement",
1919
- "module": "src/foundation-element/foundation-element.ts"
1920
- }
1921
- },
1922
- {
1923
- "kind": "field",
1924
- "name": "template",
1925
- "type": {
1926
- "text": "ElementViewTemplate | void | null"
1927
- },
1928
- "privacy": "public",
1929
- "description": "Sets the template of the element instance. When undefined,\nthe element will attempt to resolve the template from\nthe associated presentation or custom element definition.",
1930
- "inheritedFrom": {
1931
- "name": "FoundationElement",
1932
- "module": "src/foundation-element/foundation-element.ts"
1933
- }
1934
- },
1935
- {
1936
- "kind": "method",
1937
- "name": "templateChanged",
1938
- "privacy": "protected",
1939
- "return": {
1940
- "type": {
1941
- "text": "void"
1942
- }
1943
- },
1944
- "inheritedFrom": {
1945
- "name": "FoundationElement",
1946
- "module": "src/foundation-element/foundation-element.ts"
1947
- }
1948
- },
1949
- {
1950
- "kind": "field",
1951
- "name": "styles",
1952
- "type": {
1953
- "text": "ElementStyles | void | null"
1954
- },
1955
- "privacy": "public",
1956
- "description": "Sets the default styles for the element instance. When undefined,\nthe element will attempt to resolve default styles from\nthe associated presentation or custom element definition.",
1957
- "inheritedFrom": {
1958
- "name": "FoundationElement",
1959
- "module": "src/foundation-element/foundation-element.ts"
1960
- }
1961
- },
1962
- {
1963
- "kind": "method",
1964
- "name": "stylesChanged",
1965
- "privacy": "protected",
1966
- "return": {
1967
- "type": {
1968
- "text": "void"
1969
- }
1970
- },
1971
- "inheritedFrom": {
1972
- "name": "FoundationElement",
1973
- "module": "src/foundation-element/foundation-element.ts"
1974
- }
1975
- },
1976
- {
1977
- "kind": "method",
1978
- "name": "compose",
1979
- "privacy": "public",
1980
- "static": true,
1981
- "return": {
1982
- "type": {
1983
- "text": "(\n overrideDefinition?: OverrideFoundationElementDefinition<T>\n ) => FoundationElementRegistry<T, K>"
1984
- }
1985
- },
1986
- "parameters": [
1987
- {
1988
- "name": "this",
1989
- "type": {
1990
- "text": "K"
1991
- }
1992
- },
1993
- {
1994
- "name": "elementDefinition",
1995
- "type": {
1996
- "text": "T"
1997
- },
1998
- "description": "The definition of the element to create the registry\nfunction for."
1999
- }
2000
- ],
2001
- "description": "Defines an element registry function with a set of element definition defaults.",
2002
- "inheritedFrom": {
2003
- "name": "FoundationElement",
2004
- "module": "src/foundation-element/foundation-element.ts"
2005
- }
2006
- }
2007
- ],
2008
- "attributes": [
2009
- {
2010
- "name": "size",
2011
- "type": {
2012
- "text": "string"
2013
- },
2014
- "description": "optional string describing the size of the new item (see the written documentation for more info)",
2015
- "fieldName": "size"
2016
- },
2017
- {
2018
- "name": "type",
2019
- "type": {
2020
- "text": "LayoutRegionType"
2021
- },
2022
- "default": "defaultLayoutType",
2023
- "description": "Defines the LayoutRegionType| type of the region.\nDefaults to `horizontal`.",
2024
- "resolveInitializer": {
2025
- "module": "src/main/layout-region.ts"
2026
- },
2027
- "fieldName": "type"
2028
- }
2029
- ],
2030
- "superclass": {
2031
- "name": "FoundationElement",
2032
- "package": "@microsoft/fast-foundation"
1982
+ "kind": "variable",
1983
+ "name": "logger"
1984
+ }
1985
+ ],
1986
+ "exports": [
1987
+ {
1988
+ "kind": "js",
1989
+ "name": "logger",
1990
+ "declaration": {
1991
+ "name": "logger",
1992
+ "module": "src/utils/logger.ts"
1993
+ }
1994
+ }
1995
+ ]
1996
+ },
1997
+ {
1998
+ "kind": "javascript-module",
1999
+ "path": "src/utils/misc.ts",
2000
+ "declarations": [],
2001
+ "exports": []
2002
+ },
2003
+ {
2004
+ "kind": "javascript-module",
2005
+ "path": "src/utils/popout-events.ts",
2006
+ "declarations": [
2007
+ {
2008
+ "kind": "variable",
2009
+ "name": "LAYOUT_POPOUT_CHANNEL_NAME",
2010
+ "type": {
2011
+ "text": "string"
2033
2012
  },
2034
- "tagName": "%%prefix%%-layout-region",
2035
- "customElement": true
2013
+ "default": "'f-layout-popout-channel'",
2014
+ "description": "Name of the default broadcast channel used for layout popouts",
2015
+ "privacy": "public"
2036
2016
  }
2037
2017
  ],
2038
2018
  "exports": [
2039
2019
  {
2040
2020
  "kind": "js",
2041
- "name": "FoundationLayoutRegion",
2021
+ "name": "LAYOUT_POPOUT_CHANNEL_NAME",
2042
2022
  "declaration": {
2043
- "name": "FoundationLayoutRegion",
2044
- "module": "src/main/layout-region.ts"
2023
+ "name": "LAYOUT_POPOUT_CHANNEL_NAME",
2024
+ "module": "src/utils/popout-events.ts"
2025
+ }
2026
+ },
2027
+ {
2028
+ "kind": "js",
2029
+ "name": "PopoutGeometry",
2030
+ "declaration": {
2031
+ "name": "PopoutGeometry",
2032
+ "module": "src/utils/popout-events.ts"
2045
2033
  }
2046
2034
  }
2047
2035
  ]
2036
+ },
2037
+ {
2038
+ "kind": "javascript-module",
2039
+ "path": "src/utils/templates.ts",
2040
+ "declarations": [],
2041
+ "exports": []
2042
+ },
2043
+ {
2044
+ "kind": "javascript-module",
2045
+ "path": "src/utils/types.ts",
2046
+ "declarations": [],
2047
+ "exports": []
2048
2048
  }
2049
2049
  ]
2050
2050
  }