@nuralyui/panel 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/panel.component.d.ts +1 -1
- package/panel.component.js.map +1 -1
package/package.json
CHANGED
package/panel.component.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2023 Nuraly, Laabidi Aymen
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
|
-
import { LitElement, nothing, PropertyValues } from 'lit';
|
|
6
|
+
import { LitElement, nothing, type PropertyValues } from 'lit';
|
|
7
7
|
import { PanelMode, PanelSize, PanelPosition, MaximizePosition } from './panel.types.js';
|
|
8
8
|
import '../icon/index.js';
|
|
9
9
|
import '../label/index.js';
|
package/panel.component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.component.js","sourceRoot":"","sources":["../../../../src/components/panel/panel.component.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAkB,MAAM,KAAK,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,mCAAmC;AACnC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,mBAAmB,CAAC;AAE3B,qBAAqB;AACrB,OAAO,EACL,mBAAmB,EAEnB,qBAAqB,EAEtB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEI,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,iBAAiB,CAAC,UAAU,CAAC;IAA1D;;QAII,uBAAkB,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAEtD,4CAA4C;QAE5C,SAAI,GAAc,SAAS,CAAC,KAAK,CAAC;QAElC,iBAAiB;QAEjB,SAAI,GAAc,SAAS,CAAC,MAAM,CAAC;QAEnC,sCAAsC;QAEtC,aAAQ,GAAkB,aAAa,CAAC,KAAK,CAAC;QAE9C,2EAA2E;QAE3E,qBAAgB,GAAqB,gBAAgB,CAAC,MAAM,CAAC;QAE7D,0DAA0D;QAEjD,cAAS,GAAG,IAAI,CAAC;QAE1B,qCAAqC;QAErC,cAAS,GAAG,KAAK,CAAC;QAElB,iDAAiD;QAEjD,gBAAW,GAAG,KAAK,CAAC;QAEpB,yCAAyC;QAEzC,gBAAW,GAAG,IAAI,CAAC;QAEnB,sCAAsC;QAEtC,aAAQ,GAAG,KAAK,CAAC;QAEjB,oEAAoE;QAEpE,aAAQ,GAAG,KAAK,CAAC;QAEjB,kBAAkB;QAET,UAAK,GAAG,YAAY,CAAC;QAE9B,kBAAkB;QAElB,SAAI,GAAG,YAAY,CAAC;QAEpB,mBAAmB;QAEnB,UAAK,GAAG,YAAY,CAAC;QAErB,oBAAoB;QAEpB,WAAM,GAAG,YAAY,CAAC;QAEtB,wCAAwC;QAExC,SAAI,GAAG,IAAI,CAAC;QAEZ,sBAAsB;QAEd,cAAS,GAAG,KAAK,CAAC;QAE1B,qBAAqB;QAErB,eAAU,GAAG,KAAK,CAAC;QAEnB,sBAAsB;QAEd,cAAS,GAAG,KAAK,CAAC;QAE1B,oCAAoC;QAEpC,YAAO,GAAG,CAAC,CAAC;QAEZ,oCAAoC;QAEpC,YAAO,GAAG,CAAC,CAAC;QAEZ,0BAA0B;QAE1B,eAAU,GAAG,CAAC,CAAC;QAEf,2BAA2B;QAE3B,gBAAW,GAAG,CAAC,CAAC;QAEhB,gFAAgF;QAExE,iBAAY,GAAqB,IAAI,CAAC;QAE9C,qDAAqD;QAE7C,4BAAuB,GAAG,KAAK,CAAC;QAExC,yDAAyD;QAEzD,gBAAW,GAAG,KAAK,CAAC;QAEpB,gEAAgE;QAExD,kBAAa,GAAG,IAAI,CAAC;QAE7B,+DAA+D;QAEvD,0BAAqB,GAAG,CAAC,CAAC;QAElC,+DAA+D;QAEvD,2BAAsB,GAAG,CAAC,CAAC;QAEnC,cAAc;QACN,mBAAc,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvD,0FAA0F;QAClF,sBAAiB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAwiB9D,CAAC;IAtiBU,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAEQ,UAAU,CAAC,iBAAiC;QACnD,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAEpC,4CAA4C;QAC5C,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;QAED,qBAAqB;QACrB,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAc,CAAC;YAC3D,IAAI,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACrC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,OAAO,CAAC,iBAAiC;QAChD,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAEjC,kFAAkF;QAClF,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,qBAAqB,CAAC,GAAG,EAAE;gBACzB,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAkB;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,uBAAuB;QACvB,8CAA8C;QAC9C,uDAAuD;QACvD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;YAC9B,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,IAAI,OAAO,KAAK,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QACtC,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,mBAAmB,EAAE;YACtD,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE;SACnD,CAAC,CAAC,CAAC;QAEJ,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO;QACL,0CAA0C;QAC1C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC5D,gDAAgD;YAChD,mDAAmD;YACnD,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACxE,wEAAwE;YACxE,wDAAwD;YACxD,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO;QACT,CAAC;QAED,2DAA2D;QAC3D,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,gCAAgC;YAChC,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAE9B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,gBAAgB;;QACd,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,8CAA8C;QAC9C,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAgB,CAAC;QACtE,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YAE/D,gEAAgE;YAChE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;YACvF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;YAE3F,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACxD,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;YACnE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QAEpC,8DAA8D;QAC9D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5D,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE9C,wDAAwD;QACxD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,yBAAyB,EAAE;YAC5D,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE;SAC7D,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACK,mBAAmB;;QACzB,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAgB,CAAC;QACtE,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;QACxC,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC;QAE1C,oEAAoE;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAErD,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEhE,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9B,KAAK,gBAAgB,CAAC,MAAM;gBAC1B,iDAAiD;gBACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5E,MAAM;YAER,KAAK,gBAAgB,CAAC,IAAI;gBACxB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACpE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,MAAM;YAER,KAAK,gBAAgB,CAAC,KAAK;gBACzB,IAAI,CAAC,OAAO,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACnE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,MAAM;YAER,KAAK,gBAAgB,CAAC,OAAO;gBAC3B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACpE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACtE,MAAM;YAER,KAAK,gBAAgB,CAAC,QAAQ;gBAC5B,IAAI,CAAC,OAAO,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACnE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACtE,MAAM;YAER,KAAK,gBAAgB,CAAC,UAAU;gBAC9B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACpE,IAAI,CAAC,OAAO,GAAG,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACrE,MAAM;YAER,KAAK,gBAAgB,CAAC,WAAW;gBAC/B,IAAI,CAAC,OAAO,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACnE,IAAI,CAAC,OAAO,GAAG,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACrE,MAAM;QACV,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,uBAAuB;YAAE,OAAO;QAE1C,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAEjB,8BAA8B;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAE/C,iDAAiD;QACjD,qBAAqB,CAAC,GAAG,EAAE;;YACzB,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAgB,CAAC;YACtE,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;gBAC3B,gCAAgC;gBAChC,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE,CAAC;oBACnC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,qBAAqB,IAAI,CAAC;gBACxD,CAAC;gBACD,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,EAAE,CAAC;oBACpC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,IAAI,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,wBAAwB,EAAE;YAC3D,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SAC5B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YACtC,0EAA0E;YAC1E,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACjC,kEAAkE;gBAClE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,mDAAmD;YACnD,wCAAwC;YACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,KAAK,CAAC;YAEjD,sBAAsB;YACtB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YAEjB,kEAAkE;YAClE,qBAAqB,CAAC,GAAG,EAAE;;gBACzB,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAgB,CAAC;gBACtE,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,OAAO,CAAC;YACjB,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,OAAO,CAAC;YACjB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB;gBACE,OAAO,QAAQ,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI;YAClC,CAAC,mBAAmB,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK;YACnE,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;YAC5D,kBAAkB,EAAE,IAAI,CAAC,SAAS;YAClC,iBAAiB,EAAE,IAAI,CAAC,UAAU;YAClC,kBAAkB,EAAE,IAAI,CAAC,SAAS;YAClC,iBAAiB,EAAE,IAAI,CAAC,QAAQ;SACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC;QACxC,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC;QAC1C,CAAC;QAED,+CAA+C;QAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,CAAC,SAAS,GAAG,yBAAyB,IAAI,CAAC,OAAO,oBAAoB,IAAI,CAAC,OAAO,MAAM,CAAC;QACjG,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAE9D,iDAAiD;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC;QAErE,OAAO,IAAI,CAAA;oBACK,QAAQ,CAAC;YACrB,cAAc,EAAE,IAAI;YACpB,yBAAyB,EAAE,WAAW;SACvC,CAAC;gBACQ,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;UACjE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAA;;;;SAIvB,CAAC,CAAC,CAAC,IAAI,CAAA;;cAEF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;yDAC2B,IAAI,CAAC,IAAI;aACrD,CAAC,CAAC,CAAC,OAAO;cACT,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGP,IAAI,CAAC,YAAY,EAAE;iBAC1B,IAAI,CAAC,KAAK;aACd,CAAC,CAAC,CAAC,OAAO;;SAEd;;;YAGG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGX,IAAI,CAAC,cAAc;uBACpB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;+BAC9B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY;;WAElE,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGnG,IAAI,CAAC,QAAQ;;;;WAI1B,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAG7C,IAAI,CAAC,OAAO;;;;WAIzB,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAG3B,IAAI,CAAC,gBAAgB;;;;WAIlC,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGvB,IAAI,CAAC,eAAe;;;;WAIjC,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGxB,IAAI,CAAC,iBAAiB;;;;WAInC,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAG1D,IAAI,CAAC,gBAAgB;;;;WAIlC,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGR,IAAI,CAAC,KAAK;;;;WAIvB,CAAC,CAAC,CAAC,OAAO;;;KAGhB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAExD,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC;QAE/B,OAAO,IAAI,CAAA;;;;KAIV,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC;YAAE,OAAO,OAAO,CAAC;QAE5G,OAAO,IAAI,CAAA;;;;;;;;;KASV,CAAC;IACJ,CAAC;IAEQ,MAAM;QACb,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,OAAO,CAAC;QAE/B,OAAO,IAAI,CAAA;;gBAEC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;sBACzB,IAAI,CAAC,YAAY;;UAE7B,IAAI,CAAC,YAAY,EAAE;;;;;;UAMnB,IAAI,CAAC,YAAY,EAAE;UACnB,IAAI,CAAC,mBAAmB,EAAE;;KAE/B,CAAC;IACJ,CAAC;;AA9pBe,qBAAM,GAAG,MAAM,AAAT,CAAU;AAMhC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CACO;AAIlC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CACQ;AAInC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDACmB;AAI9C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACkC;AAIpD;IADR,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iDACF;AAI1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iDACV;AAIlB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;mDACR;AAIpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;mDACT;AAInB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gDACX;AAIjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gDACX;AAIR;IADR,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CACG;AAI9B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CACP;AAIpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CACN;AAIrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CACL;AAItB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4CAC/B;AAIJ;IADP,KAAK,EAAE;iDACkB;AAI1B;IADC,KAAK,EAAE;kDACW;AAIX;IADP,KAAK,EAAE;iDACkB;AAI1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+CACf;AAIZ;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+CACf;AAIZ;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDACZ;AAIf;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDACX;AAIR;IADP,KAAK,EAAE;oDACsC;AAItC;IADP,KAAK,EAAE;+DACgC;AAIxC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;mDACR;AAIZ;IADP,KAAK,EAAE;qDACqB;AAIrB;IADP,KAAK,EAAE;6DAC0B;AAI1B;IADP,KAAK,EAAE;8DAC2B;AApHxB,cAAc;IAD1B,aAAa,CAAC,UAAU,CAAC;GACb,cAAc,CAiqB1B","sourcesContent":["/**\n * @license\n * Copyright 2023 Nuraly, Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\nimport { html, LitElement, nothing, PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport {\n PanelMode,\n PanelSize,\n PanelPosition,\n MaximizePosition,\n EMPTY_STRING\n} from './panel.types.js';\nimport { styles } from './panel.style.js';\nimport { NuralyUIBaseMixin } from '@nuralyui/common/mixins';\n\n// Import icon and label components\nimport '../icon/index.js';\nimport '../label/index.js';\n\n// Import controllers\nimport {\n PanelDragController,\n PanelDragHost,\n PanelResizeController,\n PanelResizeHost\n} from './controllers/index.js';\n\n/**\n * Versatile panel component that can transform between panel and window modes.\n * \n * Features:\n * - Transform between panel (docked) and window (floating) modes\n * - Draggable in window mode\n * - Resizable panels\n * - Collapsible content\n * - Minimizable to compact view\n * - Theme-aware styling with light/dark mode support\n * - Multiple size presets\n * - Positioned docking (left, right, top, bottom)\n * \n * @example\n * ```html\n * <!-- Panel docked to right side -->\n * <nr-panel\n * title=\"Settings Panel\"\n * mode=\"panel\"\n * position=\"right\"\n * size=\"medium\">\n * <p>Panel content here</p>\n * </nr-panel>\n * \n * <!-- Floating draggable window -->\n * <nr-panel\n * title=\"Tool Window\"\n * mode=\"window\"\n * draggable\n * resizable\n * size=\"medium\">\n * <p>Window content here</p>\n * </nr-panel>\n * ```\n * \n * @fires panel-mode-change - Panel mode changed\n * @fires panel-close - Panel closed\n * @fires panel-minimize - Panel minimized\n * @fires panel-maximize - Panel maximized/restored\n * @fires panel-drag-start - Panel drag started\n * @fires panel-drag-end - Panel drag ended\n * @fires panel-resize - Panel resized\n * \n * @slot default - Panel body content\n * @slot header - Custom header content\n * @slot footer - Custom footer content\n */\n@customElement('nr-panel')\nexport class NrPanelElement extends NuralyUIBaseMixin(LitElement) \n implements PanelDragHost, PanelResizeHost {\n static override styles = styles;\n\n override requiredComponents = ['nr-icon', 'nr-label'];\n\n /** Panel mode (panel, window, minimized) */\n @property({ type: String })\n mode: PanelMode = PanelMode.Panel;\n\n /** Panel size */\n @property({ type: String })\n size: PanelSize = PanelSize.Medium;\n\n /** Panel position (for panel mode) */\n @property({ type: String })\n position: PanelPosition = PanelPosition.Right;\n\n /** Position where the window appears when maximizing from embedded mode */\n @property({ type: String })\n maximizePosition: MaximizePosition = MaximizePosition.Center;\n\n /** Whether the panel can be dragged (window mode only) */\n @property({ type: Boolean })\n override draggable = true;\n\n /** Whether the panel is resizable */\n @property({ type: Boolean })\n resizable = false;\n\n /** Whether the panel content can be collapsed */\n @property({ type: Boolean })\n collapsible = false;\n\n /** Whether the panel can be minimized */\n @property({ type: Boolean })\n minimizable = true;\n\n /** Whether the panel can be closed */\n @property({ type: Boolean })\n closable = false;\n\n /** Whether to enable smooth animations for position/mode changes */\n @property({ type: Boolean })\n animated = false;\n\n /** Panel title */\n @property({ type: String })\n override title = EMPTY_STRING;\n\n /** Header icon */\n @property({ type: String })\n icon = EMPTY_STRING;\n\n /** Custom width */\n @property({ type: String })\n width = EMPTY_STRING;\n\n /** Custom height */\n @property({ type: String })\n height = EMPTY_STRING;\n\n /** Whether the panel is open/visible */\n @property({ type: Boolean, reflect: true })\n open = true;\n\n /** Collapsed state */\n @state()\n private collapsed = false;\n\n /** Dragging state */\n @state()\n isDragging = false;\n\n /** Animation state */\n @state()\n private animating = false;\n\n /** Current X offset for dragging */\n @property({ type: Number })\n offsetX = 0;\n\n /** Current Y offset for dragging */\n @property({ type: Number })\n offsetY = 0;\n\n /** Current panel width */\n @property({ type: Number })\n panelWidth = 0;\n\n /** Current panel height */\n @property({ type: Number })\n panelHeight = 0;\n\n /** Original mode before any transformations (for restoration from minimized) */\n @state()\n private originalMode: PanelMode | null = null;\n\n /** Track if panel is maximized from embedded mode */\n @state()\n private isMaximizedFromEmbedded = false;\n\n /** Track if this panel was created from a tab pop-out */\n @property({ type: Boolean })\n isTabPopOut = false;\n\n /** Track if this is the first update to capture initial mode */\n @state()\n private isFirstUpdate = true;\n\n /** Original dimensions before maximizing from embedded mode */\n @state()\n private originalEmbeddedWidth = 0;\n\n /** Original dimensions before maximizing from embedded mode */\n @state()\n private originalEmbeddedHeight = 0;\n\n // Controllers\n private dragController = new PanelDragController(this);\n // @ts-ignore - Controller handles events through listeners, doesn't need direct reference\n private _resizeController = new PanelResizeController(this);\n\n override connectedCallback() {\n super.connectedCallback();\n this.validateDependencies();\n this.animating = true;\n setTimeout(() => {\n this.animating = false;\n }, 300);\n }\n\n override willUpdate(changedProperties: PropertyValues) {\n super.willUpdate(changedProperties);\n\n // Capture the original mode on first update\n if (this.isFirstUpdate && this.mode) {\n this.originalMode = this.mode;\n this.isFirstUpdate = false;\n }\n\n // Track mode changes\n if (changedProperties.has('mode')) {\n const oldMode = changedProperties.get('mode') as PanelMode;\n if (oldMode && oldMode !== this.mode) {\n this.handleModeChange(oldMode);\n }\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n \n // If mode changed, give the DOM time to update with new classes for drag handlers\n if (changedProperties.has('mode')) {\n requestAnimationFrame(() => {\n this.requestUpdate();\n });\n }\n }\n\n /**\n * Handle mode change\n */\n private handleModeChange(oldMode: PanelMode) {\n this.animating = true;\n\n // Reset position when:\n // 1. Switching to window mode from panel mode\n // 2. Restoring from minimized mode back to window mode\n if (this.mode === PanelMode.Window && \n (oldMode === PanelMode.Panel || oldMode === PanelMode.Minimized)) {\n this.dragController.resetPosition();\n }\n\n // Dispatch mode change event\n this.dispatchEvent(new CustomEvent('panel-mode-change', {\n bubbles: true,\n detail: { mode: this.mode, previousMode: oldMode }\n }));\n\n setTimeout(() => {\n this.animating = false;\n }, 300);\n }\n\n /**\n * Transform to window mode\n */\n transformToWindow() {\n if (this.mode !== PanelMode.Window) {\n this.mode = PanelMode.Window;\n }\n }\n\n /**\n * Transform to panel mode\n */\n transformToPanel() {\n if (this.mode !== PanelMode.Panel) {\n this.mode = PanelMode.Panel;\n }\n }\n\n /**\n * Restore panel to its original state\n */\n restore() {\n // Special handling for tab pop-out panels\n if (this.isTabPopOut) {\n console.log('[Panel] Restore called for tab pop-out panel');\n // For tab pop-outs, \"restore\" means pop back in\n // Dispatch event first to trigger the pop-in logic\n this.dispatchEvent(new CustomEvent('panel-restore', { bubbles: true }));\n // Then close the panel (the pop-in logic should handle tab restoration)\n // Use setTimeout to ensure the event is processed first\n setTimeout(() => {\n this.open = false;\n this.dispatchEvent(new CustomEvent('panel-close', { bubbles: true }));\n }, 0);\n return;\n }\n \n // Special handling for panels maximized from embedded mode\n if (this.isMaximizedFromEmbedded) {\n // Restore back to embedded mode\n this.restoreEmbedded();\n return;\n }\n \n // Default restore behavior (same as maximize for minimized panels)\n this.maximize();\n }\n\n /**\n * Minimize panel\n */\n minimize() {\n if (!this.minimizable) return;\n \n this.mode = PanelMode.Minimized;\n this.dispatchEvent(new CustomEvent('panel-minimize', { bubbles: true }));\n }\n\n /**\n * Maximize embedded panel to floating window\n */\n maximizeEmbedded() {\n console.log('[Panel] === MAXIMIZE EMBEDDED START ===');\n console.log('[Panel] Current mode:', this.mode);\n console.log('[Panel] this.panelWidth:', this.panelWidth);\n console.log('[Panel] this.panelHeight:', this.panelHeight);\n \n if (this.mode !== PanelMode.Embedded) {\n console.log('[Panel] ✗ Not in embedded mode, aborting');\n return;\n }\n \n // Store original dimensions before maximizing\n const panel = this.shadowRoot?.querySelector('.panel') as HTMLElement;\n if (panel) {\n console.log('[Panel] Panel DOM element found');\n console.log('[Panel] panel.offsetWidth:', panel.offsetWidth);\n console.log('[Panel] panel.offsetHeight:', panel.offsetHeight);\n \n // Use current tracked dimensions or fall back to DOM dimensions\n this.originalEmbeddedWidth = this.panelWidth > 0 ? this.panelWidth : panel.offsetWidth;\n this.originalEmbeddedHeight = this.panelHeight > 0 ? this.panelHeight : panel.offsetHeight;\n \n console.log('[Panel] ✓ Set originalEmbeddedWidth:', this.originalEmbeddedWidth);\n console.log('[Panel] ✓ Set originalEmbeddedHeight:', this.originalEmbeddedHeight);\n } else {\n console.warn('[Panel] ✗ Panel DOM element not found');\n }\n \n // Set the original mode to embedded so we can restore properly\n if (!this.originalMode || this.originalMode !== PanelMode.Embedded) {\n this.originalMode = PanelMode.Embedded;\n }\n \n this.isMaximizedFromEmbedded = true;\n \n // Keep the original dimensions when maximizing to window mode\n this.panelWidth = this.originalEmbeddedWidth;\n this.panelHeight = this.originalEmbeddedHeight;\n \n console.log('[Panel] Final panelWidth:', this.panelWidth);\n console.log('[Panel] Final panelHeight:', this.panelHeight);\n \n this.mode = PanelMode.Window;\n console.log('[Panel] Mode changed to Window');\n \n // Wait for the mode change to render, then set position\n this.updateComplete.then(() => {\n this.setMaximizePosition();\n });\n \n this.dispatchEvent(new CustomEvent('panel-maximize-embedded', { \n bubbles: true,\n detail: { mode: this.mode, position: this.maximizePosition }\n }));\n }\n\n /**\n * Set the window position based on maximizePosition with slight randomization\n */\n private setMaximizePosition() {\n const panel = this.shadowRoot?.querySelector('.panel') as HTMLElement;\n if (!panel) return;\n\n const rect = panel.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n \n // Add random offset for cascading effect (±80px for X, ±60px for Y)\n const randomX = Math.floor(Math.random() * 160) - 80;\n const randomY = Math.floor(Math.random() * 120) - 60;\n \n console.log('[Panel] setMaximizePosition - randomX:', randomX, 'randomY:', randomY);\n console.log('[Panel] maximizePosition:', this.maximizePosition);\n \n switch (this.maximizePosition) {\n case MaximizePosition.Center:\n // Center with randomization for cascading effect\n this.offsetX = randomX;\n this.offsetY = randomY;\n console.log('[Panel] Set offsetX:', this.offsetX, 'offsetY:', this.offsetY);\n break;\n \n case MaximizePosition.Left:\n this.offsetX = -(viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = randomY;\n break;\n \n case MaximizePosition.Right:\n this.offsetX = (viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = randomY;\n break;\n \n case MaximizePosition.TopLeft:\n this.offsetX = -(viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = -(viewportHeight / 2 - rect.height / 2 - 40) + randomY;\n break;\n \n case MaximizePosition.TopRight:\n this.offsetX = (viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = -(viewportHeight / 2 - rect.height / 2 - 40) + randomY;\n break;\n \n case MaximizePosition.BottomLeft:\n this.offsetX = -(viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = (viewportHeight / 2 - rect.height / 2 - 40) + randomY;\n break;\n \n case MaximizePosition.BottomRight:\n this.offsetX = (viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = (viewportHeight / 2 - rect.height / 2 - 40) + randomY;\n break;\n }\n \n this.requestUpdate();\n }\n\n /**\n * Restore maximized embedded panel back to embedded mode\n */\n restoreEmbedded() {\n if (!this.isMaximizedFromEmbedded) return;\n \n this.isMaximizedFromEmbedded = false;\n this.mode = PanelMode.Embedded;\n this.offsetX = 0;\n this.offsetY = 0;\n \n // Restore original dimensions\n this.panelWidth = this.originalEmbeddedWidth;\n this.panelHeight = this.originalEmbeddedHeight;\n \n // Remove transform and apply restored dimensions\n requestAnimationFrame(() => {\n const panel = this.shadowRoot?.querySelector('.panel') as HTMLElement;\n if (panel) {\n panel.style.transform = '';\n // Apply the original dimensions\n if (this.originalEmbeddedWidth > 0) {\n panel.style.width = `${this.originalEmbeddedWidth}px`;\n }\n if (this.originalEmbeddedHeight > 0) {\n panel.style.height = `${this.originalEmbeddedHeight}px`;\n }\n }\n });\n \n this.dispatchEvent(new CustomEvent('panel-restore-embedded', {\n bubbles: true,\n detail: { mode: this.mode }\n }));\n }\n\n /**\n * Maximize/restore panel\n */\n maximize() {\n if (this.mode === PanelMode.Minimized) {\n // When restoring from minimized, check if we were maximized from embedded\n if (this.isMaximizedFromEmbedded) {\n // Restore back to embedded mode instead of going to original mode\n this.restoreEmbedded();\n return;\n }\n \n // Normal restoration: go back to the original mode\n // (the mode before any transformations)\n this.mode = this.originalMode || PanelMode.Panel;\n \n // Reset offset values\n this.offsetX = 0;\n this.offsetY = 0;\n \n // Remove any transform - let CSS handle positioning based on mode\n requestAnimationFrame(() => {\n const panel = this.shadowRoot?.querySelector('.panel') as HTMLElement;\n if (panel) {\n panel.style.transform = '';\n }\n });\n \n this.requestUpdate();\n }\n this.dispatchEvent(new CustomEvent('panel-maximize', { bubbles: true }));\n }\n\n /**\n * Close panel\n */\n close() {\n if (!this.closable) return;\n this.open = false;\n this.dispatchEvent(new CustomEvent('panel-close', { bubbles: true }));\n }\n\n /**\n * Toggle collapsed state\n */\n toggleCollapse() {\n if (!this.collapsible) return;\n this.collapsed = !this.collapsed;\n }\n\n /**\n * Get label size based on panel size\n */\n private getLabelSize(): 'small' | 'medium' | 'large' {\n switch (this.size) {\n case PanelSize.Small:\n return 'small';\n case PanelSize.Large:\n return 'large';\n case PanelSize.Medium:\n case PanelSize.Custom:\n default:\n return 'medium';\n }\n }\n\n /**\n * Get panel classes\n */\n private getPanelClasses() {\n return {\n 'panel': true,\n [`panel--mode-${this.mode}`]: true,\n [`panel--position-${this.position}`]: this.mode === PanelMode.Panel,\n [`panel--size-${this.size}`]: this.size !== PanelSize.Custom,\n 'panel--collapsed': this.collapsed,\n 'panel--dragging': this.isDragging,\n 'panel--animating': this.animating,\n 'panel--animated': this.animated\n };\n }\n\n /**\n * Get panel styles\n */\n private getPanelStyles() {\n const styles: Record<string, string> = {};\n\n if (this.width) {\n styles.width = this.width;\n }\n if (this.height) {\n styles.height = this.height;\n }\n\n // Apply custom dimensions if set\n if (this.panelWidth > 0) {\n styles.width = `${this.panelWidth}px`;\n }\n if (this.panelHeight > 0) {\n styles.height = `${this.panelHeight}px`;\n }\n\n // Apply transform for window mode with offsets\n if (this.mode === PanelMode.Window && (this.offsetX !== 0 || this.offsetY !== 0)) {\n styles.transform = `translate(calc(-50% + ${this.offsetX}px), calc(-50% + ${this.offsetY}px))`;\n }\n\n return styles;\n }\n\n /**\n * Render header\n */\n private renderHeader() {\n const hasCustomHeader = this.querySelector('[slot=\"header\"]');\n \n // Header should be draggable in window mode only\n const isDraggable = this.draggable && this.mode === PanelMode.Window;\n\n return html`\n <div class=\"${classMap({\n 'panel-header': true,\n 'panel-header--draggable': isDraggable\n })}\"\n @click=\"${this.mode === PanelMode.Minimized ? this.maximize : nothing}\">\n ${hasCustomHeader ? html`\n <div class=\"panel-header-content\">\n <slot name=\"header\"></slot>\n </div>\n ` : html`\n <div class=\"panel-header-content\">\n ${this.icon ? html`\n <nr-icon class=\"panel-header-icon\" name=\"${this.icon}\"></nr-icon>\n ` : nothing}\n ${this.title ? html`\n <nr-label \n class=\"panel-title\" \n size=\"${this.getLabelSize()}\"\n >${this.title}</nr-label>\n ` : nothing}\n </div>\n `}\n \n <div class=\"panel-actions\">\n ${this.collapsible ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.toggleCollapse}\"\n title=\"${this.collapsed ? 'Expand' : 'Collapse'}\">\n <nr-icon name=\"${this.collapsed ? 'chevron-down' : 'chevron-up'}\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.mode === PanelMode.Window && this.minimizable && !this.isMaximizedFromEmbedded && !this.isTabPopOut ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.minimize}\"\n title=\"Minimize\">\n <nr-icon name=\"minus\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.isTabPopOut && this.mode === PanelMode.Window ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.restore}\"\n title=\"Restore to tabs\">\n <nr-icon name=\"minimize\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.mode === PanelMode.Embedded ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.maximizeEmbedded}\"\n title=\"Maximize to window\">\n <nr-icon name=\"maximize\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.isMaximizedFromEmbedded ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.restoreEmbedded}\"\n title=\"Restore to embedded\">\n <nr-icon name=\"minimize\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.mode === PanelMode.Panel ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.transformToWindow}\"\n title=\"Pop out to window\">\n <nr-icon name=\"external-link\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.mode === PanelMode.Window && !this.isMaximizedFromEmbedded ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.transformToPanel}\"\n title=\"Dock to panel\">\n <nr-icon name=\"layout-sidebar\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.closable ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.close}\"\n title=\"Close\">\n <nr-icon name=\"x\"></nr-icon>\n </button>\n ` : nothing}\n </div>\n </div>\n `;\n }\n\n /**\n * Render footer\n */\n private renderFooter() {\n const hasFooter = this.querySelector('[slot=\"footer\"]');\n \n if (!hasFooter) return nothing;\n\n return html`\n <div class=\"panel-footer\">\n <slot name=\"footer\"></slot>\n </div>\n `;\n }\n\n /**\n * Render resize handles\n */\n private renderResizeHandles() {\n if (!this.resizable || (this.mode !== PanelMode.Window && this.mode !== PanelMode.Embedded)) return nothing;\n\n return html`\n <div class=\"resize-handle resize-handle-n\"></div>\n <div class=\"resize-handle resize-handle-s\"></div>\n <div class=\"resize-handle resize-handle-e\"></div>\n <div class=\"resize-handle resize-handle-w\"></div>\n <div class=\"resize-handle resize-handle-ne\"></div>\n <div class=\"resize-handle resize-handle-nw\"></div>\n <div class=\"resize-handle resize-handle-se\"></div>\n <div class=\"resize-handle resize-handle-sw\"></div>\n `;\n }\n\n override render() {\n if (!this.open) return nothing;\n\n return html`\n <div \n class=${classMap(this.getPanelClasses())}\n style=${styleMap(this.getPanelStyles())}\n data-theme=\"${this.currentTheme}\">\n \n ${this.renderHeader()}\n \n <div class=\"panel-body\">\n <slot></slot>\n </div>\n \n ${this.renderFooter()}\n ${this.renderResizeHandles()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nr-panel': NrPanelElement;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"panel.component.js","sourceRoot":"","sources":["../../../../src/components/panel/panel.component.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,mCAAmC;AACnC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,mBAAmB,CAAC;AAE3B,qBAAqB;AACrB,OAAO,EACL,mBAAmB,EAEnB,qBAAqB,EAEtB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,iBAAiB,CAAC,UAAU,CAAC;IAAjE;;QAIW,uBAAkB,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAEtD,4CAA4C;QAE5C,SAAI,GAAc,SAAS,CAAC,KAAK,CAAC;QAElC,iBAAiB;QAEjB,SAAI,GAAc,SAAS,CAAC,MAAM,CAAC;QAEnC,sCAAsC;QAEtC,aAAQ,GAAkB,aAAa,CAAC,KAAK,CAAC;QAE9C,2EAA2E;QAE3E,qBAAgB,GAAqB,gBAAgB,CAAC,MAAM,CAAC;QAE7D,0DAA0D;QAEjD,cAAS,GAAG,IAAI,CAAC;QAE1B,qCAAqC;QAErC,cAAS,GAAG,KAAK,CAAC;QAElB,iDAAiD;QAEjD,gBAAW,GAAG,KAAK,CAAC;QAEpB,yCAAyC;QAEzC,gBAAW,GAAG,IAAI,CAAC;QAEnB,sCAAsC;QAEtC,aAAQ,GAAG,KAAK,CAAC;QAEjB,oEAAoE;QAEpE,aAAQ,GAAG,KAAK,CAAC;QAEjB,kBAAkB;QAET,UAAK,GAAG,YAAY,CAAC;QAE9B,kBAAkB;QAElB,SAAI,GAAG,YAAY,CAAC;QAEpB,mBAAmB;QAEnB,UAAK,GAAG,YAAY,CAAC;QAErB,oBAAoB;QAEpB,WAAM,GAAG,YAAY,CAAC;QAEtB,wCAAwC;QAExC,SAAI,GAAG,IAAI,CAAC;QAEZ,sBAAsB;QAEd,cAAS,GAAG,KAAK,CAAC;QAE1B,qBAAqB;QAErB,eAAU,GAAG,KAAK,CAAC;QAEnB,sBAAsB;QAEd,cAAS,GAAG,KAAK,CAAC;QAE1B,oCAAoC;QAEpC,YAAO,GAAG,CAAC,CAAC;QAEZ,oCAAoC;QAEpC,YAAO,GAAG,CAAC,CAAC;QAEZ,0BAA0B;QAE1B,eAAU,GAAG,CAAC,CAAC;QAEf,2BAA2B;QAE3B,gBAAW,GAAG,CAAC,CAAC;QAEhB,gFAAgF;QAExE,iBAAY,GAAqB,IAAI,CAAC;QAE9C,qDAAqD;QAE7C,4BAAuB,GAAG,KAAK,CAAC;QAExC,yDAAyD;QAEzD,gBAAW,GAAG,KAAK,CAAC;QAEpB,gEAAgE;QAExD,kBAAa,GAAG,IAAI,CAAC;QAE7B,+DAA+D;QAEvD,0BAAqB,GAAG,CAAC,CAAC;QAElC,+DAA+D;QAEvD,2BAAsB,GAAG,CAAC,CAAC;QAEnC,cAAc;QACN,mBAAc,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvD,0FAA0F;QAClF,sBAAiB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAwiB9D,CAAC;IAtiBU,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAEQ,UAAU,CAAC,iBAAiC;QACnD,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAEpC,4CAA4C;QAC5C,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE;YACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC5B;QAED,qBAAqB;QACrB,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACjC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAc,CAAC;YAC3D,IAAI,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE;gBACpC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;aAChC;SACF;IACH,CAAC;IAEQ,OAAO,CAAC,iBAAiC;QAChD,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAEjC,kFAAkF;QAClF,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACjC,qBAAqB,CAAC,GAAG,EAAE;gBACzB,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAkB;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,uBAAuB;QACvB,8CAA8C;QAC9C,uDAAuD;QACvD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;YAC9B,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,IAAI,OAAO,KAAK,SAAS,CAAC,SAAS,CAAC,EAAE;YACpE,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;SACrC;QAED,6BAA6B;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,mBAAmB,EAAE;YACtD,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE;SACnD,CAAC,CAAC,CAAC;QAEJ,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE;YAClC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;SAC9B;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE;YACjC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;SAC7B;IACH,CAAC;IAED;;OAEG;IACH,OAAO;QACL,0CAA0C;QAC1C,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC5D,gDAAgD;YAChD,mDAAmD;YACnD,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACxE,wEAAwE;YACxE,wDAAwD;YACxD,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO;SACR;QAED,2DAA2D;QAC3D,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,gCAAgC;YAChC,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO;SACR;QAED,mEAAmE;QACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAE9B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,gBAAgB;;QACd,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,EAAE;YACpC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO;SACR;QAED,8CAA8C;QAC9C,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAgB,CAAC;QACtE,IAAI,KAAK,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YAE/D,gEAAgE;YAChE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;YACvF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;YAE3F,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;SACnF;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;SACvD;QAED,+DAA+D;QAC/D,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,QAAQ,EAAE;YAClE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC;SACxC;QAED,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QAEpC,8DAA8D;QAC9D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5D,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE9C,wDAAwD;QACxD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,yBAAyB,EAAE;YAC5D,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE;SAC7D,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACK,mBAAmB;;QACzB,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAgB,CAAC;QACtE,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;QACxC,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC;QAE1C,oEAAoE;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAErD,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEhE,QAAQ,IAAI,CAAC,gBAAgB,EAAE;YAC7B,KAAK,gBAAgB,CAAC,MAAM;gBAC1B,iDAAiD;gBACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5E,MAAM;YAER,KAAK,gBAAgB,CAAC,IAAI;gBACxB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACpE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,MAAM;YAER,KAAK,gBAAgB,CAAC,KAAK;gBACzB,IAAI,CAAC,OAAO,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACnE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,MAAM;YAER,KAAK,gBAAgB,CAAC,OAAO;gBAC3B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACpE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACtE,MAAM;YAER,KAAK,gBAAgB,CAAC,QAAQ;gBAC5B,IAAI,CAAC,OAAO,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACnE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACtE,MAAM;YAER,KAAK,gBAAgB,CAAC,UAAU;gBAC9B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACpE,IAAI,CAAC,OAAO,GAAG,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACrE,MAAM;YAER,KAAK,gBAAgB,CAAC,WAAW;gBAC/B,IAAI,CAAC,OAAO,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACnE,IAAI,CAAC,OAAO,GAAG,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;gBACrE,MAAM;SACT;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,uBAAuB;YAAE,OAAO;QAE1C,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAEjB,8BAA8B;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAE/C,iDAAiD;QACjD,qBAAqB,CAAC,GAAG,EAAE;;YACzB,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAgB,CAAC;YACtE,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;gBAC3B,gCAAgC;gBAChC,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE;oBAClC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,qBAAqB,IAAI,CAAC;iBACvD;gBACD,IAAI,IAAI,CAAC,sBAAsB,GAAG,CAAC,EAAE;oBACnC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,IAAI,CAAC;iBACzD;aACF;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,wBAAwB,EAAE;YAC3D,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SAC5B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE;YACrC,0EAA0E;YAC1E,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAChC,kEAAkE;gBAClE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,OAAO;aACR;YAED,mDAAmD;YACnD,wCAAwC;YACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,KAAK,CAAC;YAEjD,sBAAsB;YACtB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YAEjB,kEAAkE;YAClE,qBAAqB,CAAC,GAAG,EAAE;;gBACzB,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAgB,CAAC;gBACtE,IAAI,KAAK,EAAE;oBACT,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;iBAC5B;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,OAAO,CAAC;YACjB,KAAK,SAAS,CAAC,KAAK;gBAClB,OAAO,OAAO,CAAC;YACjB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,SAAS,CAAC,MAAM,CAAC;YACtB;gBACE,OAAO,QAAQ,CAAC;SACnB;IACH,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI;YAClC,CAAC,mBAAmB,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK;YACnE,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM;YAC5D,kBAAkB,EAAE,IAAI,CAAC,SAAS;YAClC,iBAAiB,EAAE,IAAI,CAAC,UAAU;YAClC,kBAAkB,EAAE,IAAI,CAAC,SAAS;YAClC,iBAAiB,EAAE,IAAI,CAAC,QAAQ;SACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SAC7B;QAED,iCAAiC;QACjC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;YACvB,MAAM,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC;SACvC;QACD,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;YACxB,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC;SACzC;QAED,+CAA+C;QAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE;YAChF,MAAM,CAAC,SAAS,GAAG,yBAAyB,IAAI,CAAC,OAAO,oBAAoB,IAAI,CAAC,OAAO,MAAM,CAAC;SAChG;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAE9D,iDAAiD;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC;QAErE,OAAO,IAAI,CAAA;oBACK,QAAQ,CAAC;YACrB,cAAc,EAAE,IAAI;YACpB,yBAAyB,EAAE,WAAW;SACvC,CAAC;gBACQ,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;UACjE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAA;;;;SAIvB,CAAC,CAAC,CAAC,IAAI,CAAA;;cAEF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;yDAC2B,IAAI,CAAC,IAAI;aACrD,CAAC,CAAC,CAAC,OAAO;cACT,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGP,IAAI,CAAC,YAAY,EAAE;iBAC1B,IAAI,CAAC,KAAK;aACd,CAAC,CAAC,CAAC,OAAO;;SAEd;;;YAGG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGX,IAAI,CAAC,cAAc;uBACpB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;+BAC9B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY;;WAElE,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGnG,IAAI,CAAC,QAAQ;;;;WAI1B,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAG7C,IAAI,CAAC,OAAO;;;;WAIzB,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAG3B,IAAI,CAAC,gBAAgB;;;;WAIlC,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGvB,IAAI,CAAC,eAAe;;;;WAIjC,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGxB,IAAI,CAAC,iBAAiB;;;;WAInC,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAG1D,IAAI,CAAC,gBAAgB;;;;WAIlC,CAAC,CAAC,CAAC,OAAO;;YAET,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;;;wBAGR,IAAI,CAAC,KAAK;;;;WAIvB,CAAC,CAAC,CAAC,OAAO;;;KAGhB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAExD,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC;QAE/B,OAAO,IAAI,CAAA;;;;KAIV,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC;YAAE,OAAO,OAAO,CAAC;QAE5G,OAAO,IAAI,CAAA;;;;;;;;;KASV,CAAC;IACJ,CAAC;IAEQ,MAAM;QACb,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,OAAO,CAAC;QAE/B,OAAO,IAAI,CAAA;;gBAEC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;sBACzB,IAAI,CAAC,YAAY;;UAE7B,IAAI,CAAC,YAAY,EAAE;;;;;;UAMnB,IAAI,CAAC,YAAY,EAAE;UACnB,IAAI,CAAC,mBAAmB,EAAE;;KAE/B,CAAC;IACJ,CAAC;CACF,CAAA;AA/pBiB,qBAAM,GAAG,MAAO,CAAA;AAMhC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CACO;AAIlC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CACQ;AAInC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDACmB;AAI9C;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACkC;AAI7D;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iDACF;AAI1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iDACV;AAIlB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;mDACR;AAIpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;mDACT;AAInB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gDACX;AAIjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gDACX;AAIjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CACG;AAI9B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CACP;AAIpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CACN;AAIrB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CACL;AAItB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4CAC/B;AAIZ;IADC,KAAK,EAAE;iDACkB;AAI1B;IADC,KAAK,EAAE;kDACW;AAInB;IADC,KAAK,EAAE;iDACkB;AAI1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+CACf;AAIZ;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+CACf;AAIZ;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDACZ;AAIf;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDACX;AAIhB;IADC,KAAK,EAAE;oDACsC;AAI9C;IADC,KAAK,EAAE;+DACgC;AAIxC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;mDACR;AAIpB;IADC,KAAK,EAAE;qDACqB;AAI7B;IADC,KAAK,EAAE;6DAC0B;AAIlC;IADC,KAAK,EAAE;8DAC2B;AApHxB,cAAc;IAD1B,aAAa,CAAC,UAAU,CAAC;GACb,cAAc,CAiqB1B;SAjqBY,cAAc","sourcesContent":["/**\n * @license\n * Copyright 2023 Nuraly, Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\nimport { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport {\n PanelMode,\n PanelSize,\n PanelPosition,\n MaximizePosition,\n EMPTY_STRING\n} from './panel.types.js';\nimport { styles } from './panel.style.js';\nimport { NuralyUIBaseMixin } from '@nuralyui/common/mixins';\n\n// Import icon and label components\nimport '../icon/index.js';\nimport '../label/index.js';\n\n// Import controllers\nimport {\n PanelDragController,\n PanelDragHost,\n PanelResizeController,\n PanelResizeHost\n} from './controllers/index.js';\n\n/**\n * Versatile panel component that can transform between panel and window modes.\n * \n * Features:\n * - Transform between panel (docked) and window (floating) modes\n * - Draggable in window mode\n * - Resizable panels\n * - Collapsible content\n * - Minimizable to compact view\n * - Theme-aware styling with light/dark mode support\n * - Multiple size presets\n * - Positioned docking (left, right, top, bottom)\n * \n * @example\n * ```html\n * <!-- Panel docked to right side -->\n * <nr-panel\n * title=\"Settings Panel\"\n * mode=\"panel\"\n * position=\"right\"\n * size=\"medium\">\n * <p>Panel content here</p>\n * </nr-panel>\n * \n * <!-- Floating draggable window -->\n * <nr-panel\n * title=\"Tool Window\"\n * mode=\"window\"\n * draggable\n * resizable\n * size=\"medium\">\n * <p>Window content here</p>\n * </nr-panel>\n * ```\n * \n * @fires panel-mode-change - Panel mode changed\n * @fires panel-close - Panel closed\n * @fires panel-minimize - Panel minimized\n * @fires panel-maximize - Panel maximized/restored\n * @fires panel-drag-start - Panel drag started\n * @fires panel-drag-end - Panel drag ended\n * @fires panel-resize - Panel resized\n * \n * @slot default - Panel body content\n * @slot header - Custom header content\n * @slot footer - Custom footer content\n */\n@customElement('nr-panel')\nexport class NrPanelElement extends NuralyUIBaseMixin(LitElement) \n implements PanelDragHost, PanelResizeHost {\n static override styles = styles;\n\n override requiredComponents = ['nr-icon', 'nr-label'];\n\n /** Panel mode (panel, window, minimized) */\n @property({ type: String })\n mode: PanelMode = PanelMode.Panel;\n\n /** Panel size */\n @property({ type: String })\n size: PanelSize = PanelSize.Medium;\n\n /** Panel position (for panel mode) */\n @property({ type: String })\n position: PanelPosition = PanelPosition.Right;\n\n /** Position where the window appears when maximizing from embedded mode */\n @property({ type: String })\n maximizePosition: MaximizePosition = MaximizePosition.Center;\n\n /** Whether the panel can be dragged (window mode only) */\n @property({ type: Boolean })\n override draggable = true;\n\n /** Whether the panel is resizable */\n @property({ type: Boolean })\n resizable = false;\n\n /** Whether the panel content can be collapsed */\n @property({ type: Boolean })\n collapsible = false;\n\n /** Whether the panel can be minimized */\n @property({ type: Boolean })\n minimizable = true;\n\n /** Whether the panel can be closed */\n @property({ type: Boolean })\n closable = false;\n\n /** Whether to enable smooth animations for position/mode changes */\n @property({ type: Boolean })\n animated = false;\n\n /** Panel title */\n @property({ type: String })\n override title = EMPTY_STRING;\n\n /** Header icon */\n @property({ type: String })\n icon = EMPTY_STRING;\n\n /** Custom width */\n @property({ type: String })\n width = EMPTY_STRING;\n\n /** Custom height */\n @property({ type: String })\n height = EMPTY_STRING;\n\n /** Whether the panel is open/visible */\n @property({ type: Boolean, reflect: true })\n open = true;\n\n /** Collapsed state */\n @state()\n private collapsed = false;\n\n /** Dragging state */\n @state()\n isDragging = false;\n\n /** Animation state */\n @state()\n private animating = false;\n\n /** Current X offset for dragging */\n @property({ type: Number })\n offsetX = 0;\n\n /** Current Y offset for dragging */\n @property({ type: Number })\n offsetY = 0;\n\n /** Current panel width */\n @property({ type: Number })\n panelWidth = 0;\n\n /** Current panel height */\n @property({ type: Number })\n panelHeight = 0;\n\n /** Original mode before any transformations (for restoration from minimized) */\n @state()\n private originalMode: PanelMode | null = null;\n\n /** Track if panel is maximized from embedded mode */\n @state()\n private isMaximizedFromEmbedded = false;\n\n /** Track if this panel was created from a tab pop-out */\n @property({ type: Boolean })\n isTabPopOut = false;\n\n /** Track if this is the first update to capture initial mode */\n @state()\n private isFirstUpdate = true;\n\n /** Original dimensions before maximizing from embedded mode */\n @state()\n private originalEmbeddedWidth = 0;\n\n /** Original dimensions before maximizing from embedded mode */\n @state()\n private originalEmbeddedHeight = 0;\n\n // Controllers\n private dragController = new PanelDragController(this);\n // @ts-ignore - Controller handles events through listeners, doesn't need direct reference\n private _resizeController = new PanelResizeController(this);\n\n override connectedCallback() {\n super.connectedCallback();\n this.validateDependencies();\n this.animating = true;\n setTimeout(() => {\n this.animating = false;\n }, 300);\n }\n\n override willUpdate(changedProperties: PropertyValues) {\n super.willUpdate(changedProperties);\n\n // Capture the original mode on first update\n if (this.isFirstUpdate && this.mode) {\n this.originalMode = this.mode;\n this.isFirstUpdate = false;\n }\n\n // Track mode changes\n if (changedProperties.has('mode')) {\n const oldMode = changedProperties.get('mode') as PanelMode;\n if (oldMode && oldMode !== this.mode) {\n this.handleModeChange(oldMode);\n }\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n \n // If mode changed, give the DOM time to update with new classes for drag handlers\n if (changedProperties.has('mode')) {\n requestAnimationFrame(() => {\n this.requestUpdate();\n });\n }\n }\n\n /**\n * Handle mode change\n */\n private handleModeChange(oldMode: PanelMode) {\n this.animating = true;\n\n // Reset position when:\n // 1. Switching to window mode from panel mode\n // 2. Restoring from minimized mode back to window mode\n if (this.mode === PanelMode.Window && \n (oldMode === PanelMode.Panel || oldMode === PanelMode.Minimized)) {\n this.dragController.resetPosition();\n }\n\n // Dispatch mode change event\n this.dispatchEvent(new CustomEvent('panel-mode-change', {\n bubbles: true,\n detail: { mode: this.mode, previousMode: oldMode }\n }));\n\n setTimeout(() => {\n this.animating = false;\n }, 300);\n }\n\n /**\n * Transform to window mode\n */\n transformToWindow() {\n if (this.mode !== PanelMode.Window) {\n this.mode = PanelMode.Window;\n }\n }\n\n /**\n * Transform to panel mode\n */\n transformToPanel() {\n if (this.mode !== PanelMode.Panel) {\n this.mode = PanelMode.Panel;\n }\n }\n\n /**\n * Restore panel to its original state\n */\n restore() {\n // Special handling for tab pop-out panels\n if (this.isTabPopOut) {\n console.log('[Panel] Restore called for tab pop-out panel');\n // For tab pop-outs, \"restore\" means pop back in\n // Dispatch event first to trigger the pop-in logic\n this.dispatchEvent(new CustomEvent('panel-restore', { bubbles: true }));\n // Then close the panel (the pop-in logic should handle tab restoration)\n // Use setTimeout to ensure the event is processed first\n setTimeout(() => {\n this.open = false;\n this.dispatchEvent(new CustomEvent('panel-close', { bubbles: true }));\n }, 0);\n return;\n }\n \n // Special handling for panels maximized from embedded mode\n if (this.isMaximizedFromEmbedded) {\n // Restore back to embedded mode\n this.restoreEmbedded();\n return;\n }\n \n // Default restore behavior (same as maximize for minimized panels)\n this.maximize();\n }\n\n /**\n * Minimize panel\n */\n minimize() {\n if (!this.minimizable) return;\n \n this.mode = PanelMode.Minimized;\n this.dispatchEvent(new CustomEvent('panel-minimize', { bubbles: true }));\n }\n\n /**\n * Maximize embedded panel to floating window\n */\n maximizeEmbedded() {\n console.log('[Panel] === MAXIMIZE EMBEDDED START ===');\n console.log('[Panel] Current mode:', this.mode);\n console.log('[Panel] this.panelWidth:', this.panelWidth);\n console.log('[Panel] this.panelHeight:', this.panelHeight);\n \n if (this.mode !== PanelMode.Embedded) {\n console.log('[Panel] ✗ Not in embedded mode, aborting');\n return;\n }\n \n // Store original dimensions before maximizing\n const panel = this.shadowRoot?.querySelector('.panel') as HTMLElement;\n if (panel) {\n console.log('[Panel] Panel DOM element found');\n console.log('[Panel] panel.offsetWidth:', panel.offsetWidth);\n console.log('[Panel] panel.offsetHeight:', panel.offsetHeight);\n \n // Use current tracked dimensions or fall back to DOM dimensions\n this.originalEmbeddedWidth = this.panelWidth > 0 ? this.panelWidth : panel.offsetWidth;\n this.originalEmbeddedHeight = this.panelHeight > 0 ? this.panelHeight : panel.offsetHeight;\n \n console.log('[Panel] ✓ Set originalEmbeddedWidth:', this.originalEmbeddedWidth);\n console.log('[Panel] ✓ Set originalEmbeddedHeight:', this.originalEmbeddedHeight);\n } else {\n console.warn('[Panel] ✗ Panel DOM element not found');\n }\n \n // Set the original mode to embedded so we can restore properly\n if (!this.originalMode || this.originalMode !== PanelMode.Embedded) {\n this.originalMode = PanelMode.Embedded;\n }\n \n this.isMaximizedFromEmbedded = true;\n \n // Keep the original dimensions when maximizing to window mode\n this.panelWidth = this.originalEmbeddedWidth;\n this.panelHeight = this.originalEmbeddedHeight;\n \n console.log('[Panel] Final panelWidth:', this.panelWidth);\n console.log('[Panel] Final panelHeight:', this.panelHeight);\n \n this.mode = PanelMode.Window;\n console.log('[Panel] Mode changed to Window');\n \n // Wait for the mode change to render, then set position\n this.updateComplete.then(() => {\n this.setMaximizePosition();\n });\n \n this.dispatchEvent(new CustomEvent('panel-maximize-embedded', { \n bubbles: true,\n detail: { mode: this.mode, position: this.maximizePosition }\n }));\n }\n\n /**\n * Set the window position based on maximizePosition with slight randomization\n */\n private setMaximizePosition() {\n const panel = this.shadowRoot?.querySelector('.panel') as HTMLElement;\n if (!panel) return;\n\n const rect = panel.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n \n // Add random offset for cascading effect (±80px for X, ±60px for Y)\n const randomX = Math.floor(Math.random() * 160) - 80;\n const randomY = Math.floor(Math.random() * 120) - 60;\n \n console.log('[Panel] setMaximizePosition - randomX:', randomX, 'randomY:', randomY);\n console.log('[Panel] maximizePosition:', this.maximizePosition);\n \n switch (this.maximizePosition) {\n case MaximizePosition.Center:\n // Center with randomization for cascading effect\n this.offsetX = randomX;\n this.offsetY = randomY;\n console.log('[Panel] Set offsetX:', this.offsetX, 'offsetY:', this.offsetY);\n break;\n \n case MaximizePosition.Left:\n this.offsetX = -(viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = randomY;\n break;\n \n case MaximizePosition.Right:\n this.offsetX = (viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = randomY;\n break;\n \n case MaximizePosition.TopLeft:\n this.offsetX = -(viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = -(viewportHeight / 2 - rect.height / 2 - 40) + randomY;\n break;\n \n case MaximizePosition.TopRight:\n this.offsetX = (viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = -(viewportHeight / 2 - rect.height / 2 - 40) + randomY;\n break;\n \n case MaximizePosition.BottomLeft:\n this.offsetX = -(viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = (viewportHeight / 2 - rect.height / 2 - 40) + randomY;\n break;\n \n case MaximizePosition.BottomRight:\n this.offsetX = (viewportWidth / 2 - rect.width / 2 - 40) + randomX;\n this.offsetY = (viewportHeight / 2 - rect.height / 2 - 40) + randomY;\n break;\n }\n \n this.requestUpdate();\n }\n\n /**\n * Restore maximized embedded panel back to embedded mode\n */\n restoreEmbedded() {\n if (!this.isMaximizedFromEmbedded) return;\n \n this.isMaximizedFromEmbedded = false;\n this.mode = PanelMode.Embedded;\n this.offsetX = 0;\n this.offsetY = 0;\n \n // Restore original dimensions\n this.panelWidth = this.originalEmbeddedWidth;\n this.panelHeight = this.originalEmbeddedHeight;\n \n // Remove transform and apply restored dimensions\n requestAnimationFrame(() => {\n const panel = this.shadowRoot?.querySelector('.panel') as HTMLElement;\n if (panel) {\n panel.style.transform = '';\n // Apply the original dimensions\n if (this.originalEmbeddedWidth > 0) {\n panel.style.width = `${this.originalEmbeddedWidth}px`;\n }\n if (this.originalEmbeddedHeight > 0) {\n panel.style.height = `${this.originalEmbeddedHeight}px`;\n }\n }\n });\n \n this.dispatchEvent(new CustomEvent('panel-restore-embedded', {\n bubbles: true,\n detail: { mode: this.mode }\n }));\n }\n\n /**\n * Maximize/restore panel\n */\n maximize() {\n if (this.mode === PanelMode.Minimized) {\n // When restoring from minimized, check if we were maximized from embedded\n if (this.isMaximizedFromEmbedded) {\n // Restore back to embedded mode instead of going to original mode\n this.restoreEmbedded();\n return;\n }\n \n // Normal restoration: go back to the original mode\n // (the mode before any transformations)\n this.mode = this.originalMode || PanelMode.Panel;\n \n // Reset offset values\n this.offsetX = 0;\n this.offsetY = 0;\n \n // Remove any transform - let CSS handle positioning based on mode\n requestAnimationFrame(() => {\n const panel = this.shadowRoot?.querySelector('.panel') as HTMLElement;\n if (panel) {\n panel.style.transform = '';\n }\n });\n \n this.requestUpdate();\n }\n this.dispatchEvent(new CustomEvent('panel-maximize', { bubbles: true }));\n }\n\n /**\n * Close panel\n */\n close() {\n if (!this.closable) return;\n this.open = false;\n this.dispatchEvent(new CustomEvent('panel-close', { bubbles: true }));\n }\n\n /**\n * Toggle collapsed state\n */\n toggleCollapse() {\n if (!this.collapsible) return;\n this.collapsed = !this.collapsed;\n }\n\n /**\n * Get label size based on panel size\n */\n private getLabelSize(): 'small' | 'medium' | 'large' {\n switch (this.size) {\n case PanelSize.Small:\n return 'small';\n case PanelSize.Large:\n return 'large';\n case PanelSize.Medium:\n case PanelSize.Custom:\n default:\n return 'medium';\n }\n }\n\n /**\n * Get panel classes\n */\n private getPanelClasses() {\n return {\n 'panel': true,\n [`panel--mode-${this.mode}`]: true,\n [`panel--position-${this.position}`]: this.mode === PanelMode.Panel,\n [`panel--size-${this.size}`]: this.size !== PanelSize.Custom,\n 'panel--collapsed': this.collapsed,\n 'panel--dragging': this.isDragging,\n 'panel--animating': this.animating,\n 'panel--animated': this.animated\n };\n }\n\n /**\n * Get panel styles\n */\n private getPanelStyles() {\n const styles: Record<string, string> = {};\n\n if (this.width) {\n styles.width = this.width;\n }\n if (this.height) {\n styles.height = this.height;\n }\n\n // Apply custom dimensions if set\n if (this.panelWidth > 0) {\n styles.width = `${this.panelWidth}px`;\n }\n if (this.panelHeight > 0) {\n styles.height = `${this.panelHeight}px`;\n }\n\n // Apply transform for window mode with offsets\n if (this.mode === PanelMode.Window && (this.offsetX !== 0 || this.offsetY !== 0)) {\n styles.transform = `translate(calc(-50% + ${this.offsetX}px), calc(-50% + ${this.offsetY}px))`;\n }\n\n return styles;\n }\n\n /**\n * Render header\n */\n private renderHeader() {\n const hasCustomHeader = this.querySelector('[slot=\"header\"]');\n \n // Header should be draggable in window mode only\n const isDraggable = this.draggable && this.mode === PanelMode.Window;\n\n return html`\n <div class=\"${classMap({\n 'panel-header': true,\n 'panel-header--draggable': isDraggable\n })}\"\n @click=\"${this.mode === PanelMode.Minimized ? this.maximize : nothing}\">\n ${hasCustomHeader ? html`\n <div class=\"panel-header-content\">\n <slot name=\"header\"></slot>\n </div>\n ` : html`\n <div class=\"panel-header-content\">\n ${this.icon ? html`\n <nr-icon class=\"panel-header-icon\" name=\"${this.icon}\"></nr-icon>\n ` : nothing}\n ${this.title ? html`\n <nr-label \n class=\"panel-title\" \n size=\"${this.getLabelSize()}\"\n >${this.title}</nr-label>\n ` : nothing}\n </div>\n `}\n \n <div class=\"panel-actions\">\n ${this.collapsible ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.toggleCollapse}\"\n title=\"${this.collapsed ? 'Expand' : 'Collapse'}\">\n <nr-icon name=\"${this.collapsed ? 'chevron-down' : 'chevron-up'}\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.mode === PanelMode.Window && this.minimizable && !this.isMaximizedFromEmbedded && !this.isTabPopOut ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.minimize}\"\n title=\"Minimize\">\n <nr-icon name=\"minus\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.isTabPopOut && this.mode === PanelMode.Window ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.restore}\"\n title=\"Restore to tabs\">\n <nr-icon name=\"minimize\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.mode === PanelMode.Embedded ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.maximizeEmbedded}\"\n title=\"Maximize to window\">\n <nr-icon name=\"maximize\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.isMaximizedFromEmbedded ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.restoreEmbedded}\"\n title=\"Restore to embedded\">\n <nr-icon name=\"minimize\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.mode === PanelMode.Panel ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.transformToWindow}\"\n title=\"Pop out to window\">\n <nr-icon name=\"external-link\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.mode === PanelMode.Window && !this.isMaximizedFromEmbedded ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.transformToPanel}\"\n title=\"Dock to panel\">\n <nr-icon name=\"layout-sidebar\"></nr-icon>\n </button>\n ` : nothing}\n \n ${this.closable ? html`\n <button\n class=\"panel-action-button\"\n @click=\"${this.close}\"\n title=\"Close\">\n <nr-icon name=\"x\"></nr-icon>\n </button>\n ` : nothing}\n </div>\n </div>\n `;\n }\n\n /**\n * Render footer\n */\n private renderFooter() {\n const hasFooter = this.querySelector('[slot=\"footer\"]');\n \n if (!hasFooter) return nothing;\n\n return html`\n <div class=\"panel-footer\">\n <slot name=\"footer\"></slot>\n </div>\n `;\n }\n\n /**\n * Render resize handles\n */\n private renderResizeHandles() {\n if (!this.resizable || (this.mode !== PanelMode.Window && this.mode !== PanelMode.Embedded)) return nothing;\n\n return html`\n <div class=\"resize-handle resize-handle-n\"></div>\n <div class=\"resize-handle resize-handle-s\"></div>\n <div class=\"resize-handle resize-handle-e\"></div>\n <div class=\"resize-handle resize-handle-w\"></div>\n <div class=\"resize-handle resize-handle-ne\"></div>\n <div class=\"resize-handle resize-handle-nw\"></div>\n <div class=\"resize-handle resize-handle-se\"></div>\n <div class=\"resize-handle resize-handle-sw\"></div>\n `;\n }\n\n override render() {\n if (!this.open) return nothing;\n\n return html`\n <div \n class=${classMap(this.getPanelClasses())}\n style=${styleMap(this.getPanelStyles())}\n data-theme=\"${this.currentTheme}\">\n \n ${this.renderHeader()}\n \n <div class=\"panel-body\">\n <slot></slot>\n </div>\n \n ${this.renderFooter()}\n ${this.renderResizeHandles()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nr-panel': NrPanelElement;\n }\n}\n"]}
|