@thangdevalone/meeting-grid-layout-vue 1.4.1 → 1.5.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.
package/README.md CHANGED
@@ -114,20 +114,20 @@ Full-grid overlay for screen sharing, whiteboard, etc.
114
114
 
115
115
  ## Responsive PiP
116
116
 
117
- PiP supports responsive breakpoints that auto-adjust size based on container width.
117
+ PiP auto-adjusts size based on container width via breakpoints:
118
118
 
119
119
  ```vue
120
120
  <script setup>
121
- import { FloatingGridItem, DEFAULT_FLOAT_BREAKPOINTS } from '@thangdevalone/meet-layout-grid-vue'
121
+ import { FloatingGridItem, GridContainer, GridItem, DEFAULT_FLOAT_BREAKPOINTS } from '@thangdevalone/meeting-grid-layout-vue'
122
122
  </script>
123
123
 
124
124
  <template>
125
- <!-- Standalone FloatingGridItem — auto-responsive -->
125
+ <!-- Standalone — auto-responsive -->
126
126
  <FloatingGridItem :breakpoints="DEFAULT_FLOAT_BREAKPOINTS">
127
127
  <VideoTile />
128
128
  </FloatingGridItem>
129
129
 
130
- <!-- Auto-float in 2-person mode — responsive PiP via GridContainer -->
130
+ <!-- Auto-float in 2-person mode -->
131
131
  <GridContainer :count="2" :float-breakpoints="DEFAULT_FLOAT_BREAKPOINTS">
132
132
  <GridItem v-for="(p, i) in participants" :key="p.id" :index="i">
133
133
  <VideoTile :participant="p" />
@@ -136,16 +136,7 @@ import { FloatingGridItem, DEFAULT_FLOAT_BREAKPOINTS } from '@thangdevalone/meet
136
136
  </template>
137
137
  ```
138
138
 
139
- Resolve PiP size programmatically:
140
-
141
- ```ts
142
- import { resolveFloatSize, DEFAULT_FLOAT_BREAKPOINTS } from '@thangdevalone/meet-layout-grid-vue'
143
-
144
- const size = resolveFloatSize(800, DEFAULT_FLOAT_BREAKPOINTS)
145
- // → { width: 160, height: 215 }
146
- ```
147
-
148
- > See the [main README](https://github.com/thangdevalone/meet-layout-grid#responsive-pip) for full details, default breakpoint table, and custom breakpoint examples.
139
+ > See the [main README](https://github.com/thangdevalone/meeting-grid-layout#floating-pip-picture-in-picture) for default breakpoint table, custom breakpoints, and `resolveFloatSize` utility.
149
140
 
150
141
  ## Composables
151
142
 
package/dist/index.cjs CHANGED
@@ -143,6 +143,15 @@ const GridContainer = vue.defineComponent({
143
143
  type: Array,
144
144
  default: void 0
145
145
  },
146
+ /**
147
+ * Index of the participant to show as the floating PiP in 2-person mode.
148
+ * The other participant will fill the main area.
149
+ * @default 1 (second participant)
150
+ */
151
+ pipIndex: {
152
+ type: Number,
153
+ default: void 0
154
+ },
146
155
  /** HTML tag to render */
147
156
  tag: {
148
157
  type: String,
@@ -167,7 +176,8 @@ const GridContainer = vue.defineComponent({
167
176
  itemAspectRatios: props.itemAspectRatios,
168
177
  floatWidth: props.floatWidth,
169
178
  floatHeight: props.floatHeight,
170
- floatBreakpoints: props.floatBreakpoints
179
+ floatBreakpoints: props.floatBreakpoints,
180
+ pipIndex: props.pipIndex
171
181
  }));
172
182
  const grid = useMeetGrid(gridOptions);
173
183
  vue.provide(GridContextKey, {
package/dist/index.d.cts CHANGED
@@ -140,6 +140,15 @@ declare const GridContainer: vue.DefineComponent<vue.ExtractPropTypes<{
140
140
  type: PropType<PipBreakpoint[]>;
141
141
  default: undefined;
142
142
  };
143
+ /**
144
+ * Index of the participant to show as the floating PiP in 2-person mode.
145
+ * The other participant will fill the main area.
146
+ * @default 1 (second participant)
147
+ */
148
+ pipIndex: {
149
+ type: NumberConstructor;
150
+ default: undefined;
151
+ };
143
152
  /** HTML tag to render */
144
153
  tag: {
145
154
  type: StringConstructor;
@@ -235,6 +244,15 @@ declare const GridContainer: vue.DefineComponent<vue.ExtractPropTypes<{
235
244
  type: PropType<PipBreakpoint[]>;
236
245
  default: undefined;
237
246
  };
247
+ /**
248
+ * Index of the participant to show as the floating PiP in 2-person mode.
249
+ * The other participant will fill the main area.
250
+ * @default 1 (second participant)
251
+ */
252
+ pipIndex: {
253
+ type: NumberConstructor;
254
+ default: undefined;
255
+ };
238
256
  /** HTML tag to render */
239
257
  tag: {
240
258
  type: StringConstructor;
@@ -255,6 +273,7 @@ declare const GridContainer: vue.DefineComponent<vue.ExtractPropTypes<{
255
273
  floatWidth: number;
256
274
  floatHeight: number;
257
275
  floatBreakpoints: PipBreakpoint[];
276
+ pipIndex: number;
258
277
  tag: string;
259
278
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
260
279
  declare const GridItem: vue.DefineComponent<vue.ExtractPropTypes<{
package/dist/index.d.mts CHANGED
@@ -140,6 +140,15 @@ declare const GridContainer: vue.DefineComponent<vue.ExtractPropTypes<{
140
140
  type: PropType<PipBreakpoint[]>;
141
141
  default: undefined;
142
142
  };
143
+ /**
144
+ * Index of the participant to show as the floating PiP in 2-person mode.
145
+ * The other participant will fill the main area.
146
+ * @default 1 (second participant)
147
+ */
148
+ pipIndex: {
149
+ type: NumberConstructor;
150
+ default: undefined;
151
+ };
143
152
  /** HTML tag to render */
144
153
  tag: {
145
154
  type: StringConstructor;
@@ -235,6 +244,15 @@ declare const GridContainer: vue.DefineComponent<vue.ExtractPropTypes<{
235
244
  type: PropType<PipBreakpoint[]>;
236
245
  default: undefined;
237
246
  };
247
+ /**
248
+ * Index of the participant to show as the floating PiP in 2-person mode.
249
+ * The other participant will fill the main area.
250
+ * @default 1 (second participant)
251
+ */
252
+ pipIndex: {
253
+ type: NumberConstructor;
254
+ default: undefined;
255
+ };
238
256
  /** HTML tag to render */
239
257
  tag: {
240
258
  type: StringConstructor;
@@ -255,6 +273,7 @@ declare const GridContainer: vue.DefineComponent<vue.ExtractPropTypes<{
255
273
  floatWidth: number;
256
274
  floatHeight: number;
257
275
  floatBreakpoints: PipBreakpoint[];
276
+ pipIndex: number;
258
277
  tag: string;
259
278
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
260
279
  declare const GridItem: vue.DefineComponent<vue.ExtractPropTypes<{
package/dist/index.d.ts CHANGED
@@ -140,6 +140,15 @@ declare const GridContainer: vue.DefineComponent<vue.ExtractPropTypes<{
140
140
  type: PropType<PipBreakpoint[]>;
141
141
  default: undefined;
142
142
  };
143
+ /**
144
+ * Index of the participant to show as the floating PiP in 2-person mode.
145
+ * The other participant will fill the main area.
146
+ * @default 1 (second participant)
147
+ */
148
+ pipIndex: {
149
+ type: NumberConstructor;
150
+ default: undefined;
151
+ };
143
152
  /** HTML tag to render */
144
153
  tag: {
145
154
  type: StringConstructor;
@@ -235,6 +244,15 @@ declare const GridContainer: vue.DefineComponent<vue.ExtractPropTypes<{
235
244
  type: PropType<PipBreakpoint[]>;
236
245
  default: undefined;
237
246
  };
247
+ /**
248
+ * Index of the participant to show as the floating PiP in 2-person mode.
249
+ * The other participant will fill the main area.
250
+ * @default 1 (second participant)
251
+ */
252
+ pipIndex: {
253
+ type: NumberConstructor;
254
+ default: undefined;
255
+ };
238
256
  /** HTML tag to render */
239
257
  tag: {
240
258
  type: StringConstructor;
@@ -255,6 +273,7 @@ declare const GridContainer: vue.DefineComponent<vue.ExtractPropTypes<{
255
273
  floatWidth: number;
256
274
  floatHeight: number;
257
275
  floatBreakpoints: PipBreakpoint[];
276
+ pipIndex: number;
258
277
  tag: string;
259
278
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
260
279
  declare const GridItem: vue.DefineComponent<vue.ExtractPropTypes<{
package/dist/index.mjs CHANGED
@@ -142,6 +142,15 @@ const GridContainer = defineComponent({
142
142
  type: Array,
143
143
  default: void 0
144
144
  },
145
+ /**
146
+ * Index of the participant to show as the floating PiP in 2-person mode.
147
+ * The other participant will fill the main area.
148
+ * @default 1 (second participant)
149
+ */
150
+ pipIndex: {
151
+ type: Number,
152
+ default: void 0
153
+ },
145
154
  /** HTML tag to render */
146
155
  tag: {
147
156
  type: String,
@@ -166,7 +175,8 @@ const GridContainer = defineComponent({
166
175
  itemAspectRatios: props.itemAspectRatios,
167
176
  floatWidth: props.floatWidth,
168
177
  floatHeight: props.floatHeight,
169
- floatBreakpoints: props.floatBreakpoints
178
+ floatBreakpoints: props.floatBreakpoints,
179
+ pipIndex: props.pipIndex
170
180
  }));
171
181
  const grid = useMeetGrid(gridOptions);
172
182
  provide(GridContextKey, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thangdevalone/meeting-grid-layout-vue",
3
- "version": "1.4.1",
3
+ "version": "1.5.0",
4
4
  "description": "Vue 3 integration for meeting-grid-layout with Motion animations",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -43,7 +43,7 @@
43
43
  "dependencies": {
44
44
  "@vueuse/core": "^10.7.0",
45
45
  "motion-v": "^1.0.0",
46
- "@thangdevalone/meeting-grid-layout-core": "1.4.1"
46
+ "@thangdevalone/meeting-grid-layout-core": "1.5.0"
47
47
  },
48
48
  "devDependencies": {
49
49
  "vue": "^3.4.0",