recursal/MDN huggingface dataset:
Window.getDefaultComputedStyle()
================================

**Non standard:** Cette fonctionnalité n'est ni standard, ni en voie de standardisation. Ne l'utilisez pas pour des sites accessibles sur le Web : elle ne fonctionnera pas pour tout utilisateur. Il peut également y avoir d'importantes incompatibilités entre les implémentations et son comportement peut être modifié dans le futur.

`getDefaultComputedStyle()` fournit les valeurs calculées par défaut de toutes les propriétés CSS d'un élément, en ignorant la mise en forme de l'auteur. C'est-à-dire que seules les mises en forme de l'agent utilisateur et de l'utilisateur sont pris en compte.

Syntaxe
-------


```js
var miseEnForme = window.getDefaultComputedStyle(element[, pseudoElt]);
```


element

L'`Element` dont on veut obtenir la mise en forme calculée.

pseudoElt Facultatif

Une chaîne indiquant le pseudo-élément à rechercher. Doit être `null` (ou non indiqué) pour les éléments ordinaires.

Le `style` retourné est un objet `CSSStyleDeclaration`.

Exemples
--------


```js
var elem1 = document.getElementById("IdElem");
var miseEnForme = window.getDefaultComputedStyle(elem1);
```



```html
<style>
 #conteneur-elem {
 position: absolute;
 left: 100px;
 top: 200px;
 height: 100px;
 }
</style>

<div id="conteneur-elem">factice</div>
<div id="sortie"></div>

<script>
 var elem = document.getElementById("conteneur-elem");
 var laPropCSS = window.getDefaultComputedStyle(elem).position;
 document.getElementById("sortie").innerHTML = laPropCSS; // affichera "static"
</script>
```

Description
-----------

L'objet retourné est du même type que l'objet retourné par `getComputedStyle`, mais il ne prend en compte que les règles user-agent et user.

Utilisation avec des pseudo-éléments
------------------------------------

`getDefaultComputedStyle` peut extraire des informations de mise en forme à partir de pseudo-éléments (par exemple, ::after, ::before).


```html
<style>
 h3:after {
 content: " déchire !";
 }
</style>

<h3>contenu généré</h3>

<script>
 var h3 = document.querySelector("h3"),
 resultat = getDefaultComputedStyle(h3, ":after").content;

 console.log("le contenu généré est : ", resultat); // retourne 'none'
</script>
```

Notes
-----

La valeur retournée est, dans certains cas connus, expressément incorrecte par intention délibérée. En particulier, pour éviter le problème de sécurité appelé CSS History Leak, les navigateurs peuvent "mentir" sur la valeur utilisée pour un lien et toujours retourner des valeurs comme si l'utilisateur n'avait jamais visité le site concerné, et/ou limiter les styles qui peuvent être appliqués via l'utilisation du pseudo-sélecteur `:visited`. Voir http://blog.mozilla.com/security/2010/03/31/plugging-the-css-history-leak/ et http://hacks.mozilla.org/2010/03/privacy-related-changes-coming-to-css-visited/ pour le détail des exemples de la manière dont cela est implémenté.

Spécifications
--------------

Proposé au groupe de travail CSS.

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
Cache.add()
===========

**Expérimental:** **Cette fonction est expérimentale**  
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.  
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

La méthode **`add()`** de l'interface `Cache` accepte une URL, la récupère, et ajoute l'objet réponse qui en résulte dans le cache. La méthode `add()` est équivalent au code suivant :


```js
fetch(url).then(function (response) {
  if (!response.ok) {
    throw new TypeError("bad response status");
  }
  return cache.put(url, response);
});
```


Pour des opérations plus complexes, il faut utiliser `Cache.put()` directement.

**Note :** `add()` écrasera toute paire clé/valeur précedemment stockée en cache et qui correspond à la requête.

Syntaxe
-------


```js
cache.add(request).then(function () {
  //request a été ajoutée au cache
});
```

### Paramètres

request

La requête à mettre en cache. Ce paramètre peut être un objet `Requête` ou une URL.

### Retour

Une `Promesse` qui est résolue en void.

### Exceptions

| **Exception** | **Arrive quand** |
| --- | --- |
| `TypeError` | Le schéma d'URL n'est pas `http` ou `https`.

 Le statut de la réponse n'est pas dans les 200 (i.e., une requête qui
 a échoué.) Cela peut arriver si la requête échoue, mais également si
 la requête est une *cross-origin no-cors* (auquel cas le statut
 retourné est systématiquement 0.)
  |

Exemples
--------

Ce bloc de code attends le déclenchement d'un `InstallEvent` (en-US), puis lance `waitUntil` (en-US) qui gère la phase d'installation de l'application. Cela consite à appeler `CacheStorage.open` afin de créer un nouveau cache, puis à utiliser `Cache.add` pour y ajouter des ressources.


```js
this.addEventListener("install", function (event) {
  event.waitUntil(
    caches.open("v1").then(function (cache) {
      return cache.add("/sw-test/index.html");
    }),
  );
});
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # cache-add |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utiliser les Service Workers
* `Cache`
* `WorkerGlobalScope.caches` (en-US)
Cache.matchAll()
================

**Expérimental:** **Cette fonction est expérimentale**  
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.  
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

La méthode **`matchAll()`** de l'interface `Cache` retourne une `Promesse` qui est résolue en un tableau de toutes les requêtes qui matchent dans l'objet `Cache`.

Syntaxe
-------


```js
cache.matchAll(request, { options }).then(function (response) {
  // faire quelque chose avec le tableau des réponses
});
```

### Paramètres

request

La `Requête` à trouver dans le `Cache`.

options Facultatif

Un objet d'options vous permettant de définir des options de contrôle spécifiques pour la correspondance effectuée. Les options disponibles sont les suivantes :

* `ignoreSearch`: Un `Boolean` (en-US) qui spécifie si le matching doit ignorer ou non la query string dans l'url. Si mis à `true`, la partie `?value=bar` de l'url `http://foo.com/?value=bar` sera ignorée lors du matching. Est à `false` par défaut.
* `ignoreMethod`: Un `Boolean` (en-US) qui, quand mis à `true`, empêche les opérations de matching de valider la méthode `HTTP` de la `Requête` (en temps normal, seules `GET` et `HEAD` sont autorisées.) Est à `false` par défaut.
* `ignoreVary`: Un `Boolean` (en-US) qui, quand mis à `true,` indique à l'opération de matching de ne pas effectuer le matching `VARY` des header. En d'autres termes, si l'URL correspond, un match sera obtenu peu importe que la `Réponse` ait un header `VARY` ou non. Est à `false` par défaut.

### Retour

Une `Promesse` qui est résolue en un tableau de toutes les requêtes qui matchent dans l'objet `Cache`.

**Note :** `Cache.match()` est quasiment identique à `Cache.matchAll()`, si ce n'est qu'elle est résolue en `response[0]` (la première réponse qui matche) plutôt que `response[]` (un tableau de toutes les réponses qui matchent).

Exemples
--------


```js
caches.open("v1").then(function (cache) {
  cache.matchAll("/images/").then(function (response) {
    response.forEach(function (element, index, array) {
      cache.delete(element);
    });
  });
});
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # cache-matchall |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utiliser les Service Workers
* `Cache`
* `caches`
Cache.addAll()
==============

**Expérimental:** **Cette fonction est expérimentale**  
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.  
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

La méthode **`addAll()`** de l'interface `Cache` accepte un tableau d'URLS, les récupères, et ajoute les objets réponse qui en résultent au cache en question. Les objets requêtes crées pendant la phase de récupération deviennent des clés vers les opérations de réponse stockées.

**Note :** `addAll()` écrasera toute paire clé/valeur précédemment stockée en cache et qui correspond à une requête, mais échouera si l'opération `put()` ainsi créée devrait engendrer l'effacement d'une entrée cache créée par la même méthode `addAll()`.

Syntaxe
-------


```js
cache.addAll(requests[]).then(function() {
  //requests have been added to the cache
});
```

### Paramètres

requests

Un tableau d'objets `Requête` à ajouter au cache.

### Retour

Une `Promesse` qui est résolue en void.

### Exceptions

| **Exception** | **Arrive quand** |
| --- | --- |
| `TypeError` | Le schéma d'URL n'est pas `http` ou `https`.

 Le statut de la réponse n'est pas dans les 200 (i.e., une requête qui
 a échoué.) Cela peut arriver si la requête échoue, mais également si
 la requête est une *cross-origin no-cors* (auquel cas le statut
 retourné est systématiquement 0.)
  |

Exemples
--------

Ce bloc de code attends le déclenchement d'un `InstallEvent` (en-US), puis lance `waitUntil` (en-US) qui gère la phase d'installation de l'application. Cela consite à appeler `CacheStorage.open` afin de créer un nouveau cache, puis à utiliser `addAll()` pour y ajouter une série de ressources.


```js
this.addEventListener("install", function (event) {
  event.waitUntil(
    caches.open("v1").then(function (cache) {
      return cache.addAll([
        "/sw-test/",
        "/sw-test/index.html",
        "/sw-test/style.css",
        "/sw-test/app.js",
        "/sw-test/image-list.js",
        "/sw-test/star-wars-logo.jpg",
        "/sw-test/gallery/",
        "/sw-test/gallery/bountyHunters.jpg",
        "/sw-test/gallery/myLittleVader.jpg",
        "/sw-test/gallery/snowTroopers.jpg",
      ]);
    }),
  );
});
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # cache-addAll |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utiliser les Service Workers
* `Cache`
* `WorkerGlobalScope.caches` (en-US)
Cache.keys()
============

**Expérimental:** **Cette fonction est expérimentale**  
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.  
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

La méthode **`keys()`** de l'interface `Cache` retourne une `Promesse` qui est résolue en un tableau de clé de `Cache`.

Les requêtes sont retournées dans le même ordre que l'ordre d'insertion.

**Note :** Les requêtes avec des URLs déjà présentes mais des headers différents peuvent être retournées si leurs réponses comportent le header `VARY`.

Syntaxe
-------


```js
cache.keys(request, { options }).then(function (response) {
  // fait quelque chose avec votre tableau de réponses
});
```

### Paramètres

request Facultatif

La `Requête` à retourner, si une clé en particulier est désirée.

options Facultatif

Un objet dont les paramètres contrôlent comment le matching est effectué lors de l'opération `keys`. Les options disponibles sont :

* `ignoreSearch`: Un `Boolean` (en-US) qui spécifie si le matching doit ignorer ou non la query string dans l'url. Si mis à `true`, la partie `?value=bar` de l'url `http://foo.com/?value=bar` sera ignorée lors du matching. Est à `false` par défaut.
* `ignoreMethod`: Un `Boolean` (en-US) qui, quand mis à `true`, empêche les opérations de matching de valider la méthode `HTTP` de la `Requête` (en temps normal, seules `GET` et `HEAD` sont autorisées). Est à `false` par défaut.
* `ignoreVary`: Un `Boolean` (en-US) qui, quand mis à `true,` indique à l'opération de matching de ne pas effectuer le matching `VARY` des header. En d'autres termes, si l'URL correspond, un match sera obtenu peu importe que la `Réponse` ait un header `VARY` ou non. Est à `false` par défaut.
* `cacheName`: Une `DOMString` qui représente un cache spécifique où effectuer la recherche. A noter que cette option est ignorée par `Cache.keys()`.

### Retour

Une `Promesse` qui est résolue en un tableau de clé de `Cache`.

Exemples
--------


```js
caches.open("v1").then(function (cache) {
  cache.keys().then(function (keys) {
    keys.forEach(function (request, index, array) {
      cache.delete(request);
    });
  });
});
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # cache-keys |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utiliser les Service Workers
* `Cache`
* `WorkerGlobalScope.caches` (en-US)
Cache.delete()
==============

**Expérimental:** **Cette fonction est expérimentale**  
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.  
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

La méthode **`delete()`** de l'interface `Cache` cherche l'entrée `Cache` dont la clé est la requête passée en argument, et retourne une `Promesse`. Si une entrée `Cache` est trouvée, elle est supprimée, et la promesse est résolue à `true`. Dans le cas contraire, la promesse est résolue à `false`.

Syntaxe
-------


```js
cache.delete(request,{options}).then(function(true) {
  //your cache entry has been deleted
});
```

### Paramètres

request

La `Requête` à supprimer.

options Facultatif

Un objet dont les paramètres contrôlent comment le matching est effectué lors de l'opération de `delete`. Les options disponibles sont :

* `ignoreSearch`: Un `Boolean` (en-US) qui spécifie si le matching doit ignorer ou non la query string dans l'url. Si mis à `true`, la partie `?value=bar` de l'url `http://foo.com/?value=bar` sera ignorée lors du matching. Est à `false` par défaut.
* `ignoreMethod`: Un `Boolean` (en-US) qui, quand mis à `true`, empêche les opérations de matching de valider la méthode `HTTP` de la `Requête` (en temps normal, seules `GET` et `HEAD` sont autorisées.) Est à `false` par défaut.
* `ignoreVary`: Un `Boolean` (en-US) qui, quand mis à `true,` indique à l'opération de matching de ne pas effectuer le matching `VARY` des header. En d'autres termes, si l'URL correspond, un match sera obtenu peu importe que la `Réponse` ait un header `VARY` ou non. Est à `false` par défaut.
* `cacheName`: Une `DOMString` qui représente un cache spécifique où effectuer la recherche. A noter que cette option est ignorée par `Cache.delete()`.

### Retour

Une `Promesse` qui est résolue à `true` si l'entrée de cache est supprimée, ou à `false` dans le cas contraire.

Exemples
--------


```js
caches.open("v1").then(function (cache) {
  cache.delete("/images/image.png").then(function (response) {
    someUIUpdateFunction();
  });
});
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # cache-delete |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utiliser les Service Workers
* `Cache`
* `WorkerGlobalScope.caches` (en-US)
TreeWalker.root
===============

La propriété en lecture seule **`TreeWalker.root`** renvoie le noeud qui est la racine de ce que TreeWalker doit traverser.

Syntaxe
-------


```js
root = TreeWalker.root;
```

Exemple
-------


```js
var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW\_ELEMENT,
  {
    acceptNode: function (node) {
      return NodeFilter.FILTER\_ACCEPT;
    },
  },
  false,
);
root = treeWalker.root; // document.body dans ce cas
```

Spécifications
--------------

| Specification |
| --- |
| DOM Standard # dom-treewalker-root |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'interface `TreeWalker`.
TreeWalker.parentNode()
=======================

La méthode **`TreeWalker.parentNode()`** déplace le `Node` courant vers le premier noeud ancêtre *visible* dans l'ordre du document et renvoie le noeud trouvé. Si aucun noeud n'existe ou s'il est au-dessus du *noeud racine* du `TreeWalker`, elle renvoie `null` et le noeud actuel reste inchangé.

Syntaxe
-------


```js
node = treeWalker.parentNode();
```

Exemple
-------


```js
var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW\_ELEMENT,
  {
    acceptNode: function (node) {
      return NodeFilter.FILTER\_ACCEPT;
    },
  },
  false,
);
var node = treeWalker.parentNode(); // returns null as there is no parent
```

Spécifications
--------------

| Specification |
| --- |
| DOM Standard # dom-treewalker-parentnode |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'interface `TreeWalker` à laquelle elle appartient.
TreeWalker.previousNode()
=========================

La méthode **`TreeWalker.previousNode()`** déplace le `Node` courant vers le noeud précédent *visible* dans l'ordre du document et renvoie le noeud trouvé. Elle déplace aussi le noeud courant vers celui-ci. S'il n'en existe aucun ou s'il est avant le *noeud racine* défini lors de la construction de l'objet, elle renvoie `null` et le noeud actuel n'est pas changé.

Syntaxe
-------


```js
node = treeWalker.previousNode();
```

Exemple
-------


```js
var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW\_ELEMENT,
  {
    acceptNode: function (node) {
      return NodeFilter.FILTER\_ACCEPT;
    },
  },
  false,
);
var node = treeWalker.previousNode(); // renvoie null car il n'y a pas de parent
```

Spécifications
--------------

| Specification |
| --- |
| DOM Standard # dom-treewalker-previousnode |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'interface `TreeWalker` à laquelle elle appartient.
TreeWalker.firstChild()
=======================

La méthode **`TreeWalker.firstChild()`** déplace le `Node` courant vers le premier enfant *visible* du noeud courant et renvoie l'enfant trouvé. Il déplace aussi le noeud courant vers cet enfant. Si aucun enfant n'existe, elle renvoie `null` et le noeud courant n'est pas modifié.

Syntaxe
-------


```js
node = treeWalker.firstChild;
```

Exemple
-------


```js
var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW\_ELEMENT,
  {
    acceptNode: function (node) {
      return NodeFilter.FILTER\_ACCEPT;
    },
  },
  false,
);
var node = treeWalker.firstChild(); // renvoie le premier enfant de l'élément racine ou null si aucun
```

Spécifications
--------------

| Specification |
| --- |
| DOM Standard # dom-treewalker-firstchild |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'interface `TreeWalker` à laquelle elle appartient.
TreeWalker.currentNode
======================

La propriété **`TreeWalker.currentNode`** représente le `Node` (*noeud*) sur lequel le `TreeWalker` est actuellement pointé.

Syntaxe
-------


```js
node = treeWalker.currentNode;
treeWalker.currentNode = node;
```

Exemple
-------


```js
var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW\_ELEMENT,
  {
    acceptNode: function (node) {
      return NodeFilter.FILTER\_ACCEPT;
    },
  },
  false,
);
root = treeWalker.currentNode; // l'élément racine car c'est le premier élément!
```

Spécifications
--------------

| Specification |
| --- |
| DOM Standard # ref-for-dom-treewalker-currentnode① |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'interface `TreeWalker`.
TreeWalker.nextSibling()
========================

La méthode **`TreeWalker.nextSibling()`** déplace le `Node` courant vers son frère suivant, le cas échéant, et renvoie le frère trouvé. Si aucun noeud frère n'est trouvé, elle renvoie `null` et le noeud courant reste inchangé.

Syntaxe
-------


```js
node = treeWalker.nextSibling();
```

Exemple
-------


```js
var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW\_ELEMENT,
  {
    acceptNode: function (node) {
      return NodeFilter.FILTER\_ACCEPT;
    },
  },
  false,
);
treeWalker.firstChild();
var node = treeWalker.nextSibling(); // renvoie null si le premier enfant de l'élément racine n'a pas de frère
```

Spécifications
--------------

| Specification |
| --- |
| DOM Standard # dom-treewalker-nextsibling |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'interface `TreeWalker` à laquelle elle appartient.
TreeWalker.lastChild()
======================

La méthode **`TreeWalker.lastChild()`** déplace le `Node` courant au dernier enfant *visible* du noeud courant et renvoie l'enfant trouvé. Il déplace aussi le noeud courant vers cet enfant. Si aucun enfant n'existe, elle retourne `null` et le noeud courant reste inchangé.

Syntaxe
-------


```js
node = treeWalker.lastChild();
```

Exemple
-------


```js
var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW\_ELEMENT,
  {
    acceptNode: function (node) {
      return NodeFilter.FILTER\_ACCEPT;
    },
  },
  false,
);
var node = treeWalker.lastChild(); // renvoie le dernier enfant visible de l'élément racine
```

Spécifications
--------------

| Specification |
| --- |
| DOM Standard # dom-treewalker-lastchild |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'interface `TreeWalker` à laquelle elle appartient.
TreeWalker.nextNode()
=====================

La méthode **`TreeWalker.nextNode()`** déplace le `Node` courant au noeud suivant *visible* dans l'ordre du document et renvoie le noeud trouvé. Elle déplace aussi le noeud courant vers celui-ci. Si aucun noeud n'existe, elle renvoie `null` et le noeud courant est inchangé.

Syntaxe
-------


```js
node = treeWalker.nextNode();
```

Exemple
-------


```js
var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW\_ELEMENT,
  {
    acceptNode: function (node) {
      return NodeFilter.FILTER\_ACCEPT;
    },
  },
  false,
);
var node = treeWalker.nextNode(); // renvoie le premier enfant de la racine, car il s'agit du noeud suivant dans l'ordre du document
```

Spécifications
--------------

| Specification |
| --- |
| DOM Standard # dom-treewalker-nextnode |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'interface `TreeWalker` à laquelle elle appartient.